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

基于Linux虛擬網卡測試平臺的系統設計

2016-10-22 03:37:46張洪吳欽章杜春蕾
電子設計工程 2016年17期

張洪,吳欽章,杜春蕾

(中科院重慶綠色智能技術研究院重慶404100)

基于Linux虛擬網卡測試平臺的系統設計

張洪,吳欽章,杜春蕾

(中科院重慶綠色智能技術研究院重慶404100)

為了實現網絡通信算法能夠在單主機平臺獲得驗證分析,提出基于Linux虛擬網卡的測試系統設計方案。并完成了系統軟件設計。分析了Linux網絡驅動框架原理,完成Linux虛擬網卡的創建與注冊,通過搭建虛擬路由建立多張虛擬網卡的通信,使用Netfilter框架對虛擬網卡接收和發送的數據進行流量分析。具備了對數據可靠性的檢測和實時流量監測。通過TCP通信算法在虛擬網卡中的驗證,能夠有效的完成對算法的測試,達到設計要求。

虛擬網卡;測試;路由;監測

隨著嵌入式設備對網絡需求的增長,物聯網技術通過傳感器獲取大量數據,這些數據通過嵌入式網關進行處理,這就涉及到各種網絡通信算法。但是通常嵌入式軟硬件開發時間是不均衡的。如果網絡通信算法已經完成,而硬件仍然處于調試狀態,導致網絡通信算法不能夠及時驗證,則開發效率降低。虛擬網卡測試平臺提供了不需要具體硬件參與,就能完成多網卡設備的通信算法驗證。降低了軟件開發周期。并且通過分析虛擬網卡接收和發送的數據包,進而對算法的準確性和性能進行測試。

1Linux網絡驅動框架分析

Linux應用程序通過調用套接字socket建立與內核通信的接口。當數據通過socket交付給內核時,內核中的網絡子系統將數據傳送到網卡設備中。Linux網絡設備驅動框架分為4層。結構圖如圖一所示。分別是網絡協議接口層,網絡設備接口層,設備驅動功能層,網絡設備與媒介層。

網絡協議接口層的主要作用在數據鏈路層通過調用dev_ queue_xmit()函數接收網絡層的數據,通過調用netif_rx()將數據發送到網絡層,實現對上層網絡的抽象收發數據。要傳輸的數據是以sk_buff結構體的形式存在的。Linux內核驅動模塊中通過雙鏈表的形式將獨立的sk_buff連接在一起。sk_buff提供head,tail,end,data 4個指針可以快速地定位協議頭位置;sk_buff結構體中保留了關鍵的報文信息(如上層所使用的協議,網絡設備),以便協議層靈活調用應用網絡設備接口層[1]。

網絡設備接口層主要通過net_device結構體來抽象的具體的網絡接口卡,來實現各種類型的硬件在軟件層次上的統一。net_device結構體在內核中指代一種網絡設備,網絡驅動程序僅僅需要填充net_device結構體的具體成員,并注冊將net_device注冊進內核,就能實現具體網絡設備與內核的掛接。net_device結構體存儲網絡接口重要參數,是網絡驅動程序的核心。

設備驅動功能層是具體對網絡設備操作函數的具體實現,比如在用戶空間執行ifconifg eth0 up命令時,設備操作函數open將執行,對發送隊列進行初始化,并注冊中斷。

網絡設備與媒介層是直接對應實際的硬件設備,接收和發送數據的物理實體,對網卡設備的物理配置一般定義一組宏和一組訪問設備內部寄存器的函數,具體的宏和函數與特定的硬件緊密相關。

圖1Linux網絡驅動框架圖

2 虛擬網卡原理和實現

2.1虛擬網卡初始化

為了實現多張網卡并行發送和接收數據。測試系統將在Linux系統中搭建要多張虛擬網卡。通過alloc_netdev函數分配網絡設備。分配網絡設備后,Linux網絡驅動程序將自動調用該設備的初始化函數,初始化設備的私有結構,保存一些設備一些私有數據設置,并對設備的許多成員函數指針賦值。如果使用NAPI中斷方式接收數據,設置接收緩沖池[2]。最后通過register_netdev將網絡設備注冊到Linux內核中。register_netdev首先檢查設備名是否已確定,若沒確定則會以eth%d形式存在。此時內核會調用函數dev_alloc_name來完成該名稱,此函數會把%d換成設備類型中頭一個未分派的數字。

2.2虛擬網卡數據發送

