楊 松
(中國電子科技集團公司第三十研究所,四川 成都 610041)
在我國,互聯網己經取得巨大發展,從固定互聯網到移動互聯網,其爆炸式發展及其對社會的沖擊超過人們的想象,以互聯網為代表的信息網絡己滲透到我國人民生活的各個方面,給社會發展帶來了巨大而深遠的變化,同時,電信業也迅速發展,特別是多媒體通信的發展,對網絡帶寬提出了新的需求,也就導致了光纖網和光纖通信也在飛速發展。
網絡流量增大,為了保證可靠傳輸,就導致了糾錯的需求增大。在數據傳輸時,糾錯一般采用前向糾錯(FEC)[1],這里的前向,是指差錯控制過程是單方向的,不存在差錯信息的反饋。另外一種反饋重發(ARQ)[2]糾錯方式由于不能適應高速傳輸,在現代高速網絡中基本不采用了。
目前對于FEC糾錯方式能夠自動開關糾錯模式的研究不多。因為對于FEC目前普遍使用的帶外傳輸方式,糾錯是會增加流量的,所以根據線路誤碼情況及時開關糾錯功能是一個重要技術。同時網絡的流量信息也是網絡安全信息之一,因為可以通過監測流量來分析目前的網絡動態,從而可能存在泄露重要信息的風險,所以抗流量分析技術也是很有應用前景。
本研究提供一個較簡單的方法既解決了流量分析的問題,又能夠根據線路情況自動開啟或關閉糾錯模式,從而使帶寬能夠充分利用。而且本方案基本不增加額外的帶寬,而且本方案適用于所有傳輸分組數據的線路,如以太網或采用 EoS技術的SDH線路。
抗流量分析技術就是在線路上沒有流量或流量較少的時候發送空閑幀,空閑幀在幀格式上與正常幀沒有區別,截獲后也無法識別,空閑幀發送不影響業務數據的發送。
自動糾錯技術需要隨時監測線路誤碼情況,根據誤碼門限來判別開啟或關閉糾錯功能。本方案中結合空閑幀技術完成誤碼統計,采用 RS糾錯編碼來完成糾錯功能的實現。
在產生空閑幀的方案上,為了充分利用軟硬件各自的特點,采用軟硬結合的辦法。
軟件計算空閑幀發送的帶寬,定時改變,同時也改變長度,硬件統計實際發送的業務數據流量,如果流量不夠,硬件根據配置長度和帶寬發送空閑幀,讓流量達到配置的值,如果實際業務數據的流量已經大于或等于配置的空閑幀帶寬,則不發送補充流量的空閑幀。
流量計算舉例:100 MHz的時鐘計數,以字節為單位,其數據流量為8 bit*100 M/s=800 Mb/s,硬件計算空閑幀帶寬時采用類似令牌桶[3]的方式,當計數值等于軟件給定帶寬(計數周期)時就給出一個令牌,有多少個令牌表示可以發送多少個字節數據。根據軟件給定的值,硬件獲取對應的令牌,值越大,令牌發放越慢;值越小,令牌發放越快,空閑幀占的帶寬也與大。例如軟件配置計數周期為2,800 Mb/s/2=400 Mb/s,如配置成200,800Mb/s/200=4 Mb/s。當然,這里的空閑幀主要目的是防止流量分析,所以發送的流量不用太準,對于小數的情況,就直接取大于它的整數,令牌的計算可能比實際的要小。
如果可用令牌數大于軟件給定的長度且沒有業務數據,開始發送空閑幀,發送完成以后減去對應的長度的令牌。業務數據的發送也將減去對應的令牌,這樣就能保證空閑幀不影響實際業務帶寬。
其具體流程如圖1所示。

圖1 空閑幀插入流程
空閑幀的具體格式如圖2所示。

圖2 空閑幀格式
空閑幀的格式與通常的以太網幀[4]沒有區別 ,具體定義如下:目的和源MAC地址:通用的以太網幀定義;Tpye字段:使用的一個特別的定義0x0a0a,標識空閑幀;
數據:采用從0開始的不斷遞增的計數值,這樣也便于接收方向校驗數據。
數據值為固定值后在線路上容易識別,這樣就不能抗流量分析。為了在線路上的數據不被識別,本方案對線路數據都進行了加密處理,而且采用的一包一 IV(初始向量)的 CBC的處理方式,這樣即使每一包的數據是相同的,經過加密算法以后數據也完全不同,由于加密部分不是這里討論的重點,就不具體論述了。
目前線路傳輸的糾錯普遍采用 FEC[5](前向糾錯技術)
FEC 是一種數據編碼技術,發送方向通過糾錯編碼技術在數據中加入冗余碼,然后發給接收方,由接收方進行誤碼恢復和驗證,在FEC 技術中,數據接收端不但能發現誤碼,而且能確定發生誤碼的位置,從而糾正過來。FEC 技術必須使用糾錯編碼碼。接收方發現誤碼后不需要通知發送方重發。
實際應用的時候,發現誤碼較容易,發現后加上糾錯碼就可以解決,但是什么時候不需要糾錯就難于發現。由于糾錯后需要增加數據長度,會消耗一部分帶寬,實際可用的帶寬就變窄了。所以在線路沒有誤碼或達到可容忍的范圍后,需要將糾錯功能去掉,從而增加帶寬。
研究自動糾錯技術就是為了解決上述問題,自動糾錯技術是結合前面的空閑幀技術來完成的,如圖3所示,空閑幀在發送方永遠不加糾錯碼,接收方收到后也不會去糾錯,而是直接用來計算誤碼率,由于空閑幀的內容是已知的,在一定時間范圍內就可以得到平均誤碼碼率的統計。于是就可以根據統計值進行糾錯的開與關。當然,還有一些極端情況需要考慮,如業務帶寬超過空閑幀帶寬,此時沒有空閑幀發送,沒有辦法計算誤碼率,這就需定時發送空閑幀,由此來統計誤碼率。另外對應空閑幀包頭錯時可能出現收不到包情況,此時如果接收方向在規定的時間內不能收到空閑幀,就結合線路誤碼統計確定是否開啟誤碼功能,保證糾錯功能開關的及時性。

