一種基于內(nèi)容的路由方法和系統(tǒng)的制作方法
【專利說明】_種基于內(nèi)容的路由方法和系統(tǒng) 【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種基于內(nèi)容的路由方法和系統(tǒng)。 【【背景技術(shù)】】
[0002] 未來網(wǎng)絡(luò)發(fā)展有兩個(gè)方向,一是軟件定義網(wǎng)絡(luò)SDN(Software Defined Network)--由美國斯坦福大學(xué)Clean Slate研究組提出的一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),其核 心為將傳統(tǒng)交換機(jī)(路由器)設(shè)備進(jìn)行"拆分":傳統(tǒng)的交換機(jī)功能由最底層的流量轉(zhuǎn)發(fā),以 及更高級(jí)的其他處理功能(如網(wǎng)管控制、負(fù)載均衡等)這兩部分組成,而SDN剝離了交換機(jī)除 轉(zhuǎn)發(fā)之外的所有高級(jí)處理功能,并且將這部分高級(jí)處理功能移到"控制器"中,實(shí)現(xiàn)控制面 與轉(zhuǎn)發(fā)面分離。
[0003] 另一個(gè)是以內(nèi)容為中心的網(wǎng)絡(luò)CCN(Content Centric Networking),即網(wǎng)絡(luò)以內(nèi) 容為中心,而不同于以主機(jī)為中心的當(dāng)前因特網(wǎng)。CCN通過內(nèi)容名字標(biāo)志每一個(gè)內(nèi)容。對(duì)網(wǎng) 絡(luò)來說,其中流動(dòng)的都是有名字的內(nèi)容,網(wǎng)絡(luò)能區(qū)分每一個(gè)內(nèi)容,而其作用是管理所有內(nèi)容 的流動(dòng),并用正確的內(nèi)容相應(yīng)內(nèi)容請(qǐng)求者。CCN利用網(wǎng)絡(luò)設(shè)備內(nèi)部緩存在時(shí)間和空間上解耦 了內(nèi)容的發(fā)送者和接收者,能更好地適應(yīng)今天的網(wǎng)絡(luò)特征(內(nèi)容分發(fā)、移動(dòng)等)。美國帕洛阿 托研究中心(PARC,Palo Alto Research Center)于2009年研究開發(fā)了CCN的一種實(shí)現(xiàn) CCNxXCNx通信由內(nèi)容消費(fèi)者驅(qū)動(dòng),數(shù)據(jù)以"塊"為單位進(jìn)行傳輸。CCNx有兩種包類型: Interest包和Data包。當(dāng)消費(fèi)者需要請(qǐng)求內(nèi)容時(shí),廣播Interest包,各路由節(jié)點(diǎn)根據(jù) Interest包"名字"按照最長前綴匹配查找并返回該"名字"所對(duì)應(yīng)的Data包,在路由器節(jié)點(diǎn) 上由三個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)完成包轉(zhuǎn)發(fā),分別是內(nèi)容緩存(Content Store)、等待興趣表PIT (Pending Interest Table)和路由轉(zhuǎn)發(fā)表FIB。
[0004] CCNx本身并沒有集成路由協(xié)議。美國孟菲斯大學(xué)、亞利桑那州立大學(xué)及加州大學(xué) 洛杉磯分校為CCNx共同開發(fā)了一個(gè)路由協(xié)議:命名數(shù)據(jù)鏈路狀態(tài)路由協(xié)議(NLSRhNLSR作 為CCNx自治域內(nèi)路由協(xié)議,采用分布式路由算法在每個(gè)路由節(jié)點(diǎn)計(jì)算全網(wǎng)拓?fù)浜吐酚刹⒈?存全網(wǎng)內(nèi)容名字前綴。其缺點(diǎn)如下:內(nèi)容名字前綴的數(shù)量遠(yuǎn)遠(yuǎn)高于IP地址的數(shù)量,且不斷地 高速擴(kuò)張,而每個(gè)NLSR路由器試圖建立一張囊括全網(wǎng)的FIB表,其規(guī)??蛇_(dá)10 9量級(jí),這需要 大量甚至實(shí)際無法解決的存儲(chǔ)資源;每個(gè)支持NLSR的路由器需要完成LSDB同步、全網(wǎng)拓?fù)?發(fā)現(xiàn)和路由計(jì)算的功能,而隨著路由表的擴(kuò)張,每個(gè)路由器進(jìn)行LSDB同步占用過大的帶寬, 且路由計(jì)算花費(fèi)路由器過多的計(jì)算資源;實(shí)際上全網(wǎng)拓?fù)湓谀骋粋€(gè)時(shí)刻是唯一的,每個(gè)路 由器獨(dú)立地實(shí)現(xiàn)全網(wǎng)拓?fù)涞陌l(fā)現(xiàn)和路由計(jì)算,造成一定程度的計(jì)算冗余。 【
【發(fā)明內(nèi)容】
】
[0005] 為了解決現(xiàn)有技術(shù)中的問題,本發(fā)明提供了一種基于內(nèi)容的路由方法和系統(tǒng),解 決現(xiàn)有技術(shù)中路由器需要大量甚至實(shí)際無法解決的存儲(chǔ)資源、路由計(jì)算花費(fèi)過多的計(jì)算資 源和計(jì)算冗余的問題。
[0006] 本發(fā)明提供了一種基于內(nèi)容的路由方法,包括以下步驟:(A)控制器名字路由系統(tǒng) NRC進(jìn)行路由拓?fù)浒l(fā)現(xiàn)和維護(hù)、集中式路由計(jì)算和路由信息查詢;(B)轉(zhuǎn)發(fā)信息表FIB緩存活 動(dòng)路由信息;(C)控制器名字路由系統(tǒng)NRC獲取路由節(jié)點(diǎn)的查詢信息并更新轉(zhuǎn)發(fā)信息表FIB。
[0007] 作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟(A)中,控制器名字路由系統(tǒng)NRC從路由節(jié)點(diǎn) 上獲取到鏈路狀態(tài)通告LSAs之后,將LSAs的內(nèi)容加入到鏈路狀態(tài)數(shù)據(jù)庫LSDB中,NRC根據(jù) LSDB中的鄰居鏈路狀態(tài)通告ALSAs建立全網(wǎng)拓?fù)浜陀?jì)算路由,而后對(duì)每個(gè)路由器建立一個(gè) 元素的哈希鏈表,用以將內(nèi)容名字前綴鏈路狀態(tài)通告NLSAs和鄰居鏈路狀態(tài)通告ALSAs對(duì)應(yīng) 起來。
[0008] 作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟(A)中,NRC建立全網(wǎng)拓?fù)渲笥?jì)算多源最短 路徑,并將對(duì)應(yīng)的部分路由信息庫RIB表返回給各個(gè)路由節(jié)點(diǎn);下發(fā)FIB表項(xiàng)以集合的形式 發(fā)回給路由節(jié)點(diǎn),該集合包含了全網(wǎng)的路由器和內(nèi)容名字前綴,各個(gè)路由器重新安裝FIB 表;如果表項(xiàng)數(shù)量大于某個(gè)設(shè)定閾值,則取部分表項(xiàng)作為路由節(jié)點(diǎn)的FIB表。
[0009] 作為本發(fā)明的進(jìn)一步改進(jìn):路由節(jié)點(diǎn)發(fā)布自身鏈路狀態(tài)通告LSAs,并向直連路由 器發(fā)送Info興趣包獲取鏈路狀態(tài)信息。
[0010] 作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟(C)中進(jìn)一步包括路由節(jié)點(diǎn)收到Interest包 時(shí)的處理步驟:(C1)查找內(nèi)容CS緩存:發(fā)現(xiàn)匹配的請(qǐng)求內(nèi)容則發(fā)送該內(nèi)容到請(qǐng)求端口,否 貝1J,轉(zhuǎn)發(fā)給懸而未決表PIT查找;(C2)查找PIT表:若PIT中有一個(gè)Interest匹配的,意味著一 個(gè)相同的Interest消息已經(jīng)被轉(zhuǎn)發(fā)并正在等待,新Interest消息到達(dá)的端口被添加到PIT 中;否則進(jìn)一步查找FIB表;(C3)查找FIB表:若FIB表中找到匹配此興趣包的下一跳路由,轉(zhuǎn) 發(fā)此興趣包到下一條路由器,并在PIT表中添加此興趣包請(qǐng)求等待的消息;否則,發(fā)送查詢 命令向NRC查詢;(C4)查找RIB表:NRC根據(jù)自己的RIB表查找對(duì)應(yīng)FIB表項(xiàng),并返回給路由節(jié) 點(diǎn)。
[0011] 作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟(A)中路由計(jì)算具體為:NRC從各個(gè)路由器獲 取LSAs建立全網(wǎng)LSDB,ALSA包含了 一個(gè)路由器到另一個(gè)路由器的鏈路信息,建立一個(gè)矩陣 謙示路由器i到路由器j的鏈路開銷,運(yùn)用弗洛伊德算法即可算出任何兩點(diǎn)的最短路徑 及下一跳,每次ALSA改變時(shí)都會(huì)重新計(jì)算路由,設(shè)rff為從節(jié)點(diǎn)i到j(luò)的所有中間節(jié)點(diǎn)全部取 自集合{1,2,…,k}的一條最短路徑權(quán)重。當(dāng)k = 0時(shí),從節(jié)點(diǎn)i到節(jié)點(diǎn)j的一條不包括編號(hào)大 于〇的中間節(jié)點(diǎn)的路徑將沒有任何中間節(jié)點(diǎn),=%,遞歸定義如下: \W__ k- 0
[0012] <=lmL<-vr^r) ⑵矩陣妒)嘴))就是最后的最短路徑。
[0013] 作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟(C)中,路由節(jié)點(diǎn)的進(jìn)程中實(shí)現(xiàn)兩個(gè)線程,一 個(gè)線程負(fù)責(zé)檢測、收集鏈路狀態(tài),建立本地LSDB;-個(gè)線程負(fù)責(zé)接收NRC發(fā)布的FIB表項(xiàng)并安 裝。
[0014] 作為本發(fā)明的進(jìn)一步改進(jìn):路由節(jié)點(diǎn)僅僅維護(hù)與直連路由器的鏈路狀態(tài)。
[0015] 作為本發(fā)明的進(jìn)一步改進(jìn):NRC管理全網(wǎng)路由,各個(gè)路由器采用lookup-and-cache 方式。
[0016]本發(fā)明同時(shí)提供了一種基于內(nèi)容的路由系統(tǒng),包括控制器名字路由系統(tǒng)NRC和與 之連接的多個(gè)路由節(jié)點(diǎn);控制器名字路由系統(tǒng)NRC負(fù)責(zé)路由拓?fù)浒l(fā)現(xiàn)和維護(hù)、集中式路由計(jì) 算和路由信息查詢;路由節(jié)點(diǎn)中的進(jìn)程中實(shí)現(xiàn)兩個(gè)線程,一個(gè)線程負(fù)責(zé)檢測、收集鏈路狀 態(tài),建立本地LSDB;-個(gè)線程負(fù)責(zé)接收控制器發(fā)布的FIB表項(xiàng)并安裝;NRC同時(shí)負(fù)責(zé)收集各路 由器LSDB、計(jì)算路由和下發(fā)路由表項(xiàng);所述路由節(jié)點(diǎn)僅僅維護(hù)與直連路由器的鏈路狀態(tài)。
[0017]本發(fā)明的有益效果是:本機(jī)制能有效解決路由器端路由表過大的問題;本發(fā)明中 的每個(gè)路由器節(jié)點(diǎn)只需維護(hù)與其直接相連路由器的鏈路狀態(tài),而不需要同步全網(wǎng)的鏈路狀 態(tài),減少路由器鏈路狀態(tài)同步消耗的大量帶寬;本發(fā)明由NRC負(fù)責(zé)全網(wǎng)拓?fù)浒l(fā)現(xiàn)和路由計(jì) 算,能有效減少計(jì)算資源幾余,提尚效率。 【【附圖說明】】
[0018]圖1是本發(fā)明基于內(nèi)容的路由方法中的Lookup-and-Cache機(jī)制示意圖。
[0019] 圖2是本發(fā)明基于內(nèi)容的路由系統(tǒng)的示意框圖。
[0020] 圖3是本發(fā)明路由器、控制器功能實(shí)現(xiàn)流程圖。 【【具體實(shí)施方式】】
[0021] 下面結(jié)合【附圖說明】及【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說明。
[0022] 一些網(wǎng)絡(luò)術(shù)語的定義:
[0023] SDN Soliwarc Defined Network 軟f|)ii 義M絡(luò) CCN Content. Centric Networking 內(nèi)界屮心網(wǎng)絡(luò) NL SR Named-da la Link Slate Rouiing Proiocol 命名數(shù):()丨彳敏路狀態(tài)路山丨辦議 LSDB: LintS餓?.Database鏈路狀態(tài)數(shù)據(jù)庫 LSA Link Stale Advertisement 逝路狀態(tài)皿';V
[0024] NBCR Name Based Centralized Rouiing j' I 'litr 111 NRC Name Routing Center 'd〈路i i 11 卜心 FIB Forwarding Inrormation Base 較發(fā) CS:. Content Store 內(nèi)容緩存 PIT Pending Iniormatiort Table 等待興趣表。
[0025]圖1給出了我們所提出的Lookup-and-Cache概念以及應(yīng)用實(shí)例。以下是對(duì)圖所做 的一些說明:a)名字路由系統(tǒng)(Name Routing Center、NRC)負(fù)責(zé)路由拓?fù)浒l(fā)現(xiàn)和維護(hù)、集中 式路由計(jì)算和路由查詢服務(wù);b)轉(zhuǎn)發(fā)信息表(Forwarding Information Base、FIB)作為路 由轉(zhuǎn)發(fā)的緩存,只緩存活動(dòng)路由表部分;c)當(dāng)一個(gè)路由節(jié)點(diǎn)缺乏路由信息時(shí),它將會(huì)向NRC 查詢路徑。當(dāng)節(jié)點(diǎn)N1收到興趣包"icn. com/video/chunkl"時(shí),如果該節(jié)點(diǎn)的FIB缺少相關(guān)路 由信息,N1節(jié)點(diǎn)首先將興趣包暫時(shí)保存到信息隊(duì)列中;向遠(yuǎn)端NRC系統(tǒng)發(fā)出路由信息查詢請(qǐng) 求;最后將查詢到路由信息插入或替換FIB中舊的路由信息;對(duì)滿載的FIB條目則使用不活 躍超時(shí)(IT0 Inactivity Time Out)和最近最少使用(LRU Least Recently Used)替換算 法進(jìn)行替換。
[0026] 進(jìn)一步為:
[0027] 1)路由器啟動(dòng)時(shí)路由節(jié)點(diǎn)進(jìn)程讀取配置文件,獲取路由器名字、內(nèi)容名字前綴、直 連路由器名字和鏈路開銷等配置;
[0028] 2)路由節(jié)點(diǎn)發(fā)布自身ALSA和NLSAs(統(tǒng)稱LSAs),向直連路由器發(fā)送Inf 〇興趣包獲 取鏈路狀態(tài)信息;
[0029] 3)路由器向NRC發(fā)布LSAs,NRC根據(jù)各個(gè)路由器的LSAs建立全網(wǎng)LSDB;
[0030] 4)NRC根據(jù)LSDB信息采用計(jì)算路由信息,存儲(chǔ)于RIB中,然后提取其中各路由節(jié)點(diǎn) 的FIB信息并下發(fā)給相應(yīng)的路由節(jié)點(diǎn)。
[0031 ] 5)NBCR路由機(jī)制,當(dāng)路由節(jié)點(diǎn)收到Interest包時(shí):
[0032] a)查找內(nèi)容CS緩存:發(fā)現(xiàn)匹配的請(qǐng)求內(nèi)容則發(fā)送該內(nèi)容到請(qǐng)求端口,否則,轉(zhuǎn)發(fā)給 PIT查找;
[0033] b)查找PIT表:若PIT中有一個(gè)Interest匹配的,意味著一個(gè)相同的Interest消息 已經(jīng)被轉(zhuǎn)發(fā)并正在等待,新Interest消息到達(dá)的端口被添加到PIT中;否則進(jìn)一步查找FIB 表;
[0034] c)查找FIB表:若FIB表中找到匹配此興趣包的下一跳路由,轉(zhuǎn)發(fā)此興趣包到下一 條路由器,并在PIT表中添加此興趣包請(qǐng)求等待的消息;否則,發(fā)送查詢命令向NRC查詢; [0035] d)查找RIB表:NRC根據(jù)自己的RIB表查找對(duì)應(yīng)FIB表項(xiàng),并通過擴(kuò)展的OpenFlow協(xié) 議返回給路由節(jié)點(diǎn)。
[0036] 6)當(dāng)收到Data包時(shí),當(dāng)數(shù)據(jù)包到達(dá)時(shí),先對(duì)數(shù)據(jù)包的Content Name字段進(jìn)行最長 前綴匹配,先在Content Store中匹配