網絡設備驅動程序通過分析網絡層協議傳遞的sk_buff結構體,獲得所接收的有效數據和實際長度,將有效的數據存入臨時緩存區。如果是以太網數據,則需要判斷是否小于最小量。如果小于發送最小要求數量,不足的地方則補0。最后將數據通過虛擬路由函數進行發送。

2.3虛擬網卡數據接收

1)常規方式,網絡設備接收數據的主要方法是由中斷引發設備的中斷處理函數,中斷處理函數判斷中斷類型,如果為接收中斷,則讀取接收到的數據,分配sk_buff數據結構和數據緩沖區,將接收到的數據拷入數據緩沖區,并調用netif_rx()將sk_buff傳遞給上層協議[3]。

2)NAPI中斷方式,與常規接收中斷接收方式不同,NAPI以輪詢的方式接收數據包,當發生一次中斷后,在中斷處理函數中就關閉接收中斷,直到通過輪詢方式完成接收隊列中的數據包之后,打開中斷使能。NAPI這種方式在高負載的情況可以發揮更好的性能,避免每接收一個數據包都要發生中斷。

3 虛擬路由原理和實現

路由器作為一種網絡設備,配備了多個網絡接口卡,能夠利用它的網絡配置正確轉發入口流量,決定進入的封包應當是轉發所需要的信息還是送給本地主機,以及在轉發時正確轉發封包所需要的信息,都存儲在被稱為轉發信息庫的數據庫中,它通常被簡稱為路由表[4]。

通過虛擬網卡的搭建,在Linux系統中虛擬出多張虛擬網卡。這幾張網卡都具有接收和發送數據包的能力。需要通過虛擬路由將這幾張網卡建立連接。通過在數據包函數中的IP地址轉換和MAC地址轉換。實現虛擬路由表的功能。虛擬路由的功能如圖2所示。

圖2 虛擬路由實現原理圖

3.1IP地址的轉換

虛擬網卡驅動模塊的關鍵部分對于IP地址的轉換,Linux終端虛擬多個接口,對這些接口進行IP地址分配。數據包在這些接口中傳遞不是簡單的環回,而是通過虛擬路由,將發送的數據包根據IP地址發送到指定的接口中。使得看起來是系統中有多個網卡接口卡,但實際上是計算機內部自行處理數據包。如何僅僅是通過IP地址來實現接口間數據傳輸,Linux內核會通過環回通道而不是虛擬網卡。對發送端的IP地址進行轉換,是虛擬路由的主要功能。

3.2MAC地址轉換

在發送網絡數據包的時候,需要進行以太網頭部的封裝,因為虛擬網卡不存在一個真實的MAC地址。無法使用ARP協議獲得IP地址和MAC地址的映射[5]。虛擬路由要實現這一功能,就必須自己建立一種映射關系,實現遠端虛擬主機的IP地址和MAC地址的聯系。接著為虛擬網卡設置MAC地址,遠端虛擬主機的MAC地址和本機的虛擬網卡MAC存在對應關系。在封裝以太網頭部時對MAC地址進行轉換。

兩張虛擬網卡的MAC地址轉換關鍵代碼:

4 虛擬網卡流量控制

實現虛擬網卡間的流量控制就要利用Linux下的Netfilter框架[6],通過提供鉤子函數,實時高效地采集需要檢測的原始數據包,并通過數據包分析模塊進行處理。利用基于Linux內核的Netfilter框架完成流量采集工作。主要對鉤子函數從虛擬網卡中接收到原始數據包進行分析,判斷數據包的類型并分析原始數據包的特征參數。并在采集中設置定時模塊,每隔一段時間調用一次流量采集模塊,從流量采集模塊中獲得相應流量指標信息,如單位時間虛擬網卡接口內接收和發送的總字節數。通過Netfilter框架對虛擬網卡的流量進行檢測和控制,判斷網絡通信代碼的可靠性。

5 結論

該虛擬網卡測試系統通過充分的分析和實驗驗證,采用Linux內核編程思想,實現了虛擬網卡之間的通信,驗證了網絡系統的可靠性,為嵌入式平臺提供網絡測試工具。該系統已經在66AK2H14評估版中通過測試。實驗應用表明,該虛擬網卡測試平臺具有不丟包、穩定可靠,可通過需求進行虛擬路由測試,多點網絡通信測試。達到設計要求。

[1]Alessandro Rubini,Jonathan corbet[J].Linux Device Drivers,2006:22-31.

