日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

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


從控制功能方面考慮,對上要把每一種可能的邏輯操作映射成硬件操作;對下要能夠和多個設(shè)備通信 。上層應(yīng)用包括系統(tǒng)維護、路由軟件、網(wǎng)管軟件;下層設(shè)備包括處理引擎和端口 ??刂乒δ艿木唧w實現(xiàn)和硬件平臺有關(guān) 。考慮到多種應(yīng)用可能同時操作一個硬件設(shè)備,一種應(yīng)用也可能同時操作多個設(shè)備,在實現(xiàn)時必須考慮到對于多并發(fā)操作的支持 。
基于上述考慮,中間層由控制卡驅(qū)動模塊和若干網(wǎng)絡(luò)驅(qū)動實例組成 。在圖2(a,b)中分別給出了傳統(tǒng)路由器的結(jié)構(gòu)與驅(qū)動方式以及本文所提出的中間層所處的位置與驅(qū)動方式 。
 
控制卡驅(qū)動模塊作為中間層的核心,維護控制卡上所有的端口、內(nèi)存映射、中斷和循環(huán)緩沖隊列資源 。它實現(xiàn)了數(shù)據(jù)通道和控制通道 。對下直接驅(qū)動控制卡、與各個端口、處理引擎通信;對上,一方面通過內(nèi)核調(diào)用陷阱方式提供控制通道接口;另一方面向虛擬網(wǎng)絡(luò)驅(qū)動實例提供數(shù)據(jù)通道接口 。虛擬網(wǎng)絡(luò)驅(qū)動實例在操作系統(tǒng)內(nèi)核為各個物理端口實現(xiàn)網(wǎng)絡(luò)驅(qū)動實例 。它們工作在控制卡驅(qū)動模塊的基礎(chǔ)上,并不直接控制硬件,故稱為虛擬網(wǎng)絡(luò)驅(qū)動實例 。虛擬網(wǎng)絡(luò)驅(qū)動實例封裝控制卡驅(qū)動模塊提供的數(shù)據(jù)傳輸功能,并為內(nèi)核和上層軟件提供與普通網(wǎng)絡(luò)驅(qū)動實例相同的調(diào)用接口 。下面分別給出數(shù)據(jù)通道和控制通道的實現(xiàn)方案 。
2.1 數(shù)據(jù)通道的功能與實現(xiàn)
虛擬網(wǎng)絡(luò)驅(qū)動實例和物理端口是一一對應(yīng)的 。內(nèi)核數(shù)據(jù)收發(fā)的功能包括3個方面:
(1)發(fā)往某虛擬網(wǎng)絡(luò)驅(qū)動實例的數(shù)據(jù)包應(yīng)該由其對應(yīng)端口輸出;
(2)這個端口所收到的包也通過該虛擬網(wǎng)絡(luò)驅(qū)動實例向系統(tǒng)內(nèi)核提交;
(3)中間層也可以對虛擬網(wǎng)絡(luò)驅(qū)動實例進行流控操作,以避免因擁塞導(dǎo)致數(shù)據(jù)丟失 。
注重到圖2(b)中的交換結(jié)構(gòu)以定長信元交換數(shù)據(jù),其格式如圖3所示,其中信元頭占4字節(jié),包括處理引擎號和端口號域 。對于收/發(fā)信元,處理引擎號和端口號分別為該信元的源端口的和目的端口的對應(yīng)值 。
根據(jù)圖2(b)所示的系統(tǒng)結(jié)構(gòu)可知:由處理引擎號和端口號可以確定端口的物理位置 。控制卡驅(qū)動模塊在其內(nèi)部的驅(qū)動信息數(shù)組中維護虛擬網(wǎng)絡(luò)驅(qū)動實例和端口之間的對應(yīng)關(guān)系 。
 
發(fā)送數(shù)據(jù)時,虛擬網(wǎng)絡(luò)驅(qū)動實例從內(nèi)核網(wǎng)絡(luò)部分獲取待發(fā)送的數(shù)據(jù),偕同指向該實例自己的指針一起提交給控制卡驅(qū)動模塊 。一方面,控制卡驅(qū)動模塊通過這個指針可以對虛擬網(wǎng)絡(luò)驅(qū)動實例進行流控設(shè)置;另一方面,控制卡驅(qū)動模塊根據(jù)虛擬網(wǎng)絡(luò)驅(qū)動實例指針查驅(qū)動信息表得到目標端口物理位置信息,包括處理引擎號和端口號 。端口物理位置信息將被填充到所有用來承載待發(fā)送數(shù)據(jù)包的信元頭中 ??刂瓶?qū)動模塊通過控制卡把信元送到交換結(jié)構(gòu),而交換結(jié)構(gòu)和處理引擎分別根據(jù)處理引擎號和端口號將信元轉(zhuǎn)發(fā)到到目標端口 。最后端口從接收到的信元中恢復(fù)出原始數(shù)據(jù)發(fā)出 。
接收數(shù)據(jù)時,端口也會將數(shù)據(jù)拆分到若干信元中逐級上傳 ??紤]到交換結(jié)構(gòu)的循環(huán)優(yōu)先機制,一個數(shù)據(jù)包上傳的過程可能被來自其他端口的數(shù)據(jù)搶斷 。所以控制卡驅(qū)動模塊對于接收到的信元按源端口位置信息(包括處理引擎號和端口號)保存到不同的緩沖區(qū)中 。當接收到該數(shù)據(jù)包相關(guān)的全部信元,控制驅(qū)動模塊即可重組該數(shù)據(jù),并根據(jù)源端口位置信息查驅(qū)動信息表以得到指向該端口對應(yīng)虛擬網(wǎng)絡(luò)驅(qū)動實例的指針,進而激活該虛擬網(wǎng)絡(luò)驅(qū)動實例接收數(shù)據(jù) 。虛擬網(wǎng)絡(luò)驅(qū)動實例從控制卡驅(qū)動模塊中獲取數(shù)據(jù)后,按照網(wǎng)絡(luò)驅(qū)動的常規(guī)方式調(diào)用netif-rx接口向內(nèi)核提交數(shù)據(jù) 。數(shù)據(jù)收發(fā)實現(xiàn)結(jié)構(gòu)如圖4所示 。

推薦閱讀