亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

防止會話振蕩的會話處理方法和會話處理單元的制作方法

文檔序號:7696465閱讀:112來源:國知局
專利名稱:防止會話振蕩的會話處理方法和會話處理單元的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域中的會話處理技術(shù),具體涉及一種防止會話振蕩的 會話處理方法和一種防止會話振蕩的會話處理單元。
背景技術(shù)
在大型的網(wǎng)絡(luò)拓樸上,當(dāng)某個網(wǎng)絡(luò)設(shè)備上的鏈路抖動、網(wǎng)絡(luò)設(shè)備自身重 新啟動,或者網(wǎng)絡(luò)設(shè)備上的協(xié)議重新使能時,網(wǎng)絡(luò)中的會話被中斷并在網(wǎng)絡(luò) 恢復(fù)時自動重建。大量會話的自動重建會突發(fā)大量的協(xié)議報文。對于協(xié)議報 文的接收端來說,如果瞬間涌來的協(xié)議報文數(shù)量超過其接收能力,則部分協(xié) 議報文會被丟棄,被丟棄的協(xié)議報文將導(dǎo)致相應(yīng)會話的創(chuàng)建過程中斷,需要 再次重建,這樣周而復(fù)始,就出現(xiàn)了會話振蕩。
圖1示出了一種可能會出現(xiàn)上述會話振蕩情況的典型網(wǎng)絡(luò)結(jié)構(gòu),如圖1
所示,路由器2(RT2, Router2)與其他多臺路由器存在鏈接,存在鏈接的 兩臺路由器之間均建立標(biāo)簽分發(fā)協(xié)議(LDP, Label Distribution Protocol)會 話,LDP會話兩端互為鄰居。路由器通過周期性地發(fā)送鄰居通告(Hello) 消息來發(fā)現(xiàn)鄰居,默認(rèn)情況下是每隔5秒發(fā)送一個Hello消息,然后與新發(fā) 現(xiàn)的鄰居間建立LDP會話。以圖1中RT2和RT4之間建立LDP會話為例, 其創(chuàng)建大致如下
當(dāng)RT2接收到RT4發(fā)來的Hello消息后,獲知RT4這個鄰居,當(dāng)然RT4 也會獲知RT2這個鄰居,然后,RT2和RT4之間選舉建立會話的主動方和 被動方,由于LDP會話是TCP鏈接,因此主動方向被動方發(fā)起TCP鏈接, 經(jīng)三次TCP握手后,建立TCP鏈接,基于TCP鏈接建立LDP會話。通過 LDP會話,鄰居間通告標(biāo)簽交換方式、標(biāo)簽空間、會話保持定時器值等信息。
當(dāng)LDP會話穩(wěn)定后,鄰居雙方通過交互Hello消息或鄰居狀態(tài)保持 (Keepalive)消息來維護鄰居關(guān)系。當(dāng)連續(xù)3個Hello消息的發(fā)送周期內(nèi)接 收不到鄰居的Hello消息或Keepalive消息,則主動關(guān)閉LDP會話,斷掉鄰 居關(guān)系。在后續(xù)接收到Hello消息后,再重建會話。當(dāng)鄰居之間需要維護標(biāo) 簽交換路徑(LSP, Label Switching Path)隧道時,也會相互通告隧道的標(biāo) 簽信息。
一臺路由器可能同時與十幾臺甚至幾十臺路由器建立鄰居關(guān)系,例如, 圖1中的RT2。而且,在路由器采用LDP多實例的情況下,每一臺路由器 均可以看作是幾十臺邏輯對端,每一個邏輯對端都可以作為一個鄰居。以每 對鄰居之間建立一個LDP會話計算,RT2的鄰居數(shù)量就可能達到幾千個, 因此RT2需要維護幾千個LDP會話。
如果RT2上存在1000個LDP會話,當(dāng)RT2出現(xiàn)鏈路抖動、重新啟動 或LDP協(xié)議重新使能時,RT2需要恢復(fù)所有的LDP會話,這就意味著RT2 要同時接收所有鄰居發(fā)布的消息,瞬間爆發(fā)的消息量非常大。消息由RT2 的接口接收后,暫存在輸入隊列中,再被上層應(yīng)用取走進行進一步LDP會 話創(chuàng)建處理。如果消息量大于協(xié)議報文接收的能力,那么部分Hello消息會 被丟棄。對于剛建立起來的LDP會話,如果維持其LDP會話狀態(tài)的消息丟 失,會導(dǎo)致會話因3個周期內(nèi)收不到鄰居的Hello消息或Keepalive消息而 斷掉。那么,剛剛建立起來的LDP會話被斷掉并重建。重建會話時,還會 產(chǎn)生大量的協(xié)議報文,周而復(fù)始地出現(xiàn)LDP會話反復(fù)振蕩。
此外,在RT2上LDP會話穩(wěn)定的情況下,如果RT2上突發(fā)大量的用于 創(chuàng)建LSP隧道的標(biāo)簽通告消息,導(dǎo)致標(biāo)簽通告消息丟失,致使隧道創(chuàng)建失 敗。而且,突發(fā)的大量標(biāo)簽通告消息也會擠占RT2的接收能力,導(dǎo)致RT2 不能成功接收到維持LDP會話的協(xié)議報文,導(dǎo)致LDP會話反復(fù)振蕩。
為了吸收瞬間爆發(fā)的消息量,防止LDP會話振蕩,目前采用擴大輸入 隊列長度或擴大協(xié)議報文上送上層應(yīng)用CPU的帶寬來盡量提高消息接收能 力。但是,這兩種解決方式均是治標(biāo)不治本的辦法,對于擴大輸入隊列長度
方式來說,消息數(shù)量會隨著鄰居規(guī)模的擴大而不斷攀升,而輸入隊列長度不 可能無限制增長,因此當(dāng)消息數(shù)量達到一定程度后,輸入隊列仍會溢出。對 于擴大協(xié)議報文上送CPU帶寬方式來說,帶寬的擴大可能會導(dǎo)致CPU過載, 降低了防報文攻擊的能力。
可見,目前還沒有一種有效的方法防止LDP會話振蕩。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種防止會話振蕩的會話處理方法,能夠避免 消息突發(fā),從根本上防止會話振蕩。
該方法包括接收請求創(chuàng)建會話的協(xié)議報文,判斷在當(dāng)前時間周期內(nèi)建 立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量閾值;如果是,不創(chuàng)建新的會話; 否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話。
較佳地,該方法進一步包括預(yù)先創(chuàng)建資源池,該資源池保存記錄的數(shù)量 等于所述會話創(chuàng)建數(shù)量閾值;所述記錄用于記載會話創(chuàng)建時間;
所述判斷在當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量 閾值包括
從資源池中獲取指針當(dāng)前指向的記錄所記載的時間Ti; 計算當(dāng)前時間與獲取的Ti之間的時間差;
如果該時間差的絕對值小于所述時間周期長度,則判定在當(dāng)前時間周期內(nèi) 建立的會話數(shù)目已達到設(shè)置的會話創(chuàng)建數(shù)量閾值;否則,判定在當(dāng)前時間周期 內(nèi)建立的會話數(shù)目未達到設(shè)置的會話創(chuàng)建數(shù)量閾值,將當(dāng)前時間更新到指針當(dāng) 前指向的記錄中,令所述指針指向下一個記錄;如果所述指針當(dāng)前指向的記錄 為所述資源池的最后一個記錄,則所述指針指向的下一個記錄為所述資源池的 第一個記錄。
較佳地,該方法進一步包括在初始化時,將資源池的所有記錄初始化為 初始符號,指針指向資源池的第一個記錄;
所述獲取指針當(dāng)前指向的記錄所記載的時間Ti之后,該方法進一步包括
如果獲取的Ti為初始符號,則根據(jù)接收的協(xié)議報文創(chuàng)建會話,將當(dāng)前時間更新 到指針當(dāng)前指向的記錄中,令所述指針指向下一個記錄;如果獲取的Ti不為初 始符號,則執(zhí)行所述比較當(dāng)前時間與獲取的Ti的時間差的操作。
較佳地,該方法進一步包括每隔一段預(yù)設(shè)時間為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié) 議報文;
或者設(shè)置第二時間周期長度,在每個第二時間周期長度內(nèi)最多為預(yù)設(shè)數(shù)量 個會話發(fā)送協(xié)議報文。
較佳地,預(yù)先創(chuàng)建第二資源池,該第二資源池保存記錄的數(shù)量等于所述預(yù) 設(shè)數(shù)量;第二資源池中的記錄用于記載為一個會話發(fā)送報文的時間;
所述在每個第二時間周期長度內(nèi)最多為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文包 括輪詢已創(chuàng)建的各會話,對輪詢到的會話執(zhí)行如下處理
從第二資源池中獲取第二指針當(dāng)前指向的記錄所記載的時間Tj;
計算當(dāng)前時間與獲取的Tj之間的時間差;
如果該時間差的絕對值小于所述第二時間周期長度,則不為輪詢到的會 話發(fā)送報文;否則,為輪詢到的會話發(fā)送報文,將當(dāng)前時間更新到第二指針 當(dāng)前指向的記錄中,令所述第二指針指向下一個記錄;如果所述第二指針當(dāng) 前指向的記錄為所述第二資源池的最后一個記錄,則所述第二指針指向的下 一個記錄為所述第二資源池的第一個記錄。
本發(fā)明還提供了一種防止會話振蕩的會話處理單元,能夠避免消息突 發(fā),從根本上防止會話振蕩。
該單元包括協(xié)議報文接收模塊、會話創(chuàng)建判斷模塊;
所述協(xié)議報文接收模塊,用于接收協(xié)議報文,將接收的請求創(chuàng)建會話的協(xié) 議報文發(fā)送給會話創(chuàng)建判斷模塊;
所述會話創(chuàng)建判斷模塊,用于接收所述請求創(chuàng)建會話的協(xié)議報文,判斷在 當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量閾值;如果是, 不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話。
其中,所述協(xié)議報文接收模塊包括接收子模塊和確定子模塊;
所述接收子模塊,用于接收鄰居通告Hello消息;
所述確定子模塊,用于判斷所在單元與所述接收子模塊接收的Hello消息 的發(fā)送端之間的會話是否已經(jīng)存在,如果不存在,則將接收的Hello消息作為 請求創(chuàng)建會話的協(xié)議報文發(fā)送給所述會話創(chuàng)建判斷模塊。
其中,所述會話創(chuàng)建判斷模塊包括資源池、處理子模塊和指針控制子模塊;
所述資源池用于保存記錄,所保存記錄的數(shù)量等于所述會話創(chuàng)建數(shù)量閾值, 所述記錄用于記載會話創(chuàng)建時間;
所述處理子模塊,用于接收來自所述協(xié)議報文接收模塊的請求創(chuàng)建會話的 協(xié)議報文,從資源池中,獲取指針當(dāng)前指向的記錄所記載的時間Ti;計算當(dāng)前 時間與獲取的Ti之間的時間差,如果該時間差的絕對值小于所述時間周期長 度,則不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話,將當(dāng)前時間更 新到指針當(dāng)前指向的記錄中,通知指針控制子模塊;
所述指針控制子模塊,用于在接收到通知后,控制所述指針指向下一個記 錄;如果所述指針當(dāng)前指向的記錄為所述資源池的最后一個記錄,則控制所述 指針指向所述資源池的第一個記錄。
較佳地,所述處理子模塊進一步用于,在初始化時,將資源池的所有記錄 初始化為初始符號,令指針指向資源池的第一個記錄;所述獲取指針當(dāng)前指向 的記錄所記載的時間Ti之后,如果Ti為初始符號,則執(zhí)行所述根據(jù)接收的協(xié) 議報文創(chuàng)建會話的操作,將當(dāng)前時間更新到指針當(dāng)前指向的記錄中,通知指針 控制子模塊;否則,執(zhí)行所述比較當(dāng)前時間與獲取的Ti的時間差的操作。
較佳地,該單元進一步包括報文發(fā)送控制模塊,用于每隔一段預(yù)設(shè)時間 為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文;或者設(shè)置第二時間周期長度,在每個笫二 時間周期長度內(nèi)最多為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文。
根據(jù)以上技術(shù)方案可見,使用本發(fā)明保證在某一段時間內(nèi)最多只能創(chuàng)建 一定數(shù)量的會話,從而對創(chuàng)建會話操作進行限速。那么,當(dāng)網(wǎng)絡(luò)設(shè)備在很短 的時間內(nèi)接收到大量請求創(chuàng)建會話的協(xié)議報文時,不會立刻創(chuàng)建所有的會 話,而是只創(chuàng)建一部分。那么,大量會話將分散在較長的時間內(nèi)創(chuàng)建,避免
集中創(chuàng)建大量會話導(dǎo)致協(xié)議報文突發(fā),從根本上防止會話振蕩。


