亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        鋪設IPv4/IPv6“雙行道”

        2010-11-09 13:44:34朱尚明李京黨齊民
        中國教育網(wǎng)絡 2010年4期
        關鍵詞:內(nèi)核路由器分組

        文/朱尚明 李京 黨齊民

        鋪設IPv4/IPv6“雙行道”

        文/朱尚明 李京 黨齊民

        在Linux系統(tǒng)下加載并運行4over6隧道驅動,有效解決IPv4網(wǎng)絡通過IPv6主干網(wǎng)的互聯(lián)互通。

        目前,大多數(shù)隧道機制都集中在解決IPv6邊緣網(wǎng)絡通過IPv4主干網(wǎng)互通的問題,而關于IPv4網(wǎng)絡如何通過IPv6主干網(wǎng)互通問題的解決方案卻很少提及。而且,由于當前IPv6網(wǎng)絡還處于起步階段,IPv6業(yè)務的大規(guī)模部署還有待時日,造成IPv6骨干網(wǎng)中的大量帶寬閑置,利用隧道穿越IPv6骨干網(wǎng)來傳輸現(xiàn)有IPv4業(yè)務的數(shù)據(jù)也可以實現(xiàn)IPv6帶寬資源的充分利用。因此大量的IPv4網(wǎng)絡通過IPv6骨干網(wǎng)實現(xiàn)互聯(lián)是目前研究的一個熱點,4over6隧道就是一種用于解決現(xiàn)存的IPv4網(wǎng)絡通過IPv6主干網(wǎng)互聯(lián)互通的機制。

        4over6隧道機制

        4over6隧道機制主要包括兩方面的功能:控制平面和數(shù)據(jù)平面??刂破矫娼鉀Q的問題是如何通過隧道端點發(fā)現(xiàn)機制來建立4over6隧道,而數(shù)據(jù)平面則主要關注包括封裝和解封裝的分組轉發(fā)處理,如圖1所示。

        4over6控制平面處理

        4over6機制中,控制平面主要解決隧道端點發(fā)現(xiàn)和網(wǎng)絡可達性信息傳輸?shù)膯栴}。4over6控制平面通過對邊界網(wǎng)關協(xié)議多協(xié)議擴展MP-BGP,再進行4over6擴展來實現(xiàn)。當4over6路由器的IPv4路由信息發(fā)生變化時,路由管理模塊通知BGP協(xié)議,啟動了4over6功能的BGP協(xié)議發(fā)送Update分組到其他對端路由器。對端4over6路由器收到Update分組后,在更新本地維護的封裝表的同時,更新本地IPv4路由表,把相應目的I P v 4地址的出接口設置為本地4over6虛接口??刂破矫娴臄?shù)據(jù)流動方向見圖1的Control flow方向。

        4over6數(shù)據(jù)平面處理

        4over6數(shù)據(jù)平面主要包括3個部分:1.入口PE路由器將接收到的IPv4分組用IPv6頭部進行封裝;2.封裝后的分組在IPv6骨干網(wǎng)中進行傳輸;3.出口PE路由器將分組解封裝為原IPv4分組格式。基于4over6分組傳輸?shù)奶攸c,數(shù)據(jù)分組的封裝和解封裝在邊界路由器PE(雙棧路由器)上進行。在實現(xiàn)時,每個4over6 PE路由器維護一個4over6虛接口,該虛接口通過維護4over6封裝表來處理分組的封裝和解封裝。該封裝表的每個表項中包含了目的IPv4網(wǎng)絡的地址和掩碼,以及需要轉發(fā)到的出口PE路由器的4over6虛接口的IPv6地址。

        當IPv4數(shù)據(jù)分組到達入口邊界路由器PE1時,PE1通過查找轉發(fā)表,發(fā)現(xiàn)并進入本地虛接口進行處理。在4over6虛接口處理中,通過查找4over6封裝表對分組進行封裝,封裝的目的IPv6地址是出口邊界路由器PE2的虛接口IPv6地址,源地址為PE1的虛接口IPv6地址。經(jīng)過封裝后的分組通過IPv6骨干網(wǎng)絡傳輸?shù)匠隹谶吔缏酚善鱌E2。在收到分組后,PE2對分組進行解封裝,再通過查找IPv4轉發(fā)表將原始分組轉發(fā)給相應的IPv4網(wǎng)絡。數(shù)據(jù)平面的數(shù)據(jù)流動方向見圖1的Data flow方向。

        圖1 4over6機制

        基于Linux的4over6隧道驅動

        Linux中的設備分為字符設備、塊設備和網(wǎng)絡設備。4over6隧道設備是一種軟件設備,同時也是一種網(wǎng)絡設備。作為一個模塊,它既可被動態(tài)地連接到正在運行的內(nèi)核,也可以動態(tài)地解除連接。圖2為4over6隧道虛擬設備內(nèi)核驅動的結構(見下頁)。從圖中可以看到,4over6隧道虛擬設備內(nèi)核驅動主要包括基本隧道、隧道協(xié)議以及特定隧道。

        內(nèi)核模塊加載與內(nèi)核模塊卸載這兩個功能模塊是讓整個隧道正常工作的前提,前者進行一些隧道虛擬設備的初始化工作,后者進行與之對應的清理工作。隧道協(xié)議注冊模塊產(chǎn)生的隧道協(xié)議實體是報文解封裝模塊的基礎,基本隧道實體注冊模塊產(chǎn)生的基本隧道實體是隧道創(chuàng)建模塊的基礎,而由隧道創(chuàng)建模塊產(chǎn)生的特定隧道是隧道錯誤處理、報文封裝及解封裝等模塊的共同基礎。

        隧道實體的內(nèi)核定義

        4over6隧道設備實質上是一種IPv6隧道,在Linux Kernel 2.4.20中,將IP隧道用結構ip_tunnel來表示,但是該結構的定義無法滿足IPv6隧道的需求。參考struct ip_tunnel的定義,本文將IPv6隧道在內(nèi)核

        圖2 4over6隧道虛擬設備內(nèi)核驅動的結構

        中用結構ip6_tnl 來定義,其定義如下:

        其中next為指向下一個IPv6隧道實體的指針,dev指向該隧道實體所包含的虛擬設備對象,recursion為數(shù)據(jù)報遞歸封裝的深度,parms則是隧道實體的屬性對象,包括隧道名稱、下一報頭、隧道起始地址以及流標簽等屬性的IPv6隧道報頭。

        4over6隧道協(xié)議實體定義為:

        其中,ip46_rcv是隧道報文的接收處理函數(shù),專門負責將收到的IPv6數(shù)據(jù)包進行重組(如果數(shù)據(jù)包在進入隧道端點時進行了分段處理),并解封裝還原成為IPv4數(shù)據(jù)包后轉交給上層模塊來處理;ip46_err是隧道報文傳輸過程中的錯誤處理函數(shù)。在隧道設備的初始化的過程中,調用inet6_add_protocol函數(shù),將該協(xié)議實體注冊到Linux IPv6內(nèi)核協(xié)議棧中。

        由于在隧道設備實際運行時,隧道實體的定位與查找比較頻繁,為了提高訪問速度,將隧道實體以哈希表的形式進行組織。其中哈希表大小(HASHSIZE)為32,哈希函數(shù)以128位的IPv6地址為參數(shù),將其劃分為4個部分(每一部分為32位),HASH(IPv6地址) = Part1 ^ Part2 ^ Part3 ^ Par&t4(HASHSIZE - 1)。當一個起始地址被分別定位為local和remote的隧道時,通過TUNNEL(HASH(local)^HASH(Remote))便能確定其所在的桶。

        隧道實體的配置接口

        隧道實體為內(nèi)核中的數(shù)據(jù)結構,而管理員在用戶態(tài)下對其進行配置,因此需要一種用戶態(tài)與內(nèi)核態(tài)信息交互的機制。由于內(nèi)核態(tài)和用戶態(tài)使用不同的內(nèi)存定義,所以二者之間不能直接訪問對方的內(nèi)存。而應該使用Linux中的用戶和內(nèi)核態(tài)內(nèi)存交互函數(shù):

        這兩個函數(shù)均返回不能被復制的字節(jié)數(shù),因此,如果完全復制成功,則返回值為0。4over6隧道實體在內(nèi)核中主要體現(xiàn)為虛擬網(wǎng)絡設備,因此配置程序采用傳統(tǒng)網(wǎng)絡設備的配置方法,即用ioctl系統(tǒng)調用來配置隧道。ioctl系統(tǒng)調用為設備驅動程序執(zhí)行“命令”提供了一個設備特定的入口點。在用戶空間內(nèi)調用的ioctl函數(shù)一般具有如下原型:

        通常原型中的“…”代表可變數(shù)目的參數(shù)表,cmd為命令字。在實際系統(tǒng)中,系統(tǒng)調用不會真正使用可變數(shù)目的參數(shù),而是必須有精確定義的參數(shù)個數(shù)。每一個設備都可以定義自己的ioctl命令字,命令編號的范圍是由SIOCDEVPRIVATE到SIOCDEVPRIVATE + 15。如果是上述這些命令,則會調用相關接口驅動程序的dev->do_ioctl。該函數(shù)接收和通用ioctl函數(shù)相同的struct ifreq *指針,其原型如下:

        針對IPv6隧道,它定義了4個命令字,這些命令字分別是SIOCGETTUNNEL、SIOCADDTUNNEL、SIOCCHGTUNNEL、SIOCDELTUNNEL。其中SIOCGETTUNNEL命令用于獲取隧道設備的相關屬性信息,其他3個命令分別對應創(chuàng)建、更新以及刪除隧道。用戶空間通過ioctl系統(tǒng)調用,最終調用到內(nèi)核中定義的函數(shù)ip6ip6_tnl_ioctl。管理員提供的信息通過copy_from_user函數(shù),從用戶態(tài)復制到內(nèi)核態(tài),而配置程序的反饋信息則通過copy_to_user函數(shù),由內(nèi)核態(tài)復制到用戶態(tài)應用程序。

        編程實現(xiàn)

        基于上述設計思想,本文對4over6隧道驅動進行了編程實現(xiàn)。編程實現(xiàn)的操作系統(tǒng)采用Red Hat Linux 9 + Kernel 2.4.20作為源碼,以GNU GCC為集成環(huán)境,開發(fā)語言采用C語言。

        由于該驅動為內(nèi)核態(tài)驅動,故以內(nèi)核模塊的方式實現(xiàn)并加載?;舅淼缹嶓w以哈希表的形式進行組織,提高了隧道訪問速度。

        隧道虛擬設備調用ip46_tnl_xmit函數(shù)對到達隧道入口處的原始IPv4報文進行封裝,使其進入隧道;解封裝函數(shù)ip46_rcv對到達隧道出口處的報文進行解封裝處理,并通過4over6隧道協(xié)議實體注冊到內(nèi)核IPv6協(xié)議棧中;函數(shù)ip46_err對隧道傳輸中所出現(xiàn)的錯誤進行處理,并翻譯為ICMPv4報文,發(fā)送給隧道入口節(jié)點;隧道配置接口定義為ip46_tnl_ioctl函數(shù),它針對特定的命令執(zhí)行相應的配置操作。

        通過在Linux系統(tǒng)下加載并運行該4over6隧道驅動,跨越校園IPv6網(wǎng)絡的兩個IPv4主機之間不但能夠成功地運行Web、FTP、Telnet等各種不同類型的應用,而且延時、丟包率、吞吐量等性能指標都接近甚至優(yōu)于這兩臺IPv4主機之間直接互訪的性能。

        (作者單位為華東理工大學信息化辦公室)

        猜你喜歡
        內(nèi)核路由器分組
        萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
        買千兆路由器看接口參數(shù)
        科教新報(2022年24期)2022-07-08 02:54:21
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        分組搭配
        基于嵌入式Linux內(nèi)核的自恢復設計
        Linux內(nèi)核mmap保護機制研究
        怎么分組
        分組
        你所不知道的WIFI路由器使用方法?
        無線路由器輻射可忽略
        最新国产不卡在线视频| 中文字幕有码一区二区三区| 国产免费视频一区二区| 午夜免费观看日韩一级片| 亚洲综合av永久无码精品一区二区| 日韩精品无码视频一区二区蜜桃| 在线a亚洲视频播放在线观看| 一本色道久久88综合亚洲精品| 国内自拍速发福利免费在线观看| 国产亚洲一本大道中文在线| 亚洲 欧美 综合 另类 中字| 亚洲女同同性少妇熟女| 精品人妻av一区二区三区四区| 激情综合色五月丁香六月欧美 | 精品日韩一级免费视频| 东京热人妻一区二区三区| 国产污污视频| 亚洲国产精品午夜一区| 日韩精品熟女中文字幕| 日韩国产成人无码av毛片蜜柚| 四虎国产精品视频免费看| 大岛优香中文av在线字幕| 中文字幕亚洲综合久久天堂av| 樱桃视频影视在线观看免费| 国产精品自产拍在线观看免费 | 国产精品兄妹在线观看麻豆| 日韩a∨精品日韩在线观看| 国产人妖一区二区在线| 97中文字幕精品一区二区三区| 超级碰碰色偷偷免费视频| 免费AV一区二区三区无码| 日本一区二区三区在线观看免费| 亚洲国产美女高潮久久久| 欧美bbw极品另类| 久久久精品电影| 日本女优中文字幕亚洲| 天天躁夜夜躁狠狠躁2021a2| 久久精品国产99国产精2020丨| 蜜桃视频在线免费观看完整版| 久久综网色亚洲美女亚洲av| 99re热视频这里只精品|