音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

高性能路由器硬件抽象層的關(guān)鍵技術(shù)研究

出處:r_enter 發(fā)布于:2008-08-29 16:40:31

  1 引 言
  隨著Internet的飛速發(fā)展和寬帶技術(shù)的不斷出現(xiàn),骨干網(wǎng)絡(luò)路由器的體系結(jié)構(gòu)也發(fā)生了一些變化。近年來,高性能路由器體系結(jié)構(gòu)的研究和國內(nèi)外主流廠商生產(chǎn)的大部分商用高端路由器的實現(xiàn)方案中,普遍采用了集中式交換、分布式報文處理和轉(zhuǎn)發(fā)的體系結(jié)構(gòu)[1,2]。
  提出了硬件抽象層(Hardware AbstractionLayer,HAL)的設(shè)計思想,成功地解決了分布式路由器面臨的通用性支撐軟件系統(tǒng)結(jié)構(gòu)設(shè)計問題,為構(gòu)建開放通用的路由器軟件基礎(chǔ)平臺提供了保證。硬件抽象層包括虛擬驅(qū)動、系統(tǒng)管理和內(nèi)部通信3大模塊,在整個路由器系統(tǒng)中的位置如圖1所示。


  結(jié)合國家863重大課題“高性能IPv6路由器基礎(chǔ)平臺及實驗系統(tǒng)”,將文獻[3]中提出的硬件抽象層在嵌入式實時操作系統(tǒng)Hard HatLinux中進行了實現(xiàn)。本文針對高性能路由器體系結(jié)構(gòu)的特點,研究了硬件抽象層在實現(xiàn)過程中的關(guān)鍵技術(shù)。主要包括虛擬驅(qū)動的動態(tài)加載模式、基于分隔符的TCP實時傳輸方法、基于地址映射的內(nèi)核態(tài)與用戶態(tài)間的阻塞式數(shù)據(jù)交換機制幾個內(nèi)容。

  2 支撐軟件在高性能IPv6路由器中實現(xiàn)的關(guān)鍵技術(shù)
  2.1 虛擬驅(qū)動的動態(tài)加載模式
  虛擬驅(qū)動模塊是模擬線路接口單元動作的重要部分,他的靈活性和可擴展性直接影響硬件抽象層的可用性。
  在Linux操作系統(tǒng)下,該模塊是作為一個內(nèi)核模塊來實現(xiàn)的。他可以實現(xiàn)實時動態(tài)加載,與靜態(tài)加載相比具有很大的靈活性。編譯時,內(nèi)核模塊可單獨進行模塊的編譯調(diào)試,縮短了調(diào)試時間;使用時,將該模塊鏈接到內(nèi)核,便可發(fā)揮模擬線路接口單元的作用;擴展或升級時,可以將其卸載后進行修改。除此之外,動態(tài)加載還可以縮減Linux內(nèi)核的大小,使編譯后的內(nèi)核小巧,占用內(nèi)存較少,提高了運轉(zhuǎn)速度。
  2.2 基于地址映射的內(nèi)核態(tài)與用戶態(tài)間的阻塞式數(shù)據(jù)交換機
  
