專利名稱:路由處理方法及路由轉(zhuǎn)發(fā)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及IP (Internet Protocol,因特網(wǎng)協(xié)議)路由技術(shù)領(lǐng)域,特別涉及一種路由處理方法及路由轉(zhuǎn)發(fā)設(shè)備。
背景技術(shù):
BGP (Border Gateway Protocol,邊界網(wǎng)關(guān)協(xié)議)是一種既可以用于不同AS(Autonomous System,自治系統(tǒng))之間,又可以用于同一 AS內(nèi)部的動態(tài)路由協(xié)議。當(dāng)BGP運行于同一 AS內(nèi)部時,被稱為IBGP (Internal BGP);當(dāng)BGP運行于不同AS之間時,稱為EBGP (External BGP)。其中,AS是擁有同一選路策略,在同一技術(shù)管理部門下運行的一組
路由器。
BGP定義了以下5種消息類型> Open (初始)=TCP連接建立后發(fā)送的第一個消息,用于在BGP對等體(發(fā)送BGP消息的路由器稱為BGP發(fā)言者(BGP Speaker),相互交換消息的BGP發(fā)言者之間互稱對等體(Peer))之間建立BGP會話,即,建立BGP對等體之間的連接關(guān)系。> Update (更新)用于在BGP對等體之間交換路由信息。一條Update消息可以發(fā)布一類具有相同路徑屬性的多條可達路由,也可以同時撤銷多條不可達路由。其中,只帶路由前綴的Update就是撤銷(Withdraw)報文。> Keepalive (存活或?;?BGP周期性地向?qū)Φ润w發(fā)送Keepalive消息,以保持BGP會話的有效性。> Route-refresh (路由刷新):用來要求對等體重新發(fā)送指定地址族的路由信息。>Notification(通知):當(dāng)BGP檢測到錯誤狀態(tài)時,就向?qū)Φ润w發(fā)出Notification消息,之后BGP會話會立即中斷。BGP當(dāng)前使用的版本是BGP-4,BGP_4只能管理IPv4的路由信息,對于使用其它網(wǎng)絡(luò)層協(xié)議(如IPv6等)的應(yīng)用,在跨自治系統(tǒng)傳播時就受到一定限制。為了提供對多種網(wǎng)絡(luò)層協(xié)議的支持,IETF (Internet Engineering Task Force,互聯(lián)網(wǎng)工程任務(wù)組)對BGP-4進行了擴展,形成 MP-BGP (Multiprotocol Border Gateway Protocol,多協(xié)議邊界網(wǎng)關(guān)協(xié)議)。其中,針對IPv6地址族的BGP擴展,稱為IPv6BGP。在BGP-4和IPv6BGP中,peer keep-al 1-routes (對等體保存所有路由)命令用來將從指定的對等體/對等體組接收到的所有的原始的路由更新信息保存在本地路由器,不管這些路由更新信息是否通過了路由策略的過濾。該命令可以用于實現(xiàn)BGP會話的軟復(fù)位,具體的,如果本地路由器和對等體中至少一個不支持路由刷新(Route-refresh)功能,那么,就可以通過配置本命令將從對等體/對等體組接收的所有原始路由更新信息保存在本地,當(dāng)路由策略發(fā)生改變后,對保存在本地的所有路由使用新的路由策略重新進行過濾,從而實現(xiàn)在不中斷BGP會話的情況下,對BGP路由表進行更新,并應(yīng)用新的路由策略。例如,路由器A不支持路由刷新功能,貝U其對等體路由器B在本地配置peer keep-al 1-routes命令以保存所有來自路由器A的原始路由信息,這樣,路由器B在接收到路由器A發(fā)來的路由信息后,會在本地保存一份副本?,F(xiàn)有技術(shù)中,peer keep-all-routes命令是本地路由器針對對等體發(fā)送的路由在本地保存最原始的一份數(shù)據(jù),后續(xù),當(dāng)本地路由器的入策略發(fā)生改變時,本地路由器不會再向該對等體發(fā)送Route-refresh報文以請求該對等體重新發(fā)送路由信息,而直接使用本地保存的路由信息進行過濾即可。這樣,通過使用peer keep-al 1-routes命令可以減少對端的對等體(也稱為鄰居)的路由信息(即Update報文)的發(fā)送。但是,當(dāng)本地路由器的出策略或協(xié)議引入(引入其他路由協(xié)議發(fā)現(xiàn)的路由)發(fā)生改變而觸發(fā)路由更新時,本地路由器仍然需要將本地所有的路由信息及其路由屬性經(jīng)過新的出策略過濾后,重新發(fā)送給對端的對等體,從而占用了較大的帶寬。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種路由處理方法及路由轉(zhuǎn)發(fā)設(shè)備,以至少解決現(xiàn)有技術(shù)中,當(dāng)本地路由器的出策略或協(xié)議引入發(fā)生改變而觸發(fā)路由更新時,本地路由器仍然需 要將本地所有的路由信息及其路由屬性經(jīng)過新的出策略過濾后,重新發(fā)送給對端的對等體,占用較大帶寬的問題。本發(fā)明的技術(shù)方案如下一方面,提供了一種應(yīng)用于BGP中的路由處理方法,包括在需要更新自身發(fā)布的路由信息時,第一路由轉(zhuǎn)發(fā)設(shè)備比較本地保存的第一路由信息和第二路由信息,其中,第一路由信息是已經(jīng)發(fā)布給BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,第二路由信息是要更新到的路由信息;第一路由轉(zhuǎn)發(fā)設(shè)備根據(jù)比較結(jié)果,指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與第二路由信息的不同之處。另一方面,還提供了一種應(yīng)用于BGP中的路由轉(zhuǎn)發(fā)設(shè)備,包括比較模塊,用于在需要更新本路由轉(zhuǎn)發(fā)設(shè)備發(fā)布的路由信息時,比較本地保存的第一路由信息和第二路由信息,其中,第一路由信息是已經(jīng)發(fā)布給本路由轉(zhuǎn)發(fā)設(shè)備的BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,第二路由信息是要更新到的路由信息;發(fā)送模塊,用于根據(jù)比較模塊的比較結(jié)果,指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與第二路由信息的不同之處。本發(fā)明的以上技術(shù)方案,本地路由轉(zhuǎn)發(fā)設(shè)備(可以稱為第一路由轉(zhuǎn)發(fā)設(shè)備)中保存有之前已經(jīng)發(fā)布的路由信息(稱為第一路由信息)以及因出策略或協(xié)議引入發(fā)生改變而觸發(fā)路由(即要發(fā)布的路由)更新時需要更新為的路由信息(稱為第二路由信息),第一路由轉(zhuǎn)發(fā)設(shè)備的BGP對等體(稱為第二路由轉(zhuǎn)發(fā)設(shè)備,可以是一個或多個路由轉(zhuǎn)發(fā)設(shè)備)本地保存有第一路由信息,第一路由信息在要進行路由更新之前,首先比較本地保存的第一路由信息和第二路由信息,再根據(jù)比較結(jié)果來指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與所述第二路由信息的不同之處。由于第二路由轉(zhuǎn)發(fā)設(shè)備在本地已經(jīng)保存有第一路由信息,這樣,第一路由轉(zhuǎn)發(fā)設(shè)備可以僅指示第二路由轉(zhuǎn)發(fā)設(shè)備更新第一路由信息與第二路由信息的不同之處,即可使得第二路由轉(zhuǎn)發(fā)設(shè)備將本地保存的第一路由信息更新為第二路由信息,從而第一路由轉(zhuǎn)發(fā)設(shè)備不需要將全部的第二路由信息再發(fā)送給所有的對等體,達到了減少報文的發(fā)送,減少帶寬的占用的目的。
圖I是根據(jù)本發(fā)明的實施例一的路由處理方法的流程圖;圖2是根據(jù)本發(fā)明的實施例二的路由處理方法的具體處理流程圖;圖3是現(xiàn)有技術(shù)的攜帶有ORF信息的route-refresh報文的格式示意圖;圖4是現(xiàn)有技術(shù)的攜帶有ORF信息的route-refresh報文中ORF entry字段的格式示意圖;圖5是根據(jù)本發(fā)明的實施例二的Modify報文中的ORF entry字段的格式示意圖;圖6是根據(jù)本發(fā)明的實施例三的路由轉(zhuǎn)發(fā)設(shè)備的結(jié)構(gòu)示意圖。
具體實施例方式為了解決現(xiàn)有技術(shù)中,當(dāng)本地路由器的出策略或協(xié)議引入(引入其他路由協(xié)議發(fā) 現(xiàn)的路由)發(fā)生改變而觸發(fā)路由更新時,本地路由器仍然需要將本地所有的路由信息及其路由屬性經(jīng)過新的出策略過濾后,重新發(fā)送給對端的對等體,占用較大帶寬的問題,本發(fā)明以下實施例提供了一種路由處理方法以及應(yīng)用該方法的路由轉(zhuǎn)發(fā)設(shè)備。本發(fā)明的以下實施例中,本地路由轉(zhuǎn)發(fā)設(shè)備(可以稱為第一路由轉(zhuǎn)發(fā)設(shè)備)中保存有之前已經(jīng)發(fā)布的路由信息(稱為第一路由信息)以及因出策略或協(xié)議引入發(fā)生改變而觸發(fā)路由(即要發(fā)布的路由)更新時需要更新為的路由信息(稱為第二路由信息),第一路由轉(zhuǎn)發(fā)設(shè)備的BGP對等體(稱為第二路由轉(zhuǎn)發(fā)設(shè)備,可以是一個或多個路由轉(zhuǎn)發(fā)設(shè)備)本地保存有第一路由信息,第一路由轉(zhuǎn)發(fā)設(shè)備在要進行路由更新之前,首先比較本地保存的第一路由信息和第二路由信息,再根據(jù)比較結(jié)果來指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與所述第二路由信息的不同之處,從而相同的部分就不需要發(fā)送給BGP對等體了,因此,本發(fā)明能夠有效減少需要發(fā)送的報文的數(shù)量或長度,減少了需要占用的帶寬。實施例一圖I是根據(jù)本發(fā)明的實施例一的路由處理方法的處理流程圖,本方法可以應(yīng)用于BGP中,包括BGP-4和IPv6BGP。本方法可以由支持BGP的網(wǎng)絡(luò)中的任意一個路由轉(zhuǎn)發(fā)設(shè)備(以下稱為第一路由轉(zhuǎn)發(fā)設(shè)備)來執(zhí)行,該路由轉(zhuǎn)發(fā)設(shè)備可以是路由器等設(shè)備,本發(fā)明對此不做限定。如圖I所示,該方法包括以下步驟步驟S102,在需要更新自身發(fā)布的路由信息時,第一路由轉(zhuǎn)發(fā)設(shè)備比較本地保存的第一路由信息和第二路由信息,其中,第一路由信息是已經(jīng)發(fā)布給BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,第二路由信息是要更新到的路由信息;例如,在第一路由轉(zhuǎn)發(fā)設(shè)備的出策略或者協(xié)議引入發(fā)生了改變而需要更新發(fā)布路由信息時,第一路由轉(zhuǎn)發(fā)設(shè)備比較本地保存的之前已經(jīng)發(fā)布了的路由信息即第一路由信息以及此次需要更新為的路由信息即第二路由信息。顯然,第一路由轉(zhuǎn)發(fā)設(shè)備需要在本地保存第一路由信息以及第二路由信息,并且,第一路由信息是已經(jīng)經(jīng)過本地的出策略過濾后的路由信息,第二路由信息也是已經(jīng)經(jīng)過本地當(dāng)前的出策略(若是出策略發(fā)生改變,則當(dāng)前的出策略即為改變后的新出策略)過濾后的路由信息。第一路由信息和第二路由信息中可以包含有至少一個路由。由于一個路由具有路由前綴和路由屬性,因此,比較第一路由信息和第二路由信息時,可以比較兩者包含的路由的前綴和屬性值,從而判斷兩者的相同和不同之處。其中,路由前綴是路由的IP地址的前綴。例如,路由的路由前綴可以是128. 97. O. 0/16。路由屬性是跟隨路由一起發(fā)送出去的一組參數(shù),它對特定的路由進行了進一步的描述,使得路由接收者能夠根據(jù)路由屬性值對路由進行過濾和選擇。路由屬性可以分為以下四類(I)公認必須遵循(Well-known mandatory):所有BGP路由器都必須能夠識別這種屬性,且必須存在于Update消息中。如果缺少這種屬性,路由信息就會出錯。(2)公認可選(Well-known discretionary):所有BGP路由器都可以識別,但不要求必須存在于Update消息中,可以根據(jù)具體情況來選擇。(3)可選過渡(Optional transitive):在AS之間具有可傳遞性的屬性。BGP路由器可以不支持此屬性,但它仍然會接收帶有此屬性的路由,并通告給其他對等體。(4)可選非過渡(Optional non-transitive):如果BGP路由器不支持此屬性,該 屬性被忽略,且不會通告給其他對等體。幾種主要的路由屬性包括源(ORIGIN)屬性、AS路徑(AS_PATH)屬性、下一跳(ΝΕΧΤ_Η0Ρ)屬性、MED (MULTI_EXIT_DISC)屬性、本地優(yōu)先(L0CAL_PREF)屬性和團體(COMMUNITY)屬性。步驟S104,第一路由轉(zhuǎn)發(fā)設(shè)備根據(jù)步驟S102中的比較結(jié)果,指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與第二路由信息的不同之處。本發(fā)明實施例中,第二路由轉(zhuǎn)發(fā)設(shè)備在本地需要已經(jīng)保存有第一路由轉(zhuǎn)發(fā)設(shè)備之前已經(jīng)發(fā)布的路由信息即第一路由信息,這樣,第一路由轉(zhuǎn)發(fā)設(shè)備可以僅指示第二路由轉(zhuǎn)發(fā)設(shè)備更新第一路由信息與第二路由信息的不同之處,即可使得第二路由轉(zhuǎn)發(fā)設(shè)備將本地保存的第一路由信息更新為第二路由信息,從而第一路由轉(zhuǎn)發(fā)設(shè)備不需要將全部的第二路由信息再發(fā)送給所有的對等體,達到了減少報文的發(fā)送,減少帶寬的占用的目的。尤其是在對等體的數(shù)量較多,路由屬性值較長的情況下,效果更加明顯。實施例二以下對實施例一的方法進行詳細的描述,如圖2所示,具體處理流程包括以下步驟 S202 S206 步驟S202,第一路由轉(zhuǎn)發(fā)設(shè)備保存之前已經(jīng)經(jīng)過出策略過濾并發(fā)布給BGP對等體(統(tǒng)稱為第二路由轉(zhuǎn)發(fā)設(shè)備)的路由信息即第一路由信息(等同于第二路由轉(zhuǎn)發(fā)設(shè)備上配置peer keep-al 1-routes命令在本地保存的從第一路由轉(zhuǎn)發(fā)設(shè)備接收到的原始路由信息),記為Sendl,Sendl中可以包含有一個或多個路由(包含有路由前綴和屬性值),當(dāng)本地的出策略或者協(xié)議引入發(fā)生改變而需要更新發(fā)布的路由信息時,保存要更新到的經(jīng)過當(dāng)前出策略(若是出策略發(fā)生了改變,則當(dāng)前出策略即為改變后的新出策略)過濾后的路由信息即第二路由信息,記為Send2, Send2中可以包含有一個或多個路由;第二路由轉(zhuǎn)發(fā)設(shè)備上通過配置對第一路由轉(zhuǎn)發(fā)設(shè)備的peer keep-al 1-routes命令,在本地保存了第一路由轉(zhuǎn)發(fā)設(shè)備已經(jīng)發(fā)布的第一路由信息Sendl。步驟S204,第一路由轉(zhuǎn)發(fā)設(shè)備比較Sendl與Send2中的各個路由;上述步驟S202 S204對應(yīng)于實施例一中的步驟S102。步驟S206,第一路由轉(zhuǎn)發(fā)設(shè)備根據(jù)以下4種情況的比較結(jié)果,針對不同的情況發(fā)送不同的報文以指示第二路由轉(zhuǎn)發(fā)設(shè)備更新第二路由轉(zhuǎn)發(fā)設(shè)備本地保存的Sendl中與Send2不同的地方情況I :若Sendl中的I個或多個路由與Send2相同,S卩,這些路由中的每一個路由與Send2中的一個路由的路由前綴和屬性值均相同,則第一路由轉(zhuǎn)發(fā)設(shè)備不處理這些路由,即,不再向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)布這些相同的路由;也就是說,若Sendl中的某一個路由(可以稱為第一路由)與Send2中的某一個路由的路由前綴和屬性值均相同(此時這兩個路由相同),則第一路由轉(zhuǎn)發(fā)設(shè)備不再向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)布該第一路由。第二路由轉(zhuǎn)發(fā)設(shè)備中仍然會保留本地保存的Sendl中的這些相同的路由。情況2 :若Sendl與Send2的路由的前綴不同,且Sendl中包含有Send2中不存在的路由前綴(即,對于Sendl中的I個或多個路由的前綴,Send2中的路由不具有這些前綴),則第一路由轉(zhuǎn)發(fā)設(shè)備向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送撤銷即Withdraw報文(即僅包含前綴和掩碼的Update報文),指示第二路由轉(zhuǎn)發(fā)設(shè)備從本地保存的Sendl中撤銷Send2中不存在 的路由如綴所對應(yīng)的路由;也就是說,Sendl中的某一個路由(可以稱為第_■路由)的路由ill綴在Send2中的路由中不存在,則第一路由轉(zhuǎn)發(fā)設(shè)備向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送Withdraw報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備從本地保存的Sendl中撤銷該第二路由。第二路由轉(zhuǎn)發(fā)設(shè)備收到此Withdraw報文后,從本地保存的Sendl中撤銷與該報文中攜帶的前綴相匹配的路由。情況3 :若Sendl與Send2的路由前綴不同,且Send2中包含有Sendl中不存在的路由前綴(即,對于Send2中的I個或多個路由的前綴,Sendl中的路由不具有這些前綴),則第一路由轉(zhuǎn)發(fā)設(shè)備向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送更新即Update報文(包含有這些Sendl中不存在的路由前綴及對應(yīng)的屬性值),指示第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的Sendl中添加Sendl中不存在的路由前綴所對應(yīng)的路由;也就是說,Send2中的某一個路由(可以稱為第三路由)的路由前綴在Sendl中的路由中不存在,則第一路由轉(zhuǎn)發(fā)設(shè)備向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送Update報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備從本地保存的Sendl中添加該第三路由。第二路由轉(zhuǎn)發(fā)設(shè)備收到此Update報文后,在本地保存的Sendl中增加該報文中攜帶的路由前綴及對應(yīng)的屬性值。情況4 :若Sendl中的I個或多個路由與Send2中的路由前綴相同但屬性值不同,即,這些路由中的每一個路由與Send2中的一個路由的路由前綴相同但屬性值不同,則第一路由轉(zhuǎn)發(fā)設(shè)備向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送修改即Modify報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的Sendl中修改這些路由的屬性值。也就是說,若Sendl中的某一個路由(可以稱為第四路由)與Send2中的某一個路由的路由前綴相同但屬性值不同,則第一路由轉(zhuǎn)發(fā)設(shè)備向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送Modify報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的Sendl中修改該第四路由的屬性值。第二路由轉(zhuǎn)發(fā)設(shè)備收到此Modify報文后,在本地保存的Sendl中修改與該報文中攜帶的前綴相對應(yīng)的屬性值即可。具體的,在實際實施過程中,可以利用現(xiàn)有的攜帶有ORF信息的路由刷新即Route-refresh報文來實現(xiàn)Modify報文。ORF是BGP協(xié)議中的一種重要功能,ORF是Outbound Route Filters的縮寫,是出棧路由過濾(或出方向路由過濾)的意思,它所實現(xiàn)的主要功能是本地路由器主動將本地的入口路由策略(或輸入路由策略)通過攜帶有ORF信息的Route-refresh報文推給自己的BGP對等體,該對等體將其作為本地的輸出路由策略使用。當(dāng)該對等體需要向本地路由器發(fā)送Update報文時,通過對等體本地的路由策略(即對等體本地的出策略)后還需要按照該輸出路由策略進行過濾,只有通過ORF的路由信息才會發(fā)給本地路由器,以減少BGP對等體之間的Update報文的交互,節(jié)省網(wǎng)絡(luò)資源。攜帶有ORF信息的Route-refresh報文的格式如圖3所示,下面對該報文中的各個字段進行簡要介紹(具體可參見RFC5291)AFI (Address Family Identifier,地址族字段)和 SAFI (Subsequent AddressFamily Identifier,子地址族字段),用于指定報文中攜帶的ORF信息是針對哪個地址族而設(shè)置的;Reserved,為保留字段;ffhen-to-refresh (何時刷新)字段,用于指定何時發(fā)送Update報文,如果該字段的內(nèi)容是DEFER (0x02,延遲),表示僅僅解析處理完報文中的ORF表項,不進行路由的過濾和(重新)發(fā)布;如果該字段的內(nèi)容是IMMEDIATE (0x01,立即),表示在解析處理完該報文中 的所有ORF表項后,立刻進行路由的過濾和(重新)發(fā)布;如果從鄰居建立或收到本字段內(nèi)容是DEFER的攜帶有ORF信息的Route-refresh報文開始計時,超過某一時間段還未接收到本字段內(nèi)容是頂MEDIATE的攜帶有ORF信息的Route-refresh報文,則主動按照已接收到的ORF表項進行路由的過濾和(重新)發(fā)布;ORF type (類型)字段,用于說明后續(xù)攜帶的ORF信息(B卩I個或多個ORF表項)是根據(jù)何種類型的策略(策略類型有ACL (Access Control List,訪問控制列表)、地址前綴(Address Prefix)、AS_Path (自治系統(tǒng)號路徑)、團體屬性(Community)和擴展團體屬性(Ex-Community)等)產(chǎn)生的;Length of ORF entries,為后續(xù)的 ORF entry 字段的總長度;ORF entry (表項)字段,用于攜帶詳細的ORF過濾規(guī)則,根據(jù)不同類型的策略,本字段填寫的內(nèi)容也不相同,本字段的格式如圖4所示,其中 Action :對等體控制處理ORF表項的操作類型,包括ADD、REMOVE、REMOVE-ALL操作,ADD表示添加該ORF表項到本地0RF,REMOVE表示刪除ORF表項,REM0VE-ALL表示刪除ORF所有表項,ORF entry字段中的Action是2bit位的字段,其中,協(xié)議中已經(jīng)定義了Action置為00時表示ADD,置為01時表示REMOVE,置為10時表示REM0VE-ALL ;Match 比對ORF表項,允許或者禁止對等體發(fā)送路由更新;Reserved :為保留字段,當(dāng)發(fā)送和忽略接收時置為O ;Type specific part (指定類型部分)該字段的長度是可變的,通常在該字段中可以攜帶Prefix length (路由前綴長度)和Prefix (路由前綴字段)等。本發(fā)明實施例中,基于現(xiàn)有的攜帶有ORF信息的Route-refresh報文所定義的Modify報文,不是用于進行策略過濾前綴,而是用于通過匹配路由前綴來修改匹配到的路由前綴所對應(yīng)的屬性值。為了能夠使得攜帶有ORF信息的Route-refresh報文表示出上述含義,本發(fā)明實施例可以將用來說明根據(jù)何種類型的屬性進行過濾的ORF type字段定義為當(dāng)ORF type字段置為第一值,第一值用于表示按照路由前綴匹配且修改匹配的路由前綴的屬性值,該第一值可以使用81,顯然,根據(jù)實際需求,也可以使用其他的值,只要是現(xiàn)有未使用的值即可。另外,本發(fā)明實施例中的Modify報文中,如圖5所示,在ORF entry字段中的Typespecific part 字段中增加了 3 個字段ORF attribute type 字段、ORF attribute (屬性)length (長度)字段和ORF attribute字段,其中,ORFattribute字段用于攜帶需要修改到的屬性值(value),ORF attribute字段的格式同BGP Update報文中的Path attributes字段,ORF attribute length 字段表不 ORF attribute 字段的長度,ORF attribute type 字段表示路由屬性的類型,即,ORF attribute字段中填充的屬性值所屬的路由屬性類型,例如,AS_PATH (AS路徑)屬性、ORIGIN (源)屬性、ΝΕΧΤ_Η0Ρ (下一跳)屬性、MED屬性和LOCALPREF (本地優(yōu)先)屬性等。并且,定義Action置為第二值(例如可以為11)時表示Modify,進行修改操作。對于需要修改到的屬性值為空的情況,即,上述情況4中Sendl中的一個路由與Send2中的一個路由的前綴相同但屬性值不同,且Send2中的該路由的屬性值為空,使用空屬性值,刪除對應(yīng)前綴的屬性值。上述步驟S206對應(yīng)于實施例一中的步驟S 104。
在實際實施時,類似于ORF能力,可以使用peer keep-send命令來使能第一路由轉(zhuǎn)發(fā)設(shè)備具有能夠執(zhí)行上述方法的新能力(為了方便描述,可以稱為通過ORF修改路由信息的能力),通過配置peer keep-send命令,在第一路由轉(zhuǎn)發(fā)設(shè)備本地保存一份經(jīng)過出策略過濾后,發(fā)送給對等體第二路由轉(zhuǎn)發(fā)設(shè)備的路由及屬性的原始數(shù)據(jù)(等同于第二路由轉(zhuǎn)發(fā)設(shè)備使用peerkeep-alΙ-routes命令保存的數(shù)據(jù)),從而在第二次因出策略或協(xié)議引入改變觸發(fā)路由更新時,只需比較此次需要更新到的路由信息與前一次保存的路由信息,前綴不相同的發(fā)送Update或WithDraw報文以指示第二路由轉(zhuǎn)發(fā)設(shè)備增加或撤銷對應(yīng)的路由;前綴相同但屬性值不同的,發(fā)送Modify報文,以指示第二路由轉(zhuǎn)發(fā)設(shè)備對與該報文中攜帶的前綴相匹配的屬性值做出修改的操作。目的在于只指示第二路由轉(zhuǎn)發(fā)設(shè)備自行對不同的地方進行修改,減少報文的發(fā)送,減少帶寬的占用。顯然,本發(fā)明實施例的方法能夠?qū)嵤┑那疤崾堑诙酚赊D(zhuǎn)發(fā)設(shè)備本地保存了第一路由轉(zhuǎn)發(fā)設(shè)備發(fā)布的原始路由信息??梢酝ㄟ^在第二路由轉(zhuǎn)發(fā)設(shè)備上配置對第一路由轉(zhuǎn)發(fā)設(shè)備的peer keep-al 1-routes命令來實現(xiàn)對第一路由轉(zhuǎn)發(fā)設(shè)備發(fā)布的原始路由信息的保存。本發(fā)明以上實施例的方法,利用了現(xiàn)有的BGP特性,實現(xiàn)時能夠更加平滑的升級,不支持則忽略不處理。BGP通過配置peer keep-send命令使能第一路由轉(zhuǎn)發(fā)設(shè)備具有上述的新能力之后,以及在第一路由轉(zhuǎn)發(fā)設(shè)備能夠執(zhí)行上述的方法之前,第一路由轉(zhuǎn)發(fā)設(shè)備與第二路由轉(zhuǎn)發(fā)設(shè)備需要協(xié)商該新能力,當(dāng)然,該新能力的使用同時需要Route-refresh能力的支持。通過Open報文協(xié)商該新能力時,Open報文中的ORF type字段的值改為129,表示本端BGP能夠處理該新能力。收發(fā)類型的配置可以為如果本端配置有peerkeep-all-routes命令,則置I表示本端具有接收能力,如果未配置peer keep-al 1-routes命令,則置2表示本端只有發(fā)送能力。由于目前BGP配置了 peer keep-all-routes命令后,會立即向?qū)Φ润w發(fā)送普通的Route-refresh報文,進而保存從對等體接收的原始路由信息。而當(dāng)BGP后續(xù)配置peerkeep-all-routes命令時,為了讓對等體感知本端能夠處理該新能力,則本端對對等體配置peer keep-all-routes命令時,可以將要發(fā)送給對等體的Route-refresh報文中的I字節(jié)的保留位置為129,表示本端BGP能夠處理該新能力。對等體收到該Route-refresh報文后,下一次發(fā)送更新即可使用該新能力。實施例三針對實施例一和二中的方法,本發(fā)明實施例提供了一種路由轉(zhuǎn)發(fā)設(shè)備,該路由轉(zhuǎn)發(fā)設(shè)備能夠支持BGP,可以為路由器等設(shè)備,本發(fā)明對此不做限定。如圖6所示,該路由轉(zhuǎn)發(fā)設(shè)備中包括以下模塊比較模塊10和發(fā)送模塊20,其中比較模塊10用于在需要更新本路由轉(zhuǎn)發(fā)設(shè)備發(fā)布的路由信息時,比較本地保存的第一路由信息和第二路由信息,其中,第一路由信息是已經(jīng)發(fā)布給本路由轉(zhuǎn)發(fā)設(shè)備的BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,第二路由信息是要更新到的路由信息;發(fā)送模塊20用于根據(jù)比較模塊10的比較結(jié)果,指示第二路由轉(zhuǎn)發(fā)設(shè)備更新第二 路由轉(zhuǎn)發(fā)設(shè)備本地保存的第一路由信息中與第二路由信息的不同之處。其中,發(fā)送模塊20在根據(jù)比較模塊10的比較結(jié)果,指示第二路由轉(zhuǎn)發(fā)設(shè)備更新第二路由轉(zhuǎn)發(fā)設(shè)備本地保存的第一路由信息中與第二路由信息的不同之處時,具體按照以下幾種情況進行情況I :在第一路由信息中的某一個路由與第二路由信息中的某一個路由的路由前綴和屬性值均相同時,不再向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送該相同的路由。情況2 :在第一路由信息與第二路由信息的路由前綴不同時,在第一路由信息中包含有第二路由信息中不存在的路由前綴的情況下,向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送撤銷Withdraw報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備從本地保存的第一路由信息中撤銷第二路由信息中不存在的路由前綴所對應(yīng)的路由。情況3 :在第一路由信息與第二路由信息的路由前綴不同時,在第二路由信息中包含有第一路由信息中不存在的路由前綴的情況下,向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送更新Update報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的第一路由信息中添加第一路由信息中不存在的路由前綴所對應(yīng)的路由。情況4 :在第一路由信息中的某一個路由與第二路由信息中的某一個路由的路由前綴相同但屬性值不同時,向第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送修改Modify報文,指示第二路由轉(zhuǎn)發(fā)設(shè)備在第一路由信息中修改該路由的屬性值。其中,Modify報文為攜帶有ORF信息的Route-refresh報文,其中,該Route-refresh報文中的ORF type字段置為第一值時,表示按照路由前綴匹配且修改匹配的路由前綴的屬性值,并且,在該Route-refresh報文中的ORFentry字段中的Typespecific part 字段中,增加了 3個字段0RF attribute type 字段、ORF attribute length字段和ORF attribute字段,其中,ORF attribute type字段表示表示路由屬性的類型,ORF attribute字段用于攜帶需要修改到的屬性值,ORF attribute length字段填充為ORFattribute字段的長度,ORF entry字段中的Action字段置為第二值時表示進行修改操作。本發(fā)明以上的方法和設(shè)備在IPv6技術(shù)和L3VPN技術(shù)中,路由的RT(Route Target,路由目標)屬性、AS_PATH屬性、BGP4+路由下一跳屬性的值比較大,以及BGP路由需要單獨組包發(fā)送的場景都可以應(yīng)用。綜上,本發(fā)明以上實施例可以達到以下技術(shù)效果本地路由轉(zhuǎn)發(fā)設(shè)備(可以稱為第一路由轉(zhuǎn)發(fā)設(shè)備)中保存有之前已經(jīng)發(fā)布的路由信息(稱為第一路由信息)以及因出策略或協(xié)議引入發(fā)生改變而觸發(fā)路由(即要發(fā)布的路由)更新時需要更新為的路由信息(稱為第二路由信息),第一路由轉(zhuǎn)發(fā)設(shè)備的BGP對等體(稱為第二路由轉(zhuǎn)發(fā)設(shè)備,可以是一個或多個路由轉(zhuǎn)發(fā)設(shè)備)本地保存有第一路由信息,第一路由信息在要進行路由更新之前,首先比較本地保存的第一路由信息和第二路由信息,再根據(jù)比較結(jié)果來指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與所述第二路由信息的不同之處。由于第二路由轉(zhuǎn)發(fā)設(shè)備在本地已經(jīng)保存有第一路由信息,這樣,第一路由轉(zhuǎn)發(fā)設(shè)備可以僅指示第二路由轉(zhuǎn)發(fā)設(shè)備更新第一路由信息與第二路由信息的不同之處, 由轉(zhuǎn)發(fā)設(shè)備不需要將全部的第二路由信息再發(fā)送給所有的對等體,達到了減少報文的發(fā)送,減少帶寬的占用的目的。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
權(quán)利要求
1.一種路由處理方法,應(yīng)用于邊界網(wǎng)關(guān)協(xié)議BGP中,其特征在于,包括 在需要更新自身發(fā)布的路由信息時,第一路由轉(zhuǎn)發(fā)設(shè)備比較本地保存的第一路由信息和第二路由信息,其中,所述第一路由信息是已經(jīng)發(fā)布給BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,所述第二路由信息是要更新到的路由信息; 所述第一路由轉(zhuǎn)發(fā)設(shè)備根據(jù)比較結(jié)果,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與所述第二路由信息的不同之處。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第一路由轉(zhuǎn)發(fā)設(shè)備根據(jù)比較結(jié)果,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與所述第二路由信息的不同之處包括 若所述第一路由信息中的一個路由與所述第二路由信息中的一個路由的路由前綴和屬性值均相同,則所述第一路由轉(zhuǎn)發(fā)設(shè)備不再向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送該相同的路由;和/或 若所述第一路由信息與所述第二路由信息的路由前綴不同,則所述第一路由轉(zhuǎn)發(fā)設(shè)備在所述第一路由信息中包含有所述第二路由信息中不存在的路由前綴的情況下,向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送撤銷Withdraw報文,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備從本地保存的第一路由信息中撤銷所述第二路由信息中不存在的路由前綴所對應(yīng)的路由;和/或 若所述第一路由信息與所述第二路由信息的路由前綴不同,則所述第一路由轉(zhuǎn)發(fā)設(shè)備在所述第二路由信息中包含有所述第一路由信息中不存在的路由前綴的情況下,向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送更新Update報文,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的第一路由信息中添加所述第一路由信息中不存在的路由前綴所對應(yīng)的路由;和/或 若所述第一路由信息中的一個路由與所述第二路由信息中的一個路由的路由前綴相同但屬性值不同,則所述第一路由轉(zhuǎn)發(fā)設(shè)備向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送修改Modify報文,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的所述第一路由信息中修改該路由的屬性值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述Modify報文為攜帶有出棧路由過濾ORF信息的路由刷新Route-refresh報文,其中,該Route-refresh報文中的ORF類型type字段置為第一值,所述第一值用于表示按照路由前綴匹配且修改匹配的路由前綴的屬性值。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在該Route-refresh報文中的ORF表項entry字段中的指定類型部分Type specific part字段中,增加了 ORFattribute類型type字段、ORF屬性attribute長度length字段和ORF attribute字段,其中,所述ORF attribute type字段表示路由屬性的類型,所述ORF屬性長度字段表示所述ORFattribute字段的長度,所述ORF attribute字段表示需要修改到的屬性值,并且,ORFentry字段中的操作Action字段置為第二值,所述第二值用于表示進行修改操作。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第二路由轉(zhuǎn)發(fā)設(shè)備上通過配置對第一路由轉(zhuǎn)發(fā)設(shè)備的對等體保存所有路由peer keep-all_routes命令,在本地保存有所述第一路由轉(zhuǎn)發(fā)設(shè)備已經(jīng)發(fā)布的所述第一路由信息。
6.一種路由轉(zhuǎn)發(fā)設(shè)備,應(yīng)用于邊界網(wǎng)關(guān)協(xié)議BGP中,其特征在于,包括 比較模塊,用于在需要更新本路由轉(zhuǎn)發(fā)設(shè)備發(fā)布的路由信息時,比較本地保存的第一路由信息和第二路由信息,其中,所述第一路由信息是已經(jīng)發(fā)布給本路由轉(zhuǎn)發(fā)設(shè)備的BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,所述第二路由信息是要更新到的路由信息; 發(fā)送模塊,用于根據(jù)所述比較模塊的比較結(jié)果,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與所述第二路由信息的不同之處。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送模塊具體用于 在所述第一路由信息中的一個路由與所述第二路由信息中的一個路由的路由前綴和屬性值均相同時,不再向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送該相同的路由;和/或 在所述第一路由信息與所述第二路由信息的路由前綴不同時,在所述第一路由信息中包含有所述第二路由信息中不存在的路由前綴的情況下,向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送撤銷Withdraw報文,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備從本地保存的第一路由信息中撤銷所述第_■路由信息中不存在的路由如綴所對應(yīng)的路由;和/或 在所述第一路由信息與所述第二路由信息的路由前綴不同時,在所述第二路由信息中包含有所述第一路由信息中不存在的路由前綴的情況下,向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送更新Update報文,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的第一路由信息中添加所述第一路由彳目息中不存在的路由如綴所對應(yīng)的路由;和/或 在所述第一路由信息中的一個路由與所述第二路由信息中的一個路由的路由前綴相同但屬性值不同時,向所述第二路由轉(zhuǎn)發(fā)設(shè)備發(fā)送修改Modify報文,指示所述第二路由轉(zhuǎn)發(fā)設(shè)備在本地保存的所述第一路由信息中修改該路由的屬性值。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述Modify報文為攜帶有出棧路由過濾ORF信息的路由刷新Route-refresh報文,其中,該Route-refresh報文中的ORF類型type字段置為第一值,所述第一值用于表示按照路由前綴匹配且修改匹配的路由前綴的屬性值。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在該Route-refresh報文中的ORF表項entry字段中的指定類型部分Type specific part字段中,增加了 ORFattribute類型type字段、ORF屬性attribute長度length字段和ORF attribute字段,其中,所述ORF attribute type字段表示路由屬性的類型,所述ORF屬性長度字段表示所述ORFattribute字段的長度,所述ORF attribute字段表示需要修改到的屬性值,并且,ORFentry字段中的操作Action字段置為第二值,所述第二值用于表示進行修改操作。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二路由轉(zhuǎn)發(fā)設(shè)備上通過配置對第一路由轉(zhuǎn)發(fā)設(shè)備的對等體保存所有路由peer keep-all_routes命令,在本地保存有所述第一路由轉(zhuǎn)發(fā)設(shè)備已經(jīng)發(fā)布的所述第一路由信息。
全文摘要
本發(fā)明公開了一種路由處理方法及路由轉(zhuǎn)發(fā)設(shè)備,其中,該方法包括在需要更新自身發(fā)布的路由信息時,第一路由轉(zhuǎn)發(fā)設(shè)備比較本地保存的第一路由信息和第二路由信息,其中,第一路由信息是已經(jīng)發(fā)布給BGP對等體即第二路由轉(zhuǎn)發(fā)設(shè)備的路由信息,第二路由信息是要更新到的路由信息;第一路由轉(zhuǎn)發(fā)設(shè)備根據(jù)比較結(jié)果,指示第二路由轉(zhuǎn)發(fā)設(shè)備更新本地保存的第一路由信息中與第二路由信息的不同之處。本發(fā)明中,第一路由轉(zhuǎn)發(fā)設(shè)備在本地出策略或協(xié)議引入發(fā)生改變而觸發(fā)路由更新時,不需要將全部的要更新為的路由信息發(fā)送給所有的對等體,達到了減少報文的發(fā)送,減少帶寬的占用的目的。
文檔編號H04L12/56GK102833172SQ20121033545
公開日2012年12月19日 申請日期2012年9月12日 優(yōu)先權(quán)日2012年9月12日
發(fā)明者王偉, 樊超 申請人:杭州華三通信技術(shù)有限公司