国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 網(wǎng)絡(luò)通信 > 正文

通用操作系統(tǒng)交換路由器操作系統(tǒng)實(shí)現(xiàn)

2019-11-03 10:25:09
字體:
供稿:網(wǎng)友
潘登,徐佩霞

  (中國(guó)科學(xué)技術(shù)大學(xué)電子工程與信息科學(xué)系,合肥,230027)

  摘 要:提出了一種將通用操作系統(tǒng)及其上層路由軟件移植到交換式路由器平臺(tái)上的方案。此方案可以向上屏蔽交換式路由器與傳統(tǒng)的路由器體系結(jié)構(gòu)上的區(qū)別,從而把通用操作系統(tǒng)及其上層路由軟件移植到交換式路由器的平臺(tái)上;同時(shí)兼顧數(shù)據(jù)通信和管理維護(hù)方面的需求,為上層路由軟件提供了與傳統(tǒng)路由器相同的接口,從而使基于通用操作系統(tǒng)的路由軟件可以在不損失可升級(jí)性的條件下快速移植到交換式路由器上。實(shí)際應(yīng)用證實(shí)了該方案具有良好的靈活性和兼容性。  關(guān)鍵詞:交換式路由器;通用操作系統(tǒng);路由器操作系統(tǒng)

  引 言

  路由器最重要的工作是根據(jù)ip包頭和路由、過濾規(guī)則轉(zhuǎn)發(fā)IP包。其他功能還包括路由表的維護(hù)與路由器系統(tǒng)的維護(hù)。實(shí)際上路由器可以看成是一種針對(duì)IP網(wǎng)絡(luò)路由需求而設(shè)計(jì)的專用計(jì)算機(jī)。隨著因特網(wǎng)所承載的業(yè)務(wù)的演進(jìn),因特網(wǎng)對(duì)于路由器性能的要求也日漸提高。在交換式路由器中,包轉(zhuǎn)發(fā)等絕大多數(shù)處理已經(jīng)轉(zhuǎn)移到以端口為中心的硬件中完成,只有路由規(guī)則的生成與維護(hù)、網(wǎng)絡(luò)管理和系統(tǒng)維護(hù)等比較復(fù)雜的工作仍由軟件部分完成。

  實(shí)用中路由器所采用的操作系統(tǒng)可分為三大類:(1)以Cisco的IOS為代表的專用操作系統(tǒng),常見于網(wǎng)絡(luò)骨干節(jié)點(diǎn);(2)以VxWorks為代表的嵌入式系統(tǒng),常見于小型辦公/家用接入設(shè)備上;(3)采用通用操作系統(tǒng)的則在骨干節(jié)點(diǎn)和用戶接入設(shè)備上都有這類設(shè)備。例如Juniper的路由產(chǎn)品就采用linux作為操作系統(tǒng)。通用操作系統(tǒng)上的各種路由、網(wǎng)管軟件的開發(fā)已經(jīng)有相當(dāng)長(zhǎng)時(shí)間,其功能、性能、穩(wěn)定性和升級(jí)靈活性都很優(yōu)秀,但這些軟件仍然是針對(duì)傳統(tǒng)路由器體系結(jié)構(gòu)開發(fā)的,無(wú)法直接應(yīng)用于新的路由器體系結(jié)構(gòu)。本文提出在通用操作系統(tǒng)的驅(qū)動(dòng)棧中插入一個(gè)中間層,這樣對(duì)系統(tǒng)內(nèi)核及和運(yùn)行在其上的路由、網(wǎng)管等上層軟件屏蔽了下層硬件的特殊性,從而把上層軟件和高速硬件平臺(tái)結(jié)合起來。該方案已經(jīng)應(yīng)用于高速邊緣路由器中,并表現(xiàn)出了良好的實(shí)用性和可擴(kuò)展性。

  1 交換式路由器與傳統(tǒng)路由器在體系結(jié)構(gòu)上的差別

  路由器工作在網(wǎng)絡(luò)的第三層,其處理工作主要涵蓋七層模型中的下三層,包括:物理接口處理、數(shù)據(jù)鏈路層處理、網(wǎng)絡(luò)層的路由查找、轉(zhuǎn)發(fā)以及隊(duì)列管理等[1]。在傳統(tǒng)的路由器體系結(jié)構(gòu)中,硬件部分只實(shí)現(xiàn)物理層的處理,其余工作需要消耗系統(tǒng)計(jì)算資源完成:包括CPU周期、內(nèi)存容量和總線帶寬等,因此性能也受限于這些資源。而在交換式路由器中,路由處理機(jī)僅處理系統(tǒng)維護(hù)、路由表維護(hù)等少量工作,數(shù)據(jù)流的處理都由相對(duì)獨(dú)立的硬件完成,不再受限于系統(tǒng)計(jì)算資源,因此其性能遠(yuǎn)優(yōu)于傳統(tǒng)路由器[2]。如圖1所示。





  傳統(tǒng)路由器和交換式路由器在體系結(jié)構(gòu)方面有明顯的區(qū)別:在傳統(tǒng)路由器中,所有的物理接口直接掛接在總線上,內(nèi)核可以通過總線直接訪問這些接口;而在交換式路由器中,只有控制卡是直接掛接在總線上的,內(nèi)核必須通過控制卡間接訪問各個(gè)接口。這導(dǎo)致操作系統(tǒng)內(nèi)核中代表網(wǎng)絡(luò)接口的驅(qū)動(dòng)對(duì)象的區(qū)別:在傳統(tǒng)路由器中,內(nèi)核存在若干網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)對(duì)象實(shí)例,每個(gè)實(shí)例通過總線直接維護(hù)一個(gè)端口,為內(nèi)核及其上面的上層軟件提供基本操作支持。而在交換式路由器中,普通的網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)對(duì)象無(wú)法直接維護(hù)端口,也無(wú)法支持系統(tǒng)內(nèi)核和上層軟件操作。因此,交換式路由器體系結(jié)構(gòu)的特殊性使得通用操作系統(tǒng)和上層軟件無(wú)法直接應(yīng)用。針對(duì)這個(gè)問題有兩種解決辦法:(1)大量修改內(nèi)核和各種相關(guān)軟件的源代碼以適應(yīng)新的體系結(jié)構(gòu)。這種做法存在開發(fā)工作量大、周期長(zhǎng)、局限性強(qiáng)的缺點(diǎn),喪失了使用通用操作系統(tǒng)的靈活性;(2)在驅(qū)動(dòng)棧中增加一個(gè)中間層,支持普通網(wǎng)絡(luò)驅(qū)動(dòng)對(duì)象所能支持的一切操作,這樣系統(tǒng)內(nèi)核和上層軟件基本上不必修改就可以運(yùn)行在交換式路由器上。這就是本文所提出的中間層方案。這種方案克服了第一種方法的復(fù)雜性,在保持靈活性的基礎(chǔ)上,可以快速地把通用操作系統(tǒng)及上層軟件移植到交換式路由器的硬件平臺(tái)上。

  2 中間層設(shè)計(jì)

  中間層功能包括數(shù)據(jù)通信和控制兩個(gè)方面。從數(shù)據(jù)通信方面考慮,每個(gè)端口的功能都等效于傳統(tǒng)路由器中的一個(gè)網(wǎng)絡(luò)接口,所以每個(gè)物理端口在內(nèi)核中都應(yīng)有對(duì)應(yīng)的網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例。這樣才能支持各種上層軟件運(yùn)行,滿足數(shù)據(jù)通信功能的需要。

  從控制功能方面考慮,對(duì)上要把每一種可能的邏輯操作映射成硬件操作;對(duì)下要能夠和多個(gè)設(shè)備通信。上層應(yīng)用包括系統(tǒng)維護(hù)、路由軟件、網(wǎng)管軟件;下層設(shè)備包括處理引擎和端口。控制功能的具體實(shí)現(xiàn)和硬件平臺(tái)有關(guān)。考慮到多種應(yīng)用可能同時(shí)操作一個(gè)硬件設(shè)備,一種應(yīng)用也可能同時(shí)操作多個(gè)設(shè)備,在實(shí)現(xiàn)時(shí)必須考慮到對(duì)于多并發(fā)操作的支持。

  基于上述考慮,中間層由控制卡驅(qū)動(dòng)模塊和若干網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例組成。在圖2(a,b)中分別給出了傳統(tǒng)路由器的結(jié)構(gòu)與驅(qū)動(dòng)方式以及本文所提出的中間層所處的位置與驅(qū)動(dòng)方式。  



  控制卡驅(qū)動(dòng)模塊作為中間層的核心,維護(hù)控制卡上所有的端口、內(nèi)存映射、中斷和循環(huán)緩沖隊(duì)列資源。它實(shí)現(xiàn)了數(shù)據(jù)通道和控制通道。對(duì)下直接驅(qū)動(dòng)控制卡、與各個(gè)端口、處理引擎通信;對(duì)上,一方面通過內(nèi)核調(diào)用陷阱方式提供控制通道接口;另一方面向虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例提供數(shù)據(jù)通道接口。虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例在操作系統(tǒng)內(nèi)核為各個(gè)物理端口實(shí)現(xiàn)網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例。它們工作在控制卡驅(qū)動(dòng)模塊的基礎(chǔ)上,并不直接控制硬件,故稱為虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例。虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例封裝控制卡驅(qū)動(dòng)模塊提供的數(shù)據(jù)傳輸功能,并為內(nèi)核和上層軟件提供與普通網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例相同的調(diào)用接口。下面分別給出數(shù)據(jù)通道和控制通道的實(shí)現(xiàn)方案。

  2.1 數(shù)據(jù)通道的功能與實(shí)現(xiàn)

  虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例和物理端口是一一對(duì)應(yīng)的。內(nèi)核數(shù)據(jù)收發(fā)的功能包括3個(gè)方面:

  (1)發(fā)往某虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例的數(shù)據(jù)包應(yīng)該由其對(duì)應(yīng)端口輸出;

  (2)這個(gè)端口所收到的包也通過該虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例向系統(tǒng)內(nèi)核提交;

  (3)中間層也可以對(duì)虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例進(jìn)行流控操作,以避免因擁塞導(dǎo)致數(shù)據(jù)丟失。

  注意到圖2(b)中的交換結(jié)構(gòu)以定長(zhǎng)信元交換數(shù)據(jù),其格式如圖3所示,其中信元頭占4字節(jié),包括處理引擎號(hào)和端口號(hào)域。對(duì)于收/發(fā)信元,處理引擎號(hào)和端口號(hào)分別為該信元的源端口的和目的端口的對(duì)應(yīng)值。

  根據(jù)圖2(b)所示的系統(tǒng)結(jié)構(gòu)可知:由處理引擎號(hào)和端口號(hào)可以確定端口的物理位置。控制卡驅(qū)動(dòng)模塊在其內(nèi)部的驅(qū)動(dòng)信息數(shù)組中維護(hù)虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例和端口之間的對(duì)應(yīng)關(guān)系。



  發(fā)送數(shù)據(jù)時(shí),虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例從內(nèi)核網(wǎng)絡(luò)部分獲取待發(fā)送的數(shù)據(jù),偕同指向該實(shí)例自己的指針一起提交給控制卡驅(qū)動(dòng)模塊。一方面,控制卡驅(qū)動(dòng)模塊通過這個(gè)指針可以對(duì)虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例進(jìn)行流控設(shè)置;另一方面,控制卡驅(qū)動(dòng)模塊根據(jù)虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例指針查驅(qū)動(dòng)信息表得到目標(biāo)端口物理位置信息,包括處理引擎號(hào)和端口號(hào)。端口物理位置信息將被填充到所有用來承載待發(fā)送數(shù)據(jù)包的信元頭中。控制卡驅(qū)動(dòng)模塊通過控制卡把信元送到交換結(jié)構(gòu),而交換結(jié)構(gòu)和處理引擎分別根據(jù)處理引擎號(hào)和端口號(hào)將信元轉(zhuǎn)發(fā)到到目標(biāo)端口。最后端口從接收到的信元中恢復(fù)出原始數(shù)據(jù)發(fā)出。

  接收數(shù)據(jù)時(shí),端口也會(huì)將數(shù)據(jù)拆分到若干信元中逐級(jí)上傳。考慮到交換結(jié)構(gòu)的循環(huán)優(yōu)先機(jī)制,一個(gè)數(shù)據(jù)包上傳的過程可能被來自其他端口的數(shù)據(jù)搶斷。所以控制卡驅(qū)動(dòng)模塊對(duì)于接收到的信元按源端口位置信息(包括處理引擎號(hào)和端口號(hào))保存到不同的緩沖區(qū)中。當(dāng)接收到該數(shù)據(jù)包相關(guān)的全部信元,控制驅(qū)動(dòng)模塊即可重組該數(shù)據(jù),并根據(jù)源端口位置信息查驅(qū)動(dòng)信息表以得到指向該端口對(duì)應(yīng)虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例的指針,進(jìn)而激活該虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例接收數(shù)據(jù)。虛擬網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例從控制卡驅(qū)動(dòng)模塊中獲取數(shù)據(jù)后,按照網(wǎng)絡(luò)驅(qū)動(dòng)的常規(guī)方式調(diào)用netif-rx接口向內(nèi)核提交數(shù)據(jù)。數(shù)據(jù)收發(fā)實(shí)現(xiàn)結(jié)構(gòu)如圖4所示。



  值得注意的是,在交換式路由器中,處理引擎通過交換結(jié)構(gòu)交換的是IP包;而通用操作系統(tǒng)中網(wǎng)絡(luò)驅(qū)動(dòng)通常處理鏈路層的幀。即控制卡驅(qū)動(dòng)模塊數(shù)據(jù)通道對(duì)上對(duì)下的數(shù)據(jù)格式是不同的。因此,在發(fā)送數(shù)據(jù)時(shí)控制卡驅(qū)動(dòng)模塊需要從得到的鏈路幀中提取IP包再轉(zhuǎn)發(fā)到端口;而接收數(shù)據(jù)時(shí)則對(duì)來自端口的IP包進(jìn)行鏈路幀封裝再向上提交。以以太網(wǎng)為例,需要恢復(fù)的包括源和目標(biāo)站的物理地址、載荷類型和幀校驗(yàn)[3]。對(duì)于承載IP包的以太幀,顯然其目標(biāo)站物理地址和載荷類型[4]都是已知的。實(shí)現(xiàn)時(shí)采用的操作系統(tǒng)是Linux,通過在虛擬網(wǎng)絡(luò)驅(qū)動(dòng)源代碼中進(jìn)行設(shè)置可以使內(nèi)核不進(jìn)行幀校驗(yàn)[5]。所以只有源站物理地址未知。如果要求硬件給出真實(shí)的源站物理地址,則增加了硬件的復(fù)雜度;而若在控制卡驅(qū)動(dòng)模塊中偽造源物理地址,則可能導(dǎo)致內(nèi)核的ARP管理混亂。為簡(jiǎn)化硬件設(shè)計(jì),實(shí)現(xiàn)時(shí)采用了在控制卡驅(qū)動(dòng)模塊中偽造源物理地址的辦法,同時(shí)修改虛擬網(wǎng)絡(luò)驅(qū)動(dòng)源代碼,重載幀頭處理函數(shù)[6]。這樣內(nèi)核ARP表就不受偽造地址的影響,其獲取和刷新通過查詢端口ARP記錄實(shí)現(xiàn)。

  2.2 控制通道的功能與實(shí)現(xiàn)

  控制功能的通信也是基于信元的,其操作包括維護(hù)管理和表同步兩類。維護(hù)管理主要是進(jìn)行各種查詢,通常通過若干次雙向通信完成。每次通信有效載荷都只有幾個(gè)字節(jié),由一個(gè)信元即可承載。而表同步則是將上層軟件維護(hù)的表復(fù)制到相關(guān)硬件中,包括ARP表、路由和分類表等。表同步操作涉及大量數(shù)據(jù)傳輸,需要由多個(gè)信元承載。控制功能都是針對(duì)設(shè)備進(jìn)行的,所以在控制/反饋信元中也必須包括目標(biāo)設(shè)備的物理位置信息。

  在實(shí)際運(yùn)行期間,所有的上層應(yīng)用和設(shè)備之間的控制通信復(fù)用控制通道,其特點(diǎn)為:

  (1)不同的應(yīng)用可能同時(shí)訪問同一設(shè)備;

  (2)一個(gè)應(yīng)用也可能同時(shí)訪問多個(gè)設(shè)備;

  (3)同一應(yīng)用對(duì)于同一個(gè)設(shè)備的操作一般都是順序的。

  為支持這種復(fù)用操作,所有承載控制信息和反饋信息的頭部除包括目標(biāo)硬件的物理位置和操作指令外,還包括命令類型、應(yīng)用類型信息。控制/反饋用信元結(jié)構(gòu)如圖5所示。



  圖5中:處理引擎號(hào)和端口號(hào),確定設(shè)備的物理位置;收/發(fā)信元分別為該信元的源端口的和目的端口的對(duì)應(yīng)值;命令碼在設(shè)備和應(yīng)用之間定義。每種可能的操作分配一個(gè)代碼;應(yīng)用碼在控制卡驅(qū)動(dòng)模塊和上層應(yīng)用之間預(yù)定義。每種可能的應(yīng)用分配一個(gè)代碼。這些應(yīng)用包含網(wǎng)管、路由維護(hù)、硬件維護(hù)和ARP信息獲取等。

  上層應(yīng)用通過內(nèi)核調(diào)用陷井(IOCTL)發(fā)起控制通道操作,同時(shí)給出目標(biāo)設(shè)備物理位置、命令類型代碼和應(yīng)用類型代碼。控制卡驅(qū)動(dòng)模塊把這些信息填充到控制信元中再將其發(fā)往設(shè)備。設(shè)備把這些代碼直接復(fù)制到反饋信元中,再在后面追加上反饋信息。控制卡驅(qū)動(dòng)模塊為每一種應(yīng)用分配一個(gè)循環(huán)緩沖區(qū),把收到的反饋根據(jù)應(yīng)用類型排入相應(yīng)隊(duì)列中。上層應(yīng)用從其所對(duì)應(yīng)的循環(huán)緩沖區(qū)中讀取反饋信元,然后根據(jù)信元中的物理位置信息、命令碼就可以確定該反饋對(duì)應(yīng)的原始命令,從而對(duì)反饋數(shù)據(jù)進(jìn)行適當(dāng)處理。這樣就實(shí)現(xiàn)了各種控制功能對(duì)控制通道的復(fù)用。如圖6所示。



  3 結(jié)論

  鑒于傳統(tǒng)路由器體系結(jié)構(gòu)和交換式路由器體系結(jié)構(gòu)的區(qū)別,通用操作系統(tǒng)及在其上開發(fā)的路由軟件無(wú)法直接應(yīng)用于交換式路由器。本文提出的中間層方案可以有效地解決這個(gè)問題。該方案全面考慮了數(shù)據(jù)通信和管理維護(hù)方面的需求,為上層提供了與原有模型基本相同的接口,并使得路由軟件在不損失其靈活性和可升級(jí)性的條件下直接應(yīng)用于交換式路由器中。雖然該方案只是在特定的平臺(tái)和特定的操作系統(tǒng)上得到了實(shí)現(xiàn),但是不難看出,這種思路對(duì)操作系統(tǒng)并沒有特殊的依賴性,完全可以移植到其他通用操作系統(tǒng)上。本文提出的方案已經(jīng)在國(guó)家863項(xiàng)目實(shí)用化綜合接入系統(tǒng)的高速邊緣路由器的研制中取得了良好的實(shí)際效果。本文為國(guó)產(chǎn)高性能路由器的軟件開發(fā)提出了一種高效快捷的解決方案,該方案具有良好的應(yīng)用前景。 

  參考文獻(xiàn)

  [1]Kurose JF,Ross K W.Computer networking:a top-down apPRoach featuring the internet[M].Addison Wesley Longman′s Press,2001.332~341.

  [2]梁阿磊,等.路由器體系結(jié)構(gòu)及其發(fā)展[J].小型微型計(jì)算機(jī)系統(tǒng),2001,8:943~945.

  [3]Media access control frame structure[S].IEEE Std 802.3,1998.36~40.

  [4]Charles Hornig.RFC 894:a standard for the trans-mission of IPdatagrams overEthernetnetworks[S].1984.1~2.

  [5]Bovet DP.Understanding Linux kernel[M].Oreil-ley Press,2002.683~685

  [6]Rubini A.Linux device drivers.2nd edition[M].Or-eilley Press,2001.455~458


摘自 數(shù)據(jù)采集與處理
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 商城县| 丹凤县| 武山县| 临沭县| 沛县| 石楼县| 七台河市| 华容县| 梁山县| 昭平县| 乌苏市| 洛南县| 土默特左旗| 洞口县| 武胜县| 白银市| 永年县| 嘉义市| 泸定县| 青岛市| 锡林郭勒盟| 铜陵市| 阳泉市| 南川市| 通化市| 郁南县| 克山县| 兴宁市| 清远市| 达尔| 长春市| 长沙县| 博爱县| 汝城县| 普宁市| 怀仁县| 枞阳县| 潍坊市| 老河口市| 贺兰县| 鸡东县|