Global Sources
電子工程專輯
 
電子工程專輯 > 網路技術
 
 
網路技術  

利用UDP壓縮提升數據封包吞吐能力

上網時間: 2006年06月19日     打印版  Bookmark and Share  字型大小:  

關鍵字:NP  報頭壓縮  數據封包吞吐 

一個典型的用戶數據報協議/網際網路協議(UDP/IP)報頭封包含20位元組的IP報頭與8位元組的UDP報頭。UDP報頭封包含來源與目標UDP埠地址、長度與校驗和,而IP報頭則有12個不同的字段,包括來源/目標IP地址與服務類型(ToS)位元。

在屬於相同數據封包串流的大部份數據封包中,大多數報頭字段的值往往保持不變。UDP/IP報頭壓縮基於如下事實:由於這些字段在各個數據封包之間保持不變,因而無需在每個數據封包中都完整地發送它們。因此,傳輸端可以利用簡單的報頭(僅包含3個字段,佔用5個位元組)替換包含16個字段、佔用28個位元組的標準報頭。

這種壓縮報頭封包含一個可唯一識別數據串流的2位元組字段-關聯標識號(CID)、產生字段(1個位元組)以及IP標識(2個位元組)字段,它們共同構成了5位元組壓縮報頭。接收端透過將原始報頭字段替換壓縮報頭即可實現對報頭的解壓縮。


圖1:NP的架構適合於UDP/IP報頭的壓縮與解壓縮。

標題為《IP報頭壓縮》的IETF RFC2507詳細說明了如何壓縮報頭字段以實現下列目的:

1. 加速交互響應時間;

2. 允許將小型數據封包用於具有良好線路效率的大量數據傳輸;

3. 允許將小型數據封包用於對延遲敏感的低數據速率流量;

4. 減少報頭開銷;

5. 降低有損耗鏈路的封包丟失率。

對於有損耗的低速點對點鏈路,上述壓縮可以顯著提高傳輸效率。根據實驗結果,本文將介紹如何在網路處理器(NP)中實現上述報頭壓縮。該NP晶片適用於多服務接取網路應用。

實現過程

NP的晶片上控制處理器可作為主處理器。另外,還可以透過諸如IBM PowerPC 750F等外部主處理器控制NP。在該元件的任意埠收到數據封包後,其中的分類器模組確定所收到的數據封包屬於哪個封包串流。在確定封包串流之後,流量管理引擎可以存取與此封包串流相關的狀態變量,並做出路由、佇列、調度與PDU修改等決定。NP的這種架構非常適用於UDP/IP報頭的壓縮與解壓縮。

在收到數據封包後,分類器將它們轉發到流量管理模組,並顯示該PDU屬於哪個封包串流。流量管理模組根據從分類器收到的資訊執行壓縮或解壓縮。對PDU報頭的修改由屬於流量管理器一部份的串流編輯器(SED)執行(見圖1)。

圖2:刷新檢查過程。

壓縮和解壓縮在無需主處理器協助的情況下即可在快速通道中執行。唯一例外的情況是在開始階段,當收到某個帶新的報頭參數的數據封包(未設立其數據封包串流)時,主處理器需協助設置NP執行報頭壓縮與解壓縮所需的計劃。一旦表計劃設置完成,NP即作為快速通道處理的組成部份執行實際的壓縮與解壓縮。

UDP報頭壓縮

分類器利用查詢樹執行UDP/IP數據封包報頭至CID的映射。如果存在新的封包串流(即UDP/IP數據封包報頭查詢失敗),則按原樣發送出數據封包。此外該數據封包的副本被發送到控制處理器,用於封包串流設置。

然後,主處理器在查詢表中製作一個計劃。快速通道將該表用於此組報頭參數,同時將相應的壓縮報頭分配給該報頭參數的組合。後續收到的、帶上述報頭參數組合的數據封包由該查詢表計劃進行匹配。在報頭壓縮中用壓縮報頭值替代相應參數。在SED中將數據封包重新寫入為壓縮格式或完整報頭格式。

