999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

路由設備IPv6網絡隧道功能驅動研究

2022-08-23 07:16:48蔣建峰
計算機技術與發展 2022年8期

蔣建峰

(1.蘇州工業園區服務外包職業學院,江蘇 蘇州 215123;2.南京郵電大學 計算機學院,江蘇 南京 210003)

0 引 言

隨著智能終端、移動設備的不斷增加,IPv4網絡的地址空間已經面臨耗盡的危險。IPv6網絡已經在運營商核心網,教育網的核心設備上成功部署。但是在很長一段時間內IPv4網絡仍然占據著一席之地,因此產生了大量的IPv6孤立網絡群,在下一代通信網絡中IPv6網絡與IPv4網絡共存是一個常態。

基于業務的融合,IPv4網絡與IPv6網絡無法相互分離,當前雙棧,隧道技術能夠很好地實現在IPv4網絡上對IPv6業務的承載,保證業務的共存和過渡,已定義的隧道技術種類很多,主要包括手工配置隧道、兼容地址自動配置隧道、6over4、6to4隧道等[1-3]。

國內外學者對于IPv6網絡過渡技術的研究很多,主要有三種主流的過渡技術:雙棧、網絡地址轉換和隧道技術。而這三種過渡技術都是基于軟件實現數據包的封裝,這就要求網絡設備具有良好的CPU計算性能,而在數據包的封裝過程中會影響設備的數據轉發效率。由于硬件條件的限制,通過硬件驅動的方法來提升隧道數據包的轉發效率的研究還很少。

當前利用隧道技術進行數據轉發的行為,多數網絡設備廠家只是注重軟件的驅動,雖然使用軟件的驅動能夠解決數據的封裝,但是對于網絡的延遲和通信速率沒有很好的性能保障。該文通過驅動指令指導數據發送,在性能方面有明顯的優勢。

1 隧道技術

1.1 手工隧道

手工隧道[4-5]是實現IPv6孤島連接的一個基本方法,通過手工指定隧道的源和目的,在IPv4主干網絡中建立一條永久虛鏈路。手工隧道主要有GRE隧道和IPv6手動隧道。手工隧道轉發的原理如圖1所示。

圖1 手工隧道原理

1.2 自動隧道

自動隧道是目前實現IPv6孤島連接的主要隧道技術,包括IPv4兼容IPv6隧道、ISATAP隧道[6-8]、6to4隧道、6 to 4relay等。

1.3 6to4隧道

6to4隧道是一種自動連接隧道[9-10],通過在IPv6地址中嵌入IPv4地址信息,自動獲取隧道的目的方,6to4地址格式如表1所示。

表1 6to4地址格式

6to4隧道的地址是一種特殊的IPv6地址,6to4地址以2002為固定的前16位前綴,緊跟著的32位是由IPv4地址轉換而來的地址,其格式為:2002:abcd:efgh:子網號::接口ID/64。6to4隧道可以實現利用IPv4網絡完成IPv6網絡的互連,克服了IPv4兼容IPv6自動隧道使用的局限性。

6to4隧道的地址只能是以2002前綴的網絡,所以如果要和其他的IPv6網絡通信,必須有一臺6to4路由器作為網關轉發到IPv6網絡的報文,這臺路由器就叫做6to4中繼(6to4 relay)路由器。6to4中繼路由器負責轉發去往其他IPv6網絡的數據,所以,當邊緣設備需要和外界IPv6網絡通信時,必須要配置到底中繼的靜態路由。

因此,可以看出6to4隧道不僅可以克服手動隧道配置的點對點單一性,而且其擴展隧道6to4relay能夠與IPv6網絡進行互聯,所以該文主要對6to4隧道的原理以及驅動實現進行研究。

2 系統結構圖及芯片轉發流程

驅動是平臺操作系統和硬件通信的程序,可以說相當于硬件的接口,操作系統只能通過這個接口,才能控制硬件設備的工作,基于硬件的數據轉發比軟件操作的速度要快很多。隧道驅動模塊系統結構如圖2所示。

圖2 系統結構

平臺模塊負責與用戶交互,當用戶進行配置時,創建隧道命令時,平臺模塊將這個指令傳遞給驅動相關模塊,主控板和接口板的平臺是一套代碼,維護相同的資源。

驅動的實現設計主控板和接口板,需要兩套代碼對應不同的處理方式,維護的資源也不相同,主控板主要負責數據層面的處理,接口板負責轉發層面的處理。平臺下發指令給驅動時先與主控板的驅動模塊進行交互,主控板驅動進行相應處理后同步下發指令給各個接口板進行處理。最終驅動模塊將相關信息下發芯片后,隧道報文從接口板上的端口進入后芯片就會正確指導報文的轉發。

