楊 松
(中國電子科技集團公司第三十研究所,四川 成都 610041)
在我國,互聯(lián)網(wǎng)己經(jīng)取得巨大發(fā)展,從固定互聯(lián)網(wǎng)到移動互聯(lián)網(wǎng),其爆炸式發(fā)展及其對社會的沖擊超過人們的想象,以互聯(lián)網(wǎng)為代表的信息網(wǎng)絡己滲透到我國人民生活的各個方面,給社會發(fā)展帶來了巨大而深遠的變化,同時,電信業(yè)也迅速發(fā)展,特別是多媒體通信的發(fā)展,對網(wǎng)絡帶寬提出了新的需求,也就導致了光纖網(wǎng)和光纖通信也在飛速發(fā)展。
網(wǎng)絡流量增大,為了保證可靠傳輸,就導致了糾錯的需求增大。在數(shù)據(jù)傳輸時,糾錯一般采用前向糾錯(FEC)[1],這里的前向,是指差錯控制過程是單方向的,不存在差錯信息的反饋。另外一種反饋重發(fā)(ARQ)[2]糾錯方式由于不能適應高速傳輸,在現(xiàn)代高速網(wǎng)絡中基本不采用了。
目前對于FEC糾錯方式能夠自動開關糾錯模式的研究不多。因為對于FEC目前普遍使用的帶外傳輸方式,糾錯是會增加流量的,所以根據(jù)線路誤碼情況及時開關糾錯功能是一個重要技術。同時網(wǎng)絡的流量信息也是網(wǎng)絡安全信息之一,因為可以通過監(jiān)測流量來分析目前的網(wǎng)絡動態(tài),從而可能存在泄露重要信息的風險,所以抗流量分析技術也是很有應用前景。
本研究提供一個較簡單的方法既解決了流量分析的問題,又能夠根據(jù)線路情況自動開啟或關閉糾錯模式,從而使帶寬能夠充分利用。而且本方案基本不增加額外的帶寬,而且本方案適用于所有傳輸分組數(shù)據(jù)的線路,如以太網(wǎng)或采用 EoS技術的SDH線路。
抗流量分析技術就是在線路上沒有流量或流量較少的時候發(fā)送空閑幀,空閑幀在幀格式上與正常幀沒有區(qū)別,截獲后也無法識別,空閑幀發(fā)送不影響業(yè)務數(shù)據(jù)的發(fā)送。
自動糾錯技術需要隨時監(jiān)測線路誤碼情況,根據(jù)誤碼門限來判別開啟或關閉糾錯功能。本方案中結合空閑幀技術完成誤碼統(tǒng)計,采用 RS糾錯編碼來完成糾錯功能的實現(xiàn)。
在產(chǎn)生空閑幀的方案上,為了充分利用軟硬件各自的特點,采用軟硬結合的辦法。
軟件計算空閑幀發(fā)送的帶寬,定時改變,同時也改變長度,硬件統(tǒng)計實際發(fā)送的業(yè)務數(shù)據(jù)流量,如果流量不夠,硬件根據(jù)配置長度和帶寬發(fā)送空閑幀,讓流量達到配置的值,如果實際業(yè)務數(shù)據(jù)的流量已經(jīng)大于或等于配置的空閑幀帶寬,則不發(fā)送補充流量的空閑幀。
流量計算舉例:100 MHz的時鐘計數(shù),以字節(jié)為單位,其數(shù)據(jù)流量為8 bit*100 M/s=800 Mb/s,硬件計算空閑幀帶寬時采用類似令牌桶[3]的方式,當計數(shù)值等于軟件給定帶寬(計數(shù)周期)時就給出一個令牌,有多少個令牌表示可以發(fā)送多少個字節(jié)數(shù)據(jù)。根據(jù)軟件給定的值,硬件獲取對應的令牌,值越大,令牌發(fā)放越慢;值越小,令牌發(fā)放越快,空閑幀占的帶寬也與大。例如軟件配置計數(shù)周期為2,800 Mb/s/2=400 Mb/s,如配置成200,800Mb/s/200=4 Mb/s。當然,這里的空閑幀主要目的是防止流量分析,所以發(fā)送的流量不用太準,對于小數(shù)的情況,就直接取大于它的整數(shù),令牌的計算可能比實際的要小。
如果可用令牌數(shù)大于軟件給定的長度且沒有業(yè)務數(shù)據(jù),開始發(fā)送空閑幀,發(fā)送完成以后減去對應的長度的令牌。業(yè)務數(shù)據(jù)的發(fā)送也將減去對應的令牌,這樣就能保證空閑幀不影響實際業(yè)務帶寬。
其具體流程如圖1所示。
圖1 空閑幀插入流程
空閑幀的具體格式如圖2所示。
圖2 空閑幀格式
空閑幀的格式與通常的以太網(wǎng)幀[4]沒有區(qū)別 ,具體定義如下:目的和源MAC地址:通用的以太網(wǎng)幀定義;Tpye字段:使用的一個特別的定義0x0a0a,標識空閑幀;
數(shù)據(jù):采用從0開始的不斷遞增的計數(shù)值,這樣也便于接收方向校驗數(shù)據(jù)。
數(shù)據(jù)值為固定值后在線路上容易識別,這樣就不能抗流量分析。為了在線路上的數(shù)據(jù)不被識別,本方案對線路數(shù)據(jù)都進行了加密處理,而且采用的一包一 IV(初始向量)的 CBC的處理方式,這樣即使每一包的數(shù)據(jù)是相同的,經(jīng)過加密算法以后數(shù)據(jù)也完全不同,由于加密部分不是這里討論的重點,就不具體論述了。
目前線路傳輸?shù)募m錯普遍采用 FEC[5](前向糾錯技術)
FEC 是一種數(shù)據(jù)編碼技術,發(fā)送方向通過糾錯編碼技術在數(shù)據(jù)中加入冗余碼,然后發(fā)給接收方,由接收方進行誤碼恢復和驗證,在FEC 技術中,數(shù)據(jù)接收端不但能發(fā)現(xiàn)誤碼,而且能確定發(fā)生誤碼的位置,從而糾正過來。FEC 技術必須使用糾錯編碼碼。接收方發(fā)現(xiàn)誤碼后不需要通知發(fā)送方重發(fā)。
實際應用的時候,發(fā)現(xiàn)誤碼較容易,發(fā)現(xiàn)后加上糾錯碼就可以解決,但是什么時候不需要糾錯就難于發(fā)現(xiàn)。由于糾錯后需要增加數(shù)據(jù)長度,會消耗一部分帶寬,實際可用的帶寬就變窄了。所以在線路沒有誤碼或達到可容忍的范圍后,需要將糾錯功能去掉,從而增加帶寬。
研究自動糾錯技術就是為了解決上述問題,自動糾錯技術是結合前面的空閑幀技術來完成的,如圖3所示,空閑幀在發(fā)送方永遠不加糾錯碼,接收方收到后也不會去糾錯,而是直接用來計算誤碼率,由于空閑幀的內(nèi)容是已知的,在一定時間范圍內(nèi)就可以得到平均誤碼碼率的統(tǒng)計。于是就可以根據(jù)統(tǒng)計值進行糾錯的開與關。當然,還有一些極端情況需要考慮,如業(yè)務帶寬超過空閑幀帶寬,此時沒有空閑幀發(fā)送,沒有辦法計算誤碼率,這就需定時發(fā)送空閑幀,由此來統(tǒng)計誤碼率。另外對應空閑幀包頭錯時可能出現(xiàn)收不到包情況,此時如果接收方向在規(guī)定的時間內(nèi)不能收到空閑幀,就結合線路誤碼統(tǒng)計確定是否開啟誤碼功能,保證糾錯功能開關的及時性。
圖3 自動糾錯示意
前向糾錯有兩種糾錯編碼,即 BCH和 RS編碼[6],BCH編碼也叫帶內(nèi)編碼,因為它是將糾錯冗余校驗位的位置固定在幀結構中某個位置,不需要額外帶寬。而 RS編碼則稱為帶外編碼,就編碼算法而言,它也是BCH的一個子類,但應用時一般把它們看成兩類。因為 RS的糾錯冗余校驗位不是像帶內(nèi)編碼那樣插入到空閑位置,而是附加在數(shù)據(jù)幀之后,需要增加額外的帶寬,即用帶外FEC 后實際占用帶寬會提高。
由于BCH編碼的糾錯能力非常有限,而RS編碼糾錯能力更強,也更靈活,所以本方案中的編碼采用RS編碼來實現(xiàn)。
RS碼是最大距離可分碼,其最小距離為=n-k+1,最多可糾正(n-k)/2個符號(基本單位)錯誤。RS碼的糾錯能力是以其所能糾正的符號(基本單位)數(shù)來表示的。對 RS碼來說,一個符號內(nèi)錯一個比特與錯所有比特是相同的,這使得 RS碼特別適用于糾突發(fā)錯誤。如果符號為8 bit,則RS(36,6)可糾可以糾正15 個(15 個8 bit 的字符)突發(fā)錯誤,即使這些錯誤連續(xù)出現(xiàn),長度達120 bit 也能夠糾正。如果錯誤比特零星分布在任意的 15 個字符之中也能夠糾正,而這種情況可以視為隨機錯誤,因此RS碼也具有較強的糾隨機錯誤的能力。綜上所述,RS碼是一類非常好的碼字,性能優(yōu)良。
具體在 FPGA上實現(xiàn)時,為了節(jié)約開發(fā)時間,采用xilinx公司提供的RS糾錯編碼的IPcore。分組數(shù)據(jù)是變長包,輸入長度就設置成可變的,而糾錯冗余碼則根據(jù)實際需要選取。同時設置好其他相關參數(shù)就可以直接使用。
根據(jù)上面的方案構想,研制了試驗板卡,其對外接口是1000M以太網(wǎng),糾錯是在以太網(wǎng)MAC層上疊加,所以對線路糾錯不能達到100%。當然,對于CRC錯的數(shù)據(jù)不丟棄,只是在FPGA中對收到的數(shù)據(jù)進行校驗,如果錯誤,就丟棄,使用2個板卡對發(fā),線路上串接spirent公司的IP網(wǎng)絡損傷測試儀,利用它產(chǎn)生線路誤碼,測試誤碼為泊松分布,然后再利用spirent公司的smartbit600網(wǎng)絡分析儀發(fā)送數(shù)據(jù)包,測試速率為800 Mb/s,同時也利用smartbit600收包,對收發(fā)數(shù)據(jù)進行統(tǒng)計,測試結果如表1所示。
表1 糾錯性能試驗結果
接下來對自動糾錯的功能進行了測試,誤碼統(tǒng)計時間設為10 s,定時發(fā)送空閑幀設為1 s時,沒有發(fā)送業(yè)務數(shù)據(jù)或業(yè)務數(shù)據(jù)較少時,糾錯開關的切換在10~20 s內(nèi)完成,如果業(yè)務帶寬大于等于空閑幀設定的帶寬時,糾錯開關的切換大6多在10~20 s內(nèi)完成,有少數(shù)在30 s內(nèi)完成。
另外只要業(yè)務帶寬沒有超過空閑幀帶寬,線路上的流量就維持在空閑幀的帶寬上,也證明了抗流量分析功能是很好的。
通過以上的試驗可以得出以下的結論,通過空閑幀的引入,可以在鏈路層(MAC)上實現(xiàn)糾錯功能的自動打開和關閉,而且糾錯后對線路傳輸數(shù)據(jù)的質量提高明顯。此方案另一個優(yōu)點是糾錯功能可以與物理層獨立開來,因而可以應用到不同的物理線路上。同時由于空閑幀的引入,在線路上可以把實際流量的信息屏蔽掉,從而達到抗流量分析的目的。
[1] 覃永新,陳文輝,蔡啟仲.前向糾錯技術中卷積交織器的FPGA實現(xiàn)[J].通信技術,2009,42(03):84-86.
[2] 秦晉平,王翔,李宇.一種高可靠的超短波數(shù)據(jù)通信技術方案設計[J].通信技術,2008,41(11):40-41.
[3] 鄧長春.基于VoIP 的校園網(wǎng)絡管理系統(tǒng)的設計[J].通信技術,2008,41(08):154-156.
[4] IEEEStd802.3—2002[S].[s.l.]:IEEE,2008:49-50.
[5] 鐘競東,梁釗.長距離高速光纖通信中的FEC技術及其研究進展[J].光子技術,2006(02):92-96.
[6] 陳磊,段淋,王峰,等.一種參數(shù)可變實時RS編碼器的設計[J].通信技術,2007,40(11):11-13.