圖1為現(xiàn)有技術(shù)中會出現(xiàn)會話振蕩的典型網(wǎng)絡(luò)結(jié)構(gòu)。
圖2為本發(fā)明中防止會話振蕩的會話處理方法的示例性流程圖。
圖3為本發(fā)明實施例中防止會話振蕩的會話處理方法的流程圖。 圖4為本發(fā)明實施例中資源池示意圖。
圖5為本發(fā)明實施例中防止會話振蕩的會話處理單元的結(jié)構(gòu)示意圖。
具體實施例方式
下面結(jié)合附圖并舉實施例,對本發(fā)明進行詳細(xì)描述。
圖2為本發(fā)明防止會話振蕩的會話處理方法的示例性流程圖,如圖2所 示,該方法包括以下步驟
步驟201:網(wǎng)絡(luò)設(shè)備接收請求創(chuàng)建會話的協(xié)議報文。
步驟202:判斷在當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話 創(chuàng)建數(shù)量閾值;如果是> 則執(zhí)行步驟203;否則,執(zhí)行步驟204。
步驟203:不創(chuàng)建新的會話。本流程結(jié)束。
步驟204:根據(jù)接收的協(xié)議報文創(chuàng)建會話。本流程結(jié)束。
根據(jù)上述流程,采用圖2的處理方法,使用本發(fā)明保證在一段時間內(nèi)最 多只能創(chuàng)建一定數(shù)量的會話,從而對創(chuàng)建會話操作進行限速。那么,當(dāng)網(wǎng)絡(luò) 設(shè)備在很短的時間內(nèi)接收到大量請求創(chuàng)建會話的協(xié)議報文時,不會立刻創(chuàng)建 所有的會話,而是只創(chuàng)建一部分。對于不滿足限速條件會話創(chuàng)建請求,不馬 上創(chuàng)建會話, 一直到接收到下 一次請求創(chuàng)建會話的協(xié)議報文且滿足限速條件 才創(chuàng)建會話。那么,大量會話將分散在較長的時間內(nèi)創(chuàng)建,避免集中創(chuàng)建大 量會話導(dǎo)致協(xié)議報文突發(fā),從根本上防止會話振蕩。
本發(fā)明的技術(shù)方案可以適用于大量會話的創(chuàng)建場合。例如,對于配置有 LDP協(xié)議的網(wǎng)絡(luò)設(shè)備,每兩個LDP網(wǎng)絡(luò)設(shè)備之間可以建立一個或多個LDP會話,采用本發(fā)明可以抑制LDP會話創(chuàng)建速度,避免集中創(chuàng)建大量LDP會 話導(dǎo)致協(xié)i義才艮文突發(fā),,人根本上防止LDP會話振蕩。以下就以該方法應(yīng)用 于配置LDP協(xié)議的路由器為例進行詳細(xì)描述。
圖3為本發(fā)明實施例中防止會話振蕩的會話處理方法的流程圖。如圖3 所示,該方法包括以下步驟
步驟300:創(chuàng)建資源池,用于記載最近創(chuàng)建的Yl個LDP會話的時間戳。
具體來說,資源池保存Y1個記錄,每個記錄記載一個LDP會話的創(chuàng)建 時間,該創(chuàng)建時間稱為LDP會話的時間戳。其中,Yl稱為會話創(chuàng)建數(shù)量閾 值,設(shè)XI時間長度內(nèi)允許創(chuàng)建Yl個LDP會話。
圖4為本發(fā)明實施例中資源池示意圖。如圖4所示,該資源池包括Yl 個記錄。每個記錄的位置用一個小方格表示。小方格中內(nèi)容表示該記錄的位 置編號。位置編號采用Tn格式,n為第n個記錄。n為正整數(shù)。指針變量Point 指向其中一個記錄,該記錄使用完后沿著刷新方向偏移,每次偏移一個記錄
位置。資源池為循環(huán)使用。
步驟301:路由器初始化時,將資源池中的所有記錄設(shè)置為初始符號, 變量Point指向Tl位置。
其中,本實施例設(shè)置初始符號0,當(dāng)前還可以設(shè)置為特定字符,例如 NULL
步驟302:接收鄰居發(fā)來的Hello消息。
步驟303:判斷自身與發(fā)送Hello消息的鄰居之間是否存在會話,如果 是,則執(zhí)行步驟312;否則,確定接收到請求創(chuàng)建會話的協(xié)議報文,執(zhí)行步 驟304。
步驟304:獲取當(dāng)前時間。其中,當(dāng)前時間可以為路由器的運行累計時間。
步驟305:獲取變量Point當(dāng)前指向的記錄中記載的時間Ti。 步驟306:判斷獲取的Ti是否等于0,如果是,則表明資源池的第一次 循環(huán)還沒有完成,不需要做限速,執(zhí)行步驟309;否則,執(zhí)行步驟307。
步驟307:計算步驟304獲取的當(dāng)前時間和步驟305獲取的時間Ti之間 時間差的絕對值。
步驟308:比較計算得到的時間差的絕對值是否小于預(yù)先設(shè)置的時間長 度X1,如果是,則執(zhí)行步驟311;否則,執(zhí)行步驟309。 步驟309:根據(jù)Hello消息創(chuàng)建LDP會話。
本步驟中,根據(jù)Hello消息建立對端的鄰居體,確定自身設(shè)備是建立會 話的主動方還是被動方,如果是主動方,則向?qū)Χ税l(fā)起TCP鏈接,開始會 話創(chuàng)建的協(xié)商,直至LDP會話創(chuàng)建完成。
步驟310:將當(dāng)前時間更新到變量Point當(dāng)前指向的記錄中,令指4]"沿 刷新方向指向下一個記錄。返回執(zhí)行步驟302。
由于資源池是循環(huán)使用的,因此如果變量Point當(dāng)前指向的記錄為Tn, 且n小于Yl,則更新當(dāng)前執(zhí)行的記錄后,令變量Point指向T(n+1);如果變 量Point當(dāng)前指向的記錄為TY1,則更新當(dāng)前指向的記錄后,令變量Point指 向TIo
步驟311:不創(chuàng)建會話。返回步驟302。
本步驟中,雖然不創(chuàng)建會話,但是可以根據(jù)Hello消息建立對端的鄰居體。
步驟312:根據(jù)接收的Hello報文,維護相應(yīng)LDP會話。返回步驟302。 至此,本流程結(jié)束。
從圖3的流程可以看出,該實施例將限速操作設(shè)置在進入會話狀態(tài)機之 前,即在確定建立會話的主動方和被動方之前進行限速操作。如果在會話狀 態(tài)機中做限速,可能會出現(xiàn)會話反復(fù)創(chuàng)建,造成資源反復(fù)消耗和系統(tǒng)繁忙。
除了采用資源池對創(chuàng)建會話操作進行限速,還可以采用其他方式實現(xiàn)一 段時間內(nèi)最多創(chuàng)建一定數(shù)量會話的方案。例如,設(shè)置循環(huán)定時器,該循環(huán)定 時器的定時時間為0到XI。再設(shè)置計數(shù)器,用于記錄創(chuàng)建會話的數(shù)量。路 由器啟動后,循環(huán)定時器開始從0到X1循環(huán)計時,每當(dāng)循環(huán)定時器清零, 計數(shù)器也隨之清零。當(dāng)接收到請求建立會話的Hello報文后,判斷計數(shù)器當(dāng)
前計數(shù)值是否小于Yl,如果是,則允許創(chuàng)建會話,并遞增計數(shù)器的值;否 則,不允許創(chuàng)建會話。這樣,同樣可以實現(xiàn)XI時間段內(nèi)最多只創(chuàng)建Yl的 會話的效果。
當(dāng)LDP會話建立后,鄰居之間會發(fā)送通告標(biāo)簽報文,以建立LSP隧道。 如果兩路由器之間建立了多條甚至上百條LDP會話,則可能出現(xiàn)通告標(biāo)簽 報文突發(fā)情況,使得接收路由器過載,不僅會導(dǎo)致通告標(biāo)簽報文丟失,LSP 隧道創(chuàng)建失敗,而且,大量的通告標(biāo)簽報文也會擠占接收路由器的接收能力, 導(dǎo)致接收路由器不能成功接收維持鄰居關(guān)系的協(xié)議報文,致使LDP會話反 復(fù)振蕩。
因此,本發(fā)明實施例在路由器中對協(xié)議報文的發(fā)送進行限速,避免協(xié)議 報文瞬間發(fā)送過多過快,導(dǎo)致接收路由器側(cè)出現(xiàn)通告標(biāo)簽報文突發(fā)情況。其 基本思想為路由器每隔一段預(yù)設(shè)時間為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文。其 中,如果路由器當(dāng)前承載的會話數(shù)量較多,則所述預(yù)設(shè)數(shù)量應(yīng)該小于路由器 當(dāng)前承載的總會話個數(shù),并且預(yù)設(shè)數(shù)量的確定還需要考慮到路由器處理報文 發(fā)送的能力,即在路由器當(dāng)前處理報文發(fā)送的承載能力之內(nèi),確定上述預(yù)設(shè) 數(shù)量。具體來說,
在路由器中,每個會話對應(yīng)一個報文隊列,路由器按順序輪詢各會話對 應(yīng)的報文隊列,對輪詢到的報文隊列進行報文發(fā)送處理。本實施例中,每次 只輪詢預(yù)設(shè)數(shù)量的報文隊列,之后,等待預(yù)設(shè)時間,再按順序輪詢后續(xù)的報 文隊列。例如,路由器承載IO個會話,設(shè)置預(yù)設(shè)數(shù)量為5,那么路由器第 一次為會話1到5發(fā)送報文,之后,等待預(yù)設(shè)時間,再為會話6到10發(fā)送 報文,之后,再為會話1到5發(fā)送報文,依次類推。本實施例中,被限速的 協(xié)議報文可以包括通告標(biāo)簽報文、Keepalive報文等通過TCP發(fā)送的報文。
上述每隔一段預(yù)設(shè)時間為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文的方式是一種 簡單的實現(xiàn)方式,在實際中,還可以采用前述資源池來實現(xiàn)協(xié)議報文的發(fā)送 限速。具體為,設(shè)置第二資源池,該資源池保存Y2個記錄,每個記錄記載 為一個會話發(fā)送報文的時間。指針變量Point2指向其中一個記錄。假設(shè)在
X2時間長度內(nèi)允許Y2個會話發(fā)送報文。路由器初始化時,將第二資源池中 的所有記錄設(shè)置為初始符號,例如設(shè)置為0,變量Point2指向Tl位置。接 著,開始為會話發(fā)送報文后,路由器按順序輪詢各會話對應(yīng)的報文隊列,對 輪詢到的報文隊列進行如下處理 獲耳又當(dāng)前時間;
獲取第二資源池中變量Point2當(dāng)前指向的記錄中記載的時間Tj;
如果時間Tj為0,則允許為輪詢到的隊列對應(yīng)的會話發(fā)送報文,將當(dāng)前 時間更新到變量Point2當(dāng)前指向的記錄中,令指針沿刷新方向指向下一個記 錄;如果當(dāng)前指向最后一個記錄,則應(yīng)該指向的下一個記錄為第二資源池的 第一個記錄;
如果時間Tj不為0 ,則計算獲取的當(dāng)前時間和時間Tj之間時間差的絕 對值;當(dāng)該時間差的絕對值大于或等于X2時,允許為輪詢到的報文隊列對 應(yīng)的會話發(fā)送協(xié)議報文,將當(dāng)前時間更新到變量Point2當(dāng)前指向的記錄中, 令指針沿刷新方向指向下一個記錄;當(dāng)該時間差的絕對值小于X2時,不允 許為輪詢到的報文隊列對應(yīng)的會話發(fā)送報文。
在確定不允許為輪詢到的報文隊列對應(yīng)的會話發(fā)送報文之后,仍然對當(dāng) 前輪詢到的報文隊列進行上述判斷是否發(fā)送報文的處理,直到當(dāng)前輪詢到的 報文隊列成功發(fā)送報文,再按序輪詢后續(xù)報文隊列。
為了實現(xiàn)上述會話處理方法,本發(fā)明實施例還公開了一種會話處理單 元,該單元可以應(yīng)用與網(wǎng)絡(luò)設(shè)備中,以抑制網(wǎng)絡(luò)設(shè)備創(chuàng)建會話的速度。
圖5為本發(fā)明實施例中防止會話振蕩的會話處理單元的結(jié)構(gòu)示意圖,如 圖5所示,該會話處理單元包括協(xié)議報文接收模塊51和會話創(chuàng)建判斷模塊 52;其中,
協(xié)議報文接收模塊51,用于接收協(xié)議報文,將接收的請求創(chuàng)建會話的 協(xié)議報文發(fā)送給會話創(chuàng)建判斷模塊52。
會話創(chuàng)建判斷模塊52,用于接收協(xié)議報文接收模塊51發(fā)來的請求創(chuàng)建 會話的協(xié)議報文,判斷在當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會
話創(chuàng)建數(shù)量閾值;如果是,不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng) 建會話。
較佳地,在會話創(chuàng)建后,為了防止諸如通告標(biāo)簽報文的協(xié)議報文突發(fā), 導(dǎo)致接收路由器過載,本發(fā)明實施例中的會話處理單元進一步包括報文發(fā)送 控制模塊(在圖5中未示出),用于每隔一段預(yù)設(shè)時間為預(yù)設(shè)數(shù)量個會話發(fā) 送報文,或者設(shè)置時間周期長度X2,在每個時間周期長度X2內(nèi)最多為預(yù)設(shè) 數(shù)量Y2個會話發(fā)送協(xié)議報文,具體可以與前述根據(jù)資源池進行報文發(fā)送限 速的實現(xiàn)方法相同,這里不詳述。
下面以會話處理單元應(yīng)用于配置有LDP協(xié)議的路由器為例,對會話處 理單元中的協(xié)議報文接收模塊51和會話創(chuàng)建判斷模塊52進行詳細(xì)描述。且 會話創(chuàng)建判斷模塊52采用資源池實現(xiàn)創(chuàng)建會話的限速。在實際中,會話創(chuàng) 建判斷模塊52也可以采用前述設(shè)置循環(huán)定時器和計數(shù)器的方式實現(xiàn)創(chuàng)建會 話的限速。
仍參見圖5,協(xié)議報文接收模塊51包括接收子模塊511和確定子模塊 512;其中,
接收子模塊511,用于接收鄰居通告的Hello消息。
確定子模塊512,用于判斷所在設(shè)備與接收子模塊511接收的Hello消 息的發(fā)送端之間的LDP會話是否已經(jīng)存在,如果不存在,則將接收的Hello 消息作為請求創(chuàng)建會話的協(xié)議報文發(fā)送給會話創(chuàng)建判斷模塊52。
仍參見圖5,會話創(chuàng)建判斷模塊52包括資源池521、處理子模塊522和 指針控制子模塊523;其中,
資源池521,用于保存記錄,所保存記錄的數(shù)量等于會話創(chuàng)建數(shù)量閾值, 例如為Yl ,每個記錄用于記載LDP會話創(chuàng)建的時間。
處理子模塊522,用于在初始化時,將資源池521的所有記錄初始化為 初始符號,例如初始化為0,令指針指向資源池的第一個記錄。接收來自協(xié) 議報文接收模塊51的請求創(chuàng)建會話的Hello消息,從資源池521中獲取指 針當(dāng)前指向的記錄所記載的時間Ti;如果獲取的Ti為0,則根據(jù)接收的協(xié)200810119935.6
說明書第12/12頁
議報文創(chuàng)建會話,將當(dāng)前時間更新到指針當(dāng)前指向的記錄中,并通知指針控
制子模塊523;如果獲取的Ti不為0,則比較當(dāng)前時間與獲取的Ti的時間 差,判斷該時間差的絕對值是否小于預(yù)設(shè)的時間周期長度XI,如果是,則 不創(chuàng)建LDP會話;否則,根據(jù)接收的Hello消息創(chuàng)建LDP會話,將當(dāng)前時 間更新到指針當(dāng)前指向的記錄中,并通知指針控制子模塊523。
指針控制子模塊523,用于在接收到通知后,控制指向資源池521的指 針指向下一個記錄;如果指針當(dāng)前指向的記錄為資源池的最后一個記錄,則 控制該指針指向資源池的第一個記錄,從而使得資源池被循環(huán)使用。
由以上所述可以看出,本發(fā)明所提供的防止會話振蕩的會話處理方案, 能夠避免消息突發(fā),從根本上防止會話振蕩。
綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的 保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種防止會話振蕩的會話處理方法,其特征在于,該方法包括接收請求創(chuàng)建會話的協(xié)議報文,判斷在當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量閾值;如果是,不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話。
2、 如權(quán)利要求l所述的方法,其特征在于,所述會話為LDP會話; 接收到請求創(chuàng)建會話的協(xié)議報文的確定方式為接收鄰居通告Hello消息,判斷自身與發(fā)送該Hello消息的鄰居之間的會話是否存在,如果不存在,則確 定接收到的Hello消息為請求創(chuàng)建會話的協(xié)議報文。
3、 如權(quán)利要求l所述的方法,其特征在于,該方法進一步包括預(yù)先創(chuàng)建 資源池,該資源池保存記錄的數(shù)量等于所述會話創(chuàng)建數(shù)量閾值;所述記錄用于 記載會話創(chuàng)建時間;所述判斷在當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量 閾值包括從資源池中獲取指針當(dāng)前指向的記錄所記載的時間Ti; 計算當(dāng)前時間與獲取的Ti之間的時間差;如果該時間差的絕對值小于所述時間周期長度,則判定在當(dāng)前時間周期內(nèi) 建立的會話數(shù)目已達到設(shè)置的會話創(chuàng)建數(shù)量閾值;否則,判定在當(dāng)前時間周期 內(nèi)建立的會話數(shù)目未達到設(shè)置的會話創(chuàng)建數(shù)量閾值,將當(dāng)前時間更新到指針當(dāng) 前指向的記錄中,令所述指針指向下一個記錄;如果所述指針當(dāng)前指向的記錄 為所述資源池的最后一個記錄,則所述指針指向的下一個記錄為所述資源池的 第一個記錄。
4、 如權(quán)利要求3所述的方法,其特征在于,該方法進一步包括在初始化 時,將資源池的所有記錄初始化為初始符號,指針指向資源池的第一個記錄;所述獲取指針當(dāng)前指向的記錄所記載的時間Ti之后,該方法進一步包括 如果獲取的Ti為初始符號,則根據(jù)接收的協(xié)議報文創(chuàng)建會話,將當(dāng)前時間更新 到指針當(dāng)前指向的記錄中,令所述指針指向下一個記錄;如果獲取的Ti不為初 始符號,則執(zhí)行所述比較當(dāng)前時間與獲取的Ti的時間差的操作。
5、 如權(quán)利要求1至4任一項所述的方法,其特征在于,該方法進一步包括 每隔一段預(yù)設(shè)時間為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文;或者設(shè)置第二時間周期長度,在每個第二時間周期長度內(nèi)最多為預(yù)設(shè)數(shù)量 個會話發(fā)送協(xié)議報文。
6、 如權(quán)利要求5所述的方法,其特征在于,預(yù)先創(chuàng)建第二資源池,該第二 資源池保存記錄的數(shù)量等于所述預(yù)設(shè)數(shù)量;第二資源池中的記錄用于記載為一 個會話發(fā)送報文的時間;所述在每個第二時間周期長度內(nèi)最多為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文包 括輪詢已創(chuàng)建的各會話,對輪詢到的會話執(zhí)行如下處理從第二資源池中獲取第二指針當(dāng)前指向的記錄所記載的時間Tj;計算當(dāng)前時間與獲取的Tj之間的時間差;如果該時間差的絕對值小于所述第二時間周期長度,則不為輪詢到的會話 發(fā)送報文;否則,為輪詢到的會話發(fā)送報文,將當(dāng)前時間更新到第二指針當(dāng)前 指向的記錄中,令所述第二指針指向下一個記錄;如果所述第二指針當(dāng)前指向 的記錄為所述第二資源池的最后一個記錄,則所述第二指針指向的下一個記錄 為所述第二資源池的第一個記錄。
7、 一種防止會話振蕩的會話處理單元,其特征在于,該單元包括協(xié)議報文 接收模塊和會話創(chuàng)建判斷模塊;所述協(xié)議報文接收模塊,用于接收協(xié)議報文,將接收的請求創(chuàng)建會話的協(xié) 議報文發(fā)送給會話創(chuàng)建判斷模塊;所述會話創(chuàng)建判斷模塊,用于接收所述請求創(chuàng)建會話的協(xié)議報文,判斷在 當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量閾值;如果是, 不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話。
8、 如權(quán)利要求7所述的會話處理單元,其特征在于,所述協(xié)議報文接收模 塊包括接收子模塊和確定子模塊; 所述接收子模塊,用于接收鄰居通告Hello消息;所述確定子模塊,用于判斷所在單元與所述接收子模塊接收的Hello消息 的發(fā)送端之間的會話是否已經(jīng)存在,如果不存在,則將接收的Hello消息作為 請求創(chuàng)建會話的協(xié)議報文發(fā)送給所述會話創(chuàng)建判斷模塊。
9、 如權(quán)利要求7所述的會話處理單元,其特征在于,所述會話創(chuàng)建判斷斗莫 塊包括資源池、處理子^^莫塊和指針控制子i^莫塊;所述資源池用于保存記錄,所保存記錄的數(shù)量等于所述會話創(chuàng)建數(shù)量閾值, 所述記錄用于記載會話創(chuàng)建時間;所述處理子模塊,用于接收來自所述協(xié)議報文接收模塊的請求創(chuàng)建會話的 協(xié)議報文,從資源池中,獲取指針當(dāng)前指向的記錄所記載的時間Ti;計算當(dāng)前 時間與獲取的Ti之間的時間差,如果該時間差的絕對值小于所述時間周期長 度,則不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話,將當(dāng)前時間更 新到指針當(dāng)前指向的記錄中,通知指針控制子模塊;所述指針控制子才莫塊,用于在接收到通知后,控制所述指針指向下一個記 錄;如果所述指針當(dāng)前指向的記錄為所述資源池的最后一個記錄,則控制所述 指針指向所述資源池的第一個記錄。
10、 如權(quán)利要求9所述的會話處理單元,其特征在于,所述處理子一莫塊進 一步用于,在初始化時,將資源池的所有記錄初始化為初始符號,令指針指向 資源池的第一個記錄;所述獲取指針當(dāng)前指向的記錄所記載的時間Ti之后,如 果Ti為初始符號,則執(zhí)行所述根據(jù)接收的協(xié)議報文創(chuàng)建會話的操作,將當(dāng)前時 間更新到指針當(dāng)前指向的記錄中,通知指針控制子模塊;否則,執(zhí)行所述比較 當(dāng)前時間與獲取的Ti的時間差的操作。
11、 如權(quán)利要求7所述的會話處理單元,其特征在于,該單元進一步包括 報文發(fā)送控制模塊,用于每隔一段預(yù)設(shè)時間為預(yù)設(shè)數(shù)量個會話發(fā)送協(xié)議報文; 或者設(shè)置第二時間周期長度,在每個第二時間周期長度內(nèi)最多為預(yù)設(shè)數(shù)量個會 話發(fā)送協(xié)議報文。
全文摘要
本發(fā)明公開了一種防止會話振蕩的會話處理方法,該方法包括接收請求創(chuàng)建會話的協(xié)議報文,判斷在當(dāng)前時間周期內(nèi)建立的會話數(shù)目是否達到設(shè)置的會話創(chuàng)建數(shù)量閾值;如果是,不創(chuàng)建新的會話;否則,根據(jù)接收的協(xié)議報文創(chuàng)建會話。本發(fā)明還公開了一種防止會話振蕩的會話處理單元。使用本發(fā)明能夠避免消息突發(fā),從根本上防止會話振蕩。
文檔編號H04L29/06GK101360044SQ20081011993
公開日2009年2月4日 申請日期2008年9月11日 優(yōu)先權(quán)日2008年9月11日
發(fā)明者蕊 王 申請人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1