欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法

文檔序號(hào):7768585閱讀:279來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域中的高可用技術(shù),特指一種千兆交換環(huán)境下千兆網(wǎng)卡的快 速切換方法。
背景技術(shù)
由于服務(wù)器的特殊地位,保持服務(wù)器的高可用性和安全性是企業(yè)級(jí)IT環(huán)境的重 要指標(biāo),其中最重要的一點(diǎn)是服務(wù)器網(wǎng)絡(luò)連接的高可用性,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)的規(guī) 模逐漸的增大。網(wǎng)卡綁定技術(shù)是提高服務(wù)器網(wǎng)絡(luò)連接的可用性和可靠性的有效方法之一。 多網(wǎng)卡綁定就是通過(guò)軟硬件設(shè)置將兩塊或者多塊網(wǎng)卡綁定在同一個(gè)IP地址上,使用起來(lái) 就好像在使用一塊網(wǎng)卡。許多高檔服務(wù)器的網(wǎng)卡(例如intel825^系列、3COM服務(wù)器網(wǎng)卡 等)都具有多網(wǎng)卡綁定功能。應(yīng)用和實(shí)踐表明,在千兆交換環(huán)境下,千兆網(wǎng)卡在綁定模式下工作時(shí)系統(tǒng)的可靠 性和實(shí)時(shí)性并不能滿(mǎn)足需求。具體表現(xiàn)為當(dāng)兩塊千兆網(wǎng)卡工作在綁定驅(qū)動(dòng)程序的主備模 式下時(shí),一旦當(dāng)前工作網(wǎng)卡的鏈路發(fā)生故障,綁定驅(qū)動(dòng)程序自動(dòng)將收發(fā)報(bào)文的工作切換到 備份網(wǎng)卡上,從而使得系統(tǒng)能夠正常運(yùn)行。在百兆環(huán)境下,千兆網(wǎng)卡在切換速度已經(jīng)達(dá)到十 毫秒級(jí),而千兆環(huán)境下千兆網(wǎng)卡的切換速度卻是百毫秒級(jí)。究其原因,千兆交換網(wǎng)絡(luò)是一 種全雙工能糾錯(cuò)的系統(tǒng),網(wǎng)卡物理層總是同時(shí)接收鏈路對(duì)方和本地傳輸?shù)臄?shù)據(jù)。因而,當(dāng) 鏈路斷裂時(shí),雖然網(wǎng)卡物理層接收不到任何鏈路對(duì)方的數(shù)據(jù),但是它仍然在接收本地的傳 輸信號(hào),不會(huì)去做鏈路檢測(cè)工作。因此,IEEE 802. 3標(biāo)準(zhǔn)規(guī)范第40條規(guī)定,當(dāng)網(wǎng)卡內(nèi)部的 maxwait_timer定時(shí)器(設(shè)置時(shí)間350士5毫秒)超時(shí)后才能判定鏈路狀態(tài)斷裂故障。在許 多對(duì)高可靠和高靈敏性要求極高的關(guān)鍵服務(wù)器應(yīng)用中,這種情況無(wú)疑將無(wú)法滿(mǎn)足需求。