[2]常鋒,孟傳良.基于ARM-Linux的網絡驅動程序設計[J].通信技術,2012,45(6):32-35.

[3]鮑娟基于嵌入式Linux的網絡流量監測系統[D].武漢:武漢科技大學,2009.

[4]徐鵬,蘇媛.基于Linux嵌入式系統以太網接口的設計與實現[J].西安郵電學院學報,2008,13(5):111-115.

[5]李方軍,金煒東.嵌入式Linux網絡驅動程序的研究與實現[J].現代電子技術,2005(16)90-112.

[6]KlausWehrle,FrankPahlke,etc.Thelinuxnetworking Architecture:design and implementation of network Protocols in the Linux Kernel[C].2004.

System design of testing platform based on Linux virtual network

ZHANG Hong,WU Qin-zhang,DU Chun-lei
(Chongqing Institute of Green and Intelligent Technology,Chinese Academy of Sciences,Chongqing 404100,China)

In order to achieve network communication algorithm in single-host platform to obtain verification of the proposed test system based on Linux virtual network design.And complete system software design.Analysis of the Linux network driver framework in principle,complete Linux virtual NIC is created and registered,by building a virtual routing to construct multiple virtual network communication,using the Netfilter framework for the virtual network adapter to receive and send data traffic analysis.With data reliability detection and real-time traffic monitoring.Communicate via TCP algorithm and validation in virtual network adapter,can effectively complete algorithm testing and achieve the design requirements.

virtual network adapter;test;router;monitor

TP393

A

1674-6236(2016)17-0096-02

2015-07-02稿件編號:201507009

張洪(1980—),男,四川富順人,博士研究生。研究方向:嵌入式操作系統。

主站蜘蛛池模板: 成人免费网站久久久| 精品国产福利在线| 毛片久久网站小视频| 日韩人妻精品一区| 日本AⅤ精品一区二区三区日| 亚洲男人天堂久久| 一区二区午夜| 国产午夜无码片在线观看网站 | 操美女免费网站| 美女无遮挡被啪啪到高潮免费| 国产AV毛片| 国产成人a在线观看视频| 人妻中文久热无码丝袜| 成年人视频一区二区| 久久 午夜福利 张柏芝| 99久久精品国产自免费| 久久精品只有这里有| 热久久国产| www中文字幕在线观看| 国产一级α片| 日韩区欧美国产区在线观看| 亚洲国产成人综合精品2020| 国产免费网址| a毛片免费在线观看| 一本大道AV人久久综合| 国产亚洲精品资源在线26u| 国产亚洲精品91| 四虎综合网| 亚洲男人的天堂在线观看| 久久青草精品一区二区三区 | 波多野结衣一区二区三区四区 | 永久免费av网站可以直接看的| 新SSS无码手机在线观看| 国产日韩AV高潮在线| 最新日韩AV网址在线观看| 日韩无码黄色网站| 亚洲中文字幕手机在线第一页| 免费国产一级 片内射老| 国产成人亚洲精品色欲AV | 激情在线网| 久久精品国产电影| 欧美综合中文字幕久久| 丝袜无码一区二区三区| 国产黄色视频综合| 波多野结衣AV无码久久一区| 国内精自视频品线一二区| 四虎成人精品| 青青草原国产免费av观看| 凹凸国产熟女精品视频| 十八禁美女裸体网站| 欧美亚洲一区二区三区导航| 五月婷婷亚洲综合| 欧美精品1区2区| 亚洲男人在线| 亚洲无码精彩视频在线观看 | 久久久波多野结衣av一区二区| 欧美a级在线| 精品国产电影久久九九| 欧美黄色网站在线看| 色综合天天综合| 欧美天天干| 九九视频免费在线观看| 久久精品无码国产一区二区三区 | 久久天天躁夜夜躁狠狠| 91偷拍一区| 欧美精品一二三区| 激情無極限的亚洲一区免费| 亚洲综合精品香蕉久久网| 永久免费av网站可以直接看的| 久久久久国产一区二区| 国产jizzjizz视频| 精品一区二区三区水蜜桃| 国产91无码福利在线| 乱人伦99久久| 国产导航在线| 一本大道在线一本久道| 国产高清无码第一十页在线观看| 国产成在线观看免费视频| 久久久亚洲色| 欧美色图第一页| 国产嫖妓91东北老熟女久久一| 日韩精品高清自在线|