一種并發(fā)控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于數(shù)據(jù)通信領(lǐng)域,尤其涉及一種并發(fā)控制方法及裝置。
【背景技術(shù)】
[0002]隨著數(shù)據(jù)通信技術(shù)的發(fā)展,第二層隧道協(xié)議(Layer 2Tunneling Protocol,簡稱L2TP)被普遍使用和認(rèn)識,尤其在第三代移動通信技術(shù)的到來,使L2TP協(xié)議得到了更廣泛的應(yīng)用。鑒于此,客戶對L2TP接入L2TP訪問集中器(L2TP Access Concentrator,簡稱LAC)及L2TP網(wǎng)絡(luò)服務(wù)器(L2TP Network Serer,簡稱LNS)的使用特性更為關(guān)注,在實(shí)際應(yīng)用中一般是多個LAC或撥號客戶端對應(yīng)一個LNS設(shè)備,所以對LNS設(shè)備處理并發(fā)連接性能要求就更高,因?yàn)檫@涉及到LNS設(shè)備在大并發(fā)連接情況下L2TP協(xié)議控制的收斂性。
[0003]目前現(xiàn)有的控制LNS設(shè)備并發(fā)連接性能的方法是在L2TP控制面限定L2TP隧道的發(fā)送隊(duì)列窗口大小,雖然發(fā)送隊(duì)列窗口大小對會話創(chuàng)建并發(fā)有一定控制作用,但該控制并發(fā)處理的方法在協(xié)議流程處理的后端,因此其并不能減輕L2TP控制面對超過其并發(fā)處理性能的連接請求造成資源浪費(fèi)的問題,從而影響了 LNS設(shè)備并發(fā)處理的效率,導(dǎo)致整個LNS設(shè)備的并發(fā)處理性能下降。而隧道的并發(fā)在協(xié)議面沒有控制機(jī)制,取決于下端LAC設(shè)備發(fā)起隧道創(chuàng)建的速度和L2TP自身處理能力,如果在L2TP轉(zhuǎn)發(fā)面就能控制L2TP的大量并發(fā),提高協(xié)議面的處理性能,則具有實(shí)際的重要意義。
【發(fā)明內(nèi)容】
[0004]本發(fā)明為解決現(xiàn)有技術(shù)中L2TP控制并發(fā)處理的方法在協(xié)議流程處理的后端,對超過并發(fā)處理性能的請求處理造成資源浪費(fèi)、影響LNS設(shè)備并發(fā)處理效率的問題,提供一種在L2TP轉(zhuǎn)發(fā)面前端識別處理,減少超過L2TP控制面并發(fā)處理性能的報文沖擊L2TP控制面的方法。
[0005]本發(fā)明的目的在于提供一種并發(fā)控制方法,該方法包括:
[0006]A、創(chuàng)建一個虛擬輸入隊(duì)列,設(shè)定所述虛擬輸入隊(duì)列的隊(duì)列長度為LNS設(shè)備L2TP控制面所能處理的請求報文的最大并發(fā)個數(shù);所述請求報文包括打開控制連接請求SCCRQ報文或會話請求ICRQ報文;
[0007]B、在LNS設(shè)備L2TP轉(zhuǎn)發(fā)面收到的報文中,識別出SCCRQ報文或ICRQ報文;
[0008]C、判斷此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量是否達(dá)到虛擬輸入隊(duì)列的隊(duì)列長度,如果此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量未達(dá)到所述虛擬輸入隊(duì)列的隊(duì)列長度,則將所述SCCRQ報文或ICRQ報文入隊(duì)到虛擬輸入隊(duì)列;
[0009]D、入隊(duì)到虛擬輸入隊(duì)列的所述SCCRQ報文或ICRQ報文被依次發(fā)送到L2TP控制面處理。
[0010]進(jìn)一步地,所述虛擬輸入隊(duì)列的隊(duì)列長度可修改。
[0011]進(jìn)一步地,所述步驟C中,如果此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量達(dá)到虛擬輸入隊(duì)列的隊(duì)列長度,則丟棄所述SCCRQ報文或ICRQ報文。
[0012]進(jìn)一步地,所述方法還包括:被丟棄的SCCRQ報文或ICRQ報文下次重傳到LNS設(shè)備L2TP轉(zhuǎn)發(fā)面時,此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量未達(dá)到所述虛擬輸入隊(duì)列的隊(duì)列長度,則會繼續(xù)對重傳的所述被丟棄的SCCRQ報文或ICRQ報文執(zhí)行入隊(duì)操作。
[0013]進(jìn)一步地,所述方法還包括:當(dāng)隧道或會話建立連接成功或處理過程中出現(xiàn)異常時,將所述隧道或會話對應(yīng)的SCCRQ報文或ICRQ報文從所述虛擬輸入隊(duì)列中出隊(duì)。
[0014]本發(fā)明的另一目的還在于提供一種并發(fā)控制裝置,所述裝置包括:
[0015]設(shè)置模塊,用于創(chuàng)建一個虛擬輸入隊(duì)列,設(shè)定所述虛擬輸入隊(duì)列的隊(duì)列長度為LNS設(shè)備L2TP控制面所能處理的請求報文的最大并發(fā)個數(shù);所述請求報文包括打開控制連接請求SCCRQ報文或會話請求ICRQ報文;
[0016]報文識別模塊,用于在LNS設(shè)備L2TP轉(zhuǎn)發(fā)面收到的報文中,識別出SCCRQ報文或ICRQ報文;
[0017]入隊(duì)處理模塊,判斷此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量是否達(dá)到虛擬輸入隊(duì)列的隊(duì)列長度,如果此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量未達(dá)到所述虛擬輸入隊(duì)列的隊(duì)列長度,則將所述SCCRQ報文或ICRQ報文入隊(duì)到所述虛擬輸入隊(duì)列;
[0018]出隊(duì)處理模塊,用于將入隊(duì)到虛擬輸入隊(duì)列的所述SCCRQ報文或ICRQ報文依次發(fā)送到L2TP控制面處理。
[0019]進(jìn)一步地,所述設(shè)置模塊,還用于對所述虛擬輸入隊(duì)列的隊(duì)列長度進(jìn)行修改。
[0020]進(jìn)一步地,所述入隊(duì)處理模塊,還用于如果此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量達(dá)到虛擬輸入隊(duì)列的隊(duì)列長度,則丟棄所述SCCRQ報文或ICRQ報文。
[0021]進(jìn)一步地,所述入隊(duì)處理模塊,還用于在被丟棄的SCCRQ報文或ICRQ報文下次重傳到LNS設(shè)備L2TP轉(zhuǎn)發(fā)面時,此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量未達(dá)到所述虛擬輸入隊(duì)列的隊(duì)列長度,則會繼續(xù)對重傳的所述被丟棄的SCCRQ報文或ICRQ報文執(zhí)行入隊(duì)操作。
[0022]進(jìn)一步地,所述出隊(duì)處理模塊,還用于當(dāng)隧道或會話建立連接成功或處理過程中出現(xiàn)異常時,將所述隧道或會話對應(yīng)的SCCRQ報文或ICRQ報文從所述虛擬輸入隊(duì)列中出隊(duì)。
[0023]本發(fā)明的有益效果為:在本發(fā)明中,采用虛擬輸入隊(duì)列機(jī)制,使L2TP隧道或會話對應(yīng)的SCCRQ報文或ICRQ報文在LNS設(shè)備L2TP轉(zhuǎn)發(fā)面入隊(duì)到虛擬輸入隊(duì)列,避免超過L2TP控制面并發(fā)處理性能的報文沖擊L2TP控制面,降低L2TP控制面的負(fù)荷,保障了 L2TP控制面的有效運(yùn)行,提高了 LNS設(shè)備并發(fā)處理的效率。
【附圖說明】
[0024]附圖1是本發(fā)明實(shí)施例的方法流程圖;
[0025]附圖2是本發(fā)明實(shí)施例的裝置框圖。
【具體實(shí)施方式】
[0026]為使本發(fā)明的技術(shù)方案更加清楚明白,現(xiàn)結(jié)合附圖對本發(fā)明做進(jìn)一步詳細(xì)說明:
[0027]本發(fā)明實(shí)施例提供一種并發(fā)控制方法,該方法采用虛擬輸入隊(duì)列來排隊(duì)所有的隧道或會話請求報文實(shí)現(xiàn)對LNS設(shè)備上的并發(fā)控制。本發(fā)明實(shí)施例的應(yīng)用場景包含多臺LAC設(shè)備和一臺LNS設(shè)備,如圖1所示,該方法的具體實(shí)現(xiàn)步驟包括:
[0028]S101、創(chuàng)建一個虛擬輸入隊(duì)列,設(shè)定所述虛擬輸入隊(duì)列的隊(duì)列長度為LNS設(shè)備L2TP控制面所能處理的請求報文的最大并發(fā)個數(shù);且所述虛擬輸入隊(duì)列的隊(duì)列長度可修改。所述請求報文包括打開控制連接請求SCCRQ(Start Control Connect1n Request)報文或會話請求ICRQ(Incoming Call Request)報文;其中,所述隊(duì)列長度是根據(jù)系統(tǒng)和測試達(dá)到的一個最優(yōu)化的數(shù)值,并且可以根據(jù)系統(tǒng)的負(fù)載情況,手動配置修改,可修改的虛擬輸入隊(duì)列的隊(duì)列長度的范圍為O到N,N為大于O的整數(shù)。當(dāng)需要手動配置修改虛擬輸入隊(duì)列的隊(duì)列長度時,需繼承先前虛擬輸入隊(duì)列中已有的報文數(shù)量,再改變虛擬輸入隊(duì)列的隊(duì)列長度。例如:在本發(fā)明實(shí)施例中,設(shè)定虛擬輸入隊(duì)列的隊(duì)列長度為1000個,若此時根據(jù)負(fù)載情況需要手動配置虛擬輸入隊(duì)列的隊(duì)列長度為2000個,而此時虛擬輸入隊(duì)列已存在300個待處理的SCCRQ報文或ICRQ報文,則新的虛擬輸入隊(duì)列還可以容納1700個并發(fā)的SCCRQ報文或ICRQ報文。
[0029]S102、在LNS設(shè)備L2TP轉(zhuǎn)發(fā)面收到的報文中,識別出SCCRQ報文或ICRQ報文。具體包括:當(dāng)LNS設(shè)備L2TP轉(zhuǎn)發(fā)面收到報文后,識別收到的報文為發(fā)送給本設(shè)備的報文后,進(jìn)入L2TP處理流程,L2TP處理識別報文是否是L2TP報文,識別L2TP報文的依據(jù)是先識別出端口號為1701的UDP報文,如果是L2TP報文,則繼續(xù)解析報文是否是控制報文,如果是控制報文,則解析該控制報文的消息類型,如果是SCCRQ報文或ICRQ報文,則需要把SCCRQ報文或ICRQ報文入隊(duì)到虛擬輸入隊(duì)列,增加L2TP控制面的并發(fā)處理量。
[0030]S103、判斷此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量是否達(dá)到虛擬輸入隊(duì)列的隊(duì)列長度,如果此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量未達(dá)到所述虛擬輸入隊(duì)列的隊(duì)列長度,則將所述SCCRQ報文或ICRQ報文入隊(duì)到虛擬輸入隊(duì)列;如果此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量達(dá)到虛擬輸入隊(duì)列的隊(duì)列長度,則丟棄所述SCCRQ報文或ICRQ報文,以便減輕L2TP控制面的處理壓力,被丟棄的SCCRQ報文或ICRQ報文下次重傳到LNS設(shè)備L2TP轉(zhuǎn)發(fā)面時,此時虛擬輸入隊(duì)列中SCCRQ報文和ICRQ報文的數(shù)量未達(dá)到所述虛擬輸入隊(duì)列的隊(duì)列長度,則會繼續(xù)對重傳的所述被丟棄的SCCRQ報文或ICRQ報文執(zhí)行入