發(fā)明內(nèi)容
本發(fā)明要解決的問(wèn)題就在于針對(duì)千兆網(wǎng)卡在操作系統(tǒng)內(nèi)核中千兆環(huán)境下切換速 度過(guò)慢的缺陷,本發(fā)明提供一種千兆網(wǎng)卡鏈路狀態(tài)監(jiān)控技術(shù)方法,該方法應(yīng)用于千兆網(wǎng)卡 設(shè)備驅(qū)動(dòng)程序中后,可以實(shí)現(xiàn)在千兆網(wǎng)絡(luò)環(huán)境下,操作系統(tǒng)內(nèi)核中的千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程 序?qū)W(wǎng)卡鏈路故障的感知性能提升一個(gè)數(shù)量級(jí),即百毫秒級(jí)提升至十毫秒級(jí)。為解決上述技術(shù)問(wèn)題,本發(fā)明的技術(shù)方案為設(shè)計(jì)一個(gè)輪詢(xún)定時(shí)器、一個(gè)歷史鏈路 狀態(tài)變量和一個(gè)鏈路斷裂變量,在千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序中加入用于輪詢(xún)網(wǎng)卡寄存器的定 時(shí)器,該定時(shí)器通過(guò)輪詢(xún)網(wǎng)卡寄存器內(nèi)容檢測(cè)網(wǎng)絡(luò)鏈路狀態(tài)變化情況,在鏈路狀態(tài)從連通 變化到斷開(kāi)時(shí),設(shè)置網(wǎng)卡中斷寄存器的鏈路狀態(tài)改變位,來(lái)提前引發(fā)鏈路狀態(tài)改變中斷。本發(fā)明設(shè)計(jì)一個(gè)輪詢(xún)定時(shí)器、一個(gè)歷史鏈路狀態(tài)變量和一個(gè)鏈路斷裂變量,以實(shí) 現(xiàn)對(duì)鏈路狀態(tài)斷裂信息的快速獲取和快速響應(yīng),從而實(shí)現(xiàn)網(wǎng)卡的快速切換,借助鏈路狀態(tài) 寄存器的值變化來(lái)獲取網(wǎng)絡(luò)鏈路斷裂信息。網(wǎng)卡寄存器輪詢(xún)定時(shí)器在網(wǎng)卡設(shè)備驅(qū)動(dòng)初始化函數(shù)中進(jìn)行對(duì)歷史鏈路狀態(tài)變量 和鏈路斷裂變量的初始化和本定時(shí)器的啟動(dòng),在網(wǎng)卡驅(qū)動(dòng)反初始化函數(shù)中關(guān)閉本定時(shí)器,定時(shí)器函數(shù)通過(guò)讀取網(wǎng)卡鏈路狀態(tài)改變寄存器值獲取本次網(wǎng)卡鏈路狀態(tài)和歷史網(wǎng)卡鏈路 狀態(tài),從而判斷當(dāng)前網(wǎng)卡的鏈路斷裂狀態(tài),并通過(guò)設(shè)置網(wǎng)卡中斷寄存器鏈路狀態(tài)改變中斷 位引發(fā)網(wǎng)卡鏈路改變中斷,定時(shí)器時(shí)間間隔可根據(jù)鏈路狀態(tài)信息在500毫秒和20毫秒之間 進(jìn)行切換。輪詢(xún)定時(shí)器函數(shù)的工作步驟為(1)、讀取當(dāng)前網(wǎng)卡媒體獨(dú)立接口寄存器組中鏈路狀態(tài)寄存器的值,獲得本次掃描 時(shí)鏈路的狀態(tài)信息(鏈路是否連通);O)、讀取上一次掃描后保存的當(dāng)前網(wǎng)卡的鏈路狀態(tài),如果非連通,設(shè)置定時(shí)器下 次啟動(dòng)時(shí)間間隔為500毫秒,轉(zhuǎn)(5);(3)、如果本次掃描的鏈路狀態(tài)為非連通,即鏈路狀態(tài)從連通狀態(tài)變化為非連通狀 態(tài),設(shè)置中斷屏蔽寄存器使中斷寄存器寫(xiě)使能,將中斷寄存器鏈路狀態(tài)改變位置位,引發(fā)網(wǎng) 卡鏈路狀態(tài)改變中斷,標(biāo)記鏈路斷裂狀態(tài),并設(shè)置定時(shí)器下次啟動(dòng)時(shí)間為500毫秒,轉(zhuǎn)(5);(4)、如果本次掃描的鏈路狀態(tài)為連通,即兩次掃描鏈路狀態(tài)都連通,設(shè)置定時(shí)器 下次啟動(dòng)時(shí)間為20毫秒;(5)、將本次掃描獲得的鏈路狀態(tài)進(jìn)行記錄,初始化輪詢(xún)定時(shí)器函數(shù)和定時(shí)器。輪詢(xún)定時(shí)器的初始化步驟為(1)、初始化鏈路斷裂狀態(tài)為0 ;(2)、設(shè)置輪詢(xún)定時(shí)器時(shí)間間隔為20毫秒;(3)、初始化定時(shí)器函數(shù)句柄;(4)、讀取鏈路狀態(tài)寄存器,獲取當(dāng)前鏈路狀態(tài),記錄在歷史鏈路狀態(tài)變量中;(5)、啟動(dòng)網(wǎng)卡寄存器輪詢(xún)定時(shí)器。網(wǎng)卡寄存器輪詢(xún)定時(shí)器嵌入千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序中,通過(guò)讀取網(wǎng)卡鏈路狀態(tài)寄 存器值獲取本次網(wǎng)卡鏈路狀態(tài)和歷史網(wǎng)卡鏈路狀態(tài),從而判斷當(dāng)前網(wǎng)卡的鏈路斷裂狀態(tài), 并通過(guò)設(shè)置網(wǎng)卡中斷寄存器鏈路狀態(tài)改變中斷位引發(fā)網(wǎng)卡鏈路改變中斷,定時(shí)器時(shí)間間隔 可根據(jù)鏈路狀態(tài)信息在500毫秒和20毫秒之間進(jìn)行切換。歷史網(wǎng)卡鏈路狀態(tài)變量,記錄上次掃描網(wǎng)卡寄存器時(shí)的鏈路狀態(tài)值,為1代表鏈 路狀態(tài)連通,為0代表鏈路狀態(tài)非連通,輪詢(xún)定時(shí)器函數(shù)每次執(zhí)行都會(huì)更新歷史網(wǎng)卡鏈路 狀態(tài)變量的值。鏈路斷裂狀態(tài)變量,記錄在過(guò)去20毫秒時(shí)間內(nèi)當(dāng)前工作網(wǎng)卡的鏈路狀態(tài)是否從 連通改變非連通,為1代表發(fā)生鏈路斷裂,為0代表未發(fā)生鏈路斷裂。輪詢(xún)定時(shí)器通過(guò)網(wǎng)卡 寄存器掃描結(jié)果與歷史網(wǎng)卡鏈路狀態(tài)進(jìn)行對(duì)比獲取鏈路斷裂狀態(tài)進(jìn)行賦值,網(wǎng)卡驅(qū)動(dòng)程序 可通過(guò)該變量獲取網(wǎng)卡鏈路斷裂狀態(tài)信息。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于1、本發(fā)明由于設(shè)置的定時(shí)器時(shí)間間隔為20毫秒,遠(yuǎn)小于網(wǎng)卡的maxwait_timer定 時(shí)器值(300毫秒以上),使得千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序?qū)W(wǎng)卡鏈路狀態(tài)斷裂信息的感知能力 得到顯著提高。例如對(duì)于基于intel 825 系列網(wǎng)絡(luò)控制芯片的千兆網(wǎng)卡來(lái)說(shuō),傳統(tǒng)千兆 網(wǎng)卡設(shè)備驅(qū)動(dòng)檢測(cè)到鏈路斷裂狀態(tài)需要400毫秒左右的時(shí)間,而基于網(wǎng)卡寄存器輪詢(xún)定時(shí) 器,改進(jìn)的千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序檢測(cè)到鏈路斷裂狀態(tài)只需不到100毫秒的時(shí)間。因此,網(wǎng) 卡驅(qū)動(dòng)程序?qū)︽溌窋嗔训母兄阅艿玫酱蟠筇嵘?br> 2、本發(fā)明設(shè)計(jì)不會(huì)引入網(wǎng)卡過(guò)多額外開(kāi)銷(xiāo),千兆網(wǎng)卡物理層接收?qǐng)?bào)文的中斷時(shí)間 間隔為十微秒級(jí),本發(fā)明設(shè)置的定時(shí)器間隔為20毫秒,對(duì)網(wǎng)卡接收?qǐng)?bào)文的性能影響幾乎不 可見(jiàn)。3、本發(fā)明在千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)中引入兩個(gè)變量和一個(gè)函數(shù),只需對(duì)原有網(wǎng)卡驅(qū)動(dòng) 程序的設(shè)備初始化和反初始化函數(shù)進(jìn)行少量修改,重新編譯即可實(shí)現(xiàn),對(duì)原有設(shè)備驅(qū)動(dòng)改 動(dòng)不大,應(yīng)用過(guò)程方便敏捷。4、本發(fā)明支持平臺(tái)的多樣性,具有通用性。本發(fā)明使用通用編程語(yǔ)言實(shí)現(xiàn),可在 Linux、Unix、Solaris、Windows 多種平臺(tái)進(jìn)行應(yīng)用。5、本發(fā)明中,通過(guò)設(shè)置編譯開(kāi)關(guān)可完全兼容傳統(tǒng)的千兆網(wǎng)卡驅(qū)動(dòng)程序,兼容性和 移植性好。


