專利名稱:數(shù)字用戶專用線訪問多路復用器中有效的包緩沖器管理法的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)通信領域,具體針對在多重約定環(huán)境中對多路復用多信道通信進行控制。
近年來,已大大提高了通過普通電話網(wǎng)與布線實現(xiàn)通信的數(shù)據(jù)速率。這種數(shù)據(jù)速率的提高大部分是由于新近采納了對代表通信的消息或數(shù)據(jù)的信號實施多路復用與調(diào)制的技術,從而大大改善了通信帶寬。此外,近年來還提高了通信的載波頻率,進一步改善了比特速率。
這類更高的數(shù)據(jù)速率是以一種相對新型的當代調(diào)制解調(diào)通信技術實現(xiàn)的,在技術上指數(shù)字用戶專用線(DSL)。DSL通常指某種公用網(wǎng)絡技術,一般在有限的距離通過普通電話公司的銅質(zhì)布線提供相對高的帶寬。根據(jù)數(shù)據(jù)通信媒體特定預期的數(shù)據(jù)傳遞速率、類型與長度以及通信數(shù)據(jù)的編譯碼方案,一直把DSL進一步分成幾種不同的技術類別。根據(jù)這種技術,DSL調(diào)制解調(diào)器之間的數(shù)據(jù)速率可以遠遠大于當前的話音調(diào)制解調(diào)器速率。事實上,當前的DSL系統(tǒng)是以數(shù)量級為500Kbps到18Mbps或更高的數(shù)據(jù)速率工作的(或計劃工作的)。按照某些常規(guī)技術,諸如指定為不對稱數(shù)字用戶專用線(ADSL)并對應于ANSI標準T1.43的規(guī)約,數(shù)據(jù)通信速率是不對稱的。一般而言,對所謂的下游通信提供較高的速率(下游通信指從電話網(wǎng)總局到客戶調(diào)制解調(diào)器),而從客戶調(diào)制解調(diào)器到總局的上游通信的數(shù)據(jù)速率遠遠低于下游速率。
DSL通信網(wǎng)的一個組成部分在技術上指數(shù)字用戶專用線訪問多路復用器,即DSLAM。通常將DSLAM安置在電話網(wǎng)總局里,它包括多個可以連接用戶調(diào)制調(diào)制器的DSL市制解調(diào)器端口。DSLAM的基本功能是將用戶數(shù)據(jù)通信從其多個DSL調(diào)制解調(diào)器端口多路傳輸?shù)侥硞€網(wǎng)絡,諸如可以包括服務器與因特網(wǎng)關的LAN;而且DSLAM還將由該網(wǎng)絡返回的數(shù)據(jù)通信進行分路傳輸,經(jīng)DSL端口與用戶通信。
常規(guī)DSLAM一般借助多個線路卡實現(xiàn),每個線路卡支持一個或多個DSL端口。在DSL端口接收的通信通常為數(shù)據(jù)包形式,每個數(shù)據(jù)包的頭部或尾部(或二者)包含有關該數(shù)據(jù)包消息的通信線路信息。DSLAM控制器功能執(zhí)行有關的成幀與數(shù)據(jù)格式化,由此根據(jù)有關規(guī)的將在DSL端口接收的數(shù)據(jù)包傳輸?shù)紻SLAM中的某個網(wǎng)絡接口卡(NIC),據(jù)此傳輸?shù)皆摼W(wǎng)絡。
通常要求用DSLAM來處理多個規(guī)約,給出能在網(wǎng)絡上實行的寬范圍的網(wǎng)絡通信。這類規(guī)約包括點對點規(guī)約(PPP)、因特網(wǎng)規(guī)約(IP)、地址分辨規(guī)約(ARP)、簡單網(wǎng)絡管理規(guī)約(SMNP)等等。在其DSL通信的多路復用與處理中(二者都從DSL端口接收,也可通過這些端口發(fā)送),可以要求DSLAM將給出的數(shù)據(jù)包格式化和再格式化成這些規(guī)約中的一個規(guī)約。由于這些處理都可能修改、增補或刪除每個數(shù)據(jù)包的頭部或尾部,所以普通的DSLAM工作時要反復地讀出和重寫含有這些數(shù)據(jù)包的存儲區(qū)。
考慮到DSLAM產(chǎn)生的存儲器復制次數(shù),以這種常規(guī)方法處理數(shù)據(jù)包所需的存儲器與處理資源可能相當龐大。所需的存儲器資源指存儲器容量,它必須能存貯各種復制,而所需的處理資源指操作(和循環(huán))次數(shù),為了讀寫復制內(nèi)容,這種操作(和循環(huán))必須由處理器執(zhí)行。對于來自每個DSL端口的一個數(shù)據(jù)包,可按下式估算準備由控制多個DSL端口或信道的DSLAM處理器執(zhí)行的存儲器復制次數(shù)NN=(2n+A+1)*C式中的C是受DSLAM處理器控制的DSL端口或信道數(shù),n是DSLAM通過其處理每個數(shù)據(jù)包的規(guī)約的數(shù)量(考慮到上下游兩種通信,要乘2),而A是存儲器復制數(shù),取決于DSLAM執(zhí)行的各種應用情況;附加復制(即公式中的“1”)代表DSLAM中該數(shù)據(jù)包從接收緩沖器復制到發(fā)送緩沖器。即使是一種應用兩個規(guī)約且DSLAM應用不要求附加復制的簡化型系統(tǒng),對于DSLAM中的每條DSL信道而言,每個數(shù)據(jù)包要求5次復制??紤]到準備由DSLAM處理的DSL信道數(shù)可能很大,并且還考慮到現(xiàn)代DSL通信的包數(shù)據(jù)速率,這種常規(guī)DSLAM結構所需的存儲器與處理資源就變得相當可觀了。事實上,這種常規(guī)操作中所需的存儲空間通常超過了普通控制器處理器所具備的單片(on-chip)高速存儲,從而要求有一種做在DSLAM體系內(nèi)的存儲器分系統(tǒng)。
由常規(guī)DSLAM實現(xiàn)的線路卡功能目前一般使用數(shù)字信號處理器(DSP),諸如Texas儀表公司出售的TMS320C5X和TMS320C6X系列DSP,以便高速處理DSLAM通信的數(shù)據(jù)。DSLAM里的控制器最好也用類似的DSP實現(xiàn),從而無須在線路卡DSP與DSLAM控制器(和NIC)之間作數(shù)據(jù)轉換;事實上在諸如TM320C6X等級一類的當代技術水平的DSP的情況下,相信有足夠的處理能力,從而由用于應付線路卡處理的同一個DSP實現(xiàn)該控制功能。然而,為保持最高的性能,最好利用DSP的芯片上存儲器應付數(shù)據(jù)包規(guī)約處理;根據(jù)常規(guī)實現(xiàn)方法,如上所述,在諸規(guī)約之間復制數(shù)據(jù)包所需的存儲器資源,基本上不能為這一功能使用芯片上的DSP存儲器。
因此,本發(fā)明的一個目的是提供一種數(shù)字用戶專用線訪問多路復用器(DSLAM)及其操作方法,其中將數(shù)據(jù)包的規(guī)約轉換所必需的存儲器與處理資源減至量小。
本發(fā)明的再一個目的是提供這樣一種DSLAM與方法,據(jù)此可在規(guī)約轉換期間用高速芯片上存儲器存貯傳遞的數(shù)據(jù)包。
本發(fā)明的再一個目的是提供這樣一種DSLAM與方法,據(jù)此可借助數(shù)字信號處理器(DSP)實現(xiàn)DSLAM控制器功能。
本發(fā)明的再一個目的是提供這樣一種DSLAM與方法,據(jù)此能以同DSP或其它控制器相一致的方式配置芯片上存儲器。
本發(fā)明的再一個目的是提供這樣一種DSLAM與方法,據(jù)此可以避免分裂數(shù)據(jù)包存儲器資源。
本領域的一般技術人員通過參照下述的說明與附圖,將明白本發(fā)明的其它目的與優(yōu)點。
本發(fā)明可利用數(shù)字用戶專用線訪問多路復用器(DSLAM)里的數(shù)據(jù)包緩沖器管理器功能來實施。數(shù)據(jù)包緩沖器管理器配置在里面可以存貯數(shù)據(jù)包與頭部的某個鄰接存儲區(qū)。每個數(shù)據(jù)包,無論是從網(wǎng)絡接口還是從DSL端口接收的,都以某種數(shù)據(jù)結構存貯在存儲區(qū)中,而這種數(shù)據(jù)結構不僅為通信的數(shù)據(jù)保留著足夠的空間,還為預計要應用于該數(shù)據(jù)包的每一種規(guī)約的將來的頭部與尾部保留著足夠的空間。數(shù)據(jù)結構中的數(shù)據(jù)位移指針指向實際包數(shù)據(jù)的開始。通過參照包括數(shù)據(jù)指針在內(nèi)的各種指針,可對該數(shù)據(jù)包增補、修改或取消內(nèi)務操作數(shù)據(jù)(頭部與尾部),無須復制數(shù)據(jù)包本身。在傳輸時,放開被該存儲區(qū)占用的存儲器部分,鄰接區(qū)復原,以避免分裂。
圖1是可以實施本發(fā)明較佳實施例的數(shù)字用戶專用線(DSL)通信網(wǎng)絡的電氣方框圖。
圖2是按本發(fā)明較佳實施例構成的數(shù)字用戶專用線訪問多路復用器(DSLAM)的電氣方框圖。
圖3是可以實施本發(fā)明較佳實施例中DSLAM控制器的數(shù)字信號處理器(DSP)體系結構的電氣方框圖。
圖4是根據(jù)本發(fā)明較佳實施例的說明軟件結構的方框圖,圖2的DSLAM在其控制下工作。
圖5是存儲器圖,表示根據(jù)本發(fā)明較佳實施例的圖2DSLAM控制器中芯片上存儲器內(nèi)存儲庫的安排。
圖6是一流程圖,表示根據(jù)本發(fā)明較佳實施例的DSLAM控制器的工作情況。
圖7是一方框圖,表示根據(jù)本發(fā)明較佳實施例的DSLAM控制器的應用情況。
圖8a到8c是存儲器圖,表示根據(jù)本發(fā)明較佳實施例將幾例數(shù)據(jù)包緩沖器的位置輸入圖5中存儲庫的情況。
圖9a到9e表示在按圖6方法作規(guī)約處理期間,本發(fā)明較佳實施例根據(jù)存儲庫中某個數(shù)據(jù)包緩沖器而工作的情況。
圖10是一存儲器圖,表示根據(jù)本發(fā)明第二較佳實施例的數(shù)據(jù)包緩沖器輸入的聯(lián)接安排。
先參照圖1,首先描述可在其中實施本發(fā)明較佳實施例的一種數(shù)字用戶專用線(DSL)通信網(wǎng)絡。將結合某個DSL網(wǎng)絡描述本發(fā)明的較佳實施例。因應在應用于DSL通信時,預期本發(fā)明特別有利;當然應該明白,本發(fā)明同樣適用于其它類型的通信,本領域的技術人員在參閱本說明書后將會更加清楚。再者,這里描述的圖1中特定的DSL網(wǎng)絡只是一個例子,預期本領域的技術人員在參閱了本說明書后,完全能在根據(jù)其它結構的DSL網(wǎng)絡中實現(xiàn)本發(fā)明的優(yōu)點,并且如上所述,也能在根據(jù)其它技術的數(shù)據(jù)通信中實現(xiàn)本發(fā)明的優(yōu)點。
如圖1所示,DSL通信網(wǎng)絡包括多個用戶地點H,這些地點可以對應于家庭的或辦公室的用戶地點。在這一DSL結構中,示例性的用戶地點H。包括同用戶計算機4。進行通信的一臺DSL調(diào)制解調(diào)器20。像本領域中的常規(guī)方法那樣,將電話手機60與DSL調(diào)制解調(diào)器20同時接到分離器80,后者提供適當?shù)臑V波操作,將話普通信轉送給手機60,將數(shù)據(jù)通信傳送給DSL調(diào)制解調(diào)器20。將分離器80接到當?shù)仉娫捑W(wǎng)設施TWP之一,每一個TWP都可用普通的雙扭絞銅線實現(xiàn)。其它用戶地點H可用同樣方法構成,或用本領域中已知的其它方式實現(xiàn)。
圖1的例子對應于DSL通信類型,其中的模擬話音信號以低于數(shù)據(jù)通信的頻率運行,允許兩類通信業(yè)務同時迭加在相同的電話網(wǎng)設施上。或者正如本領域眾所周知的,可以采用所謂的“無分離器”DSL,其中的話音通通信由DSL調(diào)制解調(diào)器接收并被轉換成數(shù)據(jù)包通信,且以類似于數(shù)據(jù)通信的方式在電話網(wǎng)上作為數(shù)字包進行通信。根據(jù)這類無分離器技術,本發(fā)明也同樣適用于DSL通信。
在圖1的例子中,可將設施TWP直接接到總局CO,或者作為雙扭絞線與光纖物理設施的組合體,配有可靠地通信所必需的中繼器和其它網(wǎng)絡元件(未示出)。在涉及話音通信的場合,如在本例中,總局CO一般處于電話提供方的位置。或者,可將DSL通信限于數(shù)據(jù)通信,此時總局CO可以是個服務器地點,諸如用戶地點H可利用其通信數(shù)據(jù)的某個公用或專用(因特網(wǎng)或intranet)服務器地點,此時將不呈現(xiàn)模擬話音信號能力。
如圖1所示,每個雙扭絞線設施TWP均被數(shù)字用戶專用線訪問多路復用器(DSLAM)10接收,下面將相對于本發(fā)明的較佳實施例詳細描述這一結構。本例中,DSLAM10能將話音信號從設施TWP上接收的數(shù)據(jù)通信中分離出來,并把這些信號經(jīng)話音數(shù)字開關12轉送到公用交換電話網(wǎng)(PSTN),所述話音數(shù)字開關12也位于總局CO;當然,從PSIN到用戶地點H(諸如用戶地點H0的手段60)的話音通信,也可用數(shù)字開關12和DSLAM10以常規(guī)方法處理。
對于數(shù)據(jù)通信,DSLAM10與諸如圖1中總局CO的局域網(wǎng)(LAN)14一類的本地網(wǎng)絡通信;或者,作為典型的因特網(wǎng)服務提供方的總局構成,可使DSLAM10與異步傳輸模(ATM)網(wǎng)進行通信,由此可以更直接地與因特網(wǎng)進行雙向通信。再來看圖1的例子,在本領域眾所周知,能以常規(guī)的LAN方式來編排LAN14,諸如一種Ethernet網(wǎng),可在其上以常規(guī)方式通信。這類LAN與數(shù)據(jù)包通信兼容,這是眾所周知的。在圖1例子中,本地服務器15留駐在LAN14上,因而用戶地點H可以通過DSL連接可以當?shù)卦L問存貯的數(shù)據(jù)。另外,尤其在電話網(wǎng)應用中,可將因特網(wǎng)網(wǎng)關留駐在LAN14上,從而用戶地點H可經(jīng)總局CO雙向訪問因特網(wǎng)。
DSLAM10還接至元件管理系統(tǒng)(EMS)17。EMS17是一臺本地主計算機,諸如個人計算機或工作站,它可用來通過串行或平行接口訪問和控制DSLAM10內(nèi)的系統(tǒng)管理功能。
現(xiàn)在參照圖2,說明本發(fā)明較佳實施例的DSLAM10的系例性結構。如圖2所示,DSLAM10包括多種模擬前端(AFE)功能元件20,每個功能元件作為一個DSL端口,從而雙向連接至雙扭絞線設施TWP之一,接收來自連接用戶地點H的通信。將AFE功能元件20構制成電路卡,包括混合信號(即涉及到數(shù)模擬兩種操作)集成電路。為全雙工DSL通信提供所有必需的環(huán)路接口和線路驅動功能元件??捎脕韺崿F(xiàn)AFE功能元件20的集成電路的例子,包括TLV320AD12總局ADSL編譯碼器和THS6002線路驅動器,二者可向Texas儀表公司購買。
DSLAM10的DSL信道收發(fā)機22,每一個都雙向連接至多個AFE功能元件20之一。在圖2例子中,每個DSL信道收發(fā)機22均接至4個AFE功能元件20;當然,通過給定的一個DSL信道收發(fā)機22進行處理的AFE功能元件20以及DSL信道的特定數(shù)量,可以隨特定的DSLAM結構和DSL信道收發(fā)機22的處理能力而變化。DSL信道收發(fā)機22最好每一個都是可編程數(shù)字裝置,對數(shù)據(jù)有效負載的發(fā)送與接收執(zhí)行必要的信號處理操作。這類操作包括這樣一些功能,諸如回波消除、將數(shù)據(jù)編譯碼到適合發(fā)送的子信道,以及在頻域與時域之間執(zhí)行快速傅里葉變換(FFT)信號處理。特別在DSL數(shù)據(jù)速率方面,DSL信道收發(fā)機22的數(shù)字數(shù)據(jù)處理容量與能力最好是高水平的,最好達到數(shù)字信號處理器一檔的能力,至少具有Texas儀表公司出售的TMS320CL548DSP的能力。每個DSL信道收發(fā)機22都接至成幀器功能元件24,后者最好也被構制成諸如上述TMS320CL548一類的DSP。成幀器功能元件24把數(shù)字數(shù)據(jù)適當?shù)馗袷交珊线m的包與幀,以便在DSLAM10內(nèi)處理。雖然圖2中清楚地示出了兩臺DSL信道收發(fā)機22,不過當然可以推測,任意數(shù)量的DSL信道收發(fā)機22都可饋給(和被饋給)成幀器功能元件24,具體數(shù)量則取決于DSLAM10的特定結構與能力。
DSLAM控制器25雙向連接到一側的成幀器24;在其網(wǎng)絡一側,DSLAM控制器25雙向連接到Ethernet網(wǎng)接口卡(NIC)26、RS422高速串行接口27和RS232串行接口28。如圖1所示,Ethernet NIC26將DSLAM10接口到LAN14;同樣如圖1所示,串行接口27、28將DSLAM10接口到EMS17。在這方面,根據(jù)圖2這種示例性結構的DSLAM控制器25所執(zhí)行的功能之一,就是響應于通過串行接口27、28(或者經(jīng)Ethernet NIC26在LAN14上)從EMS17接收的控制指令,就地控制DSLAM10的建立與操作。在與DSL信道的數(shù)據(jù)通信方面,DSLAM控制器25的功能是對連接到DSLAM10中AFE功能元件20的DSL信道作數(shù)據(jù)流控制與信道管理,以及DSL信道與NIC26之間的數(shù)據(jù)充控制。正如下面將更詳細描述的那樣,DSLAM控制器25還根據(jù)諸如PPP、IP路線、ARP等各種規(guī)約,執(zhí)行層2與層3網(wǎng)絡規(guī)約處理。
根據(jù)本發(fā)明的較佳實施例,可將DSLAM控制器25構成上述DSLAM控制器功能元件專用的單個DSP裝置,如上所述,具有諸如Texas儀表公司出售的TMS320LC548 DSP的性能。這方面,用作DSLAM控制器25的這種DSP裝置最好像上述的TMS320LC548DSP那樣,具有芯片上隨機存取存儲器(RAM)?;蛘?,在將更高處理性能的DSP(諸如Texas儀表公司出售的TMS320C6X級別DSP)用于DSLAM10中其它功能元件(即成幀器功能元件24和DSL信道收發(fā)機22),并且如果在該DSP中保持充分的處理容量以處理DSLAM控制器25的功能的情況下,則可在單個DSP裝置中實現(xiàn)DSLAM10的數(shù)字功能元件。這樣,根據(jù)特定電路的處理能力,圖2所示DSLAM10的功能界限可以代表或可以不代表用于實現(xiàn)這些功能元件的集成電路的界限。
另外,當然可以用專用于下面描述的流程控制操作的定制邏輯電路實現(xiàn)DSLAM控制器25。
如上所述,最好把DSLAM控制器25構成數(shù)字信號處理器(DSP),最好與在DSLAM10里用作DSL信道收發(fā)機22與成幀功能元件24的其它DSP兼容。這種DSLAM控制器25的DSP實現(xiàn)可讓數(shù)據(jù)通過DSLAM10流動而不存在數(shù)據(jù)轉換和其它接口問題,如果把DSLAM控制器25構成通用微處理器,則必然有這些問題。另外,把DSLAM控制器25構成DSP,可對DSLAM控制器25的操作采用與DSLAM10內(nèi)其它DSP同一個開發(fā)平臺。當然,本領域的技術人員在參閱本說明書后將會明白,即便用這類微處理器或其它硬件而不用DSP裝置來構制DSLAM控制器25,也能實現(xiàn)本發(fā)明的許多優(yōu)點。
現(xiàn)在參照圖3詳細地描述示例性的DSP130的結構,該結構可實現(xiàn)DSLAM控制器25。該例DSP130對應于上述TMS320LC548的結構,可以理解,還可以應用根據(jù)其它結構構成的DSP。
本例中,DSP130用修改過的Harvard結構實現(xiàn),這樣就應用了3條獨立的數(shù)據(jù)總線C、D、E,這些總線與多個執(zhí)行單元有聯(lián)系,其中包括指數(shù)單元132、乘/加單元134、算邏單元(ALU)136、鼓式移位器138。累加器140允許乘/加單元134與ALU136同時操作,可同時執(zhí)行乘累加(MAC)和算術操作。本例中,DSP130可執(zhí)行的指令組包括單指令重復與區(qū)段重復操作、區(qū)段存儲器移動指令、二和三操作數(shù)讀、條件存貯操作、平行負載與存貯操作以及專用的數(shù)字信號處理指令。DSP130還包括耦合到數(shù)據(jù)總線E的比較、選擇和存貯單元(CSSU)142,用于加速Viterbi運算,適用于許多常規(guī)的通信算法。
本例中的DSP130包含了重要的芯片上存儲器資源,由存儲器/外設接口單元145經(jīng)數(shù)據(jù)總線C、D、E和程序總線P控制對該資源的訪問。這類芯片上存儲器資源包括隨機存取存儲器(RAM)144、用于存貯程序指令的只讀存儲(ROM)146和地址寄存器148。程序控制器與地址發(fā)生器電路149還與存儲器/外設接口145相聯(lián)系。經(jīng)存儲器/外設接口145接收來自ROM146或其它存儲器的程序指令代碼,并產(chǎn)生加給DSP130每個功能單元的控制信號,以便控制執(zhí)行對應于接收的程序指令代碼的指令。還配備了與存儲器/外設接口145有關的接口單元158,以便控制外部通信。電源、時鐘與控制功能元件150一般指DSP130內(nèi)的控制電路,以將這類功能處理為電源分配與電壓調(diào)節(jié)、時鐘發(fā)生和DSP130整體控制;另外,該功能元件150可進一步實現(xiàn)串行與主機端口等其它接口功能元件以及定時器、JTAG測試接口電路、內(nèi)置自測試電路等附加控制功能元件。
如上所述,DSLAM控制器25在發(fā)送與接收兩個方向對數(shù)據(jù)包作網(wǎng)絡規(guī)約處理?,F(xiàn)在參照圖4,描述利用根據(jù)本發(fā)明較佳實施例的DSP130來構成DSLAM控制器25的軟件結構。
圖4結構的基礎是實時核心30,它包括作為DSLAM控制器25軟件其余部分基礎的諸功能元件。根據(jù)本發(fā)明的較佳實施例,這類元件包括實時調(diào)度器、標準I/O管理系統(tǒng)和數(shù)據(jù)包定向的存儲器管理系統(tǒng)。
根據(jù)本發(fā)明的該較佳實施例,實時核心30的實時調(diào)度器部分應用基于優(yōu)先權的事件驅動循環(huán)調(diào)度,在DSLAM控制器25控制下處理正在通過DSLAM10的異步網(wǎng)絡接口數(shù)據(jù)業(yè)務和消息傳輸。本例中,事件描述器數(shù)據(jù)結構描述每個事件,指明該事件的類別與優(yōu)先權以及事件特定的通報值、標志、狀態(tài)和該事件相關的裝置與端口的信息。
相對于標準I/O管理系統(tǒng),硬件提取層31對于DSLAM控制器25作出響應的每個接口功能元件都包括驅動器軟件的硬件相依部分。對于受AFE功能元件20(圖2)、經(jīng)NIC26的Ethernet接口和串行接口27、28支持的DSL信道的裝置驅動器,最好按標準I/O模型開發(fā),并作為下面將詳述的可動態(tài)堆選的規(guī)約。應用程序接口(API)層32居于硬件提取層31“上面”,包括EMS端口I/O驅動器32a、DSL信道I/O驅動器32b、EthernetI/O驅動器32c和HSSP(高速串行口)I/O驅動器32d,如圖4所示。API32中的這些驅動器都連接到該結構的規(guī)約層,在圖4結構中由信號規(guī)約堆層36s和數(shù)據(jù)規(guī)約堆層36d表示。
根據(jù)圖4的這種軟件結構,可將特定的網(wǎng)絡規(guī)約構成專用的或可堆迭的規(guī)約驅動器。對于某一網(wǎng)絡規(guī)約而言,如果該規(guī)約諸如在PPP通信的NPL階段必須根據(jù)幾乎每個數(shù)據(jù)包而執(zhí)行,則規(guī)約驅動器最好能提供較佳的性能而較少靈活性。
圖4結構中的信號規(guī)約堆層36s是一種主要在用戶地點H(圖1)的DSL調(diào)制解調(diào)器2與DSLAM10之間通信初始化期間使用的規(guī)約堆層。正如下面將描述的,一旦建立了雙向信道,數(shù)據(jù)規(guī)約堆層36d就用于存貯和處理數(shù)據(jù)包及其相關的內(nèi)容操作(即頭部與尾部)。
在規(guī)約堆層(36s、36d)上面,在圖4結構的API38中留駐有各種系統(tǒng)管理器軟件功能元件。網(wǎng)絡管理器38a、主機端口管理器38b和DSL信道管理器38c各自在DSLAM控制器25中對頂級應用提供一均一的API,這類頂級應用包括EMS媒介、DSL信道IP路徑、DSL信道PPP處理、ARP與SNMP規(guī)約等等。如上所述,管理器功能元件38a、38b、38c都分享某個標準I/O管理功能元件的公用代碼庫,同時提供裝置特定的管理功能元件。
在操作中,被接收并通過DSLAM控制器25再發(fā)送的數(shù)據(jù)包有效地通過圖4的軟件結構行進。例如,被一個AFE功能元件20(圖2)接收的DSL消息,由硬件提取層31把它當作一組包而接收,然后由DSL信道I/O驅動器32b處理,將諸數(shù)據(jù)包放入數(shù)據(jù)規(guī)約堆層36d。數(shù)據(jù)規(guī)約堆層36d中的數(shù)據(jù)包按各種規(guī)約處理(由包緩沖管理器40處理,下面將描述),然后傳遞給API38,由相關的管理器按該消息特定的目的地進行處理。一旦有關的管理器功能元件38a、38b、38c執(zhí)行了處理,則通過數(shù)據(jù)規(guī)約堆層36d將該數(shù)據(jù)包送回數(shù)據(jù)包目的地有關I/O驅動器32。
如圖4和上述所示,DSLAM控制器25的軟件結構包括包緩沖管理器40。根據(jù)本發(fā)明,包緩沖管理器40對應于一組程序指令,當由上述的DSLAM控制器25那樣的DSP130執(zhí)行時,這組程序指令就對DSLAM10一類的多規(guī)約多信道DSL通信系統(tǒng)構成基于零復制包的存儲器管理系統(tǒng)。由包緩沖管理器40實現(xiàn)的零復制系統(tǒng)允許DSLAM控制器25通過一系列不同的網(wǎng)絡接口、規(guī)約和相關聯(lián)的處理來處理數(shù)據(jù)塊,同時在存儲器原地保持數(shù)據(jù)塊的內(nèi)容。
回過來參照圖3,最好將包緩沖管理器40的程序存貯在用于構成DSLAM控制器25的DSP130的RAM146里,并通過訪問DSP130的芯片上RAM144予以執(zhí)行。根據(jù)本發(fā)明的較佳實施例,RAM144可用于存貯數(shù)據(jù)包(及其關聯(lián)的內(nèi)務操作),因為零復制存儲器管理提出的減少存儲器要求要靠包緩沖管理器40執(zhí)行。這樣,不僅將存儲器要求保持為最小,而且在根據(jù)本發(fā)明的DSLAM控制器25的控制下,應用高速芯片上RAM144還能改善數(shù)據(jù)流的性能。
根據(jù)本發(fā)明的較佳實施例,把一部分RAM144預定為(例如當DSLAM控制器25起動時)包緩沖器的存儲庫,用于運行時間。圖5表示一例這樣預定的存儲庫50。存儲庫50最好是RAM144中鄰接的存儲塊,其尺寸取決于特定的應用要求,諸如DSLAM的信息容量。存儲庫50最好還被組織成整數(shù)鄰接的最小尺寸存儲塊50j。最小尺寸存儲塊的大小還取決于由DSLAM控制器25服務的特定應用,并且可能對應于所需應用的最小或平均包尺寸。存儲塊50j的尺寸最好小于平均包括尺寸而大于最小包,且對應于數(shù)據(jù)字的二次方倍數(shù)。例如,對Ethernet消息給出的最小包尺寸為62字節(jié),就可把最小尺寸存儲塊50j設置到64字節(jié)(略大于最小包尺寸,因而小于平均包尺寸,并具有二次方的塊間位移)??梢哉J為,選擇塊50j最小尺寸的精密度并非關鍵;這樣,為了減少處理器操作與循環(huán)的次數(shù),諸如在上述64字節(jié)最小尺寸的情況中,可以犧牲存儲器利用率。此外,正如下面要描述的,將以數(shù)據(jù)字為基礎訪問每個塊50j,字寬對應于賴以實現(xiàn)DSLAM控制器25的DSP130的結構。
如圖5所示,存儲庫50的起始地址BASE保留在DSP130中的全程變量存儲器里,用于具體的存儲器地址計算。一旦指定后,最好將存儲庫50保護起來不作其它應用。
由按本發(fā)明較佳實施例的DSLAM控制器25處理的每個消息數(shù)據(jù)包,無論是源還是規(guī)約,都通過一種公用數(shù)據(jù)結構P_BUF存入包存儲庫50內(nèi),而這種數(shù)據(jù)結構是特地為有效地存儲可變長度數(shù)據(jù)包設計的。數(shù)據(jù)結構P_BUF的編排允許其多個樣品(對每個消息包而言)被有效地排列、指定,并從存儲庫50內(nèi)取消指定。根據(jù)本發(fā)明的第一較佳實施例,可將包緩沖器數(shù)據(jù)結構P_BUF描述如下(遵循C語言類型定義)Typedef_P_BUFQ_ENTRYPkt_Q;/*包排列輸入*/WORD B_Size /*包緩沖器總尺寸*/WORD D_Offset /*數(shù)據(jù)起動補償*/WORD D_Size /*總有效數(shù)據(jù)尺寸*/WORD D_Flag /*數(shù)據(jù)標志*/}P_BUF,*P_BUFP特定包緩沖器數(shù)據(jù)結構的名稱*pRktBuf將根據(jù)其具體例子規(guī)定。
輸入結構PkOt_Q是一種排列輸入結構,本身由Q_ENTRY定義,它對給定的數(shù)據(jù)包緩沖器含有正反向指針。這些正反向指針分別指向當前數(shù)據(jù)包緩沖器相鄰的引導與結尾數(shù)據(jù)包緩沖器,利于包緩沖器的排列與取消排列。
包數(shù)據(jù)緩沖器結構剩余的每個區(qū)段的WORD宏指令描述數(shù)據(jù)結構中實際的機器字。在本發(fā)明的該第一實施例中,區(qū)段B_Size表示指定給包緩沖器的數(shù)據(jù)字總數(shù),既包括實際的數(shù)據(jù),也包括為潛在規(guī)約預期的頭部與尾部而保留的存儲空間。如上所述,根據(jù)本發(fā)明較佳實施例應用的數(shù)據(jù)字或段尺寸,最好與用來實現(xiàn)DSLAM控制器25的DSP130的自然數(shù)據(jù)字尺寸(即總線尺寸)相匹配。例如在上述的TMS320LC548 DSP中,數(shù)據(jù)字尺寸是16位,即2個字節(jié);這樣,以區(qū)段B_Size(和在包緩沖器數(shù)據(jù)結構的其它區(qū)段中)表示的數(shù)據(jù)字數(shù)量將規(guī)定16位數(shù)據(jù)字數(shù)量。由區(qū)段B_Size表示的存儲器尺寸應是上述最小塊尺寸的整數(shù)倍,以實現(xiàn)本發(fā)明的全部優(yōu)點。
區(qū)段D_Offset表示包緩沖器中從數(shù)據(jù)包緩沖器的起始地址到實際數(shù)據(jù)第一個有效字的字數(shù)。如下面的描述可知,調(diào)節(jié)該區(qū)段D_Offset的值,可表示準備由特定規(guī)約的考慮的數(shù)據(jù)部分。例如,根據(jù)本發(fā)明的該較佳實施例,只要簡單地調(diào)節(jié)區(qū)段D_Offset的值使之不再包括作為其有效數(shù)據(jù)部分的帶狀頭部,就可以剝離該頭部;相反地,通過改變區(qū)段D_Offset的值為附加有效數(shù)據(jù)作準備,然后將所需的頭部插入該新區(qū)域,就可加上某個頭部。這樣,根據(jù)本發(fā)明的較佳實施例,修改區(qū)段D_Offset的值就能更改頭部數(shù)據(jù),無須復制存儲器里的包。區(qū)域D_Size與區(qū)段D_Offset的結合操作,因為它以數(shù)據(jù)字方式限定了數(shù)據(jù)包緩沖器中有效數(shù)據(jù)的尺寸。這樣,當添加或剝離頭部時,隨著對區(qū)域D_Offset的值的更改,區(qū)段D_Size值也一起更改;另外,以上述區(qū)段D_Offset同樣的方法,通過修改區(qū)段D_Size的值,可對實際的數(shù)據(jù)添加與剝離尾部。
在根據(jù)本發(fā)明較佳實施例的數(shù)據(jù)包緩沖器結構中,設置了區(qū)段D_Flag,用于指示區(qū)域D_Size表示的有效數(shù)據(jù)中最后一個數(shù)據(jù)字里有效數(shù)據(jù)字節(jié)數(shù)。如上所述,通常把消息包組成字節(jié),而DSLAM控制器25中DSP130使用的數(shù)據(jù)字或段的寬度為多個字節(jié);相應地,根據(jù)本發(fā)明較佳實施例組成的數(shù)據(jù)包通常具有留在其尾部數(shù)據(jù)字中的空閑字節(jié),而尾部數(shù)據(jù)字與該數(shù)據(jù)包無關聯(lián),若作為包部分發(fā)送,會造成差錯。因此,區(qū)段D_Flag值將指示數(shù)據(jù)包緩沖器的尾部數(shù)據(jù)字中的有效字節(jié)數(shù)。據(jù)推測,對于最佳效率,存貯在區(qū)段D_Flag中的實際值應等于無效數(shù)據(jù)字節(jié)數(shù)。例如,如果在數(shù)據(jù)包緩沖器最后一個16位數(shù)據(jù)字中只有一個字節(jié)有效,其區(qū)段D_Flag的值將是1;反之,若兩個字節(jié)都有效,區(qū)段D_Flag的值將為0。對于32位的數(shù)據(jù)字,區(qū)段D_Flag可能的值為0~3(分別通過一個字節(jié)有效對應于4)。
根據(jù)本發(fā)明的第一較佳實施例,包緩沖器管理器40(圖4)包括一個API級38的功能元件庫。這類功能元件執(zhí)行包緩沖器指定與取消指定的功能;其它包緩沖器操作也包含在該庫中。根據(jù)本發(fā)明第一實施例的這些庫功能清單如下P_Alloc(WORD Size,WORD Offset)這一功能將一部分存儲庫50指定用作一個包緩沖器。包緩沖器的大小由操作數(shù)Size限定,緩沖器的位置從地址BASE的開頭處于Offset。一旦將包緩沖器寫入該指定的存儲庫50區(qū)域后,就將實際的包緩沖器存入規(guī)定的包緩沖器中由區(qū)段B_Size限定的某一部分(它是存儲庫50中最小尺寸存儲塊的倍數(shù))。
P_Free(P_BUF*pPktBuf)這一功能將指定的包緩沖器返回存儲庫50。正如下面將詳述的,也可將執(zhí)行這一功能導致的自由存儲塊合并起來以減少分裂狀況。
P_Append(P_BUF*pPktBuf,WORD*Buf,SIGNED WORD Count)該功能將*Buf限定的數(shù)據(jù)預定或附加(由操作數(shù)Count的符號限定)給規(guī)定的包緩沖器pPktBuf。
P_Remove(P_BUF*pPktBuf,SIGNED WORD Cout)該功能從包緩沖器的開始或結束處(由Count的符號限定)除去由操作數(shù)Count的幅值指示的數(shù)據(jù)量。
P_Catenate(P_BUF*pPktBuf1,P_BUF*pPktBuf2)該功能將規(guī)定的包緩沖器*pPktBufl和*pPktBuf2相連接。
P_BUF*NetPktRead(IO_CHAN*pIOPesc)該功能是一種API級功能,允許操作作應用檢索(讀)某一指向被規(guī)定的裝置I/O信道驅動器*pIODes使用的存儲庫50中包緩沖器*pPktBuf的指針;這種讀功能用來識別保緩沖器*pPktBuf的位置,因為它已通過規(guī)約堆層36d作了處理,其頭部與尾部由包緩沖器管理器40按穿插的規(guī)約作過修改或剝離,留下供調(diào)用該功能的應用使用的消息數(shù)據(jù)。
NetPktWrite(IO_CHAN,*pIODesc,P_BUF*pPktBuf)該功能也是一種API級功能,用于將從NetPktRead功能通過規(guī)約堆層36d返回的包緩沖器*pPktBuf寫到規(guī)定的I/O信道驅動器*pIODesc的發(fā)送隊列里。
這些功能允許消息數(shù)據(jù)通過DSLAM控制器25作多規(guī)約處理,無須復制存儲器中的自身數(shù)據(jù)。
現(xiàn)在參照圖6和7,詳細描述根據(jù)本發(fā)明第一較佳實施例的DSLAM控制器25的操作。圖6以流程圖形式說明根據(jù)本發(fā)明該第一實施例應用的方法步驟,圖7示出一例流程控制過程。如圖7所示,相對于存貯在存儲庫50中作為接收隊列RxQ、通過兩個規(guī)約(規(guī)約1和2)處理并根據(jù)應用要求操作的包緩沖器*PB2,示出了由根據(jù)本發(fā)明的DSLAM控制器25執(zhí)行的示例性任務;于是包緩沖器*PB1通過規(guī)約2和1重新處理,并轉送給發(fā)送給列TxQ。接收消息數(shù)據(jù)包的I/O裝置通常不同于再發(fā)送該消息的I/O裝置;例如對于上游DSL業(yè)務,消息數(shù)據(jù)包將被DSL I/O信道之一(AFE20)接收,并經(jīng)Ethernet NIC26再發(fā)送給LAN14。在任何情況下,如圖7所示,包緩沖器*PB2在整個處理中都保留在同一個存儲庫50位置中。
回頭參照圖6,在過程52中,DSLAM控制器25的一條I/O信道接收消息數(shù)據(jù)包。如上相對于圖2和4所示,通過其可讓DSLAM控制器52接收消息數(shù)據(jù)包的該組可能的I/O信道,包括每條由DSLAM10服務的DSL信道、經(jīng)串行接口27與28耦合至EMS17的串行口和由Ethernet NIC26服務的Ethernet I/O信道。這些I/O信道相應的驅動器在圖4中被示作EMS端口I/O驅動器32a、DSL信道I/O驅動器32b、Ethernet I/O驅動器32c和高速串行口I/O驅動器32d。在過程54中,接收機驅動器32將存儲庫50中的某一包緩沖器指定為其接收隊列部分;該指定的包緩沖器*PB(圖7)將用來存貯接收的包數(shù)據(jù)以及在由DSLAM控制器25在整個規(guī)約處理與轉送中所接收并處理的該包數(shù)據(jù)的頭部與尾部,無須復制。
圖8a與8b示出一例根據(jù)本發(fā)明第一較佳實施例的指定過程54。例如,圖8a示出DSP130的芯片上RAM144中存儲庫50的安排,其中的包緩沖器*PB0、*PB1是事先指定的。從圖8a可見,包緩沖器*PB0、*PB1留駐在存儲庫50的終端(離地址BASE最遠的位移);當然這種安排只是舉例而已。在過程54中,接收驅動器32對其接收的消息數(shù)據(jù)包執(zhí)行庫功能P_Alloc(WORD Size,WORDOffset),選擇操作數(shù)Size的某個值(作為最小尺寸存儲塊50j的一個整數(shù)),而該值足以存儲實際的消息數(shù)據(jù)以及可能在圖6處理期間添加或修正的任何頭部;于是操作數(shù)Offset的值就以先前指定的包緩沖器*PB0、*PB1的當前位置與接收包的操作數(shù)size的值為基礎。圖8b示出適合包緩沖器*PB2的存儲庫的指定狀況。本例中,將操作數(shù)Size的值選為11個最小尺寸存儲塊50j,而將操作數(shù)Offset的值置成小于11的包緩沖器*PB1的操作數(shù)Offset的值(即,本例中為操作數(shù)Size的值)。因此,作為有關I/O信道驅動器32執(zhí)行過程54的結果,在存儲庫50內(nèi)指定了包緩沖器*PB2。
圖9a示出一例剛指定后被指定包緩沖器*PB2的內(nèi)容。如圖9a的例子所示,被指定包緩沖器*PB2的總尺寸由庫功P_Alloc(WORD Size,WORD Offset)中操作數(shù)Size的值限定。實際的消息數(shù)據(jù)(指圖9a中的“PAYLOAD”)留駐在包緩沖器*PB2內(nèi),附帶保留的包緩沖器*PB2部分留駐在PAYLOAO的上下方。這個實際的消息數(shù)據(jù)可能不僅包含該消息數(shù)據(jù),可能還包含必須最后發(fā)送的這類頭部信息(如PPP包頭部數(shù)據(jù))區(qū)段D_Offset的值指示此時在包緩沖器*PB2內(nèi)實際數(shù)據(jù)PAYLOAD開始的位置,同時將區(qū)段D_Size的值置成此時存貯在包緩沖器*PB2內(nèi)的實際數(shù)據(jù)的尺寸。此外,在指定后,并且一旦對包緩沖器*PB2建立了區(qū)段D_Offset與D_Size的值,根據(jù)將該數(shù)據(jù)存入存儲庫50作為接收隊列的I/O驅動器32,將區(qū)段D_Flag設置成指示該實際數(shù)據(jù)最后一個數(shù)據(jù)字中有效數(shù)字節(jié)數(shù)。將這些區(qū)段D_Offset、D_Size和D_Flag保持在DSLAM控制器25里的本機存儲器或寄存器中,與包緩沖器*PB2相關聯(lián)。
正如過程56指出的,根據(jù)包緩沖器*PB2操作的應用38之一啟動執(zhí)行上述的一例庫功能Net PktRead(ID_CHAN*pIDDesc)。該例功能NetPktRead規(guī)定I/O信道驅動器32在過程52、54中接收該包并指定包緩沖器*PB2,而且還接收指示所限定和指定的包緩沖器*PB2的指針。而且,作為啟動過程56的一部分,按順序將規(guī)約標引i置成第一規(guī)約(圖7的規(guī)約1)。執(zhí)行這一庫功能NetPktRead讓包緩沖器管理器40通過該消息所必需的各種規(guī)約順序(如圖7的規(guī)約1和2)處理包緩沖器*PB2,現(xiàn)在來予以描述。
NetPktRead功能的執(zhí)行包括迭代執(zhí)行規(guī)約處理過程58。在過程58中,DSLAM控制器25里的包緩沖器管理器40根據(jù)規(guī)定的包緩沖器*PB2內(nèi)容的頭或尾部分進行操作,無須復制其全部內(nèi)容;事實上,這些修改是通過上述的庫功能P_Append(P_BUF*pPktBuf,WORD*Buf,SIGNED WORD Count)與P_Remove(P BuF*pPktBuf,SIGNED WORD Count)實行的,現(xiàn)在相對于圖9b予以描述。
一般而言,規(guī)約處理過程58通常包括按有關規(guī)約對內(nèi)務操作字節(jié)進行添加、刪除或修改,不必打亂實際消息數(shù)據(jù)本身。接著進行判斷59,確定是否要求處理附加的規(guī)約;若要處理(判斷59為是),在過程60中對標引i增數(shù),控制返回過程58作這種附加處理。
在規(guī)約處理過程58的每個例子中,在執(zhí)行P_Buf_NetPktRead功能中,包緩沖器管理器40根據(jù)要處理的當前規(guī)約,可以調(diào)用下列的一個或多個功能。例如,要添加規(guī)約頭部,應執(zhí)行下列功能P_Append(P_BUF*pPktBuf,WORD*Buf,SIGNED WORD Count)。添加頭部要求區(qū)段*Buf的值等于所需的頭部數(shù)據(jù),而區(qū)段Count要帶正號使該頭部預先未定。結果,指針D_Offset的值將減去區(qū)段Count的值,而區(qū)段D_Size的值將增加區(qū)段Count的值。
對于圖7例中的規(guī)約1的處理,圖9b示出了規(guī)約頭部PH1的添加。如上所述,該操作是在存儲庫50中指定的包緩沖器*PB2內(nèi)進行的,不必復制包本身。
規(guī)約處理過程58還可用將尾部加入當前包緩沖器的包緩沖器管理器40執(zhí)行。添加尾部應執(zhí)行下列功能P_Append(P_BUF*pPktBuf,WORD*Buf,SIGNED WORD Count)添加尾部要求區(qū)段*Buf的值等于所需的尾部數(shù)據(jù),而區(qū)段Count要帶負號使尾部未定。指針D_Offset的值此時不變,但是要將區(qū)段D_Size的值增加區(qū)段Count的值。
對于圖7例中的規(guī)約2的處理,圖9c示出了添加規(guī)約尾部PT2。如上所述,該操作在存儲庫50中指定的包緩沖器*PB2內(nèi)進行,不必復制包本身。如圖9C所示,包頭部*PB2包括規(guī)約頭部PH1與規(guī)約尾部PT2二者。
作為過程58的一部分,可通過上述(及下述的例子)功能P_Remove刪除頭部或尾部。根據(jù)地址分辨規(guī)約(ARP)經(jīng)常要求的頭部或尾部的修改,也可在過程58中執(zhí)行,最好以上述方法先刪除頭部或尾部,再使所需的頭部或尾部預先未定或增補。
如上所述,規(guī)約處理過程58反復進行,直到不再有要處理的規(guī)約(判斷59為否),接著控制轉向應用38,對當前包緩沖器作特定的處理,如圖6的過程61所示。這類處理可以包括直接將實際消息數(shù)據(jù)(PAYLOAD)通到目的地I/O信道;另外,在傳遞該消息數(shù)據(jù)之前,有些預處理可能是必需的(如在PPP通信的情況中)。在任何情況下,應用38都要詢問包緩沖器的區(qū)段D_Flag的狀態(tài),確定實際消息數(shù)據(jù)中最后數(shù)據(jù)字里的有效字節(jié)數(shù),避免因對包緩沖器存儲器使用數(shù)據(jù)字而不使用字節(jié)導致不希望的零值字節(jié)造成差錯。
應當認識到,可能因應用38處理該包而有一點延遲,從而準備由包緩沖器管理器40處理的下一個包緩沖器不是靠近處理過的同一個包緩沖器(如*PB2);事實上,可以推測,相對于多個應用38,DSLAM控制器25正在同時處理它所服務的多個I/O信道之一的消息包。這種不測事件大多數(shù)直接影響了存儲庫50中各存儲塊的自由化和合并,下面對此作詳細描述。
根據(jù)完成其處理(過程61)的應用38,通過執(zhí)行NetPktWrite(IO_CHAN,*pIODesc,P_BUF*pPktBuf)庫功能的應用38啟動傳輸對應于所需包緩沖器(如*PB2)的消息數(shù)據(jù),操作數(shù)*pIODesc指包的目的地I/O信道,操作數(shù)*pPktBuf當然指如此轉送的特定包緩沖器。此時,將規(guī)約標引i置成其最大值,對應于通過過程58最后處理的規(guī)約。
在執(zhí)行傳輸處理時,包緩沖器管理器40基本上反復地執(zhí)行與過程58迭代時對包緩沖器*PB1進行的相反的規(guī)約處理。例如,執(zhí)行下列功能可以剝離規(guī)約尾部(如圖9C的尾部PT2)P_Remove(P_BUF*pPktBuf,SIGWED WORD Count)刪除尾部要求操作數(shù)Count的值等于要被刪除的所需的數(shù)據(jù)字數(shù),并帶負號表示從包緩沖器*pPktBuf中實際數(shù)據(jù)的結尾里除去。作這一操作,指針D_Offset的值不變;也可直接將區(qū)段D_Size的值減去區(qū)段Count的值消去該尾部。
圖9d示出該操作的結果。事實上,在該過程64之后,對應于圖9c例中尾部PT2的實際數(shù)據(jù)字仍留在存儲器中,只是不計罷了。
在過程64的第一例之后,包緩沖器管理器40執(zhí)行判斷65,確定是否還有要處理的附加規(guī)約。若有(判斷65為是),在過程66中將規(guī)約標引i減數(shù),控制回到過程64作附加規(guī)約處理。例如,對包緩沖器*PB2,可執(zhí)行下列功能剝離規(guī)約頭部PH1。
P_Remove(P_BUF*pPktBuf,SIGNED WORD Count)刪除頭部要求操作數(shù)Count的值等于要被刪除的所需的數(shù)據(jù)字數(shù),并帶正號表示從包緩沖器中實際數(shù)據(jù)的開始除去。像減去區(qū)段D_Size的值那樣,應把指針D_Offset的值減去區(qū)段Count的值。圖9e表示完成過程64的這一情況后的包緩沖器*PB2的狀態(tài)。
在通過過程64處理完所有的規(guī)約后(判斷65為否),在庫功能NetPktWrite(ID_CHAN,*pIODesc,P_BUF*pPktBuf)中被應用38規(guī)定的有關I/O信道驅動器32作了更改,在本例中,它在存儲庫50中具有一個與包緩沖器*PB2關聯(lián)的包。于是該發(fā)送驅動器32在過程68中將包緩沖器*PB2有效地用作其發(fā)送隊列,在適當時間將該數(shù)據(jù)發(fā)給相應的I/O信道(例如Ethernet NIC26)。
本例中,當有關的I/O信道驅動器32應用了包緩沖器*PB2的內(nèi)容后,接著執(zhí)行過程70,使存儲庫50中與包緩沖器*PB2關聯(lián)的指定部分自由。這種包緩沖的自由靠執(zhí)行P_Free(P_BUF*pPktBuf)功能實現(xiàn),指要求自由的包緩沖器。于是,先前指定給當前包緩沖器*PB2的存儲庫50部分就返回再指定狀態(tài)。
根據(jù)本發(fā)明的較佳實施例,使某個包緩沖器脫離存儲庫50是以自由的存儲塊合并起來的方式實施的,由此防止了后繼包緩沖器指定中的分裂?,F(xiàn)在相對于圖8c描述作這種合并時過程70操作的一個例子,其中的包緩沖器*PB0與*PB2在存儲庫50中保持被指定,而包緩沖器*PB1(見圖8b)已經(jīng)自由了。根據(jù)本發(fā)明的較佳實施例,關于包緩沖器*PB2的自由化,包緩沖器管理器40檢查存儲庫50的狀態(tài),確定包緩沖器*PB2是否與存儲庫50中被指定的存儲塊鄰接;若不鄰接(如圖8c的情況),最好改變包含在其上述隊列輸入P_ENTRY Pkt_Q中的包緩沖器*PB2里的指針,包緩沖器管理器40將存儲庫50中被認為自由的諸存儲塊合并起來。在此情況下,包緩沖器*PB2在過程70中自由化后,存儲庫50中現(xiàn)有的諸存儲塊就容易防止分裂了。
因此,根據(jù)本發(fā)明的該第一較佳實施例,由于不必復制消息數(shù)據(jù)包的內(nèi)容,所以能以最小的存儲要求控制通過DSLAM的數(shù)據(jù)流。另外,根據(jù)本發(fā)明,在常規(guī)DSLAM控制器中產(chǎn)生這類復制件(其實有多個復制件)所需的處理操作與機器周期都被省略了,從而解放了附加的處理容量。這一附加處理容量和由此導致的功能減小,使每個DSLAM線路卡能支持更多的DSL信道,提高了DSLAM的端口密度。由于降低了存儲器要求,所以也可使用芯片上存儲器,諸如作為控制器的DSP的芯片上RAM,進一步改進了DSLAM控制器的性能。根據(jù)本發(fā)明的該實施例,通過應用DSP或用作DSLAM控制器的其它處理器所使用的數(shù)據(jù)字,而不應用字節(jié)定向的常規(guī)消息發(fā)送規(guī)約,還提高了DSLAM的處理效率。此外,根據(jù)本發(fā)明的該較佳實施例,通過自動合并包緩沖器存儲庫中自由的存儲塊,減少了存儲器的分裂現(xiàn)象,進一步改進了DSLAM控制器的性能。
現(xiàn)在參照圖10描述根據(jù)本發(fā)明第二較佳實施例的包緩沖器*PB的合理安排。在包處理中不了解所遇到的頭尾部長度的情況下,根據(jù)本發(fā)明該實施例的圖10結構特別有利。通過以這種方式應用聯(lián)接表,避免了不必要的指定極大部分的存儲庫50和由此引起的存儲庫50麻煩的管理。
根據(jù)本發(fā)明的該第二實施例,包緩沖器數(shù)據(jù)結構P_BUF的類型定義如下Typedef_P_BUFQ_ENTRY Pkt_Q; /*包排列輸入*/Q_ENTRY Pkt_List;/*包清單*/WORD B_Size/*包緩沖器總尺寸*/WORD D_Offset /*數(shù)據(jù)起動補償*/WORD D_Size/*總有效數(shù)據(jù)尺寸*/WORD D_Flag/*數(shù)據(jù)標志*/}P_BUF,*P_BUFP這同上述的包緩沖器數(shù)據(jù)結構P_BUF一樣,只是多了隊列輸入P_List。根據(jù)本發(fā)明的該實施例,單個包緩沖器可以位于存儲庫50中若干包緩沖器位置,有效地作為一張聯(lián)接表。隊列輸入P_List為該聯(lián)接表的每個包緩沖器指定供一個屬于該指定的標識符。
回過來參照圖10,它示出了一例這種聯(lián)接。本例中,包緩沖器表*PB0,0到*PB0,2對應于單個消息數(shù)據(jù)包,對于該消息數(shù)據(jù)包而言,在指定時(諸如在事先不知道規(guī)約的特定順序時)無法可靠地預計數(shù)據(jù)字數(shù)。本例中,把這個單個消息數(shù)據(jù)包存放在相互參照的三個聯(lián)接的包緩沖器表輸入*PB0,0到*PB0,2中。這樣,當像上述那樣對每個輸入*PB0,j作規(guī)約處理時,I/O驅動器32和應用38二者都可對包緩沖器表輸入*PB0,0到*PB0,2的內(nèi)容重新編序,以便作傳輸線或應用處理。
根據(jù)本發(fā)明的該第二實施例,存儲庫50以上述維持包緩沖器本身的順序那樣維持包緩沖器表的順序。在圖10例中,聯(lián)接的包緩沖器表*PB1,0到*PB1,1的輸入雖然累計地對應于指定的包緩沖器順序中的下一個包緩沖器輸入,但是單獨地留駐在存儲庫50相互相對的非鄰接區(qū)域中。順序中的第三包緩沖器*PB2,0能存貯在存儲庫50的單個鄰接區(qū)域中,因其頭部與尾部數(shù)據(jù)要求是固定的(如在PPP包場合中);所以,根據(jù)該包緩沖器*PB0,2的數(shù)據(jù)結構將無效。
根據(jù)本發(fā)明的該第二實施例,附加的庫功能最好用來管理存儲庫50中聯(lián)接的包緩沖器輸入表。這些功能包括P_AllocList(WORD Size,WORD Offset)該功能以上述的聯(lián)接表形式將一部分存儲庫50指定用作某個包緩沖器。因此,通過這一功能為一組輸入保留了指定部分的存儲庫50。
P_FreeList(P_BUF*pPktBuf)如上所述,該功能將指定的包緩沖器位置表返回存儲加50,對自由的存儲塊作合理的合并以減少分裂。
如以上相對于本發(fā)明第一較佳實施例所述,本發(fā)明的第二較佳實施例具有類似的優(yōu)點,即減少了必要的存儲器資源、提高了處理器效率、增大了端口密度、允許對DSLAM流控制應用芯片上RAM,并且減少了分裂。然而,除此以外,本發(fā)明的第二實施例還提供了允許聯(lián)接的包緩沖器部分表的優(yōu)點,因而能迅速地定義和處理各種規(guī)約。
雖然根據(jù)較佳實施例描述了本發(fā)明,但是本領域的技術人員在參閱了本說明書及其附圖后將明白,可以預期對這些實施例進行修改和變更,而這類修改與變更可獲得本發(fā)明諸優(yōu)點與利益。因此,這類修改與變更都落在基本上由所附加的權利要求書規(guī)定的本發(fā)明的范圍內(nèi)。
權利要求
1.一種在耦合至多條輸入/輸出信道的網(wǎng)絡多路復用器中處理消息數(shù)據(jù)包的方法,包括步驟在存儲器中指定一存儲庫;響應于從第一輸入/輸出信道接收的消息數(shù)據(jù)包,在存儲庫中對該消息數(shù)據(jù)包指定一個包緩沖器;將消息數(shù)據(jù)包存貯在存儲庫中包緩沖器的有效數(shù)據(jù)部分里;然后通過修改包緩沖器中有效數(shù)據(jù)部分的尺寸,對至少一個通信規(guī)約處理收到的消息數(shù)據(jù)包;處理步驟之后,在存儲庫中排列包緩沖器的消息數(shù)據(jù)包,以便通過第二輸入/輸出信道傳輸;及取消指定在存儲庫中被指定的包緩沖器。
2.如權利要求1所述的方法,其特征在于,處理步驟包括執(zhí)行包括修改包緩沖器有效數(shù)據(jù)部分尺寸在內(nèi)的一系列操作,對多個通信規(guī)約處理收到的消息數(shù)據(jù)包。
3.如權利要求2所述的方法,其特征在于,指定包緩沖器的步驟包括在存儲庫中為包緩沖器保留一系列選擇的鄰接存儲塊;及對包緩沖器規(guī)定位移地址和數(shù)據(jù)大小值,在一系列鄰接的存儲塊內(nèi)限定一有效數(shù)據(jù)部分用于存貯接收的消息數(shù)據(jù)包。
4.如權利要求3所述的方法,其特征在于,處理步驟序列包括修改位移地址與數(shù)據(jù)尺寸值以擴大包緩沖器中有效數(shù)據(jù)部分的尺寸,并將規(guī)約的頭部增補到新擴充的有效數(shù)據(jù)部分而添加規(guī)約頭部。
5.如權利要求3所述的方法,其特征在于,處理步驟序列包括修改位移地址與數(shù)據(jù)尺寸值以縮小包緩沖器中有效數(shù)據(jù)部分的尺寸而刪除規(guī)約頭部。
6.如權利要求3所述的方法,其特征在于,處理步驟序列包括修改數(shù)據(jù)尺寸值以擴大包緩沖器中有效數(shù)據(jù)部分的尺寸,并將規(guī)約尾部增補到新擴充的有效數(shù)據(jù)部分里而添加規(guī)約尾部。
7.如權利要求3所述的方法,其特征在于,處理步驟序列包括修改數(shù)據(jù)尺寸值以縮小包緩沖器中有效數(shù)據(jù)部分的尺寸而刪除規(guī)約尾部。
8.如權利要求3所述的方法,其特征在于,每個存儲塊的尺寸對應于選定的數(shù)據(jù)字數(shù),每個數(shù)據(jù)字對應于字節(jié)的整數(shù);其中,存貯消息數(shù)據(jù)包的步驟還包括設置一標志值,它對應于包緩沖器端部數(shù)據(jù)字中有效數(shù)據(jù)的字節(jié)數(shù)。
9.如權利要求3所述的方法,其特征在于,取消指定步驟包括讓存儲庫中的包緩沖器準備再指定;及將先前指定給該包緩沖器的選擇的一系列鄰接存儲塊與存儲庫中相鄰的現(xiàn)有存儲塊合并。
10.如權利要求2所述的方法,其特征在于,指定包緩沖器的步驟包括在存儲庫中為該包緩沖器選擇不鄰接的多個區(qū)域;把每個不鄰接的區(qū)域相互聯(lián)系成聯(lián)接表;對每個不鄰接的區(qū)域,通過限定位移地址和包緩沖器的數(shù)據(jù)尺寸值,在其中規(guī)定一有效數(shù)據(jù)部分用于存貯一部分接收的消息數(shù)據(jù)包。
11.如權利要求1所述的方法,其特征在于,指定存儲庫的步驟將固定尺寸存儲塊的整數(shù)指定為一個鄰接存儲區(qū)域。
12.一種在網(wǎng)絡與多個用戶地點之間傳遞消息數(shù)據(jù)的多路復用器,其特征在于,它包括耦合到所述網(wǎng)絡的網(wǎng)絡接口;多個輸入/輸出信道接口,每個信道接口耦合至多個用戶地點之一;至少一個收發(fā)機功能元件,它耦合至多個輸入/輸出信道接口中有關聯(lián)的一個接口,對經(jīng)過有關聯(lián)的輸入/輸出信道接口傳遞的消息數(shù)據(jù)作數(shù)字操作;耦合至網(wǎng)絡接口和至少一個收發(fā)機功能元件的控制器,用于處理傳遞的消息數(shù)據(jù)的消息數(shù)據(jù)包,所述控制器包括存儲器;執(zhí)行一系列操作的邏輯電路,包括在存儲器中指定存儲庫;響應于從輸入/輸出信道接收消息數(shù)據(jù)包,在存儲庫中為該第一消息數(shù)據(jù)包指定第一包緩沖器;在存儲庫中將該消息數(shù)據(jù)包存貯在第一包緩沖器的有效數(shù)據(jù)部分里;然后改變第一包緩沖器中該有效數(shù)據(jù)部分的尺寸,對至少一個通信規(guī)約處理接收的第一消息數(shù)據(jù)包;在該處理步驟后,在存儲庫中排列第一包緩沖器的消息數(shù)據(jù)包以便傳輸?shù)骄W(wǎng)絡接口;及取消指定在存儲庫中已指定的第一包緩沖器。
13.如權利要求12所述的多路復用器,其特征在于,控制器的邏輯電路執(zhí)行的操作序列還包括響應于從網(wǎng)絡接口接收消息數(shù)據(jù)包,在存儲庫中為該消息數(shù)據(jù)包指定第二包緩沖器;在存儲庫中將消息數(shù)據(jù)包存貯在第二包緩沖器的某一有效數(shù)據(jù)部分;然后修改第二包緩沖器中有效數(shù)據(jù)部分的尺寸,對至少一個通信規(guī)約處理接收的消息數(shù)據(jù)包;處理步驟后,在存儲庫中排列第二包緩沖器的消息數(shù)據(jù)包以便傳輸?shù)侥骋惠斎耄敵鲂诺?;及取消指定在存儲庫中指定的第二包緩沖器。
14.如權利要求12所述的多路復用器,其特征在于,將控制器的存儲器與邏輯電路構成一可編程數(shù)字信號處理器集成電路。
15.如權利要求14所述的多路復用器,其特征在于,將數(shù)字收發(fā)機構成一可編程數(shù)字信號處理器集成電路。
16.如權利要求12所述的多路復用器,其特征在于,指定包緩沖器的操作包括在存儲庫中為第一包緩沖器保留一系列選擇的鄰接存儲愉;及規(guī)定第一包緩沖器的位移地址與數(shù)據(jù)尺寸值,在一系列鄰接存儲塊內(nèi)限定一有效數(shù)據(jù)部分,用于存貯接收的消息數(shù)據(jù)包;并且其中的處理操作包括執(zhí)行一系列包括修改第一包緩沖器的有效數(shù)據(jù)部分的尺寸在內(nèi)的操作,對多個通信規(guī)約處理接收的消息數(shù)據(jù)包。
17.如權利要求16所述的多路復用器,其特征在于,處理步驟序列包括通過修改位移地址與數(shù)據(jù)尺寸值以擴充第一包緩沖器中有效數(shù)據(jù)部分的尺寸,并將規(guī)約頭部預定到新擴充的有效數(shù)據(jù)部分來添加規(guī)約頭部。
18.如權利要求16所述的多路復用器,其特征在于,處理步驟序列包括通過修改位移地址與數(shù)據(jù)尺寸值以縮小第一包緩沖器中有效數(shù)據(jù)部分的尺寸而刪除規(guī)約頭部。
19.如權利要求16所述的多路復用器,其特征在于,處理步驟序列包括修改數(shù)據(jù)尺寸值以擴充第一包緩沖器中有效數(shù)據(jù)部分的尺寸,并將規(guī)約尾部增補到新擴充的有效數(shù)據(jù)部分而添加規(guī)約尾部。
20.如權利要求16所述的多路復用器,其特征在于,處理步驟序列包括修改數(shù)據(jù)尺寸值以縮小第一包緩沖器中有效數(shù)據(jù)部分的尺寸而刪除規(guī)約尾部。
21.如權利要求16所述的多路復用器,其特征在于,每個存儲塊的尺寸對應于選擇的數(shù)據(jù)字數(shù),每個數(shù)據(jù)字對應于控制器的邏輯電路按其操作的字節(jié)整數(shù);其中,指定第一包緩沖器的操作還包括設置一對應于第一包緩沖器中終端數(shù)據(jù)字里有效數(shù)據(jù)字節(jié)數(shù)的標志值。
22.如權利要求16所述的多路復用器,其特征在于,取消指定步驟包括使存儲庫中第一包緩沖器能再指定;及將先前指定給第一包緩沖器的選擇的一系列鄰接存儲塊與存儲庫中鄰近現(xiàn)成的存儲塊合并起來。
23.如權利要求12所述的多路復用器,其特征在于,指定包緩沖器的步驟包括在存儲庫中為第一包緩沖器選擇不鄰接的多個區(qū)域;將每個不鄰接的區(qū)域相互關聯(lián)成聯(lián)接表;對于每個不鄰接的區(qū)域,通過規(guī)定第一緩沖器的位移地址與數(shù)據(jù)尺寸值,在其中跟定一有效數(shù)據(jù)部分用于存貯一部分接收的消息數(shù)據(jù)包。
全文摘要
一種在數(shù)字用戶專用線訪問多路復用器(DSLAM)中處理消息數(shù)據(jù)包的方法。其中控制器預先指定其一部分RAM作為包緩沖存儲庫而作流程控制操作,接收的消息數(shù)據(jù)包讓存儲庫中指定的包緩沖器成為具有數(shù)據(jù)指針與數(shù)據(jù)尺寸值的數(shù)據(jù)結構,對包緩沖器有效負載及其規(guī)約頭尾部指定足夠的存儲空間,必要時可在存儲庫中通過包緩沖器輸入的聯(lián)接表指定包緩沖器。
文檔編號H04L29/06GK1291029SQ0012220
公開日2001年4月11日 申請日期2000年7月25日 優(yōu)先權日1999年7月26日
發(fā)明者盧小林 申請人:德克薩斯儀器股份有限公司