專利名稱::泛洪法生成數(shù)據(jù)包轉(zhuǎn)發(fā)表的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及在因特網(wǎng)中向目的節(jié)點(diǎn)轉(zhuǎn)發(fā)分組的轉(zhuǎn)發(fā)表生成技術(shù),特別涉及在層次式交換網(wǎng)絡(luò)的節(jié)點(diǎn)域內(nèi)轉(zhuǎn)發(fā)表快速收斂和流量均衡的-種方法。
背景技術(shù):
:層次式交換網(wǎng)絡(luò)(中國(guó)專利申請(qǐng)03120998.X,以下簡(jiǎn)稱層次網(wǎng)絡(luò))是一種拓?fù)浣Y(jié)構(gòu)按層次構(gòu)造的網(wǎng)絡(luò),其地址空間也按照層次結(jié)構(gòu)進(jìn)行分配,拓?fù)浣Y(jié)構(gòu)的層次與地址結(jié)構(gòu)嚴(yán)格匹配。它通過重新規(guī)定網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和地址分配方法,避免路由操作,實(shí)現(xiàn)數(shù)據(jù)包按照層次地址快速進(jìn)行交換,從而提高了網(wǎng)絡(luò)性能,簡(jiǎn)化網(wǎng)絡(luò)的復(fù)雜度,適合構(gòu)造高性能、可擴(kuò)展、可管理、安全可靠的下一代互聯(lián)網(wǎng)。從邏輯上看,層次式交換網(wǎng)絡(luò)的骨干結(jié)構(gòu)是一個(gè)樹型結(jié)構(gòu)。簡(jiǎn)單的樹型結(jié)構(gòu)有利于建設(shè)和管理網(wǎng)絡(luò),但同時(shí)也存在一些缺點(diǎn),需要做一些改進(jìn)。雖然因兩個(gè)節(jié)點(diǎn)之間鏈路唯一而簡(jiǎn)化了路由,但足一條物理信道或單個(gè)物理節(jié)點(diǎn)的失效會(huì)導(dǎo)致該信道或節(jié)點(diǎn)下連的子樹失去連接性。因此、層次網(wǎng)絡(luò)不能只采用簡(jiǎn)單樹型結(jié)構(gòu),必須有所改進(jìn)。通過對(duì)樹型結(jié)構(gòu)進(jìn)行擴(kuò)展,采用基于邏輯節(jié)點(diǎn),邏輯鏈路等擴(kuò)展結(jié)構(gòu)可以避免簡(jiǎn)單樹型結(jié)構(gòu)的缺點(diǎn)。邏輯節(jié)點(diǎn)是由多個(gè)物理節(jié)點(diǎn)互聯(lián)而成的網(wǎng)絡(luò),結(jié)構(gòu)與Internet中的自治域類似。從物理實(shí)現(xiàn)角度分析,由于邏輯節(jié)點(diǎn)(簡(jiǎn)稱為"節(jié)點(diǎn)域")是由包含多個(gè)物理節(jié)點(diǎn)的網(wǎng)絡(luò)構(gòu)成,保證了容量的可擴(kuò)展性和可靠性。數(shù)據(jù)包經(jīng)過邏輯節(jié)點(diǎn)"轉(zhuǎn)發(fā)"的過程實(shí)際是數(shù)據(jù)包在節(jié)點(diǎn)域內(nèi)各個(gè)物理節(jié)點(diǎn)多次轉(zhuǎn)發(fā)的過程。物理節(jié)點(diǎn)在轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),需要轉(zhuǎn)發(fā)表指出下一跳。節(jié)點(diǎn)域需要一種生成轉(zhuǎn)發(fā)表的方法。目前存在的數(shù)據(jù)包轉(zhuǎn)發(fā)表生成方法有RIP(RoutingInformationProtocol)、0SPF(OpenShortestPathFirst)、IS-IS(IntermediateSystemtoIntermediateSystem)等。這些方法面向大規(guī)模、松散的自治系統(tǒng),能夠?qū)崿F(xiàn)大規(guī)模的信息交換和路由計(jì)算過程。然而它們也存在許多不足,過程復(fù)雜,不易實(shí)現(xiàn),路由收斂時(shí)間長(zhǎng),負(fù)載平衡能力差。當(dāng)自治域較大時(shí),其收斂時(shí)間可能會(huì)達(dá)到分鐘級(jí),造成TCP連接,多媒體數(shù)據(jù)流中斷。由于節(jié)點(diǎn)域本身是一個(gè)規(guī)模有限,功能相對(duì)單一的系統(tǒng),可以采用高性能、快速的轉(zhuǎn)發(fā)表生成方法,從而減少收斂時(shí)間。本發(fā)明針對(duì)層次網(wǎng)絡(luò)中節(jié)點(diǎn)域的特點(diǎn),提出快速生成轉(zhuǎn)發(fā)表的方法。對(duì)其它包交換通信場(chǎng)合,只要存在類似于節(jié)點(diǎn)域的網(wǎng)絡(luò)拓?fù)洌部梢允褂帽景l(fā)明所提出的方法。與之相比,RIP、0SPF和EIGRP等存在維護(hù)困難、實(shí)現(xiàn)復(fù)雜、收斂時(shí)間長(zhǎng)和負(fù)載平衡能力差等缺陷,下面對(duì)此進(jìn)一步論述。OSPF是IETF組織開發(fā)的基于鏈路狀態(tài)的自治域內(nèi)部路由協(xié)議。在互聯(lián)網(wǎng)上,它是得到廣泛應(yīng)用的協(xié)議之一。0SPF通過收集和傳遞自治域內(nèi)的鏈路狀態(tài)動(dòng)態(tài)地計(jì)算路由。0SPF路由器與同一層區(qū)域內(nèi)的其它路由器交換鏈路狀態(tài)信息。其內(nèi)容包括接口信息、鄰居信息等。這樣,每臺(tái)路由器都收到了自治域中所有路由器發(fā)出的LSA(包含有鏈路狀態(tài)信息)。這些LSA的集合組成了LSDB(鏈路狀態(tài)數(shù)據(jù)庫(kù))。由于每一臺(tái)路由器都發(fā)出了LSA,也收到其它路由器的LSA,那么LSDB就能夠真實(shí)反映自治域的網(wǎng)絡(luò)拓?fù)洹?SPF路由器利用LSDB,使用SPF算法計(jì)算到各路由器的最短路徑,形成到達(dá)其它路由器的下一跳信息。SPF算法是構(gòu)建一棵以自己為根的最短路徑樹,算出到自治域中其它各節(jié)點(diǎn)的下一跳。SPF算法雖然得到廣泛應(yīng)用,但是在實(shí)現(xiàn)和應(yīng)用中仍存在一些問題。由于路由器要記錄整個(gè)網(wǎng)絡(luò)狀況,當(dāng)網(wǎng)絡(luò)較大時(shí),LSDB會(huì)變得龐大,占用了很多存儲(chǔ)空間。SPF算法需要大量計(jì)算,要耗費(fèi)大量CPU資源和存儲(chǔ)器資源。為了能夠在大規(guī)模網(wǎng)絡(luò)中應(yīng)用,OSPF提供了區(qū)域劃分功能,即分層功能。維護(hù)人員根據(jù)需要把路由器放在不同的區(qū)域(Area)中,兩個(gè)不同的區(qū)域通過區(qū)域邊界路由器(ABR)相連。在區(qū)域內(nèi)部的路由信息同步,在兩個(gè)不同區(qū)域之間的路由信息傳遞,由區(qū)域邊界路由器(ABR)完成。一個(gè)區(qū)域內(nèi)的OSPF路由器只保留本區(qū)域內(nèi)的鏈路狀態(tài)信息,沒有其他區(qū)域的鏈路狀態(tài)信息。這樣,減小了鏈路狀態(tài)數(shù)據(jù)庫(kù),降低了生成樹算法的計(jì)算量。同時(shí),當(dāng)一個(gè)區(qū)域中的拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),其他區(qū)域中的路由器不需要重新進(jìn)行計(jì)算。顯然,這種變通方法增加了系統(tǒng)實(shí)現(xiàn)和維護(hù)的復(fù)雜度。0SPF能根據(jù)接口的速率、連接可靠性等信息,自動(dòng)得到接口路由優(yōu)先級(jí),不過通往同一目的地的不同優(yōu)先級(jí)路由,往往只會(huì)選擇優(yōu)先級(jí)較高的轉(zhuǎn)發(fā),不同優(yōu)先級(jí)的路由,不能實(shí)現(xiàn)負(fù)載分擔(dān)。這使OSPF流量的負(fù)載均衡能力很弱,無法根據(jù)網(wǎng)絡(luò)擁塞狀況實(shí)現(xiàn)有效調(diào)節(jié)。OSPF協(xié)議可能會(huì)引起自治域出現(xiàn)短暫環(huán)路。從SPF算法上分析,OSPF協(xié)議所生成的路由信息不存在環(huán)路,不過在路由信息切換過程中仍存在臨時(shí)環(huán)路。每個(gè)0SPF路由器單獨(dú)計(jì)算路由,替換舊路由信息,這個(gè)過程并不能保證所有路由器同步地進(jìn)行。不同步使部分路由器使用新路由表,而部分使用舊路由表,從而生成臨時(shí)環(huán)路。單純分析舊路由信息,不存在環(huán)路;新路由信息也是如此。不過路由表切換的時(shí)間無法實(shí)現(xiàn)統(tǒng)一,自治域內(nèi)新舊路由信息夾雜會(huì)導(dǎo)致臨時(shí)性的路由環(huán)路。從總體來看,0SPF的弱點(diǎn)有四點(diǎn)1)算法復(fù)雜,對(duì)CPU、存儲(chǔ)資源占用較多;2)區(qū)域劃分功能使0SPF配置相對(duì)復(fù)雜,網(wǎng)絡(luò)維護(hù)人員需要較高的網(wǎng)絡(luò)知識(shí)水平才能配置和管理0SPF網(wǎng)絡(luò);3)只能根據(jù)固定指標(biāo)如帶寬、延時(shí)等信息提供負(fù)載均衡,無法根據(jù)網(wǎng)絡(luò)實(shí)時(shí)擁塞狀況自動(dòng)調(diào)節(jié)路由;4)存在臨時(shí)環(huán)路。RIP和EIGRP也是Internet上得到廣泛應(yīng)用的域內(nèi)路由協(xié)議,均采用距離矢量算法。RIP是一種傳統(tǒng)的路由協(xié)議,會(huì)產(chǎn)生慢收斂(slowconvergence)或無限計(jì)數(shù)(counttoinfinity)問題從而引發(fā)不一致性。RIP缺乏動(dòng)態(tài)負(fù)載均衡能力。EIGRP是Cisco私有的協(xié)議,它采用了改進(jìn)后的距離矢量算法——DUAL算法。這種算法實(shí)際上是將不確定的路由信息(activeroute)散播(向鄰居發(fā)query報(bào)文),得到所有鄰居的確認(rèn)后(r印ly報(bào)文)再收斂的過程,鄰居在不確定該路由信息可靠性的情況下又會(huì)重復(fù)這種散播。在理論上,DUAL算法收斂速度很快,不過在某些情況下可能會(huì)出現(xiàn)路由信息一直處于active狀態(tài)。如果在activeroute的DUAL計(jì)算過程中,該路由的后繼(successor)metric發(fā)生變化,就會(huì)進(jìn)入多重計(jì)算。這些都會(huì)影響DUAL算法的收斂速度。另外DUAL算法的實(shí)現(xiàn)很復(fù)雜,路由器本身需要記錄大量的臨時(shí)數(shù)據(jù),路由收斂過程中,路由器之間要進(jìn)行大量交互。EIGRP提供了一定的多路徑負(fù)載均衡能力,它可以根據(jù)接口速率、擁塞狀況、可靠性等屬性,自動(dòng)生成路由優(yōu)先級(jí)。根據(jù)這些信息自動(dòng)匹配接口的流量,達(dá)到幾個(gè)接口負(fù)載分擔(dān)的目的。不過這些負(fù)載均衡能力需要復(fù)雜的計(jì)算。從總體上看,EIGRP有4個(gè)方面的缺點(diǎn)1)它是Cisco的私有協(xié)議;2)算法復(fù)雜,需要大量的CPU和存儲(chǔ)資源;3)負(fù)載均衡需要復(fù)雜計(jì)算;4)收斂時(shí)間較長(zhǎng)。由以上論述可知,路由協(xié)議各有優(yōu)缺點(diǎn),它們公共的問題包括三個(gè)方面,一、實(shí)現(xiàn)過程復(fù)雜,占用大量的存貯空間和計(jì)算資源;二、負(fù)載均衡能力較弱;三、收斂時(shí)間較長(zhǎng),難以滿足實(shí)時(shí)多媒體傳輸要求。鑒于以上情況,研究一種計(jì)算簡(jiǎn)單、能夠?qū)崟r(shí)均衡負(fù)載、收斂速度快的轉(zhuǎn)發(fā)表生成方法是必要的。
發(fā)明內(nèi)容提供一種操作簡(jiǎn)單、實(shí)現(xiàn)簡(jiǎn)單、收斂快速、無環(huán)路和負(fù)載均衡的轉(zhuǎn)發(fā)表生成方法是本發(fā)明的目的。在詳細(xì)論述
發(fā)明內(nèi)容以前,先介紹四個(gè)概念反向端口,發(fā)送端口,接收端口和反向負(fù)載。它們與雙工信道的特點(diǎn)相關(guān)。雙工信道即是節(jié)點(diǎn)從信道接收數(shù)據(jù)包,也從同一信道發(fā)送數(shù)據(jù)包。一條信道在邏輯上會(huì)有兩個(gè)端口,一個(gè)用于接收數(shù)據(jù)包,稱為接收端口;另一個(gè)用于發(fā)送數(shù)據(jù)包,稱為發(fā)送端口。從接收端口到達(dá)的數(shù)據(jù)包看來,發(fā)送端口方向正好相反,也稱之為反向端口。發(fā)送端口用于發(fā)送數(shù)據(jù)包,端口負(fù)載稱之為反向負(fù)載
發(fā)明內(nèi)容包括四個(gè)部分實(shí)現(xiàn)思路、數(shù)據(jù)結(jié)構(gòu)、功能流程和適用說明。本發(fā)明的實(shí)現(xiàn)思路是利用數(shù)據(jù)包泛洪(packetflooding)傳輸方式生成轉(zhuǎn)發(fā)表。數(shù)據(jù)包泛洪傳輸有兩個(gè)過程,1)源節(jié)點(diǎn)向所有內(nèi)部端口發(fā)送一份數(shù)據(jù)包拷貝;2)其它節(jié)點(diǎn)在沒有收到重復(fù)數(shù)據(jù)包的情況下,向所有內(nèi)部端口(接收端口除外)發(fā)送一份拷貝,否則丟棄。泛洪傳輸有兩個(gè)特點(diǎn),一是節(jié)點(diǎn)收到的第一個(gè)數(shù)據(jù)包所經(jīng)過的路徑一定是延時(shí)最短的路徑;二是節(jié)點(diǎn)域中所有節(jié)點(diǎn)都會(huì)收到數(shù)據(jù)包,與廣播類似。本發(fā)明利用這兩個(gè)特點(diǎn)實(shí)現(xiàn)數(shù)據(jù)包轉(zhuǎn)發(fā)表生成。當(dāng)節(jié)點(diǎn)A以泛洪方式在節(jié)點(diǎn)域內(nèi)部廣播數(shù)據(jù)包,其它節(jié)點(diǎn)會(huì)得到目標(biāo)地址為A的轉(zhuǎn)發(fā)表項(xiàng)。假設(shè)B從端口P1第一次收到A發(fā)送的某個(gè)數(shù)據(jù)包,將來節(jié)點(diǎn)B轉(zhuǎn)發(fā)目標(biāo)地址為A的數(shù)據(jù)包時(shí),就從P1端口發(fā)送。因此、任一節(jié)點(diǎn)只要收到節(jié)點(diǎn)域內(nèi)其它所有節(jié)點(diǎn)以泛洪方式所發(fā)送的數(shù)據(jù)包,就能夠得到完整的轉(zhuǎn)發(fā)表。通過改變洪泛包(以泛洪方式傳輸?shù)臄?shù)據(jù)包)在傳播過程中的延時(shí),能夠調(diào)整轉(zhuǎn)發(fā)表項(xiàng),實(shí)現(xiàn)負(fù)載均衡。轉(zhuǎn)發(fā)表項(xiàng)生成依賴數(shù)據(jù)包在沿途傳播過程中的延時(shí),除了延時(shí)最小的包能創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)外,其它包被當(dāng)作重復(fù)包丟棄。延時(shí)包括四部分處理延時(shí)、隊(duì)列等待延時(shí)、發(fā)送延時(shí)和鏈路傳播延時(shí)。除了隊(duì)列等待延時(shí),其它延時(shí)都是固定的。通過把生成轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)包設(shè)置為一種特殊的控制包,以較高優(yōu)先級(jí)轉(zhuǎn)發(fā),從而忽略隊(duì)列等待。根據(jù)反向端口擁塞程度,設(shè)置相應(yīng)的延遲時(shí)間,進(jìn)而有效地均衡在各條鏈路上的流量,這要求節(jié)點(diǎn)在轉(zhuǎn)發(fā)時(shí)能夠等待一個(gè)預(yù)設(shè)的時(shí)間段,即存在一個(gè)等待過程。本發(fā)明所使用的數(shù)據(jù)結(jié)構(gòu)有三種:泛洪包、泛洪包記錄表和本節(jié)點(diǎn)序列號(hào)。本發(fā)明使用兩種泛洪包,分別為導(dǎo)向包和通知包。"導(dǎo)向包"用于生成轉(zhuǎn)發(fā)表項(xiàng),"通知包"用于通知其它節(jié)點(diǎn)泛洪。由于在拓?fù)涓淖兒笠M(jìn)行全網(wǎng)泛洪,發(fā)現(xiàn)拓?fù)涓淖兊墓?jié)點(diǎn)要用"通知包"通知其它節(jié)點(diǎn)。泛洪包結(jié)構(gòu)含有三個(gè)部分包標(biāo)識(shí)、源地址和序列號(hào),如圖1。包標(biāo)識(shí)指明數(shù)據(jù)包類型為"導(dǎo)向包"或"通知包"。源地址是最初泛洪的節(jié)點(diǎn)ID號(hào)。序列號(hào)用于抑制重復(fù)包。在具體實(shí)現(xiàn)中,泛洪過程首先要解決重復(fù)包問題。由于網(wǎng)絡(luò)中存在環(huán)路,數(shù)據(jù)包會(huì)返回源節(jié)點(diǎn),引起重復(fù)泛洪。節(jié)點(diǎn)可以記錄下已經(jīng)收到過的泛洪包,如果再次收到,就直接丟棄處理。其思路是在包頭設(shè)置標(biāo)識(shí)序列號(hào),節(jié)點(diǎn)在收到后,根據(jù)序列號(hào)判斷是否收到重復(fù)包。如果收到的數(shù)據(jù)包的序列號(hào)已有記錄,就直接丟棄。節(jié)點(diǎn)為了抑制重復(fù)包,必須存貯已經(jīng)收到的泛洪包。數(shù)據(jù)結(jié)構(gòu)為泛洪包記錄表,包括四個(gè)部分包標(biāo)識(shí)、源地址、序列號(hào)和年齡。包標(biāo)識(shí)、源地址和序列號(hào)取自收到的泛洪包。記錄項(xiàng)存儲(chǔ)時(shí)間有一定限制。維護(hù)人員為記錄設(shè)置一個(gè)最長(zhǎng)時(shí)間。當(dāng)記錄項(xiàng)被插入泛洪包記錄表時(shí),"年齡"字段是維護(hù)員設(shè)置的最大時(shí)間。隨后,每經(jīng)過一段時(shí)間就自動(dòng)減l,當(dāng)減少到o時(shí),記錄被刪除。本節(jié)點(diǎn)序列號(hào),是一個(gè)全局的數(shù)據(jù)結(jié)構(gòu),從0開始,每泛洪一次,序列號(hào)自動(dòng)加l。使用6bytes存貯,保證了序列號(hào)在足夠長(zhǎng)時(shí)間(幾百年)內(nèi)不會(huì)重復(fù)。每個(gè)節(jié)點(diǎn)執(zhí)行四個(gè)功能泛洪"導(dǎo)向包"、接收并轉(zhuǎn)發(fā)"導(dǎo)向包"、泛洪"通知包"、接收并轉(zhuǎn)發(fā)"通知包"。其中接收到這兩種包時(shí)必須要查詢是否己經(jīng)收到過,因此有一個(gè)"識(shí)別并記錄新泛洪包"的子功能。節(jié)點(diǎn)使用兩種事件"時(shí)間事件"和"拓?fù)涓淖?。節(jié)點(diǎn)為了能夠有效均衡流量,有必要周期性發(fā)導(dǎo)向包。這需要一個(gè)時(shí)間事件來觸發(fā)導(dǎo)向包泛洪,即間隔一段時(shí)間泛洪一次。當(dāng)網(wǎng)絡(luò)拓?fù)涓淖儠r(shí),由通知包觸發(fā)導(dǎo)向包泛洪。拓?fù)涓淖冇卸喾N原因,例如網(wǎng)絡(luò)鏈路出現(xiàn)故障,增刪端口等。本發(fā)明只關(guān)注轉(zhuǎn)發(fā)表生成過程,其它模塊在發(fā)現(xiàn)網(wǎng)絡(luò)拓?fù)涓淖兒螅梢杂|發(fā)本發(fā)明的功能。一、新泛洪包識(shí)別與記錄此功能有兩個(gè)任務(wù)——判斷和記錄。判斷是否是重復(fù)包或陳舊包。對(duì)于同一類型的包,陳舊包已經(jīng)不再起作用,也有必要丟棄。序列號(hào)小的包要比大的陳舊。處理過程分成下面三步1)根據(jù)包標(biāo)識(shí)和源地址為索引,在泛洪包記錄表查詢相應(yīng)的包記錄。如果査找到記錄項(xiàng),進(jìn)入步驟2),否則進(jìn)入步驟3)。2)比較序列號(hào)大小,當(dāng)序列號(hào)小于或等于時(shí),中止下面的過程,返回重復(fù)包標(biāo)識(shí);否則,修改記錄表項(xiàng),序列號(hào)改為新序列號(hào),返回非重復(fù)包標(biāo)識(shí)。3)在泛洪包記錄表中插入相應(yīng)的包記錄,源地址和序列號(hào)取自泛洪包。返回非重復(fù)包標(biāo)識(shí)。二、"導(dǎo)向包"泛洪當(dāng)節(jié)點(diǎn)接收到事件——"時(shí)間事件"或者網(wǎng)絡(luò)拓?fù)涓淖兪录?收到"通知包"),節(jié)點(diǎn)要泛洪"導(dǎo)向包",所有的域內(nèi)端口都要被發(fā)送一份。數(shù)據(jù)包各字段內(nèi)容如下包標(biāo)識(shí)標(biāo)示這是一個(gè)導(dǎo)向包,此字段由開發(fā)人員約定(例如設(shè)為129)。源地址此字段設(shè)為本節(jié)點(diǎn)的ID號(hào)(在節(jié)點(diǎn)域內(nèi)節(jié)點(diǎn)的唯一標(biāo)識(shí))。序列號(hào)此字段的值等于本節(jié)點(diǎn)序列號(hào)。用于唯一標(biāo)識(shí)這個(gè)數(shù)據(jù)包,當(dāng)其它節(jié)點(diǎn)收到這個(gè)導(dǎo)向包后,記錄下序列號(hào)和源地址。如果再收到某個(gè)導(dǎo)向包,這兩個(gè)字段存有記錄,則直接丟掉此"導(dǎo)向包"。三、"導(dǎo)向包"接收與轉(zhuǎn)發(fā)當(dāng)節(jié)點(diǎn)收到導(dǎo)向包后,處理過程分成下面幾步1)記錄下序列號(hào)、源地址和接收端口。2)根據(jù)接收端口,設(shè)置"導(dǎo)向包"等待時(shí)間,計(jì)算公式為C為維護(hù)員設(shè)置的常數(shù),一般情況下為1。B為反向端口帶寬。丄為反向負(fù)載,可以認(rèn)為是數(shù)據(jù)包隊(duì)列平均長(zhǎng)度。w'是維護(hù)員設(shè)置的常數(shù)。假設(shè)導(dǎo)向包接收端口與轉(zhuǎn)發(fā)表記錄相一致,則使等待時(shí)間減少w',否則w'為0。其目的在于減少轉(zhuǎn)發(fā)表的震蕩。當(dāng)節(jié)點(diǎn)收到兩個(gè)導(dǎo)向包后,如果二者延時(shí)差距很小,轉(zhuǎn)發(fā)表項(xiàng)就能夠不被修改,減少震蕩。在圖2中,假設(shè)節(jié)點(diǎn)7收到源自節(jié)點(diǎn)1的"導(dǎo)向包",是由節(jié)點(diǎn)5轉(zhuǎn)發(fā)過來的。在節(jié)點(diǎn)7的轉(zhuǎn)發(fā)表中,目的地為節(jié)點(diǎn)1的下一跳是節(jié)點(diǎn)5,那么w'不為0。這樣能夠減少等待時(shí)間,節(jié)點(diǎn)5轉(zhuǎn)發(fā)的導(dǎo)向包被選擇的可能性更高,從而在一定程度上減少轉(zhuǎn)發(fā)表的修改。當(dāng)『為負(fù)值時(shí),等待時(shí)間為0,即無需等待。在等待時(shí)間過去后,繼續(xù)下面的處理過程。3)執(zhí)行"新泛洪包識(shí)別與記錄"過程,如果返回結(jié)果是"非重復(fù)包",就執(zhí)行下面的過程,否則中止。4)修改轉(zhuǎn)發(fā)表,目標(biāo)地址設(shè)為"源地址",轉(zhuǎn)發(fā)端口為"接收到的端口"。5)除了"接收到的端口"外,向其它域內(nèi)端口泛洪此"導(dǎo)向包"。四、"通知包"泛洪當(dāng)節(jié)點(diǎn)發(fā)現(xiàn)節(jié)點(diǎn)域內(nèi)網(wǎng)絡(luò)拓?fù)渥兓?,向外泛?通知包"。本節(jié)點(diǎn)的域內(nèi)端口都被發(fā)送一份。數(shù)據(jù)包各字段內(nèi)容如下包標(biāo)識(shí)標(biāo)示這是一個(gè)"通知包",此字段由開發(fā)人員約定(例如設(shè)為130)。源地址此字段設(shè)為本節(jié)點(diǎn)的ID號(hào)(在節(jié)點(diǎn)域內(nèi)節(jié)點(diǎn)的唯一標(biāo)識(shí))。序列號(hào)本節(jié)點(diǎn)序列號(hào)。五、"通知包"接收與轉(zhuǎn)發(fā)節(jié)點(diǎn)收到一個(gè)"通知包",執(zhí)行如下過程1)記錄下序列號(hào)、源地址和接收到的端口。2)執(zhí)行新泛洪包識(shí)別與記錄過程,如果返回結(jié)果是"非重復(fù)包",就進(jìn)行下面的過程,否則中止。3)觸發(fā)"導(dǎo)向包"泛洪。4)除了"接收到的端口"夕卜,向其它域內(nèi)端口泛洪此"通知包"。對(duì)本方法適用情況的幾點(diǎn)說明。1)兩節(jié)點(diǎn)之間的網(wǎng)絡(luò)鏈路要求是全雙工通道,雙向延遲時(shí)間相同。目前的地面骨干信道均能滿足此要求。2)如果節(jié)點(diǎn)每隔一段時(shí)間自動(dòng)觸發(fā)一次導(dǎo)向包泛洪,在間隔時(shí)間足夠短(例如20毫秒)的情況下,可以取消拓?fù)涓淖兪录?,取消泛洪通知包。這樣既可以有效地處理網(wǎng)絡(luò)拓?fù)涓淖兪录?,又能縮短轉(zhuǎn)發(fā)表收斂時(shí)間。3)本發(fā)明存在很大的擴(kuò)充空間。通過在導(dǎo)向包內(nèi)增加一些字段,如MTU、帶寬、經(jīng)過的節(jié)點(diǎn)等信息,從而能夠提供一定的策略路由。例如當(dāng)節(jié)點(diǎn)A不愿意轉(zhuǎn)發(fā)目的地為節(jié)點(diǎn)B的數(shù)據(jù)包時(shí),當(dāng)A收到B泛洪的導(dǎo)向包,停止泛洪即可。圖1導(dǎo)向包結(jié)構(gòu).圖2實(shí)施例節(jié)點(diǎn)域網(wǎng)絡(luò)拓?fù)鋱D。圖3a-d節(jié)點(diǎn)1在節(jié)點(diǎn)域內(nèi)泛洪"導(dǎo)向包"的過程。具體實(shí)施例方式在實(shí)施例中,主要描述轉(zhuǎn)發(fā)表生成過程、自動(dòng)負(fù)載均衡和拓?fù)涓淖兒筠D(zhuǎn)發(fā)表收斂。所有節(jié)點(diǎn)周期性泛洪導(dǎo)向包,從而把負(fù)載狀況反映在轉(zhuǎn)發(fā)表上。當(dāng)網(wǎng)絡(luò)拓?fù)涓淖兪录?,感知到事件的?jié)點(diǎn)泛洪通知包,收到通知包的節(jié)點(diǎn)泛洪導(dǎo)向包,從而重新生成轉(zhuǎn)發(fā)表,完成收斂。圖2是一個(gè)包含有9個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)域。每個(gè)節(jié)點(diǎn)的處理能力相同,任意兩節(jié)點(diǎn)之間的帶寬是1000Mbps,延時(shí)為lms。節(jié)點(diǎn)間隔固定周期向外泛洪"導(dǎo)向包"。從節(jié)點(diǎn)1到節(jié)點(diǎn)9,間隔50ms依次泛洪。節(jié)點(diǎn)9泛洪完,下一時(shí)間點(diǎn)轉(zhuǎn)到節(jié)點(diǎn)l,如此往復(fù)循環(huán)不停。除了固定周期外,在節(jié)點(diǎn)域拓?fù)涓淖兒螅l(fā)現(xiàn)變化的節(jié)點(diǎn)泛洪"通知包"。收到通知包的節(jié)點(diǎn)觸發(fā)以自身為源節(jié)點(diǎn)的"導(dǎo)向包"泛洪。圖3a-d描述了節(jié)點(diǎn)l泛洪導(dǎo)向包的過程。在圖3a中,節(jié)點(diǎn)1向節(jié)點(diǎn)4泛洪。在圖3b中,由于節(jié)點(diǎn)4第一次收到,所以向節(jié)點(diǎn)2、節(jié)點(diǎn)3、節(jié)點(diǎn)5和節(jié)點(diǎn)6泛洪。節(jié)點(diǎn)2收到后,由于只有一條鏈路與節(jié)點(diǎn)3相連,停止泛洪。節(jié)點(diǎn)5和節(jié)點(diǎn)6收到后向節(jié)點(diǎn)7泛洪,如圖3c。節(jié)點(diǎn)7收到了兩份相同的"導(dǎo)向包",假設(shè)節(jié)點(diǎn)5泛洪的"導(dǎo)向包"快一點(diǎn),它丟棄節(jié)點(diǎn)6泛洪的"導(dǎo)向包"。如圖3d,節(jié)點(diǎn)7向其它端口泛洪從節(jié)點(diǎn)5收到的"導(dǎo)向包"。由于節(jié)點(diǎn)6已經(jīng)從節(jié)點(diǎn)4收到導(dǎo)向包,因此丟棄節(jié)點(diǎn)7發(fā)送的導(dǎo)向包。圖3也反映了節(jié)點(diǎn)1泛洪導(dǎo)向包所占用的帶寬。由于每個(gè)節(jié)點(diǎn)在每條單向信道上最多發(fā)送一次導(dǎo)向包,占用帶寬的上限能夠計(jì)算出來。圖3所示的網(wǎng)絡(luò)共有9條鏈路,即18條單向信道。圖3a-d所示的泛洪過程總共發(fā)送了IO個(gè)導(dǎo)向包。即使所有節(jié)點(diǎn)都泛洪一次,單向信道傳輸?shù)臄?shù)據(jù)也不會(huì)很多。由于導(dǎo)向包很小,一般的節(jié)點(diǎn)域或自治域內(nèi)節(jié)點(diǎn)數(shù)不會(huì)太多,所以占用的帶寬并不多。從圖2看出,節(jié)點(diǎn)7和節(jié)點(diǎn)4之間有兩條信道可供使用。轉(zhuǎn)發(fā)表生成過程要盡可能使流量在兩條信道上均衡流量。為了說明方便,我們假設(shè)任意兩節(jié)點(diǎn)之間互有相同流量100kbps,當(dāng)轉(zhuǎn)發(fā)表為空時(shí),則不發(fā)送流量。在一開始,節(jié)點(diǎn)的轉(zhuǎn)發(fā)表是空的,節(jié)點(diǎn)1至節(jié)點(diǎn)9按時(shí)間段依次泛洪導(dǎo)向包。表1至表6描述了節(jié)點(diǎn)7的部分轉(zhuǎn)發(fā)表。當(dāng)節(jié)點(diǎn)7從節(jié)點(diǎn)5收到節(jié)點(diǎn)1的"導(dǎo)向包",生成一條轉(zhuǎn)發(fā)表項(xiàng),如表1所示。泛洪完成后,節(jié)點(diǎn)7、節(jié)點(diǎn)8和節(jié)點(diǎn)9都向節(jié)點(diǎn)1發(fā)送流量,那么節(jié)點(diǎn)7向節(jié)點(diǎn)5的總流量是300kbps。下一個(gè)時(shí)間點(diǎn),節(jié)點(diǎn)2開始泛洪,節(jié)點(diǎn)7收到導(dǎo)向包。由于信道存在流量,那么根據(jù)"導(dǎo)向包"處理過程,節(jié)點(diǎn)5轉(zhuǎn)發(fā)的"導(dǎo)向包"會(huì)等待一段時(shí)間,那么節(jié)點(diǎn)6轉(zhuǎn)發(fā)的先處理,最后形成的轉(zhuǎn)發(fā)表如表2。泛洪完成,節(jié)點(diǎn)7、節(jié)點(diǎn)8和節(jié)點(diǎn)9都向節(jié)點(diǎn)2發(fā)送流量,那么節(jié)點(diǎn)7向節(jié)點(diǎn)6的總流量是300kbps。表3、表4分別描述的是節(jié)點(diǎn)3和節(jié)點(diǎn)4泛洪導(dǎo)向包后,節(jié)點(diǎn)7的轉(zhuǎn)發(fā)表。從表內(nèi)容可見,節(jié)點(diǎn)7和節(jié)點(diǎn)4之間的信道能夠根據(jù)負(fù)載被均衡使用。表5和表6說明隨后的時(shí)間里,在負(fù)載和拓?fù)洳蛔兦闆r下,轉(zhuǎn)發(fā)表項(xiàng)不會(huì)隨意更改,路徑固定。<table>tableseeoriginaldocumentpage10</column></row><table>表l交換機(jī)7在時(shí)刻1的部分轉(zhuǎn)發(fā)表<table>tableseeoriginaldocumentpage10</column></row><table>表2交換機(jī)7在時(shí)刻2的部分轉(zhuǎn)發(fā)表<table>tableseeoriginaldocumentpage10</column></row><table>表3交換機(jī)7在時(shí)刻3的部分轉(zhuǎn)發(fā)表<table>tableseeoriginaldocumentpage10</column></row><table>表4交換機(jī)7在時(shí)刻4的部分轉(zhuǎn)發(fā)表<table>tableseeoriginaldocumentpage11</column></row><table>表5交換機(jī)7在時(shí)刻10的部分轉(zhuǎn)發(fā)表<table>tableseeoriginaldocumentpage11</column></row><table>表6交換機(jī)7在時(shí)刻11的部分轉(zhuǎn)發(fā)表當(dāng)某節(jié)點(diǎn)檢測(cè)到拓?fù)渥兓?,它在?jié)點(diǎn)域內(nèi)廣播"通知包",其它節(jié)點(diǎn)收到通知包后,觸發(fā)"導(dǎo)向包"泛洪,重新生成新的轉(zhuǎn)發(fā)表項(xiàng)。假設(shè)在某個(gè)時(shí)刻,節(jié)點(diǎn)5發(fā)生故障。節(jié)點(diǎn)4和節(jié)點(diǎn)7在感受到網(wǎng)絡(luò)拓?fù)涓淖兒?,觸發(fā)"通知包泛洪流程"。節(jié)點(diǎn)收到通知包后會(huì)觸發(fā)以自身為源點(diǎn)的"導(dǎo)向包泛洪",實(shí)現(xiàn)轉(zhuǎn)發(fā)表收斂。只要網(wǎng)絡(luò)是連通的,每個(gè)節(jié)點(diǎn)會(huì)收到兩次通知包,相應(yīng)地會(huì)泛洪兩次。由于泛洪不會(huì)給網(wǎng)絡(luò)帶來太大的壓力,兩次泛洪不會(huì)產(chǎn)生嚴(yán)重影響。當(dāng)節(jié)點(diǎn)5發(fā)生故障后,轉(zhuǎn)發(fā)表收斂時(shí)間能夠估計(jì)出來。由于各節(jié)點(diǎn)情況類似,不妨以節(jié)點(diǎn)l為例來說明。當(dāng)節(jié)點(diǎn)4的通知包到達(dá)節(jié)點(diǎn)1,節(jié)點(diǎn)l泛洪導(dǎo)向包,經(jīng)節(jié)點(diǎn)4,節(jié)點(diǎn)6,節(jié)點(diǎn)7,最后到達(dá)節(jié)點(diǎn)9。所經(jīng)歷的時(shí)間是通知包和導(dǎo)向包在網(wǎng)絡(luò)中傳播的時(shí)間。這個(gè)時(shí)間主要是傳播時(shí)間,轉(zhuǎn)發(fā)時(shí)間和導(dǎo)向包的等待時(shí)間。傳播和轉(zhuǎn)發(fā)時(shí)間是由網(wǎng)絡(luò)帶寬和地理位置等特性決定,并不會(huì)改變。由于電磁信號(hào)傳播速度很快,網(wǎng)絡(luò)帶寬很高,傳播和轉(zhuǎn)發(fā)時(shí)間并不會(huì)很大。導(dǎo)向包等待時(shí)間與網(wǎng)絡(luò)負(fù)載狀況和設(shè)置相關(guān)。由于節(jié)點(diǎn)最大隊(duì)列長(zhǎng)度受限,即使以最大長(zhǎng)度來計(jì)算,導(dǎo)向包等待時(shí)間并不會(huì)很長(zhǎng)。因此、從總體上看,轉(zhuǎn)發(fā)表收斂的時(shí)間非常短,以覆蓋全中國(guó)的網(wǎng)絡(luò)來估計(jì),其時(shí)間不多于100毫秒。以上實(shí)施例描述了導(dǎo)向包生成轉(zhuǎn)發(fā)表項(xiàng)、根據(jù)負(fù)載生成轉(zhuǎn)發(fā)表和轉(zhuǎn)發(fā)表收斂過程。本發(fā)明實(shí)現(xiàn)了易于實(shí)現(xiàn),轉(zhuǎn)發(fā)表收斂迅速和有效實(shí)現(xiàn)負(fù)載均衡的目的。權(quán)利要求1、一種采用泛洪方式生成數(shù)據(jù)包轉(zhuǎn)發(fā)表的方法,該方法包括當(dāng)節(jié)點(diǎn)域網(wǎng)絡(luò)拓?fù)涓淖兒?,感知到變化的?jié)點(diǎn)生成通知包和導(dǎo)向包,并以泛洪方式發(fā)送出去;當(dāng)其它節(jié)點(diǎn)收到導(dǎo)向包后,根據(jù)反向負(fù)載、反向端口帶寬和轉(zhuǎn)發(fā)表原有記錄三個(gè)要素計(jì)算出等待時(shí)間,在經(jīng)過所述的等待時(shí)間后,查找泛洪包記錄表,判斷是否為新包、舊包或重復(fù)包,如果導(dǎo)向包是新包,根據(jù)導(dǎo)向包的源地址和接收端口修改轉(zhuǎn)發(fā)表,如果是舊包或重復(fù)包,丟棄導(dǎo)向包,退出任務(wù);當(dāng)其它節(jié)點(diǎn)收到通知包后,查找泛洪包記錄表,判斷是否為新包、舊包或重復(fù)包,如果通知包是新包,以本節(jié)點(diǎn)為源頭觸發(fā)導(dǎo)向包泛洪,如果通知包是舊包或重復(fù)包,丟棄通知包,退出任務(wù)。2、如權(quán)利要求1所述一種采用泛洪方式生成數(shù)據(jù)包轉(zhuǎn)發(fā)表的方法,其特征在于,等待時(shí)間根據(jù)反向負(fù)載、反向端口帶寬和轉(zhuǎn)發(fā)表原有記錄等3個(gè)要素計(jì)算,公式如下,其中『為等待時(shí)間,C為維護(hù)員設(shè)置的常數(shù),^為反向端口帶寬,Z為反向負(fù)載,w'為維護(hù)員設(shè)置的常數(shù),當(dāng)『結(jié)果為負(fù)值時(shí),無需等待。3、如權(quán)利要求2所述的一種采用泛洪方式生成數(shù)據(jù)包轉(zhuǎn)發(fā)表的方法,其特征在于,當(dāng)導(dǎo)向包接收端口與轉(zhuǎn)發(fā)表記錄相一致時(shí),w'為維護(hù)員設(shè)置的常數(shù),否則為0。4、如權(quán)利要求1所述一種采用泛洪方式生成數(shù)據(jù)包轉(zhuǎn)發(fā)表的方法,其特征在于,如果導(dǎo)向包是新包,修改轉(zhuǎn)發(fā)表,以導(dǎo)向包源地址為索引査詢轉(zhuǎn)發(fā)表,若有匹配的記錄項(xiàng),則修改記錄項(xiàng)中轉(zhuǎn)發(fā)端口字段值為導(dǎo)向包的接收端口,若沒有匹配的記錄項(xiàng),在轉(zhuǎn)發(fā)表中插入新記錄項(xiàng),新記錄項(xiàng)中目的地址字段值設(shè)置為導(dǎo)向包的源地址,轉(zhuǎn)發(fā)端口字段值設(shè)置為導(dǎo)向包的接收端口。全文摘要本發(fā)明涉及一種生成轉(zhuǎn)發(fā)表的方法。它以數(shù)據(jù)包泛洪為基礎(chǔ),反向生成轉(zhuǎn)發(fā)表。根據(jù)反向端口擁塞程度,調(diào)整泛洪包在節(jié)點(diǎn)中的等待延遲,進(jìn)而實(shí)現(xiàn)流量均衡,減少轉(zhuǎn)發(fā)表項(xiàng)的變動(dòng)。通過泛洪網(wǎng)絡(luò)拓?fù)渥兓录蛘呖s短導(dǎo)向包泛洪周期,減少轉(zhuǎn)發(fā)表收斂時(shí)間??傊朔椒ň哂袑?shí)現(xiàn)簡(jiǎn)單、收斂迅速和均衡流量的特點(diǎn)。文檔編號(hào)H04L12/56GK101436980SQ200710166168公開日2009年5月20日申請(qǐng)日期2007年11月12日優(yōu)先權(quán)日2007年11月12日發(fā)明者呂紅蕾,俊李,游軍玲,牛廣鋒,葛敬國(guó),鄂躍鵬,錢華林申請(qǐng)人:中國(guó)科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心