NP芯片(network processor)編程模式簡單,可以很方便地通過微碼編程進行實現,是該研究所使用的芯片,NP芯片三層單播轉發流程如圖3所示。

圖3 NP芯片單播三層轉發流程

(1)報文從入接口進入芯片,首先查詢INSW(in logical switch)表,對于IPv6報文,INSW中L3和IPv6相關標記置1,允許報文進行三層轉發。

(2)報文在芯片中繼續查詢MAC2ME表項,如果報文中以太頭的mac地址與接口的mac相同,說明報文是要本機處理走三層轉發。

(3)使用報文IP頭中的DIP作為KEY查詢FIB(forward information base)表項,進行最長匹配查找,得到的KEY為OUTINFO的ID,如果是等價路由則會得到一個BASEID和ECMP標記,進行等價負載分擔。

(4)通過OUTINFO ID查詢OUTINFO(out interface info)表項,這個表項中存儲著報文的出端口信息以及ARP INDEX。

(5)報文出crossbar后,使用ARP INDEX查詢ARP表項,得到目的MAC地址,封裝MAC頭后從接口轉發出去。

3 系統關鍵技術

3.1 芯片隧道轉發流程

隧道技術的關鍵是封裝與解封裝過程[11-12],在三層單播轉發基礎上實現隧道功能即在入隧道時可以對報文進行封裝,由于OUTINFO表項內存大,易于擴展,所以在OUTINFO表中可以添加隧道標記以及隧道信息,如果為隧道報文就會以封裝的新的IP頭的目的IP重新查找IPv4 FIB表進行正常的轉發,具體如圖4所示。

圖4 入隧道報文轉發流程

出隧道流程是對報文的解封裝過程,在MAC2ME后增加對報文類型判斷,如果為隧道報文,就會以sip+dip+protocol+payload為key查詢TNLEND表項,如果是在本機終結則執行解封裝過程,隨后進行正常的IPv6報文轉發,如圖5所示。

圖5 出隧道報文轉發流程

3.2 驅動隧道模塊實施方案

3.2.1 初始化階段

主控板主要負責隧道資源池的初始化,隧道計數的維護,隧道引用者的記錄,資源池的初始化狀態以及分配回收過程如圖6所示。

圖6 隧道資源索引分配

接口板主要記錄隧道屬性相關信息,并對這些信息進行維護、更新、刪除,下發芯片硬件指導芯片對報文進行轉發。

接口板維護的信息包括:

(1)隧道基本信息。

{

隧道類型;

隧道目的IP;

隧道源IP;

OUTINFOID;

TNLEND標記;

}

隧道驅動信息是以設備支持的最大隧道數目為數組下標,在初始化時申請相應的內存,以后有隧道創建刪除更新時直接對驅動隧道信息進行操作。

(2)TNLEND信息。

{

隧道目的IP;

隧道源IP;

隧道協議類型;

負載類型;

引用計數;

}

TNLEND信息以鏈表形式存儲,因為多個隧道可能會共用一個TNLEND,所以初始化時只申請首節點,后續再進行添加刪除更新等操作。

(3)6to4 relay信息。

{

6to4 ID;

6to4Relay ID;

DIP;

OUTINFOID;

}

由于6to4隧道可以擴展出多個6to4 relay隧道,6to4 relay與6to4隧道不同的信息在于DIP以及OUTINFO信息,所以需要建立兩者的映射關系,在初始化時,以設備最大支持隧道數目為值,為每個隧道都創建一個鏈表,但只申請首節點內存,后續有6to4 relay隧道創建時再加入鏈表。

3.2.2 隧道創建事件響應

(1)用戶創建6to4隧道時,配置隧道的SIP、DIP、隧道類型、隧道的IP地址,主控板平臺模塊會將這些信息保存下來,然后主控板的平臺隧道模塊會通知主控板的驅動隧道模塊隧道的創建,驅動會從主控板的隧道資源池分配一個索引并且回填到平臺隧道信息中,隧道使用計數加一,并且將這個隧道資源的引用者設置為隧道模塊。

(2)主控板的平臺隧道模塊將隧道信息同步給接口板,接口板的平臺隧道模塊再通知驅動隧道的建立,驅動隧道模塊將平臺帶來的信息經過處理儲存在驅動信息中,并且申請OUTINFO資源,將相關信息如6to4隧道標示以及SIP下發到芯片的OUTINFO信息中并且ID保存在驅動隧道信息中。

TNLEND的下發條件比較嚴格,TNLEND下發需要隧道為UP狀態,隧道UP的條件如下:

(1)自動隧道會用SIP檢查配置該IP的接口是否為UP狀態,如果為UP,則隧道UP,手動隧道還需要檢查DIP是否可達。

(2)當兩條隧道配置相同的SIP時,有一個先達到UP條件,另一條隧道就不能UP。

