- 相關(guān)推薦
基于以太網(wǎng)交換機(jī)的Linux協(xié)議棧虛擬化技術(shù)
摘要:網(wǎng)絡(luò)協(xié)議棧虛擬化的目標(biāo)是在一臺網(wǎng)絡(luò)設(shè)備上虛擬出多個(gè)協(xié)議棧以實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備的一虛多功能。由于Linux操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧本身是不支持這種網(wǎng)絡(luò)協(xié)議棧虛擬化技術(shù)的,因此本文通過對Linux操作系統(tǒng)3.11.10版本IPV4網(wǎng)絡(luò)協(xié)議棧進(jìn)行改造以實(shí)現(xiàn)Linux網(wǎng)絡(luò)協(xié)議棧的虛擬化,并在設(shè)備平臺上驗(yàn)證了經(jīng)過網(wǎng)絡(luò)協(xié)議棧虛擬化改造后的以太網(wǎng)交換機(jī)對業(yè)務(wù)流的隔離功能。
關(guān)鍵詞:協(xié)議棧;虛擬化;網(wǎng)絡(luò)設(shè)備
1 引言
隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,業(yè)務(wù)種類的不斷豐富,網(wǎng)絡(luò)對業(yè)務(wù)的隔離以及安全性、可靠性等屬性提出了越來越高的要求[1]。此外,隨著硬件能力的迅速提升,多框、集群、分布式路由交換系統(tǒng)的成熟,單臺物理網(wǎng)絡(luò)設(shè)備的業(yè)務(wù)處理能力已經(jīng)達(dá)到了一個(gè)新的高度[2]。為了將單臺物理設(shè)備的強(qiáng)大業(yè)務(wù)處理能力充分利用,彈性的適應(yīng)當(dāng)前的業(yè)務(wù)需求和未來的發(fā)展,網(wǎng)絡(luò)設(shè)備的一虛多(即將一臺物理設(shè)備虛擬成多個(gè)邏輯設(shè)備)成為了網(wǎng)絡(luò)與通信界追求的目標(biāo)[3]。Linux操作系統(tǒng)因其具有的開源、安全和穩(wěn)定等優(yōu)點(diǎn),受到網(wǎng)絡(luò)設(shè)備制造商的青睞,被廣泛應(yīng)用到網(wǎng)絡(luò)設(shè)備的嵌入式開發(fā)中。
目前,國內(nèi)外對Linux操作系統(tǒng)虛擬化的研究都著力于操作系統(tǒng)級的全局性資源隔離虛擬化,而缺少對網(wǎng)絡(luò)協(xié)議棧虛擬化的深入研究。對于小規(guī)模以太網(wǎng)而言,全局性的資源隔離會對網(wǎng)絡(luò)設(shè)備的進(jìn)程資源造成不必要的浪費(fèi),增加了網(wǎng)絡(luò)設(shè)備的負(fù)荷,影響網(wǎng)絡(luò)數(shù)據(jù)包處理速率。
因此,本文在以太網(wǎng)交換機(jī)設(shè)備上研究了Linux嵌入式操作系統(tǒng)中虛擬協(xié)議棧技術(shù),以實(shí)現(xiàn)業(yè)務(wù)流的隔離,提高單個(gè)以太網(wǎng)交換機(jī)設(shè)備的資源利用率[4]。
2 Linux網(wǎng)絡(luò)協(xié)議棧的層次結(jié)構(gòu)
網(wǎng)絡(luò)協(xié)議棧是指TCP/IP協(xié)議棧,實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)倪^程:包括上層協(xié)議到底層協(xié)議,和由底層協(xié)議到上層協(xié)議。Linux網(wǎng)絡(luò)協(xié)議棧的層次架構(gòu)模型如圖1所示,最上面一層為用戶空間中的應(yīng)用層,中間部分為內(nèi)核空間中的網(wǎng)絡(luò)協(xié)議棧部分,底層為物理設(shè)備[5]。在網(wǎng)絡(luò)協(xié)議棧中用戶空間和內(nèi)核空間之間的數(shù)據(jù)通過套接字緩存(socket buffer) 來傳遞,相應(yīng)的數(shù)據(jù)結(jié)構(gòu)為sk_buffer。
圖1 Linux網(wǎng)絡(luò)協(xié)議棧層次架構(gòu)
Linux網(wǎng)絡(luò)協(xié)議棧的最上層是系統(tǒng)調(diào)用接口,為用戶空間中的應(yīng)用程序提供一種訪問內(nèi)核網(wǎng)絡(luò)協(xié)議棧的接口。通過網(wǎng)絡(luò)協(xié)議棧進(jìn)行通信都需要對套接字進(jìn)行操作,網(wǎng)絡(luò)協(xié)議棧提供了兩種調(diào)用接口給用戶進(jìn)程。一種是在sys_socketcall中會根據(jù)網(wǎng)絡(luò)系統(tǒng)調(diào)用號調(diào)用具體的功能,另一種是通過普通文件操作來訪問網(wǎng)絡(luò)協(xié)議棧,將套接口的輸入、輸出操作當(dāng)成典型的文件讀寫操作來進(jìn)行。
套接字是一個(gè)與協(xié)議無關(guān)的接口層,它提供了一組通用接口來支持各種協(xié)議,它對用戶層的應(yīng)用程序屏蔽了與協(xié)議相關(guān)的實(shí)現(xiàn)細(xì)節(jié),將應(yīng)用程序發(fā)送的與協(xié)議無關(guān)的請求映射到與協(xié)議相關(guān)的實(shí)現(xiàn)。傳輸層負(fù)責(zé)數(shù)據(jù)的傳輸和數(shù)據(jù)的控制,提供端到端數(shù)據(jù)交換機(jī)制,傳輸層協(xié)議包括面向連接的TCP協(xié)議和面向無連接的UDP協(xié)議。網(wǎng)絡(luò)層負(fù)責(zé)接收、發(fā)送或轉(zhuǎn)發(fā)數(shù)據(jù)包,網(wǎng)絡(luò)層的協(xié)議包括IP協(xié)議、ARP協(xié)議、RARP協(xié)議、ICMP協(xié)議和IGMP協(xié)議等。鄰居子系統(tǒng)為三層協(xié)議地址與二層協(xié)議地址提供了的映射關(guān)系,此外還緩存了二層首部,以加速數(shù)據(jù)包的發(fā)送。在發(fā)送數(shù)據(jù)包的時(shí)候,先進(jìn)行路由查找,如果找到對應(yīng)的路由,再查看鄰居表中是否存在相應(yīng)的映射關(guān)系,如果不存在則新建對應(yīng)的鄰居項(xiàng);然后再判斷鄰居項(xiàng)是否為可用狀態(tài),如果不可用則把數(shù)據(jù)報(bào)存至發(fā)送緩存隊(duì)列后發(fā)送請求;在接收到請求應(yīng)答后,將對應(yīng)的鄰居項(xiàng)置為可用,并將其緩存隊(duì)列中的數(shù)據(jù)包發(fā)送出去;如果在指定時(shí)間內(nèi)為收到響應(yīng)包,則將對應(yīng)鄰居項(xiàng)置為無效狀態(tài)。對于以太網(wǎng)交換機(jī)而言,鄰居子系統(tǒng)提供了三層IP地址和二層MAC地址的映射,鄰居表就是ARP表。
網(wǎng)絡(luò)協(xié)議棧底部是一個(gè)與硬件無關(guān)的網(wǎng)絡(luò)設(shè)備接口層,它將網(wǎng)絡(luò)層的不同協(xié)議與各種網(wǎng)絡(luò)設(shè)備連接在一起。設(shè)備無關(guān)接口層提供了一組通用函數(shù)供底層網(wǎng)絡(luò)設(shè)備驅(qū)動程序和上層協(xié)議棧調(diào)用。當(dāng)輸出數(shù)據(jù)時(shí)協(xié)議棧不必關(guān)心底層的網(wǎng)絡(luò)設(shè)備,而當(dāng)輸入數(shù)據(jù)時(shí)網(wǎng)絡(luò)設(shè)備驅(qū)動同樣也不必關(guān)心上層的協(xié)議棧。協(xié)議棧向設(shè)備發(fā)送數(shù)據(jù)包時(shí)都需調(diào)用dev_queue_xmit函數(shù)。該函數(shù)對sk_buffer進(jìn)行排隊(duì),最終由底層設(shè)備驅(qū)動程序進(jìn)行傳輸。而接收報(bào)文通常是調(diào)用netif_rx函數(shù)實(shí)現(xiàn)的。當(dāng)?shù)讓釉O(shè)備驅(qū)動程序收到一個(gè)報(bào)文時(shí),就會通過調(diào)用netif_rx函數(shù)將報(bào)文的sk_buffer上傳至網(wǎng)絡(luò)層。
以太網(wǎng)交換機(jī)設(shè)備上網(wǎng)絡(luò)接口卡(NIC)的相關(guān)信息是由net_device結(jié)構(gòu)來描述的,net_device包括了硬件信息成員變量、接口信息成員變量、設(shè)備操作接口變量和一些輔助成員變量。網(wǎng)絡(luò)接口卡的IPv4地址等相關(guān)配置信息存放在in_device結(jié)構(gòu)中,net_device中有一個(gè)指針指向in_device。每個(gè)網(wǎng)絡(luò)接口卡都會有一個(gè)對應(yīng)的net_device結(jié)構(gòu)。當(dāng)設(shè)備啟動時(shí)調(diào)用register_netdevice函數(shù)注冊到系統(tǒng)中,注冊過的網(wǎng)絡(luò)接口卡NIC可通過unregister_netdevice函數(shù)注銷。net_device結(jié)構(gòu)中包含了一個(gè)名為hard_start_xmit的接口,通常在初始化網(wǎng)絡(luò)接口卡時(shí)設(shè)置該接口。當(dāng)協(xié)議棧向網(wǎng)絡(luò)接口卡發(fā)送數(shù)據(jù)包時(shí),會通過設(shè)備無關(guān)接口調(diào)用到此接口[6]。
3 Linux協(xié)議棧虛擬化的實(shí)現(xiàn)框架
Linux協(xié)議棧虛擬化技術(shù)是屬于控制平面的虛擬化,Linux協(xié)議棧虛擬化技術(shù)的實(shí)現(xiàn)分為以下四個(gè)部分:路由表的虛擬化、網(wǎng)絡(luò)接口的虛擬化、與上層應(yīng)用接口的虛擬化、套接字層的虛擬化。路由表的虛擬化通過對存儲路由表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)的虛擬化擴(kuò)展來實(shí)現(xiàn),使每一個(gè)虛擬出來的協(xié)議棧都對應(yīng)一份獨(dú)立的路由轉(zhuǎn)發(fā)表實(shí)例,虛擬協(xié)議棧的路由轉(zhuǎn)發(fā)表實(shí)例之間互不干擾[7]。網(wǎng)絡(luò)接口的虛擬化使網(wǎng)絡(luò)接口卡在收發(fā)數(shù)據(jù)包的時(shí)候,可以區(qū)分出這個(gè)數(shù)據(jù)包是屬于哪個(gè)虛擬協(xié)議棧,也使數(shù)據(jù)包在協(xié)議棧中傳遞的時(shí)候,可能選擇正確的函數(shù)處理接口。以上兩部分都是通過virtual_id標(biāo)識來區(qū)分不同的虛擬協(xié)議棧,每個(gè)虛擬協(xié)議棧都自己唯一的virtual_id標(biāo)識,virtual_id和虛擬協(xié)議棧是一一對應(yīng)的。
圖2 虛擬化協(xié)議棧架構(gòu)
3.1 路由表的虛擬化
Linux協(xié)議棧中使用數(shù)據(jù)結(jié)構(gòu)fib_table來描述路由表信息,所有的fib_table結(jié)構(gòu)鏈接在全局散列表fib_table_hash中。fib_table_hash存儲在數(shù)據(jù)結(jié)構(gòu)struct net中的struct netns_ipv4成員中。參數(shù)不同的fib_table_hash表示不同類型的路由表,例如fib_table_hash[RT_TABLE_LOCAL]表示設(shè)備本地地址的路由表。路由表的虛擬化是將指針數(shù)據(jù)結(jié)構(gòu)struct hlist_head*fib_table_hash重定義為指向指針的數(shù)據(jù)結(jié)構(gòu)struct hlist_head** fib_table_hash,使用不同virtual_id標(biāo)識來區(qū)分不同虛擬協(xié)議棧的路由表轉(zhuǎn)發(fā)實(shí)例,例如本地路由表就重定義為fib_table_hash[RT_TABLE_LOCAL][virtual_id]。
Linux協(xié)議棧中使用數(shù)據(jù)結(jié)構(gòu)rtable來描述路由緩存,路由緩存鏈接在散列表rt_hash_bucket中,為了使路由緩存和虛擬路由表項(xiàng)實(shí)例一一對應(yīng),散列表rt_hash_bucket需要被重定義為virtual_id 個(gè)不同的散列表,即rt_hash_bucket[virtual_id]。
由于不同虛擬協(xié)議棧中的目的IP地址可以重用,所以相同的IP地址在鄰居子系統(tǒng)的ARP表中對應(yīng)的目的MAC地址是不同的。而ARP表查找函數(shù)的輸入?yún)?shù)為net_device和目的IP地址,因此可以通過net_device來區(qū)分不同虛擬協(xié)議棧中IP地址對應(yīng)的MAC地址。
3.2 網(wǎng)絡(luò)接口的虛擬化
協(xié)議棧底層網(wǎng)絡(luò)接口的虛擬化是通過協(xié)議棧的net_device結(jié)構(gòu)實(shí)現(xiàn)的,需要在net_device數(shù)據(jù)結(jié)構(gòu)中添加一個(gè)virtual_id標(biāo)識,net_device數(shù)據(jù)結(jié)構(gòu)中的virtual_id表示該net_device結(jié)構(gòu)對應(yīng)的網(wǎng)絡(luò)接口卡屬于該virtual_id對應(yīng)的虛擬協(xié)議棧。
3.3 與上層應(yīng)用接口的虛擬化
協(xié)議棧內(nèi)部不同層次之間接口的虛擬化是通過在協(xié)議棧內(nèi)部接口函數(shù)中添加參數(shù)virtual_id實(shí)現(xiàn)的,virtual_id表示了同一個(gè)接口函數(shù)中對不同虛擬協(xié)議棧進(jìn)行操作時(shí),選擇的表項(xiàng)結(jié)構(gòu)是不同的。比如網(wǎng)絡(luò)設(shè)備狀態(tài)變化時(shí)或者網(wǎng)絡(luò)設(shè)備上IP配置變化時(shí),路由子系統(tǒng)收到通知鏈的通知,需要對路由表和路由緩存進(jìn)行添加、刪除、修改等操作,接口函數(shù)中的virtual_id可以選擇對應(yīng)的路由表項(xiàng)實(shí)例進(jìn)行操作。同樣,OSPF、RIP、ISIS等路由協(xié)議在網(wǎng)絡(luò)路由拓?fù)渥兓瘯r(shí),需要對路由表進(jìn)行動態(tài)添加、修改、刪除的函數(shù),因此修改路由表的接口函數(shù)傳入的參數(shù)struct fib_config結(jié)構(gòu)中也需要增加virtual_id標(biāo)識,用來標(biāo)識將要操作的路由表轉(zhuǎn)發(fā)實(shí)例。
3.4 套接字層的虛擬化
在保證虛擬協(xié)議棧業(yè)務(wù)隔離的前提下,為了兼顧設(shè)備內(nèi)存資源利用率,協(xié)議棧接口允許一定的共享,比如多個(gè)虛擬協(xié)議棧中同種類型的業(yè)務(wù)流可以共享同一個(gè)socket接口。應(yīng)用層的協(xié)議通過socket發(fā)送數(shù)據(jù)包的時(shí)候,需要在接收方的網(wǎng)絡(luò)地址結(jié)構(gòu)中添加相應(yīng)的virtual_id標(biāo)識,使應(yīng)用層的報(bào)文通過socket進(jìn)入?yún)f(xié)議棧之后可以區(qū)分不同的虛擬協(xié)議棧,在進(jìn)行報(bào)文轉(zhuǎn)發(fā)的時(shí)候也可以查找對應(yīng)虛擬協(xié)議棧的路由表轉(zhuǎn)發(fā)實(shí)例。應(yīng)用層的協(xié)議用socket接收數(shù)據(jù)包的時(shí)候,也可以從接收的地址結(jié)構(gòu)中取出virtual_id標(biāo)識,區(qū)分?jǐn)?shù)據(jù)包是由哪個(gè)虛擬協(xié)議棧送上來的。
4 Linux虛擬協(xié)議棧的關(guān)鍵操作
由于網(wǎng)絡(luò)設(shè)備上的每個(gè)虛擬協(xié)議?梢詫(yīng)設(shè)備的多個(gè)虛擬網(wǎng)絡(luò)接口卡NIC,所以可以通過網(wǎng)管配置命令將多個(gè)虛擬網(wǎng)絡(luò)接口卡的net_device結(jié)構(gòu)用同一個(gè)virtual_id標(biāo)識,標(biāo)識為同一個(gè)邏輯組,這個(gè)邏輯組收發(fā)的所有數(shù)據(jù)包都交給同一個(gè)虛擬協(xié)議棧處理。當(dāng)網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)接口卡NIC收到數(shù)據(jù)包的時(shí)候,根據(jù)網(wǎng)絡(luò)接口卡邏輯組的劃分,在數(shù)據(jù)包的地址結(jié)構(gòu)中添加上對應(yīng)的virtual_id標(biāo)識,如圖3所示將存放其地址信息的sockaddr_in結(jié)構(gòu)強(qiáng)制轉(zhuǎn)換成sockaddr_in_virtual結(jié)構(gòu)。當(dāng)數(shù)據(jù)包在協(xié)議棧上下層之間傳遞的時(shí)候,就根據(jù)virtual_id標(biāo)識查找對應(yīng)的函數(shù)接口和路由表項(xiàng)轉(zhuǎn)發(fā)實(shí)例[8]。當(dāng)網(wǎng)絡(luò)設(shè)備從出端口發(fā)送數(shù)據(jù)包的時(shí)候,數(shù)據(jù)包不再帶有virtual_id標(biāo)識,virtual_id標(biāo)識只在設(shè)備內(nèi)部有效,因此設(shè)備協(xié)議棧的虛擬化對對整個(gè)網(wǎng)絡(luò)是透明的。
圖3 sockaddr_in_virtual地址信息結(jié)構(gòu)
5 Linux虛擬協(xié)議棧在以太網(wǎng)交換機(jī)上的實(shí)現(xiàn)
5.1 測試平臺的搭建
搭建的測試環(huán)境拓?fù)浣Y(jié)構(gòu)如圖4所示,三層交換機(jī)設(shè)備為烽火網(wǎng)絡(luò)的S5800系列三層千兆路由交換機(jī)。將網(wǎng)絡(luò)協(xié)議棧被改造后的Linux嵌入式操作系統(tǒng)download到三層交換機(jī)設(shè)備上,該交換機(jī)設(shè)備與四臺電腦相連,PC1和PC2屬于vlan1,PC3和PC4屬于vlan2,PC1和PC3 的IP 地址相同,PC2和PC4的IP 地址相同。
在網(wǎng)管界面中輸入配置命令行,將與PC1和PC2相連的交換機(jī)接口劃分為同一個(gè)邏輯組,它們的net_device數(shù)據(jù)結(jié)構(gòu)中virtual_id都被賦值為1,與PC3和PC4相連的交換機(jī)接口也劃分為同一個(gè)邏輯組,它們的net_device數(shù)據(jù)結(jié)構(gòu)中virtual_id都被賦值為2。因此, PC1和PC3發(fā)送到交換機(jī)的數(shù)據(jù)包分別被送往不同的虛擬協(xié)議棧,實(shí)現(xiàn)業(yè)務(wù)流的隔離。
圖4 以太網(wǎng)交換機(jī)測試拓?fù)?/p>
5.2 測試結(jié)果分析
圖5顯示了在電腦PC1上ping PC2的實(shí)驗(yàn)結(jié)果,圖6顯示了在電腦PC3上ping PC4的實(shí)驗(yàn)結(jié)果,雖然PC1和PC2的IP地址相同,但是業(yè)務(wù)流之間互不影響,相互隔離。圖7和圖8顯示了協(xié)議棧經(jīng)過一虛多虛擬化后每個(gè)虛擬協(xié)議棧都有自己獨(dú)立的路由轉(zhuǎn)發(fā)表。
由上可知,經(jīng)過網(wǎng)絡(luò)協(xié)議棧虛擬化的虛擬設(shè)備可以承載不同的業(yè)務(wù),或者服務(wù)于不同的用戶群,達(dá)到業(yè)務(wù)隔離提升網(wǎng)絡(luò)可靠性和安全性,降低用戶成本,并可以實(shí)現(xiàn)多用戶群管理隔離,有效簡化運(yùn)維。
圖5 PC1 ping PC2實(shí)驗(yàn)結(jié)果
圖6 PC3 ping PC4實(shí)驗(yàn)結(jié)果
圖7 虛擬協(xié)議棧1的路由表 圖8 虛擬協(xié)議棧2的路由表
6 結(jié)論
本文描述了Linux協(xié)議棧虛擬化技術(shù)的實(shí)現(xiàn)框架,并通過設(shè)備驗(yàn)證了協(xié)議棧虛擬化技術(shù)對業(yè)務(wù)流的隔離。運(yùn)用Linux協(xié)議棧的虛擬化技術(shù)可以將一臺以太網(wǎng)交換機(jī)虛擬成多臺專用的三層交換機(jī),每個(gè)虛擬交換機(jī)都有自己獨(dú)立的路由表轉(zhuǎn)發(fā)實(shí)例VRF和相應(yīng)的接口[9]。虛擬協(xié)議棧的交換機(jī)設(shè)備可以幫助用戶快速部署網(wǎng)絡(luò),實(shí)現(xiàn)業(yè)務(wù)流的隔離,節(jié)約網(wǎng)絡(luò)成本,提高網(wǎng)絡(luò)的可拓展性和彈性[10]。
參考文獻(xiàn)
[1] 王佳雋,呂智慧,吳杰,等.云計(jì)算技術(shù)發(fā)展分析及其應(yīng)用探討[J].計(jì)算機(jī)工程與設(shè)計(jì),2010(20):4404-4409.
[2] Smith J.E, Nair Ravi. The Architecture of Virtual Machines[J]. IEEE Computer, 2005 ,38(5)
[3] N.M.M.K.Chowdhury, R.Boutaba, Network virtalization:state of the Art and research challenges[J].IEEE Communication Magazine, 2009,47(7):20-26
[4] 徐立冰.云計(jì)算和大數(shù)據(jù)時(shí)代網(wǎng)絡(luò)技術(shù)揭秘[M].北京:人民郵電出版社,2013:133-154.
[5] 樊東東,莫瀾.Linux內(nèi)核源碼剖析-TCP/IP實(shí)現(xiàn)[M].北京: 機(jī)械工業(yè)出版社, 2010: 11-14.
[6] O’Reilly Media,Inc.深入理解Linux網(wǎng)絡(luò)技術(shù)內(nèi)幕[M].夏安.閆江毓.黃景昌,譯.北京:中國電力出版社,2009:145-167.
[7] E. Rosen, Y. Rekhter, BGP/MPLS IP Virtual Private Networks[J].RFC4364. February 2006.
[8] 王東洋, 基于虛擬設(shè)備的虛擬交換機(jī)設(shè)計(jì)[J]. SOFTWARE , 2012,33(1).
[9] 任德玲.韋衛(wèi).基于IPSec的MPLS IP VPN 的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2006,23(3):116-118.
[10] 李丹,陳貴海,任豐原,等.數(shù)據(jù)中心網(wǎng)絡(luò)的研究進(jìn)展與趨勢[J].計(jì)算機(jī)學(xué)報(bào),2014,37(2):267-268.
【基于以太網(wǎng)交換機(jī)的Linux協(xié)議棧虛擬化技術(shù)】相關(guān)文章:
基于虛擬扇區(qū)的Flash存儲管理技術(shù)03-18
基于虛擬現(xiàn)實(shí)技術(shù)的景物仿真03-08
基于虛擬現(xiàn)實(shí)技術(shù)的物理實(shí)驗(yàn)?zāi)M03-07
基于OMAP5912的Linux內(nèi)核移植技術(shù)03-07
基于Linux的信息發(fā)布終端網(wǎng)絡(luò)通信技術(shù)的研究03-07
光纖環(huán)路工業(yè)以太網(wǎng)交換機(jī)的設(shè)計(jì)03-18