本發明專利技術涉及路由器數據通信技術。本發明專利技術解決了現有驅動接收報文的方法中由于報文緩沖區分配函數的處理時間過長的問題,提供了一種驅動接收報文的方法,其技術方案可概括為:預先分配一定數目的報文緩沖區,并為每個報文緩沖區創建對應的報文描述符,驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數,取出對應個數的報文描述符,驅動軟件從步驟C中所述的有報文的BD中接收報文后,依次根據取出的報文描述符中的報文緩沖區的地址指針更新所述BD中的報文緩沖區指針。本發明專利技術的有益效果是:大大提高了驅動接收報文的效率,適用于驅動接收報文。
【技術實現步驟摘要】
本專利技術涉及路由器數據通信技術,特別涉及驅動報文接收的方法。
技術介紹
目前網絡設備中,設備驅動軟件接收數據普遍采用緩沖區描述符(BD)環機制。如圖1所示,BD環是驅動軟件101與硬件收發器102之間的一個數據緩沖。在設備內存103 中分配BD 104,每個BD 104由狀態標志Gtatus & Control,SC)和報文緩沖指針(Packet Pointer, PP)組成,狀態標志指示這個BD是空閑的還是有報文需要處理的,報文緩沖指針指向一塊用于存放待處理的報文內存區域,即該指針指向報文存放的位置。每個BD的結構如圖2所示,其SC標志中的E標志位指示該BD對應的緩沖區是否空閑,E標志位為0表示該BD中有報文待處理,為1表示該BD對應的緩沖區空閑;W標志位指示該BD是否為BD環的最后一個BD,W標志位為1表示其為最后一個BD,否則為0。多個BD 104首尾相接組成 BD環。BD環是驅動軟件101與硬件收發器102之間的一個數據緩沖。軟硬件分別通過BD環的讀指針和寫索引對BD環進行相關操作。當硬件接收到報文時,判斷BD環的寫指針當前所對應的BD的E標志位是否為1,如果為1,則把報文存放到該BD的報文緩沖指針所指向的緩沖區中,保存完成后,設置對應BD的E標志位為0,如果當前BD的W標志位為1,則令BD環寫指針為0,否則令BD環寫指針指向BD環的下一個BD。 最后,通知驅動軟件報文處理接收的報文。通常,驅動軟件得到硬件接收完成通知后,判斷BD環的讀指針當前所對應的BD的 E標志位是否為0,如果為0,首先取出該BD的報文緩沖指針所指向緩沖區的報文(即保存 BD的報文緩沖指針);然后,并在內存申請分配一個新的報文緩沖區,并設置該BD的報文緩沖指針指向新的報文緩沖區,設置該BD的SC標志中的E標志位為1,如果當前BD的SC標志中的W標志位為1,則令BD環讀指針為0,否則令BD環讀指針指向BD環的下一個BD。為了實現軟硬件并行工作,驅動軟件可以連續執行該過程,直到BD環的讀指針所對應的BD的 E標志位等于1為止。上述驅動接收報文的方法是低效的,因為每次從BD中取報文時,都需要申請分配一個新的報文緩沖區。如果一個系統每秒鐘處理的報文數目為N,那么在接收報文的過程中,驅動軟件會調用N次報文緩沖區的分配函數。對于一個高速轉發系統而言,這個開銷是非常大的,特別是緩沖區分配函數的處理時間過長時,開銷更加明顯。
技術實現思路
本專利技術的目的就是克服目前驅動接收報文的方法中由于報文緩沖區分配函數的處理時間過長的缺點,提供一種驅動接收報文的方法。本專利技術解決其技術問題,采用的技術方案是,驅動報文接收方法,其特征在于,包括以下步驟A.預先分配一定數目的報文緩沖區,并為每個報文緩沖區創建對應的報文描述符,保存每個報文緩沖區的地址指針到其對應的報文描述符中,將所有報文描述符組織成一個報文描述符鏈;B.將所述每個報文描述符的地址指針依次組織成一個報文描述符棧;所述報文描述符棧的棧首存放的是報文描述符鏈的首地址;C.驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數,依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符, 并更新報文描述符鏈和報文描述符棧; D.驅動軟件從步驟C中所述的有報文的BD中接收報文后,依次根據取出的報文描述符中的報文緩沖區的地址指針更新所述BD中的報文緩沖區指針。具體的,步驟C中,判斷BD環中有報文的連續的BD的個數,是指判斷BD環中E標志位為有報文狀態的連續的BD個數。優選的,步驟C中,驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數后,再判斷報文描述符棧中是否有足夠的報文描述符,如是,則依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符;否則,驅動軟件觸發報文緩沖區的分配及對應的報文描述符的創建,并將所述創建的報文描述符加入到報文描述符鏈并填充報文描述符棧,依據更新后的報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符。優選的,步驟C中,依據報文描述符棧的棧首從報文描述符鏈中取出對應個數的報文描述符,是指從報文描述符鏈中取出含有對應個數的報文描述符的子鏈,并返回該子鏈的首地址給驅動軟件。具體的,步驟D中,驅動軟件從每個BD中接收報文后,還要設置該BD的E標志位為空閑的狀態。具體的,所述報文描述符鏈的結構為前插鏈表,所述報文描述符棧的結構為堆棧。本專利技術的另一個目的,還提供一種驅動接收報文的裝置,包括報文緩沖區分配及組織模塊用于預先申請一定數目的報文緩沖區,并為每個報文緩沖區創建對應的報文描述符,保存每個報文緩沖區的地址指針到其對應的報文描述符中,將所有報文描述符組織成一個報文描述符鏈后,再將所述每個報文描述符的地址指針依次組織成一個報文描述符棧,所述報文描述符棧的棧首為報文描述符鏈的首地址;并用于根據報文緩沖區請求模塊的請求,從報文描述符鏈中取出需要的報文描述符個數返回給報文緩沖區請求模塊,并更新報文描述符鏈和報文描述符棧;報文緩沖區請求模塊,用于判斷BD環中有報文的連續的BD的個數,并向報文緩沖區分配及組織模塊請求包含對應個數的報文描述符;報文讀取模塊;用于從有報文的BD中讀取報文緩沖區指針所指向緩沖區中的報文;BD更新模塊用于從每個BD中接收報文后,依次根據取出的報文描述符中的報文緩沖區的地址指針更新所述BD中的報文緩沖區指針。優選的,所述報文緩沖區分配及組織模塊,還用于在接收到報文緩沖區請求模塊的請求后,判斷報文描述符棧中是否有足夠的報文描述符,如是,則依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符返回給報文緩沖區請求模塊;否則,通知報文緩沖區分配及組織模塊分配報文緩沖區以及創建對應的報文描述符,并將所述創建的報文描述符加入到報文描述符鏈并填充報文描述符棧,依據更新后的報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符返回給報文緩沖區請求模塊。優選的,所述BD更新模塊,還用于從每個BD中接收報文后,還要設置該BD的E標志位為空閑的狀態。具體的,所述報文描述符鏈的結構為前插鏈表,所述報文描述符棧的結構為堆棧。本專利技術的有益效果是,通過上述驅動報文接收方法,由于其在驅動接收報文之前根據BD個數優先分配足夠的PD,再進行驅動報文的接收,其僅調用少數幾次甚至僅一次的 PD分配函數即可,大大提高了驅動接收報文的效率。附圖說明圖1是現有技術中BD環結構示意圖;圖2是現有技術中BD環中的每個BD的結構示意圖;圖3本專利技術實施例提供的一種驅動接收報文的方法流程圖;圖4本專利技術實施例提供的一種報文描述符的結構示意圖;圖5是本專利技術實施例提供的一種報文描述符鏈和報文描述符棧的結構圖;圖6是本專利技術實施例提供的一種驅動接收報文的裝置的結構框圖。具體實施例方式下面結合實施例及附圖,詳細描述本專利技術的技術方案。參見圖3,是本專利技術實施例提供的一種驅動接收報文的方法流程圖,包括如下步驟步驟101,預先分配一定數目的報文緩沖區,分配的報文緩沖區的數目與系統資源相適應,并為每個報文緩沖區創建對應的報文描述符,保存每個報文緩沖區的地本文檔來自技高網...
【技術保護點】
1.一種驅動接收報文的方法,其特征在于,包括以下步驟:A.預先分配一定數目的報文緩沖區,并為每個報文緩沖區創建對應的報文描述符,保存每個報文緩沖區的地址指針到其對應的報文描述符中,將所有報文描述符組織成一個報文描述符鏈;B.將所述每個報文描述符的地址指針依次組織成一個報文描述符棧;所述報文描述符棧的棧首存放的是報文描述符鏈的首地址;C.驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數,依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符,并更新報文描述符鏈和報文描述符棧;D.驅動軟件從步驟C中所述的有報文的BD中接收報文后,依次根據取出的報文描述符中的報文緩沖區的地址指針更新所述BD中的報文緩沖區指針。
【技術特征摘要】
1.一種驅動接收報文的方法,其特征在于,包括以下步驟A.預先分配一定數目的報文緩沖區,并為每個報文緩沖區創建對應的報文描述符,保存每個報文緩沖區的地址指針到其對應的報文描述符中,將所有報文描述符組織成一個報文描述符鏈;B.將所述每個報文描述符的地址指針依次組織成一個報文描述符棧;所述報文描述符棧的棧首存放的是報文描述符鏈的首地址;C.驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數,依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符,并更新報文描述符鏈和報文描述符棧;D.驅動軟件從步驟C中所述的有報文的BD中接收報文后,依次根據取出的報文描述符中的報文緩沖區的地址指針更新所述BD中的報文緩沖區指針。2.如權利要求1所述的方法,其特征在于,步驟C中,判斷BD環中有報文的連續的BD 的個數,是指判斷BD環中E標志位為有報文狀態的連續的BD個數。3.如權利要求1所述的方法,其特征在于,步驟C中,驅動軟件接收報文時,判斷BD環中有報文的連續的BD的個數后,再判斷報文描述符棧中是否有足夠的報文描述符,如是, 則依據報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符;否則,驅動軟件觸發報文緩沖區的分配及對應的報文描述符的創建,并將所述創建的報文描述符加入到報文描述符鏈并填充報文描述符棧,依據更新后的報文描述符棧的棧首保存的報文描述符鏈的首地址,從報文描述符鏈中取出對應個數的報文描述符。4.如權利要求1所述的方法,其特征在于,步驟C中,依據報文描述符棧的棧首從報文描述符鏈中取出對應個數的報文描述符,是指從報文描述符鏈中取出含有對應個數的報文描述符的子鏈,并返回該子鏈的首地址給驅動軟件。5.如權利要求1所述的方法,其特征在于,步驟D中,驅動軟件從每個BD中接收報文后,還要設置該BD的E標志位為空閑的狀態。6.如權利要求1至5任一項所述的方法,其特...
【專利技術屬性】
技術研發人員:曹淋,
申請(專利權)人:邁普通信技術股份有限公司,
類型:發明
國別省市:90
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。