本申請涉及通信技術領域,更具體的說,涉及一種網絡區域劃分方法、網絡設備和系統。
背景技術:
針對較大規模的網絡,網絡節點數量也較多,且還會隨時增加新的網絡節點以滿足網絡規模擴大的需求。目前,基于內部網關協議(interiorgatewayprotocol,igp)在進行區域劃分的過程中,網絡被劃分為一個骨干區和多個非骨干區。
如圖1所示,骨干區area0接入兩個區域area1和area2,area1由網絡節點r1-r4-r5-r8-r2構成,area2由網絡節點r2-r8-r6-r7-r3構成。area1和area2之間有一段共享鏈路r2-r8為了達到區域的區分,需要為該共享鏈路配置子接口,使區域配置維護更加復雜。如圖2所示,當網絡新增的兩個網絡節點r9和r10就近接入網絡時,很難為新增網絡節點劃分區域。若將r9和r10劃分至area1內或者將其規劃至area2內,則需要斷開area1和area2的連接;若將其劃分成新區域area3,則需要在共享的鏈路r2-r6和r3-r7上配置子接口,增加區域配置維護的復雜度。因此,新增網絡節點越多,則對于區域的劃分將越來越復雜,配置維護也會更為復雜。
在現有技術中,利用網絡中部署的網絡控制設備進行網絡區域劃分,通過先收集網絡拓撲,然后基于軟件算法獲得拓撲網絡節點,最后下發包含區域劃分規劃的路由協議配置到各個網絡節點上。但是,上述進行網絡區域劃分的過程對軟件要求高,只適用于較為簡單的拓撲情況,或者人為規劃來完成較為復雜的網絡區域劃分,導致網絡區域劃分效率低。
技術實現要素:
有鑒于此,本申請實施例提供一種網絡區域劃分方法、網絡設備和系統,用于解決現有技術中采用軟件算法,或人為規劃完成復雜網絡區域劃分時效率低的問題。
為解決上述技術問題,本申請實施例采用了如下技術方案:
本申請實施例的第一方面提供了一種網絡區域劃分方法,包括:
第一網絡設備接收第二網絡設備發送的第一協議報文,所述第一協議報文包含跳數hops,所述hops用于標識所述第一協議報文從所述第二網絡設備向所述第一網絡設備發送過程中經過的網絡設備的數量,所述經過的網絡設備包括第一網絡設備;
當所述第一網絡設備確定所述hops小于或等于預設值時,所述第一網絡設備設置所述第二網絡設備與所述第一網絡設備屬于同一區域。
上述方案,第一網絡設備通過只收集預設跳數內的網絡設備的鏈路狀態數據,并基于該鏈路狀態數據,可以自動得到相應的網絡區域。
在本申請實施例第一方面提供的第一種實現方法,還包括:
所述第一網絡設備將所述第一協議報文中的hops修改為hops加1,并將修改后的所述第一協議報文向第三網絡設備發送,所述第三網絡設備為與所述第一網絡設備建立鄰居關系的網絡設備,所述第三網絡設備與所述第二網絡設備不是同一設備。
上述方案,第一網絡設備在向建立有鄰居關系的網絡設備轉發接收到的協議報文時,對該協議報文中包含跳數hops做加1的修改,能夠確保具有鄰居關系的網絡設備接收到該協議報文時,確定該協議報文經歷了幾跳,進而確定發送該協議報文的源網絡設備,以方便后續基于跳數對網絡區域的劃分。
在本申請實施例第一方面提供的第二種實現方式中,包括:
當所述第一網絡設備確定所述第一網絡設備的鏈路狀態數據庫中不存在類型type與所述第一協議報文的type相同,鏈路狀態標識linkstateid與所述第一協議報文的linkstateid相同,且通告路由器advertisingrouter與所述第一協議報文的advertisingrouter相同的協議報文時,將所述第一協議報文存儲在所述鏈路狀態數據庫中;或者,
當所述第一網絡設備確定所述鏈路狀態數據庫存在第二協議報文,所述第二協議報文的type與所述第一協議報文的type相同,所述第二協議報文的linkstateid與所述第一協議報文的type相同,所述第二協議報文的advertisingrouter與所述第一協議報文的advertisingrouter相同,并且所述第二協議報文的鏈路狀態序號lssequencenumber比所述第一協議報文的lssequencenumber大時,將所述第二協議報文存儲在所述鏈路狀態數據庫中,并從所述鏈路狀態數據庫中刪除所述第一協議報文;或者,
當所述第一網絡設備確定所述鏈路狀態數據庫存在第三協議報文,所述第三協議報文的type與所述第一協議報文的type相同,所述第三協議報文的linkstateid與所述第一協議報文的type相同,所述第三協議報文的advertisingrouter與所述第一協議報文的advertisingrouter相同,所述第三協議報文的lssequencenumber與所述第一協議報文的lssequencenumber相同,并且所述第一協議報文的hops比所述第三協議報文的hops小時,則將所述第一協議報文存儲在所述鏈路狀態數據庫中,刪除所述第三協議報文。
上述方案,第一網絡設備在周期更新的過程中,可以基于接收到的滿足預設跳數的協議報文,進一步檢查本地建立的鏈路狀態數據庫中保存的協議報文,并根據檢查結果調整本地建立的鏈路狀態數據庫中保存的協議報文。經由調整后的鏈路狀態數據庫,第一網絡設備可以隨時根據接入的網絡設備或刪減的網絡設備,適時進行可見網絡區域的變更。
在本申請實施例第一方面提供的第三種實現方式中,還包括:
所述第一網絡設備基于所述鏈路狀態數據庫,計算所述網絡區域內轉發報文的路徑;
所述第一網絡設備為所述路徑上的每個網絡設備分配分段路由sr節點標簽,并根據所述sr節點標簽進行所述報文轉發。
上述方案,第一網絡設備基于該sr節點標簽進行報文的轉發,不會走其他的未分配sr節點標簽的網絡設備,可以避免轉發報文中出現的環路問題。
在本申請實施例第一方面提供的第四種實現方式中,還包括:
所述第一網絡設備基于所述鏈路狀態數據庫,計算所述網絡區域內轉發報文的路徑;
所述第一網絡設備計算從所述第一網絡設備分別到達所述路徑上的每個網絡設備的路徑花費;
當所述第一網絡設備確定從所述第一網絡設備分別到達所述路徑上的每個所述網絡設備的路徑花費都小于最小出境花費,基于所述路徑轉發所述報文,所述最小出境花費為所述第一網絡設備計算得到的從所述第一網絡設備分別到達位于所述網絡區域邊界上的每個網絡設備的路徑花費中的最小值;
當所述第一網絡設備確定從所述第一網絡設備分別到達所述路徑上的每個所述網絡設備的路徑花費中,所述第一網絡設備到達第四網絡設備的路徑花費大于或等于所述最小出境花費,從所述第四網絡設備開始分配分段路由sr節點標簽,并根據所述sr節點標簽進行所述報文轉發。
上述方案,第一網絡設備在避免產生路徑環路的條件下,減少了逐跳分配sr節點標簽的數量,優化了在路徑中分配sr節點標簽的方式。
在本申請實施例第一方面提供的第五種實現方式中,所述第一協議報文為開放最短路徑優先ospf協議中的鏈路狀態廣播報文頭lsa報文;或者,
所述第一協議報文為中間系統到中間系統isis協議中的鏈路狀態報文lsp報文。
本申請實施例的第二方面提供了一種第一網絡設備,所述第一網絡設備包括:
接收單元,用于接收第二網絡設備發送的第一協議報文,所述第一協議報文包含跳數hops,所述hops用于標識所述第一協議報文從所述第二網絡設備向所述第一網絡設備發送過程中經過的網絡設備的數量,所述經過的網絡設備包括所述第一網絡設備;
處理單元,用于當確定所述hops小于或等于預設值時,設置所述第二網絡設備與所述第一網絡設備屬于同一區域。
在本申請實施例第二方面提供的第一種實現方式中,
所述處理單元,還用于將所述第一協議報文中的hops修改為hops加1,并將修改后的所述第一協議報文向第三網絡設備發送,所述第三網絡設備為與所述第一網絡設備建立鄰居關系的網絡設備,所述第三網絡設備與所述第二網絡設備不是同一設備。
在本申請實施例第二方面提供的第二種實現方式中,所述處理單元,還用于當確定所述第一網絡設備的鏈路狀態數據庫中不存在與所述第一協議報文的類型type,所述第一協議報文的鏈路狀態標識linkstateid,所述第一協議報文的通告路由器advertisingrouter相同的協議報文時,將所述第一協議報文存儲在所述鏈路狀態數據庫中;或者,
所述處理單元,還用于當確定所述鏈路狀態數據庫存在第二協議報文,所述第二協議報文的type與所述第一協議報文的type相同,所述第二協議報文的linkstateid與所述第一協議報文的type相同,所述第二協議報文的advertisingrouter與所述第一協議報文的advertisingrouter相同,并且所述第二協議報文的鏈路狀態序號lssequencenumber比所述第一協議報文的lssequencenumber大時,將所述第二協議報文存儲在所述鏈路狀態數據庫中,并從所述鏈路狀態數據庫中刪除所述第一協議報文;或者,
所述處理單元,還用于當所述第一網絡設備確定所述鏈路狀態數據庫存在第三協議報文,所述第三協議報文的type與所述第一協議報文的type相同,所述第三協議報文的linkstateid與所述第一協議報文的type相同,所述第三協議報文的advertisingrouter與所述第一協議報文的advertisingrouter相同,所述第三協議報文的lssequencenumber與所述第一協議報文的lssequencenumber相同,并且所述第一協議報文的hops比所述第三協議報文的hops小時,則將所述第一協議報文存儲在所述鏈路狀態數據庫中,刪除所述第三協議報文。
在本申請實施例第二方面提供的第三種實現方式中,還包括:
計算單元,用于基于所述鏈路狀態數據庫,計算所述網絡區域內轉發報文的路徑;
轉發單元,用于為所述路徑上的每個網絡設備分配分段路由sr節點標簽,并根據所述sr節點標簽轉發所述報文。
在本申請實施例第二方面提供的第四種實現方式中,還包括:
計算單元,還用于基于所述鏈路狀態數據庫,計算所述網絡區域內轉發報文的路徑,以及計算從所述第一網絡設備分別到達所述路徑上的每個網絡設備的路徑花費;
轉發單元,還用于當確定從所述第一網絡設備分別到達所述路徑上的每個所述網絡設備的路徑花費都小于最小出境花費,基于所述路徑轉發所述報文,所述最小出境花費為所述第一網絡設備計算得到的從所述第一網絡設備分別到達位于所述網絡區域邊界上的每個網絡設備的路徑花費中的最小值;或者;
所述轉發單元,還用于當確定從所述第一網絡設備分別到達所述路徑上的每個所述網絡設備的路徑花費中,所述第一網絡設備到達第四網絡設備的路徑花費大于或等于所述最小出境花費,從所述第四網絡設備開始分配分段路由sr節點標簽,并根據所述sr節點標簽進行所述報文轉發。
本申請實施例的第三方面提供了一種第一網絡設備,包括:存儲器,以及與所述存儲器通信的處理器;
所述存儲器,用于儲存網絡區域劃分的程序代碼;
所述處理器,用于執行所述存儲器保存的程序代碼,實現以下操作:第一網絡設備接收第二網絡設備發送的第一協議報文,所述第一協議報文包含跳數hops,所述hops用于標識所述第一協議報文從所述第二網絡設備向所述第一網絡設備發送過程中經過的網絡設備的數量,所述經過的網絡設備包括第一網絡設備;當所述第一網絡設備確定所述hops小于或等于預設值時,所述第一網絡設備設置所述第二網絡設備與所述第一網絡設備屬于同一區域。
本申請實施例的第四方面提供了一種網絡區域劃分系統,所述網絡區域劃分系統包括第一網絡設備和第二網絡設備;
所述第二網絡設備,用于向所述第一網絡設備發送第一協議報文;
所述第一網絡設備,用于接收所述第二網絡設備發送的第一協議報文,所述第一協議報文包含跳數hops,所述hops用于標識所述第一協議報文從所述第二網絡設備向所述第一網絡設備發送過程中經過的網絡設備的數量,所述經過的網絡設備包括所述第一網絡設備,當所述第一網絡設備確定所述hops小于或等于預設值時,所述第一網絡設備設置所述第二網絡設備與所述第一網絡設備屬于同一區域。
在本申請實施例第四方面提供的第一種實現方式中,所述網絡區域劃分系統還包括第三網絡設備,所述第三網絡設備為與所述第一網絡設備建立鄰居關系的網絡設備,所述第三網絡設備與所述第二網絡設備不是同一設備;
所述第一網絡設備,還用于將所述第一協議報文中的hops修改為hops加1,并向所述第三網絡設備發送修改后的所述第一協議報文。
附圖說明
為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為現有技術公開的部分網絡區域劃分的示意圖;
圖2為現有技術公開的新增網絡節點后的部分網絡區域劃分的示意圖;
圖3為本申請實施例公開的一種網絡區域劃分的應用場景示意圖;
圖4為本申請實施例公開的一種網絡區域劃分的方法流程示意圖;
圖5為本申請實施例公開一種網絡區域劃分的方法流程示意圖;
圖6為本申請實施例公開的一種網絡區域劃分的應用場景示意圖;
圖7為本申請實施例公開的另一種網絡區域劃分的方法流程示意圖;
圖8為本申請實施例公開的另一種網絡區域劃分的方法流程示意圖;
圖9為本申請實施例公開的一種網絡區域劃分的應用場景示意圖;
圖10為本申請實施例公開的一種分配sr節點標簽的方法流程示意圖;
圖11為本申請實施例公開的一種分配sr節點標簽的方法流程示意圖;
圖12為本申請實施例公開的另一種分配sr節點標簽的方法流程示意圖;
圖13為本申請實施例公開的一種分配sr節點標簽的方法流程示意圖;
圖14為本申請實施例公開的一種網絡設備的結構示意圖;
圖15為本申請實施例公開的一種網絡設備的硬件結構示意圖;
圖16為本申請實施例公開的一種網絡區域劃分系統的結構示意圖。
具體實施方式
由背景技術可知,現有技術在基于igp進行網絡區域劃分的過程中,利用網絡中部署的網絡控制設備進行網絡區域規劃,通過先收集網絡拓撲,然后基于軟件算法獲得拓撲網絡節點,最后下發包含區域劃分規劃的路由協議配置到各個網絡節點上。但是,上述進行網絡區域規劃對軟件要求高,只適用于較為簡單的拓撲情況,或者配合人為規劃來完成較為復雜的網絡區域規劃效率低。
因此,本申請實施例提供了一種自動進行網絡區域劃分的技術方案,在網絡區域劃分的過程中,劃分一個骨干區域和多個非骨干區域。其中,上層的區域為骨干區域,下層的區域為非骨干區域。該骨干區域用來連通其他下層的非骨干區域。針對非骨干區域的劃分,由每個網絡節點基于預先擴展的igp協議報文,收集預設跳數內的其他網絡節點的鏈路狀態數據,建立可控的鏈路狀態數據庫,從而得到自動劃分的網絡區域。
相較于現有技術,本申請實施例在進行非骨干區域劃分的過程中,在沒有人為規劃的情況下,只收集預設跳數內的網絡節點的鏈路狀態數據,建立可控的鏈路狀態數據庫,并基于該可控的鏈路狀態數據庫,自動劃分相應的網絡區域。
在本申請實施例中提到的網絡節點或網絡設備,可以是交換機、路由器等其他具有相似或相同功能的網絡設備。
可選地,在本申請實施例中提到的預先擴展的igp協議報文,具體為在該igp協議報文的報文頭中擴展hops字段,可以擴展于該協議報文頭的現有字段中,也可以另設新的字段。
igp協議包括路由信息協議(routinginformationprotocol,rip)、開放最短路徑優先(openshortestpathfirst,ospf)協議、中間系統到中間系統路由(intermediatesystemtointermediatesystem,is-is)協議、內部網關路由選擇協議(interiorgatewayroutingprotocol,igrp)和增強型內部網關路由選擇協議(enhancedinteriorgatewayroutingprotocol,eigrp)。
本申請實施例以ospf協議為例進行說明。ospf協議也可以稱為鏈路狀態路由協議。配置該ospf協議的網絡節點,可以獲取所有其他網絡節點的信息來創建網絡的拓撲結構,并在拓撲結構中選擇到達所有目的網絡的最佳路徑。且只有鏈路狀態發生變化時,該網絡節點才向所有網絡節點發送鏈路狀態發生變化的信息。在ospf協議中,ospf網絡區域的拓撲結構可以用鏈路狀態數據庫進行描述,位于同一網絡區域內的網絡節點具有相同的鏈路狀態數據庫。
本申請實施例以ospf協議為例,在執行本申請公開的網絡區域劃分方法中,預先對協議報文進行擴展。
如表1所示,在鏈路狀態廣播報文頭/鏈路狀態公告報文頭(linkstateadvertisementhead,lsahead)中添加hops字段。鏈路是任何類型的ospf路由器間的連接,狀態指鏈路的狀態。該hops字段所配置的值用于標識向該網絡節點發送生成的鏈路狀態廣播/鏈路狀態公告(linkstateadvertisement,
lsa)所經歷的跳數。
在擴展協議報文的過程中,可選的,可以將擴展的hops字段添加于lsahead的鏈路狀態類型(linkstatetype,lstype)字段中,也可以另設字段。
如表1所示的lsahead格式,將該hops字段添加于lsahead的lstype字段中。
表1.lsahead格式
其中,lstype字段、linkstateid字段、advertisingrouter字段和lssequencenumber字段用于決定是否為同一個lsa的信息。
在lsahead中,lstype字段是一個8bit的字段。具體的,如表2所示,hops字段添加于該lstype字段的最高位之后的4bit位內。
表2.lstype字段
其中,最高位為sbit位,當該最高位置1時,用于標識執行本申請實施例公開的網絡區域劃分的技術方案。hops字段占有4個bit位,基于該hops字段的作用,其為動態配置的。具體為,生成lsa的該網絡節點將該hops字段置為0,在鏈路狀態數據庫泛洪的過程中,每一次向下一跳發送lsa時,則該hops字段中的值加1。
type字段占有3個bit位,具有7種定義:
1.router-lsas為路由器lsa,由每個路由器生成,用于描述路由器的鏈路狀態和花費,并傳遞到整個非骨干區域。
2.network-lsas為網絡lsa,由指定路由器(designatedrouter,dr)生成,用于描述本網段的鏈路狀態,并傳遞到整個非骨干區域。
3.summary-lsas(ipnetwork)為網絡匯總lsa。
4.summary-lsas(asbr)為自治系統邊界路由器(autonomoussystemboundaryrouter,asbr)匯總lsa,由區域邊界路由器(areaborderrouter,abr)生成,用于描述到asbr的路由,并傳遞到相關區域。
5.as-external-lsas為外部屬性lsa,由asbr生成,用于描述到as外部的路由,傳遞到整個自治系統(autonomoussystem,as),末梢區域除外。
6.groupmembershiplsa為成員lsa。
7.nssaexternallsa為非特別邊緣區域外部lsa。
以ospf協議為例,執行本申請實施例公開的網絡區域劃分的技術方案,基于上述擴展的lsa,每個網絡節點收集預設跳數內的其他網絡節點的鏈路狀態數據,建立可控的鏈路狀態數據庫,自動得到劃分的網絡區域的拓撲結構,具體通過以下實施例進行詳細說明。
實施例一
在本申請實施例中,作為舉例,圖3示出了一個應用場景。在該應用場景中包括4個網絡節點。在圖3中分別用a、b、c、d表示這4個網絡節點。該4個網絡節點具有相同的區域id,相互之間通過周期性的發送hello報文建立并維持鄰接關系。
例如,網絡節點a以自身為中心節點,收集預設2跳內的網絡節點的鏈路狀態數據,建立鏈路狀態數據庫,自動得到劃分的網絡區域areaa。
如圖3可知,在網絡節點a收集鄰接的網絡節點的鏈路狀態數據的過程中,網絡節點b與網絡節點a之間具有1跳的距離。網絡節點c與網絡節點a之間具有2跳的距離。網絡節點d與網絡節點a之間具有3跳的距離。以ospf協議為例,網絡節點b、網絡節點c和網絡節點d生成攜帶有各自鏈路狀態數據的lsa,并在lsahead的lstype字段中擴展hops字段,且該hops字段置為0。然后,網絡節點b、網絡節點c和網絡節點d將預先擴展有hops字段的lsa發送給網絡節點a,且每經過一個網絡節點則該預先擴展的hops字段加1。
如圖4所示,為執行本申請實施例公開的一種網絡區域劃分方法劃分areaa的流程示意圖,包括:
網絡節點a收集具有1跳距離的網絡節點b生成的lsa1的過程為s101~s103。
s101:網絡節點b將生成的lsa1發送給網絡節點a,該lsa1中擴展有hops字段,該hops字段中初始的hops值為0。
s102:網絡節點a接收網絡節點b發送的lsa1,在該lsa1中的hops值的基礎上加1,將該hops值修改為1,生成hops值為1的lsa2。
s103:網絡節點a判斷該lsa2中的hops值小于預設跳數,則將該lsa2保存于本地。
在s103中,預設跳數為2,該預設跳數用于指示網絡節點a能夠收集的網絡節點為距離網絡節點a2跳以內,包括2跳的網絡節點。
網絡節點a收集具有2跳距離的網絡節點c生成的lsa3的過程為s104~s108。
s104:網路節點c將生成的lsa3發送給網絡節點b,該lsa3中擴展有hops字段,該hops字段中初始的hops值為0。
s105:網絡節點b接收網絡節點c發送的lsa3,在該lsa3中的hops值的基礎上加1,將該hops值修改為1,生成hops值為1的lsa4。
s106:網絡節點b判斷該lsa4中的hops值小于預設跳數,將該lsa4保存于本地,并將該lsa4發送給網絡節點a。
s107:網絡節點a接收網絡節點b發送的lsa4,在該lsa4中的hops值的基礎上加1,將該hops值修改為2,生成hops值為2的lsa5。
s108:網絡節點a判斷該lsa5中的hops值等于預設跳數,將該lsa5保存于本地。
網絡節點a收集具有3跳距離的網絡節點d生成的lsa6的過程為s109~s115。
s109:網絡節點d將生成的lsa6發送給網絡節點c,該lsa6中擴展有hops字段,該hops字段中初始的hops值為0。
s110:網絡節點c接收網絡節點d發送的lsa6,在該lsa6中的hops值的基礎上加1,將該hops值修改為1,生成hops值為1的lsa7。
s111:網絡節點c判斷該lsa7中的hops值小于預設跳數,將該lsa7保存于本地,并將該lsa7發送給網絡節點b。
s112:網絡節點b接收網絡節點c發送的lsa7,在該lsa7中的hops值的基礎上加1,將該hops值修改為2,生成hops值為2的lsa8。
s113:網絡節點b判斷該lsa8中的hops值等于預設跳數,將該lsa8保存于本地,并將該lsa8發送給網絡節點a。
s114:網絡節點a接收網絡節點b發送的lsa8,在該lsa8中的hops值的基礎上加1,將該hops值修改為3,生成hops值為3的lsa9。
s115:網絡節點a判斷該lsa9中的hops值大于預設跳數,將該lsa9丟棄。
s116:網絡節點a基于保存于本地的lsa,確定預設跳數內的網絡節點b、網絡節點c和網絡節點a屬于網絡節點a可見的網絡區域areaa。
可選的,網絡節點a可以根據保存于本地的lsa得到相應的鏈路狀態數據庫,進而得到網絡節點a、網絡節點b和網絡節點c之間的拓撲結構,由該拓撲結構確定網絡節點a可見的網絡區域areaa。
需要說明的是,在附圖4中,僅為了方便查看流程,網絡節點a收集網絡節點b、網絡節點c和網絡節點d發送的lsa并沒有一定的先后順序。
在本申請實施例公開的網絡區域劃分的技術方案中,網絡節點a收集與其具有鄰接關系的網絡節點b、網絡節點c、網絡節點d發送的lsa,該lsa中均擴展有hops字段。在各個網絡節點初始生成的lsa中,hops字段初始的hops值被置為0,隨著lsa的發送,每發送一跳,經過一個網絡節點,則hops字段的hops值則自動加1,直至發送至網絡節點a。網絡節點a在將接收到的lsa中的hops字段中的hops值加1后,與預設跳數進行大小判斷,將當前hops值值小于預設跳數,以及當前hops值等于預設跳數的lsa在本地保存,從而得到自動劃分的網絡節點a可見的網絡區域。通過只收集預設跳數內的網絡節點的鏈路狀態數據,并基于該鏈路狀態數據,得到相應的網絡區域。
如圖5所示,為本申請實施例提供的一種網絡區域劃分的方法流程示意圖。圖5所示的方法中涉及的第一網絡設備和第二網絡設備為非骨干網絡節點。舉例來說,該網絡區域劃分的方法可以應用于圖3所述的應用場景中。圖3中的網絡節點a可以是圖5所示的方法中涉及的第一網絡設備,圖3中的網絡節點b和網絡節點c可以是圖5所示的方法中涉及的第二網絡設備。圖5所示的方法包括s201和s202。
s201:第一網絡設備接收第二網絡設備發送的第一協議報文,該第一協議報文包含跳數hops,所述hops用于標識所述第一協議報文從第二網絡設備向第一網絡設備發送過程中經過的網絡設備數量,該經過的網絡設備包括第一網絡設備。
可選的,具體實現時,該第一協議報文為ospf協議報文。作為舉例,該hops可以添加于lsa報文的lsahead中。在具體實現時,該hops可以具體添加于該lsahead的lstype字段中,也可以在該lsahead中擴展其他字段用于標識該hops。
可選的,具體實現時,該第一協議報文為isis協議報文。作為舉例,該hops可以添加于鏈路狀態報文(linkstatepacket,lsp)報文中。在具體實現時,可以在lsp報文中擴展tvl,并在擴展的tlv中添加該hops。
s202:當第一網絡設備確定hops小于或等于預設值時,該第一網絡設備設置第二網絡設備與第一網絡設備屬于同一區域。
可選的,具體實現時,第一網絡設備將接收到的第一協議報文中當前的hops值與預設值進行比較,確定的結果為該hops值小于或等于預設值時,則將發送該第一協議報文的第二網絡設備設置為與第一網絡設備屬于同一區域,即屬于第一網絡設備的可見區域。
可選的,具體實現時,第一網絡設備將接收到的第一協議報文中當前的hops值與預設值作差,確定的結果為該hops值小于或等于預設值時,則將發送該第一協議報文的第二網絡設備設置為與第一網絡設備屬于同一區域,即屬于第一網絡設備的可見區域。
作為舉例,若第三網絡設備與第一網絡設備建立鄰居關系,且該第三網絡設備與第二網絡設備不是同一設備。當該第一網絡設備作為第二網絡設備向第三網絡設備發送第一協議報文的中間設備時,該第一網絡設備將第一協議報文中的hops修改為hops加1,并將修改hops后的第一協議報文發送給第三網絡設備。
在本申請實施例中,在非骨干網絡節點在劃分自己可見的區域的過程中,只收集預設跳數內的網絡節點的鏈路狀態數據,基于該鏈路狀態數據自動得到相應的網絡區域。
實施例二
在本申請實施例中,作為舉例,基于上述本申請實施例一公開的網絡區域劃分方法得到的網絡節點a可見的網絡區域areaa。結合附圖4網絡節點a在本地保存的lsa,網絡節點a在周期更新過程中,如圖6所示的一應用場景。結合附圖3示出的應用場景,在如圖6示出的該應用場景中接入網絡節點e。當該網絡節點e就近接入網絡區域areaa時,該網絡節點e會發送擴展有hops字段的lsa至網絡節點a。其中,網絡節點e生成的lsa10需要經過1跳發送至網絡節點a。
如圖6所示,接入的網絡節點e與網絡節點b之間也建立了鏈路。則網絡節點a在周期更新過程中,基于接收到的lsa自動劃分可見的網絡區域的過程,如圖7所示,以對網絡節點e和網絡節點b的處理進行舉例說明,包括:
s301:網絡節點a接收到網絡節點e發送的lsa10,在該lsa10中的hops值的基礎上加1,將該hops值修改為1,生成hops值為1的lsa11。
s302:網絡節點a判斷該lsa11中的hops值小于預設跳數,檢查本地鏈路狀態數據庫中是否存在與該lsa11具有相同類型(type)、鏈路狀態標識(linkstateid)、通告路由器(advertisingrouter)和鏈路狀態序號(lssequencenumber)的lsa。
在s302中,type,linkstateid,advertisingrouter和lssequencenumber是lsa的關鍵信息,是一個lsa的唯一標志。
lssequencenumber字段中的值,用于標識lsa是否是一個最新包,網絡節點每生成一個新的lsa時,將該序號加1。
s303:網絡節點a檢查到本地鏈路狀態數據庫中沒有一致的lsa,將該lsa11保存于本地鏈路狀態數據庫中。
如圖6所示,基于上述接入的網絡節點e,其與網絡節點b之間也建立了鏈路,因此,網絡節點b向網絡節點a發送生成的lsa時,除通過與網絡節點a之間的鏈路直接發送給網絡節點a之后,還可以通過網絡節點e發送給網絡節點a。
相應的,在區域劃分過程中,網絡節點c向網絡節點a發送生成的lsa時,也可以通過鏈路c->b->e->a,經由網絡節點e發送給網絡節點a。但是,網絡節點c經過接入的網絡節點e向網絡節點a發送生成的lsa,超出了網絡節點a收集鏈路狀態數據的預設跳數,因此,舍棄經由鏈路c->b->e->a發送的lsa。
相應的,網絡節點d也可以通過鏈路d->c->b->e->a,經由網絡節點e發送給網絡節點a,但是,同樣超出了網絡節點a收集鏈路狀態數據的預設跳數。具體發送lsa的過程與經由鏈路d->c->b->a發送lsa的過程類似,這里不再進行贅述。
如圖7所示,網絡節點a收集網絡節點b生成的lsa12的過程為s304~s309。
s304:網絡節點a分別接收網絡節點b經過鏈路b->a和b->e->a發送的lsa12。
在s304中,網絡節點b經過鏈路b->a將lsa12發送至網絡節點a只經歷了1跳,網絡節點a對接收到的該lsa12中的hops加1后,生成hops值為1的lsa13。網絡節點b經過鏈路b->e->a將lsa12發送至網絡節點a需要經歷2跳,在中間節點網絡節點e對接收到的該lsa12中的hops加1后,再發送給網絡節點a,由網絡節點a再次對hops加1,生成hops值為2的lsa14。
s305:網絡節點a判斷該lsa13中的hops值小于預設跳數,檢查本地鏈路狀態數據庫中是否存在與該lsa13具有相同type字段、linkstateid字段、advertisingrouter字段和lssequencenumber字段的lsa。
s306:網絡節點a檢查到本地鏈路狀態數據庫中存在與lsa13具有相同type字段、linkstateid字段、advertisingrouter字段的lsa2,且lsa13的lssequencenumber值大于lsa2的lssequencenumber字段中的數值,刪除lsa2,將lsa13保存于本地鏈路狀態數據庫中。
在s306中,lssequencenumber字段,用于標識lsa是否是一個最新包。網絡節點每生成一個新的lsa時,將該lssequencenumber字段中的序號加1。在周期更新的過程中,網絡節點b新生成的lsa的序號要大于前一次生成的lsa中的序號,因此將新的lsa替代舊的lsa。
相應的,網絡節點c新生成的lsa經由鏈路c->b->a發送至網絡節點a處,參照上述網絡節點b的處理流程,也將替代網絡節點a的本地鏈路狀態數據庫中存儲的舊的lsa。
s307:網絡節點a判斷該lsa14中的hops值小于預設跳數,檢查本地鏈路狀態數據庫中是否存在與該lsa14具有相同的type字段、linkstateid字段、advertisingrouter字段和lssequencenumber字段的lsa。
s308:網絡節點a檢查到本地鏈路狀態數據庫中存在與lsa14具有相同type字段、linkstateid字段、advertisingrouter字段和lssequencenumber字段的lsa13,比較lsa14和lsa13的hops值的大小。
s309:網絡節點a確定lsa14的hops值大于lsa13的hops值,將lsa14丟棄。
在s309中,網絡節點接收到的lsa13和lsa14是網絡節點b通過不同的鏈路發送給網絡節點a的,兩者的type字段、linkstateid字段、advertisingrouter字段和lssequencenumber字段均相同。因lsa13和lsa14的發送鏈路的長短不同,在本申請實施例中,選擇保留經過最短路徑發送的lsa。也就是說,僅保存hops值最小的lsa。另外,如果兩者的hops值相同,則均保存于本地鏈路狀態數據庫中。
需要說明的是,在附圖7中,僅為了方便查看流程,網絡節點a收集網絡節點b和網絡節點e并沒有一定的先后順序。
在本申請實施例中,網絡節點a在周期更新的過程中,對接收到的lsa中的hops值加1后,與預設跳數進行大小比較,若大于則直接丟棄,若小于或等于則進一步檢查本地建立的鏈路狀態數據庫中保存的lsa,并根據檢查結果調整本地建立的鏈路狀態數據庫中保存的lsa。經由調整后的鏈路狀態數據庫,網絡節點a可以隨時根據接入的網絡節點或刪減的網絡節點,適時進行可見網絡區域的變更。
如圖8所示,為本申請實施例提供的一種網絡區域劃分的方法流程示意圖。圖8所示的方法中涉及的第一網絡設備和第二網絡設備為非骨干網絡節點。舉例來說,該網絡區域劃分的方法結合附圖4示出的方法,可以應用于附圖6所述的應用場景中。圖6中的網絡節點a可以是圖8所示的方法中涉及的第一網絡設備。圖4中網絡節點b發送到網絡節點a的las2,網絡節點c發送到網絡節點a的las5可以是圖8所示的方法中涉及的第一協議報文。圖6中的網絡節點e發送到網絡節點a的lsa11可以為圖8所示的方法中涉及的第一協議報文。圖6中的網絡節點b發送到網絡節點a的lsa13可以是圖8所示的方法中涉及的第一協議報文,可以是第二協議報文。圖6中的網絡節點b發送到網絡節點a的lsa14可以是圖8所示的方法中涉及的第三協議報文。圖8所示的方法包括s401、s402、s403和s404。
s401:第一網絡設備確定當前接收到的協議報文中的hops小于或等于預設跳數,基于鏈路狀態數據庫中協議報文對接收到的協議報文進行檢查。
s402:當第一網絡設備確定第一網絡設備的鏈路狀態數據庫中不存在type與第一協議報文的type相同,linkstateid與第一協議報文的linkstateid相同,且advertisingrouter與第一協議報文的advertisingrouter相同的協議報文時,將第一協議報文存儲在所述鏈路狀態數據庫中。
在具體實現中,第一網絡設備檢查鏈路狀態數據庫,若發現沒有與當前接收到的協議報文type,linkstateid和advertisingrouter一致的協議報文,則將當前接收到的協議報文存儲于鏈路狀態。作為舉例,網絡節點a作為第一網絡設備,網絡節點b、網絡節點c和網絡節點e作為第二網絡設備時,網絡節點b發送到網絡節點a的las2,網絡節點c發送到網絡節點a的las5,圖6中的網絡節點e發送到網絡節點a的lsa11均是第一次發送給網絡節點a,則作為第一協議報文存儲于第一網絡設備的鏈路狀態數據庫中。
s403:當第一網絡設備確定鏈路狀態數據庫存在第二協議報文,第二協議報文的type與第一協議報文的type相同,第二協議報文的linkstateid與第一協議報文的type相同,第二協議報文的advertisingrouter與第一協議報文的advertisingrouter相同,并且第二協議報文的lssequencenumber比第一協議報文的lssequencenumber大時,將第二協議報文存儲在鏈路狀態數據庫中,并從鏈路狀態數據庫中刪除第一協議報文。
作為舉例,網絡節點a作為第一網絡設備,網絡節點b作為第二網絡設備,網絡節點b發送到網絡節點a的las2作為第一協議報文存儲后,在網絡設備a接收到網絡節點b發送的lsa13,該lsa13作為第二協議報文,因lsa13的lssequencenumber比las2的lssequencenumber大,用lsa13替換las2,存儲于鏈路狀態數據庫中。
s404:當第一網絡設備確定鏈路狀態數據庫存在第三協議報文,第三協議報文的type與第一協議報文的type相同,第三協議報文的linkstateid與第一協議報文的type相同,第三協議報文的advertisingrouter與第一協議報文的advertisingrouter相同,第三協議報文的lssequencenumber與第一協議報文的lssequencenumber相同,并且第一協議報文的hops比第三協議報文的hops小時,則將第一協議報文存儲在鏈路狀態數據庫中,刪除第三協議報文。
作為舉例,網絡節點a作為第一網絡設備,網絡節點b作為第二網絡設備,網絡節點b發送給網絡節點a的las14作為第三協議報文,網絡節點b發送到網絡節點a的lsa13作為第一協議報文,在確定lsa13的hops比las14的hops小時,仍將lsa13存儲在鏈路狀態數據庫中,刪除las14。
在本申請實施例中,第一網絡設備在周期更新的過程中,對接收到的滿足預設跳數的協議報文,進一步檢查本地建立的鏈路狀態數據庫中保存的協議報文,并根據檢查結果調整本地建立的鏈路狀態數據庫中保存的協議報文。經由調整后的鏈路狀態數據庫,第一網絡設備可以隨時根據接入的網絡設備或刪減的網絡設備,適時進行可見網絡區域的變更。
實施例三
采用本申請實施例公開的網絡區域劃分方法,每個網絡節點均以自身為中心節點收集預設跳數內的網絡節點發送的鏈路狀態數據。因每個網絡節點可見的網絡區域有所區別,在進行路徑計算的過程中,可能會出現路徑環路。
因此,本申請實施例還進一步公開了在該網絡區域劃分的基礎上,如何為路徑分配分段路由(segmentrouting,sr)節點標簽的技術方案。
以上述本申請實施例一和實施例二公開的網絡區域劃分方法得到的網絡節點a可見的網絡區域areaa為例,網絡節點a基于自己收集到的鏈路狀態數據建立的鏈路狀態數據庫,計算出一條網絡節點a到達網絡節點c的路徑a->b->c,按照這個路徑將報文轉發給網絡節點b。
如圖9所示,因網絡節點b可見的不同網絡區域areab,網絡節點b基于自己收集到的鏈路狀態數據建立的鏈路狀態數據庫,算出的一條網絡節點b到達網絡節點c的路徑為b->a->d->c,該路徑正好經過節點a。因此會出現網絡節點a將報文發送給網絡節點b后,網絡節點b會將該報文又發送給網絡節點a的情況,導致網絡節點之間形成路徑環路。為避免出現路徑環路,本申請實施例基于網絡區域劃分方法公開的路徑計算和轉發方法,如圖10所示,包括:
s501:網絡節點a基于本地的鏈路狀態數據庫,計算轉發報文到達網絡節點c的路徑,得到路徑a->b->c。
s502:網絡節點a為該路徑a->b->c逐跳添加分段路由(segmentrouting,sr)節點標簽,按照該sr節點標簽將該報文經由該路徑a->b->c轉發至網絡節點c。
在執行上述s501和s502的過程中,網絡節點a逐跳添加的sr節點標簽,確保在報文轉發的過程中,按照sr節點標簽標識的路徑進行報文轉發,也就是說,使報文按照多協議標簽交換(multi-protocollabelswitching,mpls)標簽進行轉發。
如圖11所示,為本申請實施例提供的一種基于網絡區域劃分后,為路徑分配sr節點標簽的方法流程示意圖。圖11所示的方法中涉及的第一網絡設備和其他網絡設備為非骨干網絡節點。舉例來說,該路由計算和轉發方法可以應用于附圖9所述的應用場景中。圖10中的網絡節點a可以是圖11所示的方法中涉及的第一網絡設備。圖10中的路徑a->b->c可以是圖11所示的方法中的涉及的路徑。圖11所示的方法包括s601和s602。
s601:第一網絡設備基于鏈路狀態數據庫,計算網絡區域內轉發報文的路徑。
在具體實現過程中,作為舉例,基于第一網絡設備的可見的網絡區域計算路徑,具體的路勁計算方法可選的,可以基于鏈路狀態數據庫中存儲的該網絡區域內各個網絡設備之間的鏈路狀態數據進行計算。
s602:第一網絡設備為該路徑上的每個網絡設備分配sr節點標簽,并根據sr節點標簽進行報文轉發。
在本申請實施例中,在第一網絡設備進行報文轉發的過程中,第一網絡設備基于該sr節點標簽進行報文的轉發,不會走其他的未分配sr節點標簽的網絡設備,可以避免轉發報文中出現的環路問題。
進一步的,本申請實施例還公開了在滿足避免路徑環路的基礎上,減少路徑中逐跳分配sr節點標簽的方式。
例如,網絡節點f通過收集的預設跳數內的鏈路狀態數據,自動形成了自己可見的網絡區域areaf。在該網絡區域areaf中,所有邊界網絡節點構成集合{m}。網絡節點f到達所有邊界網絡節點的路徑花費(cost)構成集合{n}。該cost用于反映鏈路的優劣,cost值越小鏈路越優。該集合{n}中的最小值稱為最小出境花費(minimalescapecost,mec),假設計算轉發報文的路徑上的網絡節點構成了集合{p}={f、h、i、g}。
在路徑的計算過程中,因各個網絡節點看到的網絡區域不同,可能會出現對于網絡節點h而言更優的路徑超出了網絡區域areaf,一旦在區域外,則基于網絡節點f到邊界網絡節點的cost與mec的大小關系,確保計算出的路徑不會出現環路。如圖12所示,本申請實施例公開了另一種為路徑添加sr節點標簽的方法流程示意圖,包括:
s701:網絡節點f基于本地的鏈路狀態數據庫,計算轉發報文到達網絡節點g的路徑,得到路徑f->h->i->g。
s702:網絡節點f計算分別到達網絡節點h的cost1,到達網絡節點i的cost2和到達網絡節點g的cost3。
s703:網絡節點f將該cost1、cost2、cost3與mec進行比較,若均小于,則執行s704,否則執行s705。
s704:網絡節點f比較得到cost1、cost2和cost3均小于mec,網絡節點f將該報文經過該路徑f->h->i->g轉發至網絡節點g。
在s704中,如果計算的路徑中的各個網絡節點與首發報文的網絡節點之間的cost小于mec,則在報文轉發的過程中不會出現路徑環路,因此,并不需要添加sr節點標簽。
s705:網絡節點f比較得到cost1小于mec,得到cost2小于或等于mec,得到cost3大于mec,網絡節點f從網絡節點i起始,為該路徑f->i->g逐跳添加sr節點標簽。
在s705中,如果計算的路徑中的各個網絡節點與首發報文的網絡節點之間的cost中存在不小于mec的情況,此時如果不添加sr節點標簽,則可能會出現路徑環路。因此,從cost小于或等于mec的網絡節點中選擇cost最大的網絡節點,作為添加sr節點標簽的起始,逐跳為剩余的路由路徑添加sr節點標簽。
s706:網絡節點f按照添加的sr節點標簽,將該報文經過該路徑f->h->i->g轉發至網絡節點g。
如圖13所示,為本申請實施例提供的另一種為路徑分配sr節點標簽的方法流程示意圖。圖11所示的方法中涉及的第一網絡設備和其他網絡設備為非骨干網絡節點。舉例來說,該路由計算和轉發方法可以應用于附圖9所述的應用場景中。圖12中的網絡節點f可以是圖13所示的方法中涉及的第一網絡設備。圖12中的網絡節點i可以是圖13所示的方法中涉及的第四網絡設備。圖12中的路徑f->h->i->g可以是圖13所示的方法中的涉及的路徑。圖13所示的方法包括s801-s804。
s801:第一網絡設備基于鏈路狀態數據庫,計算網絡區域內轉發報文的路徑。
s802:第一網絡設備計算從第一網絡設備分別到達該路徑上的每個網絡設備的cost。
s803:當第一網絡設備確定從第一網絡設備分別到達該路徑上的每個網絡設備的cost都小于mec,基于該路徑轉發報文。
mec為:第一網絡設備計算得到的從第一網絡設備分別到達位于網絡區域邊界上的每個網絡設備的cost中的最小值。
在具體實現過程中,可選的,第一網絡設備可以將計算得到的各個cost與mec進行比較,從而確定cost與mec之間的大小關系。也可以采用將各個cost與mec作差的方式,確定cost與mec之間的大小關系。
s804:當第一網絡設備確定從第一網絡設備分別到達該路徑上的每個網絡設備的cost中,第一網絡設備到達第四網絡設備的cost大于或等于mec,從該第四網絡設備開始分配sr節點標簽,并根據sr節點標簽進行報文轉發。
在本申請實施例中,通過計算路徑中的各個網絡節點與首發報文的網絡節點之間的cost,將得到的cost與mec進行大小比較,從cost小于或等于mec的網絡節點中選擇cost最大的網絡節點,作為分配sr節點標簽的起始,逐跳為剩余的路徑添加sr節點標簽;在避免產生路徑環路的條件下,減少了逐跳分配sr節點標簽的數量,優化了在路徑中分配sr節點標簽的方式。
實施例四
基于上述本申請實施例公開的網絡區域劃分的技術方案,本申請還對應公開了執行該網絡區域劃分方法的網絡設備。
如圖14所示,為本申請實施例公開了的網絡設備1400的結構示意圖。該網絡設備1400用作第一網絡設備,具體包括:
接收單元1401,用于接收第二網絡設備發送的第一協議報文。該第一協議報文包含hops。該hops用于標識第一協議報文從第二網絡設備向第一網絡設備發送過程中經過的網絡設備數量,該經過的網絡設備包括第一網絡設備。
該接收單元1401可以執行本申請實施例一圖5示出的s201。該接收單元101中所涉及的第一協議報文包含的hops動態變化。該hops動態變化的過程可以參見本申請實施例一圖4示出的s101-s102,s104-s107,s109-s114中的記載,本申請實施例二圖7示出的s301,s304中的記載,這里不再進行贅述。
處理單元1402,用于當確定該hops小于或等于預設值時,設置該第二網絡設備與所述第一網絡設備屬于同一區域。
該處理單元1402可以執行本申請實施例一圖5示出的s202。處理單元102中所涉及確定該hops小于或等于預設值的過程可以參見本申請實施例一圖4示出的s103,s108,s115中的記載,本申請實施例二圖7示出的s305、s307中的相應記載,這里不再進行贅述。
可選的,該處理單元1402,還用于將第一協議報文中的hops修改為hops加1,并將修改后的所述第一協議報文向第三網絡設備發送,該第三網絡設備為與該第一網絡設備建立鄰居關系的網絡設備,該第三網絡設備與該第二網絡設備不是同一設備。
該處理單元1402在第一網絡設備作為中間設備時,執行上述操作,具體可以參見上述本申請實施例中作為中間設備的網絡設備b、網絡節點c等的操作過程,這里不再進行贅述。
可選的,該處理單元1402,還用于當確定第一網絡設備的鏈路狀態數據庫中不存在與第一協議報文的type,第一協議報文的linkstateid,第一協議報文的advertisingrouter相同的協議報文時,將第一協議報文存儲在鏈路狀態數據庫中。
該處理單元1402可以執行本申請實施例二圖8公開的s301,具體執行過程和原理可以參見本申請實施例二中有關s301所記載的內容,這里不再進行贅述。
可選的,該處理單元1402,還用于當確定鏈路狀態數據庫存在第二協議報文,第二協議報文的type與第一協議報文的type相同,所第二協議報文的linkstateid與第一協議報文的type相同,第二協議報文的advertisingrouter與第一協議報文的advertisingrouter相同,并且第二協議報文的鏈路狀態序號lssequencenumber比第一協議報文的lssequencenumber大時,將第二協議報文存儲在鏈路狀態數據庫中,并從鏈路狀態數據庫中刪除第一協議報文。
該處理單元1402可以執行本申請實施例二圖8公開的s302,具體執行過程和原理可以參見本申請實施例二中有關s302所記載的內容,這里不再進行贅述。
可選的,該處理單元1402,還用于當確定鏈路狀態數據庫存在第三協議報文,第三協議報文的type與第一協議報文的type相同,第三協議報文的linkstateid與第一協議報文的type相同,第三協議報文的advertisingrouter與第一協議報文的advertisingrouter相同,第三協議報文的lssequencenumber與第一協議報文的lssequencenumber相同,并且第一協議報文的hops比第三協議報文的hops小時,則將第一協議報文存儲在鏈路狀態數據庫中,刪除第三協議報文。
該處理單元1402可以執行本申請實施例二圖8公開的s303,具體執行過程和原理可以參見本申請實施例二中有關s303所記載的內容,這里不再進行贅述。
可選的,如圖14所示,該網絡設備1400還包括:計算單元1403和轉發單元1404。
該計算單元1403,用于基于鏈路狀態數據庫,計算網絡區域內轉發報文的路徑。
該計算單元1403可以執行本申請實施例三圖13公開的s701,具體執行過程和原理可以參見本申請實施例二中有關s701所記載的內容,這里不再進行贅述。
轉發單元1404,用于為該路徑上的每個網絡設備分配分段路由sr節點標簽,并根據sr節點標簽轉發所述報文。
可選的,該計算單元1403,還用于基于鏈路狀態數據庫,計算網絡區域內轉發報文的路徑,以及計算從第一網絡設備分別到達該路徑上的每個網絡設備的cost。
轉發單元1404,還用于當確定從第一網絡設備分別到達該路徑上的每個網絡設備的cost都小于mec,基于該路徑轉發報文。
mec為:第一網絡設備計算得到的從第一網絡設備分別到達位于網絡區域邊界上的每個網絡設備的cost中的最小值。
可選的,該轉發單元1404,還用于當確定從第一網絡設備分別到達所述路徑上的每個網絡設備的cost中,第一網絡設備到達第四網絡設備的cost大于或等于所述mec,從所述第四網絡設備開始分配sr節點標簽,并根據sr節點標簽進行報文轉發。
該轉發單元1404可以執行本申請實施例三圖13公開的s702-s703,具體執行過程和原理可以參見本申請實施例二中有關s702-s703所記載的內容,這里不再進行贅述。
結合本申請實施例公開的網絡區域劃分方法,以及分配sr節點標簽的方法,本申請實施例所公開的網絡設備也可以直接用硬件、處理器執行的存儲器,或者二者的結合來實施。
圖15為本申請實施例公開的網絡設備1500的硬件結構示意圖。圖15所示的網絡設備1500可以執行上述本申請實施例中第一網絡設備所執行的相應步驟。
如圖15所示,該網絡設備1500包括:處理器1501和存儲器1502。可選的,該網絡設備1500還包括網絡接口1503。該處理器1501通過總線與存儲器1502耦合。處理器1502通過總線與該網絡節點1503耦合。
處理器1501具體可以是中央處理器(英文:centralprocessingunit,簡稱:cpu),網絡處理器(英文:networkprocessor,簡稱:np),專用集成電路(英文:application-specificintegratedcircuit,簡稱:asic)或者可編程邏輯器件(英文:programmablelogicdevice,縮寫:pld)。上述pld可以是復雜可編程邏輯器件(英文:complexprogrammablelogicdevice,縮寫:cpld),現場可編程邏輯門陣列(英文:field-programmablegatearray,縮寫:fpga)或者通用陣列邏輯(英文:genericarraylogic,縮寫:gal)。
存儲器1502具體可以是內容尋址存儲器(英文:content-addressablememory,簡稱:cam)或者隨機存取存儲器(英文:random-accessmemory,簡稱:ram)。cam可以是三態內容尋址存儲器(英文:ternarycam,簡稱:tcam)。
網絡接口1503可以是有線接口,例如光纖分布式數據接口(英文:fiberdistributeddatainterface,簡稱:fddi)或者以太網(英文:ethernet)接口。
存儲器1502也可以集成在處理器1501中。如果存儲器1502和處理器1501是相互獨立的器件,存儲器1502和處理器1501相連,例如存儲器1502和處理器1501可以通過總線通信。網絡接口1503和處理器1501可以通過總線通信,網絡接口1503也可以與處理器1501直接連接。
存儲器1502,用于存儲網絡區域劃分的操作程序、代碼或指令。可選的,該存儲器1502包括操作系統和應用程序,用于存儲網絡區域劃分和分配sr節點標簽的操作程序、代碼或指令。
當處理器1501或硬件設備要進行網絡區域劃分和/或分配sr節點標簽時,調用并執行存儲器1502中存儲的操作程序、代碼或指令可以完成圖3-圖12中涉及的第一網絡設備的處理過程。具體過程可參見上述本申請實施例相應的部分,這里不再贅述。
可以理解的是,圖15僅僅示出了該網絡設備的簡化設計。在實際應用中,網絡設備可以包含任意數量的接口,處理器,存儲器等,而所有可以實現本申請實施例的網絡設備都在本申請實施例的保護范圍之內。
本申請各個實施例中的各功能單元可以集成在一個處理器中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上電路集成在一個電路中。上述各功能單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
圖16為本申請實施例公開的一種網絡區域劃分系統1600,包括第一網絡設備1601和第二網絡設備1602;
該第二網絡設備1602,用于向第一網絡設備1601發送第一協議報文。
該第一網絡設備1601,用于接收第二網絡設備1602發送的第一協議報文,該第一協議報文包含跳數hops,該hops用于標識第一協議報文從第二網絡設備1602向第一網絡設備1601發送過程中經過的網絡設備數量,該經過的網絡設備包括第一網絡設備,當第一網絡設備確定hops小于或等于預設值時,第一網絡設備設置第二網絡設備與第一網絡設備屬于同一區域。
可選的,該網絡區域劃分系統還包括第三網絡設備1063,該第三網絡設備1063為與第一網絡設備1601建立鄰居關系的網絡設備,該第三網絡設備1063與第二網絡設備1602不是同一設備。
該第一網絡設備1601,還用于將第一協議報文中的hops修改為hops加1,并向第三網絡設備發送修改后的第一協議報文。
可選的,該第一網絡設備1601,還用于當確定第一網絡設備的鏈路狀態數據庫中不存在與第一協議報文的type,第一協議報文的linkstateid,第一協議報文的advertisingrouter相同的協議報文時,將第一協議報文存儲在鏈路狀態數據庫中。
可選的,該第一網絡設備1601,還用于當確定鏈路狀態數據庫存在第二協議報文,第二協議報文的type與第一協議報文的type相同,所第二協議報文的linkstateid與第一協議報文的type相同,第二協議報文的advertisingrouter與第一協議報文的advertisingrouter相同,并且第二協議報文的鏈路狀態序號lssequencenumber比第二協議報文的lssequencenumber大時,將第二協議報文存儲在鏈路狀態數據庫中,并從鏈路狀態數據庫中刪除第一協議報文。
可選的,該第一網絡設備1601,還用于當確定鏈路狀態數據庫存在第三協議報文,第三協議報文的type與第一協議報文的type相同,第三協議報文的linkstateid與第一協議報文的type相同,第三協議報文的advertisingrouter與第一協議報文的advertisingrouter相同,第三協議報文的lssequencenumber與第一協議報文的lssequencenumber相同,并且第一協議報文的hops比第三協議報文的hops小時,則將第一協議報文存儲在鏈路狀態數據庫中,刪除第三協議報文。
可選的,第一網絡設備1601,還用于基于所述鏈路狀態數據庫,計算網絡區域內轉發報文的路徑;為路徑上的每個網絡設備分配分段路由sr節點標簽,并根據sr節點標簽進行報文轉發。
可選的,第一網絡設備1601,還用于基于鏈路狀態數據庫,計算網絡區域內轉發報文的路徑;計算從第一網絡設備分別到達該路徑上的每個網絡設備的cost;確定從第一網絡設備分別到達該路徑上的每個網絡設備的cost都小于mec,基于該路徑轉發報文。mec為第一網絡設備計算得到的從第一網絡設備分別到達位于網絡區域邊界上的每個網絡設備的cost中的最小值;
可選的,第一網絡設備1601,還用于當確定從第一網絡設備分別到達該路徑上的每個網絡設備的中,第一網絡設備到達第四網絡設備的cost大于或等于,從該第四網絡設備開始分配sr節點標簽,并根據sr節點標簽進行報文轉發。
以上本申請實施例公開的網絡區域劃分系統中,第一網絡設備1601可以具體為圖13和圖14中公開的網絡設備,用于執行本申請實施例圖4、圖5、圖7、圖8、圖10、圖11和附圖12中第一網絡設備執行的相應操作,具體過程以及執行原理可以參照上述說明,這里不再進行贅述。
綜上所述,本申請實施例公開了一種網絡區域劃分方法、網絡設備和系統,在執行該網絡區域劃分方法的過程中,每個網絡節點收集預設跳數內的其他網絡節點的鏈路狀態數據,通過收集到的鏈路狀態數據劃分網絡區域。進一步的在周期更新的過程中,對收集到的鏈路狀態數據進行更新,并在鏈路狀態數據更新后,對網絡區域也進行更新。實現對網絡區域的自動劃分。
進一步的,在轉發報文的過程中,對計算得到的轉發報文的路徑上的每一個網絡設備分配sr節點標簽,基于該sr節點標簽進行報文的轉發,避免轉發報文時出現的環路問題。
最后應說明的是:以上實施例僅用以示例性說明本申請的技術方案,而非對其限制;盡管參照前述實施例對本申請及本申請帶來的有益效果進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本申請權利要求的范圍。