圖3:快速通道中的UDP/IP壓縮過程。

執行壓縮的NP最初需要發送一個具有完整報頭的PDU,其中包括所有未經壓縮的報頭參數與分配給這個特定數據串流的CID。該PDU可幫助接收端的NP記錄特定CID所對應的解壓縮參數。

在使用某個壓縮報頭發送屬於相同數據串流的後續PDU時,接收端的NP可以用一組正確的報頭參數替代該壓縮報頭,這個過程作為解壓縮過程的一部份。

透過一種被稱為刷新檢查(refresh check)的過程(見圖2),完整報頭能夠以不斷降低的頻率按指定的間隔發送,因而確保了壓縮╱解壓縮同步。狀態引擎決定何時發送具有完整報頭格式的數據封包。

控制處理器負責執行下列輔助壓縮的任務:1. 更新查詢樹,以設置串流標識;2. 設置狀態引擎參數,以觸發具備完整報頭的數據封包。

UDP報頭解壓縮

報頭解壓縮過程見圖3。如前所述,報頭的解壓縮也在快速通道中執行,無需主處理器的幫助(見圖4)。不過,在遇到具有未知報頭參數的新報頭時,主處理器就會製作所需的查詢樹計劃,以幫助元件執行解壓縮過程。

分類器利用查詢樹檢查數據封包串流是否存在。如果屬於一個新的數據封包串流(即CID查詢失敗),則數據封包被發送至控制處理器。控制處理器更新查詢表與SED參數記憶體。

圖4:UDP/IP解壓縮過程。

數據封包然後被返回,以重新插入相同的數據封包串流。這種實施可確保在主處理器處接收到的、屬於相同封包串流的連續PDU不至於造成為相同封包串流分配多個CID。另外,它還可以確保所有收到的PDU被正確地重新插回數據封包串流,因而保證數據封包正確的先入/先出順序。

每當收到具有完整報頭的數據封包,該元件都會利用函數編程語言(FPL)樹表檢查報頭。這種檢查是為了確保沒有設定保持固定的字段發生變化。SED將數據封包重新寫入為未壓縮格式。

控制處理器執行下列輔助解壓縮的任務:

1. 更新查詢樹;

2. 更新SED參數記憶體。將未解壓縮的報頭保持在SED參數中;

3. 在完成表項之前保持數據封包;

4. 在設置了新的解壓縮表項之後,將數據封包重新插回數據封包串流;根據需要對報頭進行解壓縮。

本文小結

實現UDP/IP壓縮需要大約1,000行快速通道程式碼與1,200行慢速通道(主處理器)程式碼。這些程式碼用於配置前面所述的分類器與流量管理模組。

處理器可以保持2Gbps的吞吐能力,同時提供壓縮與解壓縮服務。實現的範例顯示,該元件能夠輕鬆處理10,000個不同的數據封包串流。這些串流是透過改變用於識別單個數據封包串流的5個元組(來源與目標IP地址、來源與目標UDP埠以及ToS字段)中的至少一個參數製作的。

未壓縮的報頭攜帶28個位元組的UDP/IP報頭資訊。而壓縮報頭替換靜態參數之後,上述資訊被壓縮為5個位元組。因此,上述壓縮過程可以使報頭尺寸縮小80%。總吞吐能力的實際降低取決於與報頭相關的有效載荷大小(由於報頭佔用的空間相對較多,因此有效載荷越小,頻寬降幅越大)。

在採用20位元組的有效載荷時,939Mbps的未壓縮流量可以壓縮至435Mbps(後者也可解壓縮到前者),這說明了吞吐能力節約效果顯著。

功能強大的UDP/IP報頭壓縮技術可透過使報頭縮小80%來提高吞吐能力並減少數據封包的丟失與延遲。在有效載荷較低的情況下,透過降低報頭開銷使吞吐量加倍,因而大幅提高傳輸效率。

作者:Sundar Vedantham

Pravin Pathak

Lauren Yang

Agere Systems




投票數:   加入我的最愛
我來評論 - 利用UDP壓縮提升數據封包吞吐能力
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首