隧道UP后,會將SIP、DIP、隧道協議類型、負載類型作為KEY下發到TNLEND表中,Result為隧道終結解封裝隧道IP頭;由于TNLEND是以HashTree表形式存儲在芯片內存上,所以具有相同KEY的報文會查詢到同一張TNLEND表,對于驅動也可以將具有相同屬性的隧道TNLEND信息保存在驅動TNLEND鏈表中的同一個節點中,只是將引用計數加一。

表項下發好后,還不能實現6to4隧道功能,需要在設備上配置一條靜態路由,目的ip為2002::掩碼為16位,下一條為6to4 tunnel,這樣驅動單播模塊就會下發一條fib表項到芯片,且fib表項的Result為6to4隧道申請的OUTINFOID,這樣就將路由與隧道關聯起來,當有目的IP地址為6to4地址時的報文查詢fib時,會進入隧道轉發流程。

3.2.3 Relay隧道創建事件響應

6to4 relay隧道比較特殊,由于平臺不區分6to4隧道與6to4中繼隧道,所以并不能創建隧道類型為6to4 relay的隧道,所以6to4 relay隧道創建的流程如下:

(1)6to4 relay隧道的創建需要2001::/64位網段的用戶進行通信,配置一條靜態路由,目的IP為2001::/16,下一跳為在連接該網段的6to4 relay中繼路由器的6to4地址下一跳,由于下一跳地址為非直連網段,所以會進行路由迭代使用下一跳的IP作為目的IP查詢路由表,得到下一跳為6to4隧道。

(2)主控板平臺模塊會通知驅動單播模塊下發一條帶有隧道標記的路由,這時需要驅動自己判斷是否為中繼路由,判斷條件為路由下一跳地址是6to4地址,路由目的地址不是6to4,路由帶有隧道標記,路由下一跳出接口指向6to4隧道ID。當滿足以上條件時,驅動單播模塊會通知驅動隧道模塊進入6to4 relay分支。

(3)主控板的驅動隧道模塊響應單播模塊的隧道創建事件,分配一個隧道索引給單播模塊,并且將這個索引的引用者設置為單播模塊,之所以要為每個隧道資源設置占用者是因為有可能會出現下面這種時序問題情況。由于單播模塊和隧道模塊處于不同的任務隊列,在板件通信的時候可能會出現由于任務異步通信原因發生資源搶占,最終在刪除6to4 relay隧道時會將IP隧道保存好的驅動軟件表項以及下發的硬件表項全部刪除,導致平臺收到隧道創建成功的應答,并且在用戶側成功配置隧道,但是隧道功能卻是沒有實現,如圖7所示。

圖7 任務異步通信機制導致資源搶占示意圖

所以為每個隧道資源標記使用者,如果有在申請隧道資源時,在主控板分配資源后,會檢查該資源的引用者是否為本模塊,如果不是則返回平臺信息,要求重新申請隧道資源,這就是重刷機制。

主控板的驅動單播模塊將路由信息以及隧道索引同步給接口板的驅動單播模塊,然后接口板的驅動單播模塊通知驅動隧道模塊6to4 relay隧道的建立,并將新申請的隧道索引以及相關聯的6to4隧道索引帶給驅動隧道模塊。

(4)驅動隧道模塊會為6to4 relay隧道申請OUTINFO資源,然后以相關聯的6to4隧道信息中的SIP和路由下一跳的6to4地址高位偏移兩字節后的4字節作為DIP以及6to4 relay標記下發OUTINFO,將6to4 relay信息加入到驅動6to4 relay鏈表中,便于維護,TNLEND表項下發過程與6to4隧道TNLEND類似。

(5)當驅動隧道模塊將6to4 relay創建好后,會通知單播模塊,單播模塊這時會將路由表項下發芯片,并且FIB表項中的key為6to4 relay申請的OUTINFO ID。這時6to4 relay隧道功能完成,當與2001::/64網段用戶通信時,查詢fib表會進入6to4 relay隧道轉發流程[4]。

4 實驗結果

RouterA為6to4路由器,網絡地址使用IPv6 6to4地址。RouterB是6to4中繼路由器,連接到網絡2001::/16。需要在RouterA和RouterB之間配置6to4隧道,使Hosts可以與網絡中的IPv6 Hosts通信,網絡拓撲如圖8所示。

圖8 6to4 relay組網圖

設備主要配置部分命令如下:

System-view

[RouterA]ipv6

[RouterA-GigabitEthernet3/1/2]ip address 2.1.1.1 255.255.255.0

[RouterA-GigabitEthernet3/1/2]ipv6 address 2002:0201:0101:1::1/64

[RouterA]interface tunnel 0

[RouterA-Tunnel0]ipv6 address 2002:0201:0101::1/64