圖3 自動糾錯示意
前向糾錯有兩種糾錯編碼,即 BCH和 RS編碼[6],BCH編碼也叫帶內編碼,因為它是將糾錯冗余校驗位的位置固定在幀結構中某個位置,不需要額外帶寬。而 RS編碼則稱為帶外編碼,就編碼算法而言,它也是BCH的一個子類,但應用時一般把它們看成兩類。因為 RS的糾錯冗余校驗位不是像帶內編碼那樣插入到空閑位置,而是附加在數據幀之后,需要增加額外的帶寬,即用帶外FEC 后實際占用帶寬會提高。
由于BCH編碼的糾錯能力非常有限,而RS編碼糾錯能力更強,也更靈活,所以本方案中的編碼采用RS編碼來實現。
RS碼是最大距離可分碼,其最小距離為=n-k+1,最多可糾正(n-k)/2個符號(基本單位)錯誤。RS碼的糾錯能力是以其所能糾正的符號(基本單位)數來表示的。對 RS碼來說,一個符號內錯一個比特與錯所有比特是相同的,這使得 RS碼特別適用于糾突發錯誤。如果符號為8 bit,則RS(36,6)可糾可以糾正15 個(15 個8 bit 的字符)突發錯誤,即使這些錯誤連續出現,長度達120 bit 也能夠糾正。如果錯誤比特零星分布在任意的 15 個字符之中也能夠糾正,而這種情況可以視為隨機錯誤,因此RS碼也具有較強的糾隨機錯誤的能力。綜上所述,RS碼是一類非常好的碼字,性能優良。
具體在 FPGA上實現時,為了節約開發時間,采用xilinx公司提供的RS糾錯編碼的IPcore。分組數據是變長包,輸入長度就設置成可變的,而糾錯冗余碼則根據實際需要選取。同時設置好其他相關參數就可以直接使用。
根據上面的方案構想,研制了試驗板卡,其對外接口是1000M以太網,糾錯是在以太網MAC層上疊加,所以對線路糾錯不能達到100%。當然,對于CRC錯的數據不丟棄,只是在FPGA中對收到的數據進行校驗,如果錯誤,就丟棄,使用2個板卡對發,線路上串接spirent公司的IP網絡損傷測試儀,利用它產生線路誤碼,測試誤碼為泊松分布,然后再利用spirent公司的smartbit600網絡分析儀發送數據包,測試速率為800 Mb/s,同時也利用smartbit600收包,對收發數據進行統計,測試結果如表1所示。

表1 糾錯性能試驗結果
接下來對自動糾錯的功能進行了測試,誤碼統計時間設為10 s,定時發送空閑幀設為1 s時,沒有發送業務數據或業務數據較少時,糾錯開關的切換在10~20 s內完成,如果業務帶寬大于等于空閑幀設定的帶寬時,糾錯開關的切換大6多在10~20 s內完成,有少數在30 s內完成。
另外只要業務帶寬沒有超過空閑幀帶寬,線路上的流量就維持在空閑幀的帶寬上,也證明了抗流量分析功能是很好的。
通過以上的試驗可以得出以下的結論,通過空閑幀的引入,可以在鏈路層(MAC)上實現糾錯功能的自動打開和關閉,而且糾錯后對線路傳輸數據的質量提高明顯。此方案另一個優點是糾錯功能可以與物理層獨立開來,因而可以應用到不同的物理線路上。同時由于空閑幀的引入,在線路上可以把實際流量的信息屏蔽掉,從而達到抗流量分析的目的。
[1] 覃永新,陳文輝,蔡啟仲.前向糾錯技術中卷積交織器的FPGA實現[J].通信技術,2009,42(03):84-86.
[2] 秦晉平,王翔,李宇.一種高可靠的超短波數據通信技術方案設計[J].通信技術,2008,41(11):40-41.
[3] 鄧長春.基于VoIP 的校園網絡管理系統的設計[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] 陳磊,段淋,王峰,等.一種參數可變實時RS編碼器的設計[J].通信技術,2007,40(11):11-13.