- 相關(guān)推薦
在uClinux環(huán)境下實現(xiàn)虛擬局域網(wǎng)
摘要:μClinux是近年發(fā)展起來的一種專用于微控制器領(lǐng)域的嵌入式Linux操作系統(tǒng)。虛擬局域網(wǎng)(VLAN)作為新興技術(shù),是解決以太網(wǎng)廣播風(fēng)暴和安全問題的一個重要策略。本文在對VLAN技術(shù)和μClinux操作系統(tǒng)分析的基礎(chǔ)上,給出在μClinux環(huán)境下VLAN的實現(xiàn)方式與過程。關(guān)鍵詞:μClinuxVLANIEEE802.1q
引言
虛擬局域網(wǎng)VLAN(VirtualLocalAreaNetwork)是指在交換局域網(wǎng)的基礎(chǔ)上,采用網(wǎng)絡(luò)管理軟件構(gòu)建的可跨越不同網(wǎng)段、不同網(wǎng)絡(luò)的端到端的邏輯網(wǎng)絡(luò)。一個VLAN組成一個邏輯子網(wǎng),即一個邏輯廣播域。它可以覆蓋多個網(wǎng)絡(luò)設(shè)備,允許處于不同地址位置的網(wǎng)絡(luò)用戶加入到一個邏輯子網(wǎng)中。使用VLAN最明顯的好處是,它可以控制廣播風(fēng)暴,提高網(wǎng)絡(luò)的整體安全性,且在網(wǎng)絡(luò)管理上簡單、直觀。
ΜClinux是應(yīng)用于微控制器領(lǐng)域的一種嵌入式Linux操作系統(tǒng),它以優(yōu)異的性能及免費開放的代碼等優(yōu)點,博得了眾多嵌入式開發(fā)者的青睞。與過去基于RTOS,甚至沒有使用任何操作系統(tǒng)的嵌入式程序設(shè)計相比,基于Linux這樣成熟、高效、健壯、可靠、模擬化及易于配置的操作系統(tǒng)來開發(fā)自己的應(yīng)用程序,無疑能提高效率,并且有很好的可移植性。
1VLAN實現(xiàn)原理
1.1VLAN的幀格式
VLAN采用多種方式配置于企業(yè)網(wǎng)絡(luò)中,包括網(wǎng)絡(luò)安全論證、使無線用戶在802.11b接入點溫游、隔離IP語音流、壓縮視頻或音頻數(shù)據(jù)流的多址廣播及在不同協(xié)議的網(wǎng)絡(luò)中傳輸數(shù)據(jù)等。VLAN的劃分一般基于以下3種:端口、MAC地址、路由。
VLAN通;贗EEE802.1q和802.1p規(guī)范用于將VLAN用戶信息載入以太網(wǎng)幀;而802.1p使二層交換機具有流量優(yōu)先和實施動態(tài)多址濾波的能力。標準一直在修訂和完善之中,IEEE802.1u和IEEE802.1v就是2001年3月頒布的、對1998年版802.1q的修訂。
VLAN的幀格式與傳統(tǒng)的以太網(wǎng)802.3幀格式有所不同,如圖1所示,是不包含802.1p和802.1q的802.3幀格式。包含802.1p和802.1q后的新802.3幀格式如圖2所示。
其中,TCI是TagControlInfo的縮寫,2字節(jié)。當(dāng)設(shè)置為“8100”(hex)時,表明這一幀使用802.1p和802.1q標記;P是Priority,指示802.1p的優(yōu)先級別(0——7),占用3位;C是CanonicalIndicator,指示以太網(wǎng)格式是否規(guī)范,規(guī)范用0表示,否則用1表示,占用1位;VLAN是VLANIdentifier(VID),表明這一幀屬于哪一個VLAN(0——4095),占用12位。它們加在一起共4個字節(jié)。
1.2μClinux及對VLAN的支持
μClinux最大的特征就是針對沒有內(nèi)存管理單元MMU的處理器設(shè)計的。它非常適合那些沒有MMU的處理器,如Motorola公司的M6828、M68EN322、MC68360;DragonBall系列的68EZ328、68VZ328;ColdFire系列如5272、5307,ARM7TDMI和MC68EN302、ETRAX、Inteli960、PTISMA、Atari68k等。ΜClinux對Linux內(nèi)核的源代碼進行了重新編寫,以緊縮和裁減基本的代碼。所以它的內(nèi)核非常小,僅有512KB,加上相關(guān)的工碼。所以它的內(nèi)核非常小,僅有512KB,加上相關(guān)的工具還不到900KB但,μClinux仍然保持了Linux操作系統(tǒng)的主要優(yōu)點,如穩(wěn)定性好、有強大的網(wǎng)絡(luò)功能和出色的文件系統(tǒng)支持等能力。
在μClinux系統(tǒng)源代碼包內(nèi)的linux-2.4.x8021q目錄下,有vlan.c、vlan_dev.c等幾個關(guān)于VLAN運行及配置的源程序文件。它們針對VLAN幀做了代碼實現(xiàn)。在linux-2.4.x目錄下的if_vlan.h文件中,定義了VLAN處理的相關(guān)數(shù)據(jù)結(jié)構(gòu)。只需利用μClinux可裁剪、可配置的特點,在makemenuconfig…CustomizeKernelSettings…Networkingoptions以及在makemenuconfig…CustomizeVendor/UserSettings…NetworkApplications下作相應(yīng)配置,以及通過編寫makefile文件將這些文件編譯進內(nèi)核中即可。
2VLAN實現(xiàn)
為了說明VLAN的實現(xiàn)過程,本文具體針對高速視頻流的網(wǎng)上傳輸完成了VLAN的實現(xiàn)。
2.1網(wǎng)絡(luò)結(jié)構(gòu)
由于VLAN是建立在物理網(wǎng)絡(luò)基礎(chǔ)上的一種邏輯子網(wǎng),因此建立VLAN需要相應(yīng)的支持VLAN技術(shù)的網(wǎng)絡(luò)設(shè)備。當(dāng)網(wǎng)絡(luò)中不同VLAN間進行相互通信時,需要路由的支持。在本文中利用一臺裝有兩塊網(wǎng)卡的PC機作為服務(wù)器,運行Linux操作系統(tǒng),并經(jīng)過相應(yīng)的配置來完成器由功能。圖3所示為一網(wǎng)絡(luò)配置示意圖,所有設(shè)備及PC機均通過以太網(wǎng)接口RJ45接入局域網(wǎng)。PC機A和B是作為瀏覽器來觀察視頻圖像的,可選用。它們使用的網(wǎng)卡型號是10M/100M自適應(yīng)網(wǎng)卡RealtekRTL8139(A)PCIFastEthernetAdapter.圖3中的device主要負責(zé)視頻流的采集、壓縮與傳輸。它們選用了基于ARM7TDMI的Samsung-4510B處理器。其主頻為50MHz,主存儲器為32MB的SDRAM,網(wǎng)絡(luò)處理芯片選用了RTL8019AS.因本文主要講述VLAN的實現(xiàn),其具體的硬件結(jié)構(gòu)在此就不再多述。
2.2軟件實現(xiàn)
vconfig是一個客戶端配置工具包。它可完成VLAN的相關(guān)配置。稍加修改即可在μClinux下運行。它可以從互聯(lián)網(wǎng)上下載獲得,所用的版本是vconfig-1.6-4.i386.rpm.選用的μClinux內(nèi)核為2.4.18版本的μClinux-dist-20020306.tar.gz.由于μClinux不支持動態(tài)編譯到內(nèi)核中并下載到設(shè)備中。
從圖3中可以看出,我們劃分了兩個VLAN:VLAN1與VLAN2.當(dāng)然,也可根據(jù)需要劃分出多個VLAN.一塊網(wǎng)卡可以綁定兩個或多個IP地址,為加快處理速度,在服務(wù)器端選用了兩塊網(wǎng)卡分別命名為eth0與eth1,在初始狀態(tài)時不需做任何配置。按如下步驟進行配置。
Vconfigset_name_typeDEV_PLUS_VID_NO_PAD
;配置VLAN命名類型
vconfigaddeth01;eth0網(wǎng)卡綁定VLAN1號
vconfigaddeth11;eth1網(wǎng)卡綁定VLAN1號
vconfigaddeth02;eth0網(wǎng)卡綁定VLAN2號
vconfigaddeth12;eth1網(wǎng)卡綁定VLAN2號
brct1addbrbr0;添加虛擬網(wǎng)橋,用于不同VLAN間通信
brct1addifbr0eth0.1;將VLAN綁定到虛擬網(wǎng)橋上
brct1addifbr0eth1.1
brct1stpbr0off;設(shè)置生成樹協(xié)議關(guān)閉
brct1addbrbr1
brct1addifbr1eth0.2
brct1addifbr1eth1.2
brct1stpbr1off
ifconfigeth0up;啟動網(wǎng)卡
ifconfigeth1up
ifconfigeth0.1up;啟動VLAN
ifconfigeth1.1up
ifconfigeth0.2up
ifconfigeth1.2up
ifconfigbr0up;啟動虛擬網(wǎng)橋
ifconfigbr1up
在客戶端,也就是視頻采集的設(shè)置端需做的應(yīng)配置如下:
VLAN1下的設(shè)備1
Vconfigset_name_typeDEV_PLUS_VID_NO_PAD
Vconfigaddeth01
Ifconfigeth0.1192.168.1.1up
VLAN1下的設(shè)備2
vconfigset_name_typeDEV_PLUS_VID_NO_PAD
vconfigaddeth01
ifconfigeth0.1192.168.1.2up
VLAN2下的設(shè)備1
Vconfigset_name_typeDEV_PLUS_VID_NO_PAD
Vconfigaddeth12
Ifconfigeth1.2192.168.2.1up
VLAN2下的設(shè)備2
Vconfigset_name_typeDEV_PLUS_VID_NO_PAD
vconfigaddeth12
ifconfigeth1.2192.168.2.2up
依此類推,可以擴充到n個設(shè)備的相應(yīng)配置,從而實現(xiàn)了兩個VLAN.當(dāng)然,還可以通過iptables設(shè)置規(guī)則來實現(xiàn)不同VLAN之間的包轉(zhuǎn)發(fā)與包過濾等高級功能,此文就不再敘述其詳細過程。
3VLAN測試
首先,通過ping命令測試不同VLAN之間的可達性。
在設(shè)備192.168.1.1上ping192.168.1.2,鏈路可達;在設(shè)備192.168.1.1上ping192.168.2.1,鏈路不可達,說明它們不屬于同一個VLAN.同時,在服務(wù)器端執(zhí)行下述語句。
tcpdump-n-picmp-ibr0
可看到如下結(jié)果。
00:55:11.700355802.1Qvlan#1P0192.168.1.1>192.168.1.2:icmp:echorequest(DF)
00:55:11.700486802.1Qvlan#1P0192.168.1.2>192.168.1.1:icmp:echoreply
00:55:12.700260802.1Qvlan#1P0192.168.1.1>192.168.1.2:icmp:echorequest(DF)
00:55:12.700352802.1Qvlan#1P0192.168.1.2>192.168.1.1:icmp:echoerply
其次,以μClinux為軟件平臺,用GCC編譯實現(xiàn)了一個高速視頻流服務(wù)器/客戶程序。它的功能主要是服務(wù)器接受來自客戶端的RTSP連接,并按照RTP、RTCP和SDP等協(xié)議向客戶端提供所采集到的實時視頻流。在這里,客戶端是瀏覽器,服務(wù)器端是device,與上述客戶端/服務(wù)器端有所不同。通過實際的程序運行和測試,在圖3所示的網(wǎng)絡(luò)拓撲中,我們發(fā)現(xiàn)在網(wǎng)絡(luò)負載較重時,劃分了VLAN的視頻流在傳輸延遲和時延抖動上均優(yōu)于不劃分VLAN的視頻流在20%——40%;負載較輕時,它們的性能相當(dāng)。
4結(jié)論
當(dāng)前,以信息家電中心的嵌入式系統(tǒng)正得到蓬勃的發(fā)展。隨著嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)的發(fā)展,整個世界將更加網(wǎng)絡(luò)化和智能化。所以設(shè)備上網(wǎng)必然帶來網(wǎng)絡(luò)安全性和廣播的問題,VLAN則為設(shè)備連入Internet提供了一個較好的解決途徑。本文針對嵌入式應(yīng)用開發(fā)環(huán)境μClinux操作系統(tǒng),對VLAN的實際給出具體的應(yīng)用環(huán)境與步驟。具有良好的應(yīng)用前景與現(xiàn)實意義。
【在uClinux環(huán)境下實現(xiàn)虛擬局域網(wǎng)】相關(guān)文章:
uClinux下動態(tài)Web技術(shù)的實現(xiàn)方法08-06
利用ColdFire uClinux實現(xiàn)數(shù)據(jù)采集和傳輸08-06
在IIS 4.0上配置虛擬主機實現(xiàn)虛擬Internet教學(xué)08-17
多USB接口的局域網(wǎng)接入技術(shù)的實現(xiàn)08-06
多 USB 接口的局域網(wǎng)接入技術(shù)的實現(xiàn)08-06
VPN幫你輕松實現(xiàn)虛擬專用網(wǎng)08-06
數(shù)字視頻局域網(wǎng)監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)08-06
UC/OS和uClinux的比較08-06