[RouterA-Tunnel0]source GigabitEthernet3/1/2

[RouterA-Tunnel0]tunnel-protocol ipv6-ipv4 6to4

[RouterA]ipv6 route-static 2002:0601:0101::64 tunnel 0

[RouterA]ipv6 route-static ::0 2002:0601::1

完成配置后,驗證配置結果如下所示,Host A可以Ping通Host B。

D:>ping6 -s 2002:201:101::2 2001::2

Pinging 2001::2

From 2002:201:101:1::2 with 32 bytes of data:

Reply from 2001::2 bytes=32 time=13ms

通過仿真軟件[13-15]連續抓取通信報文統計,當數據發送速率比較低的時候,網絡數據包的延遲,語音的抖動影響很??;當數據包發送速率較大時,通過軟件算法實現隧道技術的網絡數據延遲較大,而且語音的抖動比較嚴重,通過硬件驅動算法之后能改善數據包的延遲,并且保證了語音和視頻的延遲抖動,充分保證了網絡的利用率。

如圖9和圖10顯示,當發送的數據包數量明顯增加時,由硬件驅動的數據轉發延遲明顯較小,而且隨著數量的增加,軟件驅動的數據轉發延遲增幅較大。實驗結果表明,說明該驅動方案能夠很好地提升網絡性能。

圖9 網絡延遲性能比較

圖10 網絡抖動性能比較

5 結束語

隨著運營商和企業IPv6網絡的部署,IPv4和IPv6網絡將在很長一段時間內共存。IPv6隧道實現了IPv4海洋中IPv6孤島的連接。當IPv6網絡進行大規模部署時,隧道技術是實現通信網絡的關鍵過渡技術,它將IPv6報文封裝在IPv4報文中實現骨干網絡的連接,并且6to4隧道能夠實現隧道目的IPv4地址的自動匹配。依據IPv6隧道技術設計了一套驅動流程,基于NP芯片實現了驅動的設計指導隧道報文轉發。實驗結果顯示,驅動能夠很好的指導報文的轉發,并且在網絡延遲和抖動方面有著顯著的性能優勢。

主站蜘蛛池模板: 无码精品国产dvd在线观看9久| 福利在线一区| 亚洲国产精品国自产拍A| 69综合网| 澳门av无码| 99性视频| 国产美女精品人人做人人爽| 亚洲精品在线91| 麻豆精品在线| 国产精品浪潮Av| 精品欧美一区二区三区久久久| 国产午夜人做人免费视频中文| 国产三级视频网站| 久久黄色一级视频| 国产一级毛片在线| 精品亚洲国产成人AV| 一本一本大道香蕉久在线播放| 国产va视频| 欧美人与牲动交a欧美精品| 久久久成年黄色视频| 日韩高清在线观看不卡一区二区| 亚洲 成人国产| 国产99热| 不卡午夜视频| 最新午夜男女福利片视频| 久久99蜜桃精品久久久久小说| 日本欧美一二三区色视频| 欧美色图久久| 任我操在线视频| 麻豆国产精品一二三在线观看| 国产一级毛片yw| 麻豆国产精品一二三在线观看| 永久天堂网Av| 亚洲精品图区| 内射人妻无码色AV天堂| 国产Av无码精品色午夜| 色成人亚洲| 欧美在线精品怡红院| 99久久国产自偷自偷免费一区| 亚洲中文字幕国产av| 最新无码专区超级碰碰碰| 国产成人成人一区二区| 55夜色66夜色国产精品视频| 四虎影视8848永久精品| 日日噜噜夜夜狠狠视频| 亚洲中文精品人人永久免费| 啪啪免费视频一区二区| 亚洲欧美激情小说另类| 制服丝袜一区| 国产一区二区三区精品久久呦| 国产特级毛片| 日韩毛片在线视频| 91免费精品国偷自产在线在线| 91精品国产自产91精品资源| 国产精品午夜电影| 嫩草影院在线观看精品视频| 国产精品片在线观看手机版| 奇米精品一区二区三区在线观看| 欧美h在线观看| www.亚洲一区| 欧美一级99在线观看国产| 国产在线精品99一区不卡| 992Tv视频国产精品| 欧美日韩在线国产| 精品一区二区三区无码视频无码| 91在线国内在线播放老师| 亚洲人成网站在线观看播放不卡| 天堂在线www网亚洲| 999在线免费视频| 国产精品高清国产三级囯产AV| 特级毛片8级毛片免费观看| 国产精品无码AV中文| 性69交片免费看| 国产00高中生在线播放| 国产精品成人观看视频国产| 在线观看无码av五月花| 亚洲第一综合天堂另类专| 毛片卡一卡二| 欧美午夜在线观看| 国产精品露脸视频| 中文天堂在线视频| 有专无码视频|