圖1是本發(fā)明試驗(yàn)環(huán)境結(jié)構(gòu)圖;圖2是服務(wù)器端發(fā)包程序流程圖;圖3是客戶(hù)端收包程序流程圖;圖4是鏈路斷開(kāi)時(shí)網(wǎng)卡及驅(qū)動(dòng)的處理流程圖;圖5是千兆網(wǎng)絡(luò)中網(wǎng)卡鏈路監(jiān)控狀態(tài)轉(zhuǎn)換圖;圖6是網(wǎng)卡寄存器輪詢(xún)定時(shí)器。
具體實(shí)施例方式以下將結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。千兆網(wǎng)卡在千兆網(wǎng)絡(luò)環(huán)境的切換試驗(yàn)環(huán)境如圖1所示,其中服務(wù)器端配置兩塊 千兆以太網(wǎng)卡進(jìn)行綁定互備運(yùn)行,兩塊網(wǎng)卡通過(guò)千兆網(wǎng)線連接到千兆交換機(jī)上,客戶(hù)端機(jī) 器使用一塊網(wǎng)卡,同樣連接到千兆交換機(jī)上,通過(guò)在交換機(jī)上拔插服務(wù)器端工作網(wǎng)卡到交 換機(jī)的網(wǎng)線,模擬網(wǎng)絡(luò)鏈路故障。切換試驗(yàn)環(huán)境還包括一個(gè)服務(wù)器端的發(fā)包程序和客戶(hù)端的收包程序,針對(duì)本發(fā)明 的實(shí)際情況,我的測(cè)試環(huán)境主要包括一個(gè)發(fā)包程序和一個(gè)收包程序,即服務(wù)器端發(fā)包程序 可以根據(jù)需要,以10毫秒的時(shí)間間隔不間斷的向客戶(hù)端發(fā)送固定格式的報(bào)文,報(bào)文內(nèi)容包 括發(fā)送報(bào)文的時(shí)間戳??蛻?hù)端收包程序通過(guò)統(tǒng)計(jì)接收的數(shù)據(jù)包情況來(lái)生成丟包時(shí)間間隔和 丟包個(gè)數(shù)等丟包信息,并計(jì)算出網(wǎng)卡切換時(shí)所需要的時(shí)間。以下結(jié)合附圖分別介紹服務(wù)器 端發(fā)包程序和客戶(hù)端收包程序的具體工作流程。服務(wù)器端發(fā)包程序流程如圖2所示,在完成數(shù)據(jù)結(jié)構(gòu)和網(wǎng)絡(luò)套接字變量的初始化 后,進(jìn)行到客戶(hù)端程序的套接字鏈接建立工作,如果鏈接建立不成功,說(shuō)明客戶(hù)端端口監(jiān)聽(tīng) 程序未啟動(dòng),退出本程序;如果能成功與客戶(hù)端程序建立鏈接,進(jìn)入發(fā)送報(bào)文循環(huán),先獲取 系統(tǒng)毫秒級(jí)時(shí)間戳,將時(shí)間戳封裝成報(bào)文,將報(bào)文寫(xiě)入套接字緩沖區(qū),寫(xiě)入成功后,睡眠10 毫秒后再進(jìn)入發(fā)送報(bào)文流程??蛻?hù)端收包程序流程如圖3所示,在完成數(shù)據(jù)結(jié)構(gòu)和網(wǎng)絡(luò)套接字變量的初始化 后,客戶(hù)端收包程序就持續(xù)監(jiān)聽(tīng)網(wǎng)絡(luò)端口報(bào)文,當(dāng)報(bào)文到達(dá)時(shí),對(duì)報(bào)文進(jìn)行解析,如果是第 一次接收?qǐng)?bào)文即繼續(xù)接收下一報(bào)文,否則將報(bào)文解析得到的報(bào)文發(fā)送時(shí)間信息與上一次接收?qǐng)?bào)文的時(shí)間戳進(jìn)行求差計(jì)算得到兩次報(bào)文發(fā)送的時(shí)間差,若時(shí)間差大于20毫秒即輸出 報(bào)文編號(hào)和時(shí)間差值。試驗(yàn)過(guò)程中,當(dāng)服務(wù)器端報(bào)文發(fā)送程序和客戶(hù)端報(bào)文接收程序都啟動(dòng)后,通過(guò)拔 取服務(wù)器端工作網(wǎng)卡鏈接到交換機(jī)的網(wǎng)線來(lái)模擬網(wǎng)卡網(wǎng)絡(luò)鏈路故障,服務(wù)器的綁定設(shè)備驅(qū) 動(dòng)程序自動(dòng)完成網(wǎng)卡切換過(guò)程,可以在客戶(hù)端報(bào)文接收程序的輸出結(jié)果中獲取網(wǎng)卡切換時(shí) 間長(zhǎng)度。試驗(yàn)環(huán)境建立后,多次測(cè)試表明,在模擬網(wǎng)卡網(wǎng)絡(luò)鏈路故障時(shí),在千兆交換機(jī)環(huán)境 下,網(wǎng)卡切換時(shí)間均在350毫秒以上,而若圖1中的交換機(jī)換成百兆交換機(jī),網(wǎng)卡切換時(shí)間 基本不超過(guò)一百毫秒。因此,本發(fā)明過(guò)程的一個(gè)重要環(huán)節(jié)和難點(diǎn)是分析和查找千兆交換環(huán) 境下網(wǎng)卡切換過(guò)程的瓶頸所在。網(wǎng)卡鏈路狀態(tài)發(fā)生改變時(shí)網(wǎng)卡設(shè)備及網(wǎng)卡設(shè)備驅(qū)動(dòng)的處理流程如圖4所示,,當(dāng) 工作網(wǎng)卡鏈路斷裂時(shí),首先是物理網(wǎng)卡設(shè)備通過(guò)中斷寄存器產(chǎn)生中斷上傳到設(shè)備驅(qū)動(dòng)程 序,設(shè)備驅(qū)動(dòng)的中斷處理程序通過(guò)對(duì)私有數(shù)據(jù)的置位來(lái)記錄網(wǎng)卡狀態(tài),然后由網(wǎng)卡的看門(mén) 狗定時(shí)器通過(guò)狀態(tài)監(jiān)測(cè)確立網(wǎng)絡(luò)斷裂狀態(tài),進(jìn)行網(wǎng)卡關(guān)閉操作,綁定驅(qū)動(dòng)程序檢測(cè)到工作 網(wǎng)卡關(guān)閉后,即啟動(dòng)備份網(wǎng)卡進(jìn)行工作。根據(jù)上述分析,網(wǎng)卡鏈路斷裂時(shí)涉及到三個(gè)對(duì)象,綁定驅(qū)動(dòng)、網(wǎng)卡驅(qū)動(dòng)和物理網(wǎng) 卡,從而可以推測(cè)出網(wǎng)卡切換時(shí)間過(guò)長(zhǎng)的原因可能有以下幾種(1)綁定驅(qū)動(dòng)問(wèn)題在做網(wǎng)卡切換時(shí),綁定驅(qū)動(dòng)進(jìn)行網(wǎng)卡切換的速度太慢;(2)網(wǎng)卡驅(qū)動(dòng)問(wèn)題網(wǎng)卡設(shè)備驅(qū)動(dòng)對(duì)網(wǎng)卡物理設(shè)備中斷處理不及時(shí);(3)物理網(wǎng)卡問(wèn)題網(wǎng)卡設(shè)備中斷產(chǎn)生時(shí)間較晚。分別在網(wǎng)卡設(shè)備驅(qū)動(dòng)里的網(wǎng)卡關(guān)閉、網(wǎng)卡啟動(dòng)、網(wǎng)卡看門(mén)狗狀態(tài)監(jiān)測(cè)和網(wǎng)卡設(shè)備 中斷處理等幾個(gè)函數(shù)里加入毫秒級(jí)時(shí)間戳獲取函數(shù)并進(jìn)行輸出,通過(guò)時(shí)間先后關(guān)系和時(shí)間 差的比較分析可以發(fā)現(xiàn)從網(wǎng)卡鏈路斷裂到網(wǎng)卡設(shè)備向上發(fā)送鏈路狀態(tài)改變中斷的時(shí)間間 隔就已經(jīng)到達(dá)350毫秒以上,也就是說(shuō)切換時(shí)間過(guò)長(zhǎng)的根本原因在于物理網(wǎng)卡。IEEE 802. 3標(biāo)準(zhǔn)里對(duì)千兆網(wǎng)路的鏈路狀態(tài)監(jiān)控過(guò)程進(jìn)行了詳細(xì)的說(shuō)明,從圖5中 可以看出,當(dāng)網(wǎng)卡loc_rcvr_status值為Ν0Τ_0Κ并且maxwait_timer_done值為真時(shí),網(wǎng)卡 設(shè)備才認(rèn)為物理層鏈路由由良好狀態(tài)進(jìn)入鏈路斷開(kāi)狀態(tài)。其中maxWait_timer_done為真 的條件就是maxwait_timer定時(shí)器超時(shí),而maxwait_timer寄存器的值至少設(shè)置在350毫 秒左右。因此可以說(shuō),網(wǎng)卡物理層的標(biāo)準(zhǔn)規(guī)范也限制了物理網(wǎng)卡快速地向上層設(shè)備驅(qū)動(dòng)程 序發(fā)送鏈路狀態(tài)改變中斷。本發(fā)明另一個(gè)十分重要的工作就是需要在鏈路斷裂后,在物理網(wǎng)卡未發(fā)送中斷之 前,確定網(wǎng)卡的各個(gè)寄存器中哪些寄存器的值能夠記錄鏈路對(duì)方斷裂的信息。通過(guò)設(shè)計(jì)網(wǎng) 卡寄存器輪詢(xún)定時(shí)器函數(shù),在網(wǎng)絡(luò)鏈路斷裂試驗(yàn)?zāi)M過(guò)程比較分析網(wǎng)卡各種控制寄存器和 狀態(tài)寄存器的值發(fā)現(xiàn)當(dāng)網(wǎng)卡鏈路狀態(tài)從良好變化為故障時(shí),在數(shù)毫秒的時(shí)間間隔里,網(wǎng)卡 媒體獨(dú)立接口寄存器組里的鏈路狀態(tài)寄存器第12位值從1變化為0。這就提供了一種快速 獲取網(wǎng)絡(luò)鏈路狀態(tài)的方法,即將輪詢(xún)定時(shí)器時(shí)間間隔設(shè)為一個(gè)較小的值,通過(guò)讀取鏈路狀 態(tài)寄存器的值來(lái)判斷網(wǎng)絡(luò)鏈路狀態(tài),如果鏈路狀態(tài)寄存器的值發(fā)生了從1到0的變化,就發(fā) 生了鏈路斷裂事件。在發(fā)生鏈路斷裂事件后,可以借助網(wǎng)卡的中斷處理方法,通過(guò)設(shè)置網(wǎng)卡中斷寄存器的鏈路狀態(tài)改變中斷位來(lái)提前觸發(fā)網(wǎng)卡往上層設(shè)備驅(qū)動(dòng)程序發(fā)送的中斷,此后的流程與 正常情況下網(wǎng)卡往上層驅(qū)動(dòng)程序發(fā)送鏈路狀態(tài)改變中斷一致。本發(fā)明就是借助鏈路狀態(tài)寄存器的值變化來(lái)獲取網(wǎng)絡(luò)鏈路斷裂信息,通過(guò)設(shè)計(jì)一 個(gè)輪詢(xún)定時(shí)器、一個(gè)歷史鏈路狀態(tài)變量和一個(gè)鏈路斷裂變量來(lái)實(shí)現(xiàn)對(duì)鏈路狀態(tài)斷裂信息的 快速獲取和快速響應(yīng),從而實(shí)現(xiàn)網(wǎng)卡的快速切換。網(wǎng)卡寄存器輪詢(xún)定時(shí)器在網(wǎng)卡設(shè)備驅(qū)動(dòng)初始化函數(shù)中進(jìn)行對(duì)歷史鏈路狀態(tài)變量 和鏈路斷裂變量的初始化和本定時(shí)器的啟動(dòng),在網(wǎng)卡驅(qū)動(dòng)反初始化函數(shù)中關(guān)閉本定時(shí)器, 定時(shí)器函數(shù)通過(guò)讀取網(wǎng)卡鏈路狀態(tài)改變寄存器值獲取本次網(wǎng)卡鏈路狀態(tài)和歷史網(wǎng)卡鏈路 狀態(tài),從而判斷當(dāng)前網(wǎng)卡的鏈路斷裂狀態(tài),并通過(guò)設(shè)置網(wǎng)卡中斷寄存器鏈路狀態(tài)改變中斷 位引發(fā)網(wǎng)卡鏈路改變中斷,定時(shí)器時(shí)間間隔可根據(jù)鏈路狀態(tài)信息在500毫秒和20毫秒之間 進(jìn)行切換。輪詢(xún)定時(shí)器的工作流程如圖6所示,其工作流程可描述如下(1)、讀取當(dāng)前網(wǎng)卡媒體獨(dú)立接口寄存器組中鏈路狀態(tài)寄存器的值,獲得本次掃描 時(shí)鏈路狀態(tài)信息;O)、讀取上一次掃描后保存的當(dāng)前網(wǎng)卡的鏈路狀態(tài),如果非連通,設(shè)置定時(shí)器下 次啟動(dòng)時(shí)間間隔為500毫秒,轉(zhuǎn)(5);(3)、如果本次掃描的鏈路狀態(tài)為非連通,即鏈路狀態(tài)從連通狀態(tài)變化為非連通狀 態(tài),設(shè)置中斷屏蔽寄存器使中斷寄存器寫(xiě)使能,將中斷寄存器鏈路狀態(tài)改變位置位,引發(fā)網(wǎng) 卡鏈路狀態(tài)改變中斷,標(biāo)記鏈路斷裂狀態(tài),并設(shè)置定時(shí)器下次啟動(dòng)時(shí)間為500毫秒,轉(zhuǎn)(5);(4)、如果本次掃描的鏈路狀態(tài)為連通,即兩次掃描鏈路狀態(tài)都連通,設(shè)置定時(shí)器 下次啟動(dòng)時(shí)間為20毫秒;(5)、將本次掃描獲得的鏈路狀態(tài)進(jìn)行記錄,初始化輪詢(xún)定時(shí)器函數(shù)和定時(shí)器。歷史網(wǎng)卡鏈路狀態(tài)變量,記錄上次掃描網(wǎng)卡寄存器時(shí)的鏈路狀態(tài)值,為1代表鏈 路裝連通,為0代表鏈路狀態(tài)非連通,輪詢(xún)定時(shí)器函數(shù)每次執(zhí)行都會(huì)更新歷史網(wǎng)卡鏈路狀 態(tài)變量的值。鏈路斷裂狀態(tài)變量,記錄在過(guò)去20毫秒時(shí)間內(nèi)當(dāng)前工作網(wǎng)卡的鏈路狀態(tài)是否從 連通改變非連通,為1代表發(fā)生鏈路斷裂,為0代表未發(fā)生鏈路斷裂。輪詢(xún)定時(shí)器通過(guò)網(wǎng)卡 寄存器掃描結(jié)果與歷史網(wǎng)卡鏈路狀態(tài)進(jìn)行對(duì)比獲取鏈路斷裂狀態(tài)進(jìn)行賦值,網(wǎng)卡驅(qū)動(dòng)程序 可通過(guò)該變量獲取網(wǎng)卡鏈路斷裂狀態(tài)信息。本發(fā)明在支持軍隊(duì)某些特殊型號(hào)項(xiàng)目和關(guān)鍵行業(yè)服務(wù)器應(yīng)用中成功將綁定千兆 網(wǎng)卡的網(wǎng)卡切換時(shí)間從百毫秒級(jí)縮短為十毫秒級(jí),能有效滿(mǎn)足關(guān)鍵應(yīng)用對(duì)高可靠、強(qiáng)實(shí)時(shí) 性的嚴(yán)格需求。本發(fā)明已獲得驗(yàn)證并取得良好的應(yīng)用效果。本發(fā)明不并局限于具體的目標(biāo) 操作系統(tǒng)平臺(tái),對(duì)于Linux、Unix、Windows、Solaris等操作系統(tǒng)平臺(tái)具有通用性。
權(quán)利要求
1.一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法,其特征在于設(shè)計(jì)一個(gè)輪詢(xún)定時(shí) 器、一個(gè)歷史鏈路狀態(tài)變量和一個(gè)鏈路斷裂變量,在千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序中加入用于輪 詢(xún)網(wǎng)卡寄存器的定時(shí)器,該定時(shí)器通過(guò)輪詢(xún)網(wǎng)卡寄存器內(nèi)容檢測(cè)網(wǎng)絡(luò)鏈路狀態(tài)變化情況, 在鏈路狀態(tài)從連通變化到斷開(kāi)時(shí),設(shè)置網(wǎng)卡中斷寄存器的鏈路狀態(tài)改變位,來(lái)提前引發(fā)鏈 路狀態(tài)改變中斷。
2.根據(jù)權(quán)利要求1所述的一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法,其特征在 于網(wǎng)卡寄存器輪詢(xún)定時(shí)器在網(wǎng)卡設(shè)備驅(qū)動(dòng)初始化函數(shù)中進(jìn)行對(duì)歷史鏈路狀態(tài)變量和鏈路 斷裂變量的初始化和本定時(shí)器的啟動(dòng),在網(wǎng)卡驅(qū)動(dòng)反初始化函數(shù)中關(guān)閉本定時(shí)器,定時(shí)器 函數(shù)通過(guò)讀取網(wǎng)卡鏈路狀態(tài)改變寄存器值獲取本次網(wǎng)卡鏈路狀態(tài)和歷史網(wǎng)卡鏈路狀態(tài),從 而判斷當(dāng)前網(wǎng)卡的鏈路斷裂狀態(tài),并通過(guò)設(shè)置網(wǎng)卡中斷寄存器鏈路狀態(tài)改變中斷位引發(fā)網(wǎng) 卡鏈路改變中斷,定時(shí)器時(shí)間間隔根據(jù)鏈路狀態(tài)信息在500毫秒和20毫秒之間進(jìn)行切換。
3.根據(jù)權(quán)利要求1所述的一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法,其特征在 于輪詢(xún)定時(shí)器函數(shù)的工作步驟為(1)、讀取當(dāng)前網(wǎng)卡媒體獨(dú)立接口寄存器組中鏈路狀態(tài)寄存器的值,獲得本次掃描時(shí)鏈 路狀態(tài)信息;O)、讀取上一次掃描后保存的當(dāng)前網(wǎng)卡的鏈路狀態(tài),如果非連通,設(shè)置定時(shí)器下次啟 動(dòng)時(shí)間間隔為500毫秒,轉(zhuǎn)(5);(3)、如果本次掃描的鏈路狀態(tài)為非連通,即鏈路狀態(tài)從連通狀態(tài)變化為非連通狀態(tài), 設(shè)置中斷屏蔽寄存器使中斷寄存器寫(xiě)使能,將中斷寄存器鏈路狀態(tài)改變位置位,引發(fā)網(wǎng)卡 鏈路狀態(tài)改變中斷,標(biāo)記鏈路斷裂狀態(tài),并設(shè)置定時(shí)器下次啟動(dòng)時(shí)間為500毫秒,轉(zhuǎn)(5);、如果本次掃描的鏈路狀態(tài)為連通,即兩次掃描鏈路狀態(tài)都連通,設(shè)置定時(shí)器下次 啟動(dòng)時(shí)間為20毫秒;(5)、將本次掃描獲得的鏈路狀態(tài)進(jìn)行記錄,初始化輪詢(xún)定時(shí)器函數(shù)和定時(shí)器。
4.根據(jù)權(quán)利要求1所述的一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法,其特征在 于輪詢(xún)定時(shí)器的初始化步驟為(1)、初始化鏈路斷裂狀態(tài)為0;(2)、設(shè)置輪詢(xún)定時(shí)器時(shí)間間隔為20毫秒;(3)、初始化定時(shí)器函數(shù)句柄;(4)、讀取鏈路狀態(tài)寄存器,獲取當(dāng)前鏈路狀態(tài),記錄在歷 史鏈路狀態(tài)變量中;(5)、啟動(dòng)網(wǎng)卡寄存器輪詢(xún)定時(shí)器。
全文摘要
本發(fā)明涉及一種千兆交換環(huán)境下千兆網(wǎng)卡的快速切換方法。該方法在千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序中加入用于輪詢(xún)網(wǎng)卡寄存器的定時(shí)器,該定時(shí)器通過(guò)輪詢(xún)網(wǎng)卡寄存器內(nèi)容檢測(cè)網(wǎng)絡(luò)鏈路狀態(tài)變化情況,在鏈路狀態(tài)從連通變化到斷開(kāi)時(shí),設(shè)置網(wǎng)卡中斷寄存器的鏈路狀態(tài)改變位,來(lái)提前引發(fā)鏈路狀態(tài)改變中斷。本發(fā)明改進(jìn)的千兆網(wǎng)卡設(shè)備驅(qū)動(dòng)程序檢測(cè)到鏈路斷裂狀態(tài)只需不到100毫秒的時(shí)間。因此,網(wǎng)卡驅(qū)動(dòng)程序?qū)︽溌窋嗔训母兄阅艿玫酱蟠筇嵘?br> 文檔編號(hào)H04L12/24GK102064964SQ20101058638
公開(kāi)日2011年5月18日 申請(qǐng)日期2010年12月13日 優(yōu)先權(quán)日2010年12月13日
發(fā)明者劉曉建, 吳慶波, 孔金珠, 戴華東, 易曉東, 董攀, 邵立松, 顏躍進(jìn) 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永清县| 拉孜县| 吴忠市| 方城县| 嘉黎县| 濮阳市| 南和县| 辽源市| 寻乌县| 安宁市| 绿春县| 光山县| 西畴县| 达州市| 金秀| 醴陵市| 奈曼旗| 德令哈市| 昭觉县| 庄浪县| 闽侯县| 新营市| 桦川县| 安庆市| 万载县| 建阳市| 嘉禾县| 平陆县| 天门市| 犍为县| 孙吴县| 威信县| 周宁县| 陆河县| 台北县| 开封市| 榆林市| 孝感市| 富裕县| 鸡泽县| 志丹县|