樊占軍 高 超
(91336部隊 河北 066000)
流控制傳輸協議(SCTP)是一種可靠的傳輸協議,它在兩個端點之間提供穩定、有序的數據傳遞服務(類似于TCP),并且可以保護數據消息邊界(類似UDP)。然而與TCP和UDP不同的是,SCTP是通過多宿主(Multi-homing)和多流(Multi-streaming)功能提供這些收益的,這兩種功能均可提高可用性。盡管SCTP協議最初是為發送電話信號而設計的,但其帶來了一個意外的突破:它通過借鑒UDP的優點解決了TCP的某些局限。它提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。
NAT技術作為一種關鍵的網絡技術,不管是在廣域網中還是局域網中都起到了不可忽視的作用,其有效解決了IP地址短缺和IP地址沖突的問題。然而NAT技術在推廣之初只是為適應TCP協議和UDP的通信而設計的,在使用SCTP的過程當中,我們發現了一些普遍存在的問題,就是SCTP報文在當前的IP網絡中的轉發與NAT設備無法兼容的問題,這樣就限制了SCTP協議的應用場所。
針對NAT對SCTP產生限制所體現出來的具體問題,根據實際情況提出了新的解決方案。
與TCP相同的是,SCTP中對新連接的初始化時通過報文握手來完成的,但TCP使用的是三次握手而SCTP使用的是四次握手,當服務器端和客戶端在沒有NAT設備的IP網絡中使用SCTP進行同一個層級的網絡進行數據傳輸時,通信能順利達成。通信的過程如圖1所示:

圖1 SCTP連接初始化過程(無NAT)
當客戶端和服務器端分布在不同級別的兩個網絡中,并且它們的通信需要通過NAT設備時,通信無法達成。利用抓包軟件對數據包進行跟蹤分析,發現服務器端無法收到客戶端的發送的INIT請求報文,通信終端過程如圖2所示。

圖2 SCTP連接初始化過程(有NAT)
據圖2所示,分析得知報文在通過NAT設備時丟失。NAT設備為了完成完整的內網和外網地址轉換功能,必須對傳輸層協議的端口號進行轉換。而現有IPV4網絡中大多數NAT設備對傳輸層協議的支持權限于傳輸控制協議(TCP)和用戶數據報協議(UDP),不支持流控制協議(SCTP)。這導致現有商用的NAT設備收到SCTP報文后無法對其進行內網與外網地址間的映射,而直接丟棄,造成了SCTP無法在含有NAT設備的現有IP網絡中使用。
由于NAT支持既有的用戶數據報協議(UDP),可以在客戶端把需要發送的 SCTP報文偽裝成 UDP報文進行發送,當UDP報文抵達服務器端時,再把其還原成原來的SCTP報文就可以了。其具體實施過程如下:
在使用SCTP協議的終端的網絡協議棧中部署UDP封裝/解封裝層。該層位于SCTP協議層和網際協議IP層之間,主要工作時在SCTP報文前包裹一層UDP隧道,偽裝成UDP包,利用NAT對UDP報文原生的支持來克服NAT對SCTP協議的不兼容性。經過UDP隧道頭包裝后的SCTP報文結構如圖3所示:

圖3 偽裝后的SCTP報文
圖3所示經過UDP隧道頭包裝過的SCTP報文在通過NAT設備的時候是被認為和普通的UDP報文是相同的,這樣SCTP報文就能順利的在NAT設備中進行通信了。整個通信過程關鍵就是對SCTP報文進行了UDP隧道頭的處理。處理流程如圖4所示:

圖4 SCTP報文UDP隧道頭處理過程
該流程包括以下步驟:
(1)發送端的UDP封裝層收到傳輸層發來的SCTP報文后,在SCTP報文頭前插入UDP隧道頭,它的目的IP地址和源IP地址取自于SCTP報文中的目的IP地址和源IP地址;
(2)封裝后的SCTP報文被看作為標準的UDP報文在NAT發送端的傳輸層進行處理;
(3)接收端收到NAT發送過來的UDP報文后,根據UDP隧道頭的標識符號進行判斷此報文是包裹著 UDP隧道頭的SCTP報文還是標準的UDP報文;
(4)若是UDP隧道報文,則將報文送入UDP解封裝層,該層提取UDP隧道頭中的目的IP地址和源IP地址的信息,分別填充到標準SCTP頭中的對應域中,UDP隧道頭將會被刪掉,還原成標準的SCTP報文;
(5)若是標準的UDP報文,則送入標準的UDP協議棧進行處理。提出的內存不影響標準TCP/IP協議棧的工作流程。
通過sniffer抓包軟件對網絡中的流量進行抓包分析,經過UDP隧道頭封裝后的SCTP(INIT)報文從內網地址觸發,經NAT設備轉換后到達外網,并且可以在內網中收到外網的回復(INIT_ACK),通信達成,測試成功。
本文從修改 NAT設備收發端的SCTP協議的部分功能出發,針對NAT對IPV4網絡中SCTP報文阻斷的兩個問題提出了適當的解決方法。這兩個解決方法對原IPV4網絡中的NAT設備不需做任何變動就可以實現SCTP報文在NAT設備中的通信,能夠幫助SCTP更快地實現在當前網絡中的應用,從部分功能上解決了SCTP和NAT設備在通信中的兼容性問題。
[1]沈伊,夏靖波,周漢勛.SCTP協議在雷達情報傳輸中的應用研究[J],通信技術,2008.
[2]李愛國.SCTP在工業以太網通信技術中的應用研究.現代通信技術,2012.2.
[3]李健.基于SCTP多歸屬主機特性的多路徑傳輸算法研究.重慶郵電學院學報,2005.