本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)互連通信技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)中心內(nèi)獲取路由表的方法及系統(tǒng)。
背景技術(shù):
隨著云計(jì)算和大數(shù)據(jù)的發(fā)展,IDC數(shù)據(jù)中心建設(shè)迎來建設(shè)高潮,隨著數(shù)據(jù)中心的成本不斷飆升,數(shù)據(jù)中心管理的重點(diǎn)開始轉(zhuǎn)向網(wǎng)絡(luò)運(yùn)維和網(wǎng)絡(luò)優(yōu)化上,在網(wǎng)絡(luò)運(yùn)維和網(wǎng)絡(luò)優(yōu)化過程中,路由表成為了一種非常重要的基礎(chǔ)數(shù)據(jù),擁有了路由表數(shù)據(jù)就能夠掌握任意節(jié)點(diǎn)到目的節(jié)點(diǎn)路徑,從而為流量工程、網(wǎng)絡(luò)優(yōu)化和網(wǎng)絡(luò)建模奠定基礎(chǔ)。
現(xiàn)存的路由表獲取方法大致分為三種:登錄路由器CLI收集,廠商提供和網(wǎng)絡(luò)收集。登錄路由器查看往往需要手工輔助,受限于數(shù)據(jù)中心內(nèi)路由器數(shù)量龐大和不同廠商路由器的路由表格式不同,該方式獲取路由表可行性較低;廠商提供往往需要配置專用路由器從而提供對(duì)外輸出路由表接口,該方式獲取的路由表較為精確,但是價(jià)格較為昂貴,非專用路由器路由表不能收集到路由表數(shù)據(jù);網(wǎng)絡(luò)收集主要是利用網(wǎng)絡(luò)內(nèi)泛洪鏈路狀態(tài)信息,利用SPF算法計(jì)算路由,該方式性價(jià)比較高,提供較為準(zhǔn)確的復(fù)原路由表,實(shí)時(shí)性也較高。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種數(shù)據(jù)中心內(nèi)獲取路由表的方法及系統(tǒng)。
本發(fā)明提出一種數(shù)據(jù)中心內(nèi)獲取路由表的方法,包括:
獲取OSPF網(wǎng)絡(luò)路由表步驟,獲取Router LSA與Network LSA,根據(jù)Router LSA與Network LSA計(jì)算OSPF網(wǎng)絡(luò)的域內(nèi)路由,獲取Summary LSA,并計(jì)算區(qū)域路由間路由,獲取AS External LSA,計(jì)算自治域外部路由;
獲取ISIS網(wǎng)絡(luò)路由表步驟,獲取數(shù)據(jù)表Link_state_main與數(shù)據(jù)表Link_state_attach,查詢Link_state_main中所有路由設(shè)備的設(shè)備名稱,以設(shè)備名稱為id并插入圖形數(shù)據(jù)庫Neo4j,從而獲取所有的路由設(shè)備,為所有路由設(shè)備建立鏈接關(guān)系,獲取所有偽節(jié)點(diǎn)生成的LSP,遍歷所有路由設(shè)備偽節(jié)點(diǎn)生成的LSP,將所有路由設(shè)備之間的連接關(guān)系插入圖形數(shù)據(jù)庫Neo4j,并為連接關(guān)系添加距離值metric,根據(jù)所有路由器設(shè)備生成的集合,獲取路由表。
所述OSPF網(wǎng)絡(luò)路由表步驟中計(jì)算OSPF網(wǎng)絡(luò)的域內(nèi)路由步驟包括a.遍歷Router LSA,查找出所有路由設(shè)備并以路由設(shè)備為節(jié)點(diǎn)插入圖形數(shù)據(jù)庫Neo4j中;遍歷Network LSA,查找出所有路由設(shè)備之間的連接關(guān)系并以連接關(guān)系為節(jié)點(diǎn)關(guān)系插入圖形數(shù)據(jù)庫Neo4j中;
b.生成所有路由器集合Group,遍歷路由器集合Group中路由器,查詢?cè)绰酚善髦谅酚善骷现新酚善鱥d的路徑、下一跳與metric值,從而完成到達(dá)其它網(wǎng)絡(luò)設(shè)備的路由;
c.根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup,遍歷集合NetGroup,對(duì)于任意地址段<network、netmask>查詢所述任意地址段相對(duì)應(yīng)的子網(wǎng)相連的路由器,查詢?cè)绰酚善髦了鋈我獾刂范蝺?nèi)路由器的最短路徑,判斷所述任意地址段是否處于最短路徑中,如果是則metric就是最短路徑值,否則metric就是最短路徑metric與<network,netmask>鏈路metric相加,選擇metric值最小的路徑作為源路由器到所述任意地址段的最短路徑。
所述所述OSPF網(wǎng)絡(luò)路由表步驟中計(jì)算區(qū)域路由間路由的步驟為依次遍歷Summary LSA,在Area 0中查找某地址段所在的Summary LSA到Summary LSA的發(fā)布者的距離值metric,將距離值metric與Summary LSA的發(fā)布者的相連的源路由器的距離值相加,結(jié)果作為Summary LSA的發(fā)布者的距離值。
所述獲取ISIS網(wǎng)絡(luò)路由表步驟中獲取路由表的步驟包括遍歷所有路由器設(shè)備生成的集合,查詢?cè)绰酚善髦了新酚善髟O(shè)備生成的集合中routerB的路徑、下一跳與metric值;
根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup,遍歷集合NetGroup,對(duì)于特定地址段<network,netmas k>查詢所述特定地址段相連的路由器,查詢自身路由器至所述特定地址段相連路由器的最短路徑;判斷所述特定地址段所在路徑是否存在于最短路徑中,如果存在則所述特定地址段的metric就是最短路徑值,否則所述特定地址段的metric就是最短路徑metric與network、netmask所在鏈路metric相加,選擇metric值最小的路徑作為源路由器到所述特定地址段的最短路徑。
本發(fā)明還提出一種數(shù)據(jù)中心內(nèi)獲取路由表的系統(tǒng),包括:
獲取OSPF網(wǎng)絡(luò)路由表模塊,用于獲取Router LSA與Network LSA,根據(jù)Router LSA與Network LSA計(jì)算OSPF網(wǎng)絡(luò)的域內(nèi)路由,獲取Summary LSA,并計(jì)算區(qū)域路由間路由,獲取AS External LSA,計(jì)算自治域外部路由;
獲取ISIS網(wǎng)絡(luò)路由表模塊,用于獲取數(shù)據(jù)表Link_state_main與數(shù)據(jù)表Link_state_attach,查詢Link_state_main中所有路由設(shè)備的設(shè)備名稱,以設(shè)備名稱為id并插入圖形數(shù)據(jù)庫Neo4j,從而獲取所有的路由設(shè)備,為所有路由設(shè)備建立鏈接關(guān)系,獲取所有偽節(jié)點(diǎn)生成的LSP,遍歷所有路由設(shè)備偽節(jié)點(diǎn)生成的LSP,將所有路由設(shè)備之間的連接關(guān)系插入圖形數(shù)據(jù)庫Neo4j,并為連接關(guān)系添加距離值metric,根據(jù)所有路由器設(shè)備生成的集合,獲取路由表。
所述OSPF網(wǎng)絡(luò)路由表模塊中計(jì)算OSPF網(wǎng)絡(luò)的域內(nèi)路由步驟包括a.遍歷Router LSA,查找出所有路由設(shè)備并以路由設(shè)備為節(jié)點(diǎn)插入圖形數(shù)據(jù)庫Neo4j中;遍歷Network LSA,查找出所有路由設(shè)備之間的連接關(guān)系并以連接關(guān)系為節(jié)點(diǎn)關(guān)系插入圖形數(shù)據(jù)庫Neo4j中;
b.生成所有路由器集合Group,遍歷路由器集合Group中路由器,查詢?cè)绰酚善髦谅酚善骷现新酚善鱥d的路徑、下一跳與metric值,從而完成到達(dá)其它網(wǎng)絡(luò)設(shè)備的路由;
c.根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup,遍歷集合NetGroup,對(duì)于任意地址段<network、netmask>查詢所述任意地址段相對(duì)應(yīng)的子網(wǎng)相連的路由器,查詢?cè)绰酚善髦了鋈我獾刂范蝺?nèi)路由器的最短路徑,判斷所述任意地址段是否處于最短路徑中,如果是則metric就是最短路徑值,否則metric就是最短路徑metric與<network,netmask>鏈路metric相加,選擇metric值最小的路徑作為源路由器到所述任意地址段的最短路徑。
所述所述OSPF網(wǎng)絡(luò)路由表模塊中計(jì)算區(qū)域路由間路由的步驟為依次遍歷Summary LSA,在Area 0中查找某地址段所在的Summary LSA到Summary LSA的發(fā)布者的距離值metric,將距離值metric與Summary LSA的發(fā)布者的相連的源路由器的距離值相加,結(jié)果作為Summary LSA的發(fā)布者的距離值。
所述獲取ISIS網(wǎng)絡(luò)路由表模塊中獲取路由表的步驟包括遍歷所有路由器設(shè)備生成的集合,查詢?cè)绰酚善髦了新酚善髟O(shè)備生成的集合中routerB的路徑、下一跳與metric值;
根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup,遍歷集合NetGroup,對(duì)于特定地址段<network,netmas k>查詢所述特定地址段相連的路由器,查詢自身路由器至所述特定地址段相連路由器的最短路徑;判斷所述特定地址段所在路徑是否存在于最短路徑中,如果存在則所述特定地址段的metric就是最短路徑值,否則所述特定地址段的metric就是最短路徑metric與network、netmask所在鏈路metric相加,選擇metric值最小的路徑作為源路由器到所述特定地址段的最短路徑。
由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明能夠獲取一份數(shù)據(jù)中心網(wǎng)絡(luò)內(nèi)較為詳細(xì)的、實(shí)時(shí)的、精確的路由表。本發(fā)明是通過軟件路由器與網(wǎng)絡(luò)中運(yùn)行的特定路由器建立鄰接關(guān)系,以對(duì)網(wǎng)絡(luò)影響最小的方式被動(dòng)接受鏈路狀態(tài)更新報(bào)文,形成鏈路狀態(tài)數(shù)據(jù)庫,啟動(dòng)路由計(jì)算生成路由表。
附圖說明
圖1是OSPF網(wǎng)絡(luò)結(jié)構(gòu)示意圖;
圖2是ISIS網(wǎng)絡(luò)結(jié)構(gòu)示意圖;
圖3是網(wǎng)絡(luò)示意圖;
圖4是本發(fā)明一實(shí)施例示意圖;
圖5是本發(fā)明一實(shí)施例示意圖;
圖6是本發(fā)明一實(shí)施例示意圖;
圖7是本發(fā)明一實(shí)施例示意圖;
圖8是本發(fā)明一實(shí)施例示意圖;
圖9是本發(fā)明一實(shí)施例示意圖;
具體實(shí)施方式
LSDB:Link State DataBase(鏈路狀態(tài)數(shù)據(jù)庫),通過路由器間的路由信息交換,自治系統(tǒng)內(nèi)部可以達(dá)到信息同步,即LSDB(連接狀態(tài)數(shù)據(jù)庫)描述的網(wǎng)絡(luò)拓?fù)渫健?/p>
QINQ:設(shè)備提供的端口QinQ特性是一種簡單、靈活的二層VPN技術(shù),它通過在運(yùn)營商網(wǎng)絡(luò)邊緣設(shè)備上為用戶的私網(wǎng)報(bào)文封裝外層VLAN Tag,使報(bào)文攜帶兩層VLAN Tag穿越運(yùn)營商的骨干網(wǎng)絡(luò)(公網(wǎng))。
Quagga:Quagga是一個(gè)提供TCP/IP路由協(xié)議的軟件包,是一套路由軟件套件。提供Unix、部分FreeBSD、Linux、Solaris和NetBSD平臺(tái)上的OSPFv2,OSPFv3,RIP v1和v2,RIPng,BGP-4和BGP-4+網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn),目的是使裝有l(wèi)inux系統(tǒng)的主機(jī)變?yōu)橐慌_(tái)路由器。Quagga同時(shí)支持特殊的BGP路由映射器和路由服務(wù)器行為。Quagga是GNU Zebra的一個(gè)分支,由Kunihiro Ishigruo開發(fā)的。
目前數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)是以ISIS路由協(xié)議作為數(shù)據(jù)中心網(wǎng)絡(luò)骨干網(wǎng),OSPF路由協(xié)議作為邊緣網(wǎng)絡(luò)或局域網(wǎng),對(duì)外采用BGP路由協(xié)議,因此只需要獲取ISIS骨干網(wǎng)內(nèi)和OSPF網(wǎng)絡(luò)內(nèi)路由器路由表。
本發(fā)明將以圖1的組網(wǎng)圖來詳細(xì)描述OSPF網(wǎng)絡(luò)獲取路由表方法。
組網(wǎng)說明:
網(wǎng)絡(luò)是由R1-R8共8臺(tái)路由器組成,區(qū)域劃分,路由器的的ID和各網(wǎng)段的IP地址都已經(jīng)在圖上標(biāo)明,為便于記憶,各路由器的接口IP地址的最后一位與自身Router ID(路由器標(biāo)識(shí))的最后一位保持一致。
如R1的Router ID為1.1.1.1,在192.168.100.0/24的接口IP就是192.168.100.1,R2在該網(wǎng)段上的接口IP就是192.168.100.2,此外,Area 2為NSSA網(wǎng)絡(luò)區(qū)域,Area 4通過Area 3和Area 0建立虛連接,Area 5為完全STUB區(qū)域,在OSPF網(wǎng)絡(luò)中RFC2328共定義了五種LSA,各個(gè)LSA的詳細(xì)論述如下表:
表1五種LSA類型
獲取路由表具體步驟:
1.生成域內(nèi)路由
域內(nèi)路由的計(jì)算是根據(jù)第一、二類LSA計(jì)算,此時(shí),1.1.1.1上Area 0的LSA如圖4所示:
有了第一類和第二類LSA就可以計(jì)算OSPF Area 0的域內(nèi)路由。每個(gè)路由器上Area 0內(nèi)的LSDB是相同的,不同的是各路由器是各自為政、以自己為根計(jì)算SPF,因此我們可以根據(jù)軟件路由器Quagga導(dǎo)出LSDB信息,據(jù)此計(jì)算各路由器的路由表。在這以1.1.1.1為例計(jì)算域內(nèi)路由。
生成域內(nèi)路由的具體步驟:
a.遍歷第一類Router LSA,查找出所有的路由設(shè)備并以此為節(jié)點(diǎn)插入圖形數(shù)據(jù)庫Neo4j中;遍歷第二類Network LSA,查找出所有路由設(shè)備之間的連接關(guān)系并以此為節(jié)點(diǎn)關(guān)系插入圖形數(shù)據(jù)庫Neo4j中。
b.生成所有路由器集合Group,遍歷集合Group中路由器router調(diào)用Neo4j中Dijkstra(1.1.1.1,router id)方法,查詢?cè)绰酚善?.1.1.1至集合Group中router id的路徑、下一跳和metric值,從而完成到達(dá)其它網(wǎng)絡(luò)設(shè)備路由;
c.根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup。遍歷二元組集合NetGroup,對(duì)于任意地址段<network、netmask>查詢?cè)撟泳W(wǎng)相連的路由器,查詢1.1.1.1至地址段內(nèi)路由器的最短路徑;然后判斷該地址段是否處于最短路徑中,如果是則metric就是最短路徑值,如果否則metric就是最短路徑metric與<network,netmask>鏈路metric相加;選擇metric值最小的路徑作為源路由器到該地址段的最短路徑,最短路徑可能會(huì)包含多路徑。
2.生成區(qū)域路由
根據(jù)Summary LSA計(jì)算區(qū)域路由間路由。以圖1網(wǎng)絡(luò)環(huán)境所示,此時(shí)Area 0內(nèi)的Summary LSA如圖5所示:
依次遍歷以上所列出的Summary LSA,以地址段192.168.130.0/24所在LSA為例,如圖6所示:
在Area 0中找到192.168.130.0/24所在的Summary LSA到該LSA發(fā)布者2.2.2.2的距離值metric為1,根據(jù)步驟1中區(qū)域內(nèi)路由計(jì)算結(jié)果已知1.1.1.1到2.2.2.2的metric為10,再加上該條LSA的metric值1,就是區(qū)域間192.168.139.0/24的metric=10+1=11,最終形成了一條新的路由,192.168.139.0/24,下一跳為192.168.100.2,宣告路由器為2.2.2.2,metric為11。
同理將192.168.130.0/24,192.168.140.0/24,192.168.150.0/24,201.0.0.0/24,204.0.0.0/24,205.0.0.0/24加入路由表。
3.生成自治域外部路由
根據(jù)AS External LSA可以計(jì)算自治域外部路由。此時(shí)1.1.1.1的LSDB內(nèi)的AS External LSA如圖7所示:
依次遍歷以上所列出的LSA,以地址段9.0.0.0/8所在LSA為例。
從圖8中能夠發(fā)現(xiàn)生成該LSA的ASBR為2.2.2.2,已知在第一步生成域內(nèi)路由表中能夠查找到2.2.2.2,說明9.0.0.0是可達(dá)的,到達(dá)2.2.2.2和9.0.0.0的下一跳地址是一致的,最終形成了一條新的路由,9.0.0.0/8,下一跳為192.168.100.2,宣告路由器為2.2.2.2,metric=10+20=30。
同理將19.0.0.0/8加入路由表。至此,全部路由計(jì)算完畢。
特殊情況說明:對(duì)于第七類的LSA與生成自治域外部路由中利用第五類LSA計(jì)算路由的計(jì)算方法完全相同。
ISIS網(wǎng)絡(luò)獲取路由表方法
本發(fā)明將以圖2的組網(wǎng)圖來詳細(xì)描述ISIS網(wǎng)絡(luò)獲取路由表方法。
組網(wǎng)說明:
網(wǎng)絡(luò)由15臺(tái)路由器R1-R14、Quagga組成,區(qū)域劃分、路由器的Router ID和各網(wǎng)段的IP地址都已經(jīng)在網(wǎng)絡(luò)結(jié)構(gòu)示意圖上標(biāo)注清楚。為便于記憶,各路由器的接口IP地址的最后一位與自身Router ID的最后一位保持一致。
如圖2所示網(wǎng)絡(luò)環(huán)境,共包括5個(gè)Area域,其中R1-R8組成骨干網(wǎng),ISIS骨干網(wǎng)絡(luò)共包括兩種類型路由器:Level-1-2路由器和Level-2路由器。
Level-1-2路由器:Level-1-2路由器同時(shí)屬于Level-1和Level-2的路由器,可以與同一區(qū)域的Level-1和Level-1-2路由器形成Level-1鄰居關(guān)系,也可以與同一區(qū)域或者其他區(qū)域的Level-2和Level-1-2路由器形成Level-2的鄰居關(guān)系。Level-1路由器必須通過Level-1-2路由器才能連接至其他區(qū)域。Level-1-2路由器維護(hù)兩個(gè)LSDB,Level-1的LSDB用于區(qū)域內(nèi)路由,Level-2的LSDB用于區(qū)域間路由。
Level-2路由器:Level-2路由器負(fù)責(zé)區(qū)域間的路由,可以與同一區(qū)域或者其它區(qū)域的Level-2和Level-1-2路由器形成鄰居關(guān)系,維護(hù)一個(gè)Level-2的LSDB,該LSDB包含區(qū)域間的路由信息。所有Level-2路由器和Level-1-2路由器組成路由域的骨干網(wǎng),負(fù)責(zé)在不同區(qū)域間通信,路由域中的Level-2路由器必須是物理連續(xù)的,以保證骨干網(wǎng)的連續(xù)性。只有Level-2路由器才能直接與路由域外的路由器交換數(shù)據(jù)報(bào)文或路由信息。
獲取路由表具體步驟:
1.將LSDB數(shù)據(jù)導(dǎo)入Mysql中,共涉及兩個(gè)數(shù)據(jù)表Link_state_main(主表)和Link_state_attach(附表)。主表中保存路由設(shè)備信息和鏈路狀態(tài)信息,包括網(wǎng)絡(luò)設(shè)備名稱、是否偽節(jié)點(diǎn)、分片值、Pdu長度、ip地址等等。附表保存鏈路相連信息和鏈路信息,包括主表中路由設(shè)備信息與其它路由設(shè)備相連信息,鏈路Network、Netmask和鏈路距離值等等。
2.根據(jù)RFC 1195文檔定義,在ISIS網(wǎng)絡(luò)骨干網(wǎng)中任意一臺(tái)路由器保存全局的鏈路狀態(tài)數(shù)據(jù)庫,因此Mysql中保存所有的網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)鏈接。查詢主表中所有路由設(shè)備名稱,以設(shè)備名稱為id為結(jié)點(diǎn)插入Neo4j,從而可以得到骨干網(wǎng)中所有的路由設(shè)備;然后為所有路由設(shè)備建立鏈接關(guān)系,根據(jù)RFC中定義,所有偽節(jié)點(diǎn)生成的Lsp,偽節(jié)點(diǎn)生成的LSP代表兩臺(tái)設(shè)備的相連關(guān)系。如圖9所示LspId為R2.01-00的LSP,可以推出該LSP代表R2和R1相連,據(jù)此可以獲知R2與其它設(shè)備的鏈接關(guān)系。遍歷所有路由器設(shè)備偽節(jié)點(diǎn)生成的LSP,就可以獲取所有設(shè)備之間的連接關(guān)系,通過遍歷偽節(jié)點(diǎn)LSP將連接關(guān)系插入至Neo4j,并為連接關(guān)系添加屬性metric。
3.路由表生成
路由表是指路由器或者其他互聯(lián)網(wǎng)網(wǎng)絡(luò)設(shè)備上存儲(chǔ)的一張路由信息表,該表中存有到達(dá)特定網(wǎng)絡(luò)終端的路徑,在某些情況下,還有一些與這些路徑相關(guān)的度量。具體來說,網(wǎng)絡(luò)設(shè)備的路由表主要包括兩部分內(nèi)容:到達(dá)其它網(wǎng)絡(luò)設(shè)備路由和到達(dá)所有地址段的路由。
任意路由器復(fù)原路由表的具體步驟:
1.生成所有路由器集合Group,遍歷集合Group中路由器調(diào)用Neo4j中Dijkstra(routeA,routeB)方法,查詢?cè)绰酚善鱮outerA至集合Group中routerB的路徑、下一跳和metric值,從而完成到達(dá)其它網(wǎng)絡(luò)設(shè)備路由;
2.根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup。遍歷二元組集合NetGroup,對(duì)于特定地址段<network,netmas k>查詢?cè)摰刂范蜗噙B的路由器,查詢自身路由器至地址段相連路由器的最短路徑;判斷該地址段所在路徑是否存在于最短路徑中,如果是則地址段metric就是最短路徑值,如果否則地址段metric就是最短路徑metric與該network和netmask所在鏈路metric相加;選擇metric值最小的路徑作為源路由器到該地址段的最短路徑,最短路徑可能會(huì)包含多路徑。
利用QINQ二層隧道建立邏輯連接
QINQ技術(shù)由IEEE 802.1ad標(biāo)準(zhǔn)定義,實(shí)現(xiàn)了將用戶私網(wǎng)C-VLAN封裝在公網(wǎng)S-VLAN中,使報(bào)文帶著兩層VLAN Tag穿越運(yùn)營商的骨干網(wǎng)絡(luò)(公網(wǎng)),為用戶提供了一種比較簡單的二層VPN隧道技術(shù)。
受限于軟件路由器只能導(dǎo)出軟件路由器所在區(qū)域的LSDB,為獲取全網(wǎng)絡(luò)LSDB信息,軟件路由器需與OSPF中所有ABR建立邏輯連接,為實(shí)現(xiàn)與ABR所有設(shè)備邏輯連接,使用QINQ技術(shù),如圖3所示虛線即為軟件路由器與各網(wǎng)絡(luò)區(qū)域中建立的邏輯連接。
通過QINQ二層隧道技術(shù)能夠全面準(zhǔn)確地獲取全網(wǎng)范圍內(nèi)LSDB數(shù)據(jù),能夠?yàn)楂@取路由表提供基礎(chǔ)數(shù)據(jù)。
本發(fā)明還提出一種數(shù)據(jù)中心內(nèi)獲取路由表的系統(tǒng),包括:
獲取OSPF網(wǎng)絡(luò)路由表模塊,用于獲取Router LSA與Network LSA,根據(jù)Router LSA與Network LSA計(jì)算OSPF網(wǎng)絡(luò)的域內(nèi)路由,獲取Summary LSA,并計(jì)算區(qū)域路由間路由,獲取AS External LSA,計(jì)算自治域外部路由;
獲取ISIS網(wǎng)絡(luò)路由表模塊,用于獲取數(shù)據(jù)表Link_state_main與數(shù)據(jù)表Link_state_attach,查詢Link_state_main中所有路由設(shè)備的設(shè)備名稱,以設(shè)備名稱為id并插入圖形數(shù)據(jù)庫Neo4j,從而獲取所有的路由設(shè)備,為所有路由設(shè)備建立鏈接關(guān)系,獲取所有偽節(jié)點(diǎn)生成的LSP,遍歷所有路由設(shè)備偽節(jié)點(diǎn)生成的LSP,將所有路由設(shè)備之間的連接關(guān)系插入圖形數(shù)據(jù)庫Neo4j,并為連接關(guān)系添加距離值metric,根據(jù)所有路由器設(shè)備生成的集合,獲取路由表。
所述OSPF網(wǎng)絡(luò)路由表模塊中計(jì)算OSPF網(wǎng)絡(luò)的域內(nèi)路由步驟包括a.遍歷Router LSA,查找出所有路由設(shè)備并以路由設(shè)備為節(jié)點(diǎn)插入圖形數(shù)據(jù)庫Neo4j中;遍歷Network LSA,查找出所有路由設(shè)備之間的連接關(guān)系并以連接關(guān)系為節(jié)點(diǎn)關(guān)系插入圖形數(shù)據(jù)庫Neo4j中;
b.生成所有路由器集合Group,遍歷路由器集合Group中路由器,查詢?cè)绰酚善髦谅酚善骷现新酚善鱥d的路徑、下一跳與metric值,從而完成到達(dá)其它網(wǎng)絡(luò)設(shè)備的路由;
c.根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup,遍歷集合NetGroup,對(duì)于任意地址段<network、netmask>查詢所述任意地址段相對(duì)應(yīng)的子網(wǎng)相連的路由器,查詢?cè)绰酚善髦了鋈我獾刂范蝺?nèi)路由器的最短路徑,判斷所述任意地址段是否處于最短路徑中,如果是則metric就是最短路徑值,否則metric就是最短路徑metric與<network,netmask>鏈路metric相加,選擇metric值最小的路徑作為源路由器到所述任意地址段的最短路徑。
所述所述OSPF網(wǎng)絡(luò)路由表模塊中計(jì)算區(qū)域路由間路由的步驟為依次遍歷Summary LSA,在Area 0中查找某地址段所在的Summary LSA到Summary LSA的發(fā)布者的距離值metric,將距離值metric與Summary LSA的發(fā)布者的相連的源路由器的距離值相加,結(jié)果作為Summary LSA的發(fā)布者的距離值。
所述獲取ISIS網(wǎng)絡(luò)路由表模塊中獲取路由表的步驟包括遍歷所有路由器設(shè)備生成的集合,查詢?cè)绰酚善髦了新酚善髟O(shè)備生成的集合中routerB的路徑、下一跳與metric值;
根據(jù)Network LSA查詢出所有地址段,以二元組<network,netmask>標(biāo)識(shí),生成集合NetGroup,遍歷集合NetGroup,對(duì)于特定地址段<network,netmas k>查詢所述特定地址段相連的路由器,查詢自身路由器至所述特定地址段相連路由器的最短路徑;判斷所述特定地址段所在路徑是否存在于最短路徑中,如果存在則所述特定地址段的metric就是最短路徑值,否則所述特定地址段的metric就是最短路徑metric與network、netmask所在鏈路metric相加,選擇metric值最小的路徑作為源路由器到所述特定地址段的最短路徑。