Linux操作系統(tǒng)中的進程分為用戶態(tài)進程和內(nèi)核態(tài)進程2類,用戶態(tài)進程不能直接執(zhí)行運行在內(nèi)核態(tài)的內(nèi)核代碼或者存取操作系統(tǒng)內(nèi)核的數(shù)據(jù)結(jié)構(gòu)。在內(nèi)存管理方面,Linux系統(tǒng)采用虛擬內(nèi)存管理機制,設(shè)置了兩級頁表結(jié)構(gòu),通過頁面地址和在該頁中的偏移量就可以惟一確定虛擬地址所對應(yīng)的物理地址。
  在硬件抽象層的實現(xiàn)中,內(nèi)部通信處于用戶態(tài),虛擬驅(qū)動處于內(nèi)核態(tài)。而他們之間不可避免地需要進行一些數(shù)據(jù)的傳遞,即處于Linux不同空間的2個進程要進行通信。但是,這2個模塊分處于Linux系統(tǒng)的用戶空間和內(nèi)核空間,數(shù)據(jù)指針如何傳遞是一個問題,指針傳遞后如何映射又是一個問題。因此用戶態(tài)與內(nèi)核態(tài)之間內(nèi)存地址的傳遞和轉(zhuǎn)換成為了提高硬件抽象層工作效率的關(guān)鍵。
    2.2.1 內(nèi)核態(tài)與用戶態(tài)的指針傳遞
  先來解決內(nèi)存地址的傳遞問題,根據(jù)Linux驅(qū)動程序的特點,選擇ioctl()函數(shù)來傳遞指針。該函數(shù)屬于系統(tǒng)調(diào)用,調(diào)用后將一個類型為ifreq的結(jié)構(gòu)指針變量ral_ifr從用戶態(tài)傳入內(nèi)核態(tài),該結(jié)構(gòu)的定義在/include/linux/if.h中。
  使用了其中的ifrn_name和ifru_data兩個域,其中ifrn_name代表設(shè)備的名稱,即虛擬網(wǎng)絡(luò)接口設(shè)備名,ifru_data為所要傳遞的數(shù)據(jù)指針。使用系統(tǒng)調(diào)用ioctl()之后,用戶空間到內(nèi)核空間的指針傳遞就完成了。內(nèi)核空間到用戶空間的指針傳遞過程與其相反。因此,下一步要進行的是內(nèi)核空間與用戶空間數(shù)據(jù)指針的映射。
   
  2.2.2 內(nèi)核態(tài)與用戶態(tài)的內(nèi)存映射
  由2.2.1可知,用戶空間的指針通過ioctl傳入內(nèi)核空間后,他本身并沒有發(fā)生改變,需要進行虛擬地址到物理地址的映射才可以對其進行讀寫操作。
  可以使用內(nèi)核kiobuf機制,他能提供從內(nèi)核空間對用戶內(nèi)存的直接訪問。內(nèi)核kiobuf機制的設(shè)計初衷就是為了便于將用戶空間的緩沖區(qū)映射到內(nèi)核。使用他能夠獲得數(shù)據(jù)的頁面起始位置、頁數(shù)和偏移量等具體參數(shù),因此可在內(nèi)核空間對用戶態(tài)申請的內(nèi)存進行操作。
  首先分配一個內(nèi)核I/O向量(kiovec)來產(chǎn)生kiobuf,使用函數(shù)如圖2所示。


    然后再對其進行初始化,如圖3所示。


    ,將通過ioctl傳入的用戶空間指針ifru_data映射 到內(nèi)核態(tài),使用函數(shù)map_user_kiobuf,如圖4所示。


  這樣就完成了將指針由用戶空間映射到內(nèi)核空間的過程,實現(xiàn)了從虛擬地址向物理地址的轉(zhuǎn)換。
  至此,內(nèi)核空間與用戶空間的內(nèi)存映射問題得到了很好的解決。通過解決內(nèi)存地址映射的問題,內(nèi)部通信和虛擬驅(qū)動之間就可以只傳遞數(shù)據(jù)指針,大大提高了模塊的運行效率。
  2.3 基于分隔符的TCP實時傳輸方法
    2.3.1 Nagle算法的弊端
  糊涂窗口綜合癥(Silly WindowSyndrome)的出現(xiàn)使網(wǎng)絡(luò)開銷過大,從而造成TCP性能變壞。根據(jù)文獻[5]所述,糊涂窗口綜合癥的解決方法就是采用文獻[6]中所建議的Nagle算法。但是在實際應(yīng)用時發(fā)現(xiàn),Nagle算法的不足之處主要有2點:
  (1)在限制數(shù)據(jù)報頭部信息消耗的帶寬總量的同時,是以犧牲網(wǎng)絡(luò)延遲為代價的。
  (2)在發(fā)送方的緩沖區(qū)中,應(yīng)用程序發(fā)送的數(shù)據(jù)包發(fā)生了粘滯的現(xiàn)象,即發(fā)送的若干數(shù)據(jù)包到接收方接收時變成一包,分不出各個包的界線。
  前者因為數(shù)據(jù)被排隊而不是立即發(fā)送的,因此不適用于需要快速響應(yīng)時間的系統(tǒng)。后者則會影響到接收方的數(shù)據(jù)處理的準(zhǔn)確性。種不足可以通過使用PUSH標(biāo)記來實現(xiàn),發(fā)送方如果使用了該標(biāo)志,會立即將緩沖區(qū)中的數(shù)據(jù)發(fā)送出去。對于第二個問題,解決起來就比較復(fù)雜,因為出現(xiàn)數(shù)據(jù)包粘滯現(xiàn)象的原因既可能由發(fā)送方造成,也可能由接收方造成。
    2.3.2 基于分隔符的TCP實時傳輸方法
  采用了基于分隔符的TCP實時傳輸方法來解決包粘滯問題。該方法在應(yīng)用層數(shù)據(jù)包的起始部分附加上有特定格式的分隔符和數(shù)據(jù)長度域,其中分隔符用于界定數(shù)據(jù)包之間的界限,長度域則用于表示該數(shù)據(jù)包的實際長度。
  首先,所有經(jīng)內(nèi)部通信模塊傳輸?shù)臄?shù)據(jù),都需要進行內(nèi)部固定格式的封裝。封裝后數(shù)據(jù)包的包頭,是由內(nèi)部通信模塊自定義的,起始位置是分隔符和長度域。其次,接收方按照內(nèi)部通信模塊的自定義的包結(jié)構(gòu),接收后對數(shù)據(jù)流進行預(yù)處理,還原成為應(yīng)用程序可正確識別的數(shù)據(jù)包。預(yù)處理的原理如下:先查找包頭中的分隔符,他標(biāo)識著一個數(shù)據(jù)包的開始;接下來的域表示的是實際數(shù)據(jù)包的長度len,取出緊跟在包頭后的長度為len的那段數(shù)據(jù),這就是需要應(yīng)用程序處理的數(shù)據(jù)包。
  包粘滯的情況具體可細(xì)分為3大類,這里均以2個應(yīng)用程序數(shù)據(jù)包粘滯成一段的情況為例,如圖5~圖9所示,當(dāng)應(yīng)用程序數(shù)據(jù)包個數(shù)為n時,可采用類似的方法進行處理。


    第1類,粘滯數(shù)據(jù)是由完整的數(shù)據(jù)包組成的,如圖5所示。這種情況的處理非常簡單,按分隔符找到數(shù)據(jù)包的起始位置,再根據(jù)數(shù)據(jù)長度取出應(yīng)用程序數(shù)據(jù)即可。 
  第2類,粘滯數(shù)據(jù)是由完整數(shù)據(jù)包和應(yīng)用程序數(shù)據(jù)殘缺的數(shù)據(jù)包組成,如圖6和圖7所示。處理時,需要對殘缺數(shù)據(jù)包2的應(yīng)用程序數(shù)據(jù)部分進行保存,內(nèi)部通信包頭的數(shù)據(jù)長度域也要記錄下來,以便下次接收時知道應(yīng)用程序數(shù)據(jù)剩余部分的長度。再次收到數(shù)據(jù)時,就根據(jù)剩余長度取出一段數(shù)據(jù),與上次保存的應(yīng)用程序數(shù)據(jù)合為一個完整的數(shù)據(jù)包。
  第3類,粘滯數(shù)據(jù)是由完整數(shù)據(jù)包和內(nèi)部通信包頭殘缺的數(shù)據(jù)包組成,如圖8和圖9所示。首先,要將如圖8所示數(shù)據(jù)段中收到的殘缺的這部分包頭保存起來,然后收取下數(shù)據(jù)如圖9所示。再從收取的數(shù)據(jù)中,截取可以與上次殘缺包頭組成完整的內(nèi)部通信包頭的一段報文,形成所需要的內(nèi)部通信包頭。當(dāng)然,該段數(shù)據(jù)有可能并不是內(nèi)部通信包頭,這可以從分隔符是否正確等內(nèi)部通信封裝格式來判斷。如果發(fā)生這種情況,就要將指針以字節(jié)為單位,順次向后滑動,直到找到真正的內(nèi)部通信包頭為止。然后根據(jù)包頭中的信息,取出相應(yīng)長度的應(yīng)用程序數(shù)據(jù)交送給應(yīng)用程序接收者。
    解決了上述分析的2大不足之后,內(nèi)部通信模塊中實現(xiàn)的TCP傳輸,在保證數(shù)據(jù)傳輸?shù)牧己玫目煽啃院土骺匦灾猓€具備了一定的實時性能和防止數(shù)據(jù)包粘滯的功能。

  3 結(jié) 語

  本文研究了硬件抽象層在高性能IPv6路由器實現(xiàn)中的關(guān)鍵技術(shù),主要分析了虛擬驅(qū)動的動態(tài)加載模式、基于分隔符的TCP實時傳輸方法、基于地址映射的內(nèi)核態(tài)與用戶態(tài)間的阻塞式數(shù)據(jù)交換機制。通過上述關(guān)鍵技術(shù)的研究,使硬件抽象層得以實時、高效地運行,并且已穩(wěn)定運行于高性能IPv6路由器中。
  歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(m.58mhw.cn)


  
關(guān)鍵詞:高性能路由器硬件抽象層的關(guān)鍵技術(shù)研究路由器

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

拆中國移動路由器,一元購得拆開看看做工如何
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!