[發明專利]處理異步消息隊列的方法、系統和異步SOCKET無效
| 申請號: | 200710079396.3 | 申請日: | 2007-02-16 |
| 公開(公告)號: | CN101247319A | 公開(公告)日: | 2008-08-20 |
| 發明(設計)人: | 陳霞;倪輝;肖颯;莊順萬 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | H04L12/56 | 分類號: | H04L12/56;H04L29/06 |
| 代理公司: | 北京集佳知識產權代理有限公司 | 代理人: | 逯長明 |
| 地址: | 518129廣東省*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 處理 異步 消息 隊列 方法 系統 socket | ||
技術領域
本發明涉及通信技術領域,具體的特別涉及一種處理異步消息隊列的方法、系統和異步SOCKET。
背景技術
SOCKET(套接字)是一個通信鏈的句柄,用于描述IP地址和端口,應用程序通常通過SOCKET向網絡發出請求或者應答網絡請求。SOCKET在網絡通信中的重要性越來越大,現有的BGP(邊緣網關協議)、LDP(標簽分發協議)、OSPF(內部網關協議)、ISIS(鏈路狀態協議)等路由協議,以及TELNET(TCP/IP終端仿真協議)、FTP(文件傳輸協議)、HTTP(超文本傳輸協議)等網絡傳輸協議都依托于SOCKET提供的接口完成與底層之間的數據交互。
現有路由協議通常采用異步SOCKET實現上層協議和底層之間的數據承載。異步SOCKET采用消息機制,這種消息機制在時間上將數據與事件分離?,F有異步消息隊列的處理流程如圖1所示:
步驟101:異步SOCKET接收底層傳輸的數據。
底層傳送到異步SOCKET的數據在被上層協議讀取之前,存放于該異步SOCKET的接收緩存中。
步驟102:異步SOCKET向異步消息隊列中寫入異步讀消息。
異步SOCKET將接收到的底層數據存放于接收緩存中,同時以寫讀事件位的方式告知上層協議“有數據到達”,同時將異步讀消息寫入異步消息隊列中。在異步SOCKET的實現中,SOCKET使用的異步消息隊列由路由管理器創建并維護,該異步消息隊列的入口為SOCKET的異步消息,出口為上層協議的讀取。
步驟103:上層協議從異步SOCKET接收緩存中讀取數據。
上層協議接收并讀取異步讀消息后,可以根據該消息內的字段,識別相應的異步SOCKET和與該異步SOCKET掛接的上層協議,若該異步SOCKET與當前上層協議匹配,則該上層協議調用異步SOCKET的讀取接口讀取該異步SOCKET接收緩存中的數據。
現有異步讀消息上報示意圖如圖2所示:其中,異步SOCKET在接收到底層數據后,在異步SOCKET內部以異步讀事件加異步讀消息的方式通知上層協議,上層協議確認異步讀事件后,再讀取異步讀消息,然后根據該消息的類型對讀取的底層數據做相應的處理。圖2中異步SOCKET的異步消息隊列操作與異步SOCKET接收到的數據一一對應,即每接收到一次底層數據就相應的向異步消息隊列中寫入一次異步讀消息。
現有的異步消息隊列處理方法,以及異步事件消息的上報機制雖然清晰地表達了“接收數據-通知協議”的過程,但在實際應用中,這種機制會引發大量的空閑異步讀消息占用異步消息的隊列資源,特別當異步SOCKET接收數據頻繁時尤其突出。
首先,由于異步SOCKET頻繁接收來自底層的報文數據,同時向異步消息隊列中寫入大量的異步讀消息,當網絡中路由協議在初始導入大量路由,或者當網絡中產生路由振蕩時,若上層協議處理相應報文數據的速度稍微減慢,則極有可能造成異步消息隊列中的資源爆滿,從而導致異步SOCKET丟失報文數據。
其次,上層路由協議在接收到異步SOCKET寫入的一個異步讀消息時,一次讀完異步SOCKET接收緩存。當異步SOCKET連續接收完幾個底層報文數據,并寫入相應多的異步讀消息,而上層路由協議在得到第一個異步讀消息時,就一次性讀完了異步SOCKET接收緩存中的所有報文數據,則剩下的異步讀消息就會觸發大量的上層路由協議空讀。
再次,當多個上層路由協議與異步SOCKET建立連接時,每個路由協議都會產生大量的異步讀消息。在一個時間范圍內,異步消息隊列被其中一部分路由協議的消息占據,剩余的路由協議由于異步消息隊列已滿而無法成功寫消息。在這種情況下若丟棄報文就會造成路由數據丟失;若盡最大可能保留報文數據,則由于長時間無法寫異步讀消息,當異步SOCKET接收緩存滿后,就再也不會通知異步讀消息,從而造成異步SOCKET中的緩存堆積。
發明內容
本發明的實施例提供一種處理異步消息隊列的方法,以解決現有技術中由于重復向異步消息隊列中寫入異步讀消息,容易造成異步消息隊列中資源爆滿,異步讀消息觸發大量的上層路由協議空讀,SOCKET丟失報文數據,從而導致網絡中路由信息丟失的問題。
本發明的另一實施例提供一種處理異步消息隊列的系統,以解決現有技術中重復向異步消息隊列中寫入異步讀消息,容易造成隊列中資源爆滿,報文丟失的問題。
本發明的又一實施例提供一種異步SOCKET,以解決現有技術中異步SOCKET重復向異步消息隊列中寫入異步讀消息的問題。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/200710079396.3/2.html,轉載請聲明來源鉆瓜專利網。





