• 沒有找到結果。

第三章 相關研究

3.5 SCTP

3.5.1 SCTP 簡介

圖5: SCTP 連結概念

SCTP [9][25][26][27]是由 IEFT 的 SIGTRAN 提出的一種多媒體通訊控制傳輸協議,

用於在 IP 網路上傳輸 PSTN 信令訊息,即通常所說的 SS7 over IP。目前,IEFT 將 SCTP 傳輸層協定作為主要研究目的,與 TCP 和 UDP 共築於 IP 層之上。如圖 5 所示,SCTP 是一個傳輸層 (Transport Layer)的通訊協定,其最大的特點就是一個傳輸端可以有一個到 多個 IP 同時運用。

z SCTP 的特點

SCTP 是新定義的一個通訊協定,它整合了 TCP 以及 UDP 的特性,包含 reliable、flow controlled、congestion controlled、data exchange 這些和 TCP 一樣,unordered、unreliable data exchange、這些和 UDP 一樣,不過它還有其他 TCP 以及 UDP 所沒有的功能。Multi-homing、

Multi-streaming、Message boundaries (with reliability*)、Improved SYN-flood protection、A range of reliability and order (full to partial to none)…等。

*

UDP: message boundaries, not reliable TCP: reliable, no message boundaries

圖6: SCTP Multi-homing

其中 Multi-homing 是一個對於換手來說很重要的特性,如圖 6 所示,當終端 B 的主 要 IP 不能使用後,終端 A 依然可以把封包送給 B 的另一個 IP,因此 AB 之間所建立的 session 連線並不會因此而中斷掉。

z SCTP 的封包格式

圖7: SCTP 封包格式

如圖 7,SCTP 的每一個封包包含 SCTP common header,以及後面接連著許許多多的 chuck,每個 chuck 包含 chuck header 以及資料。常見的 chuck 類型有:Data、SACK、HB、

HB ACK。SCTP 可以把每個 chunk 全都包含在同一個封包裡,以減少封包傳送的次數。

z SCTP 的重傳機制

SCTP 對於路徑 (path)來說,定義為 path = destination,也就是說遠端如果有一個 IP 就會有一個 path 存在,SCTP session 在建立的時候,會告知彼此的 IP 資訊,因此對於每 個 path 皆會定期的發送 heartbeat chunk,約 30 秒發送一次,用來偵測此路徑是否有效,

經過五次的失敗,也就是沒有 heartbeat ACK 回應,就會認定此路徑失效。

3.5.2 SCTP 分析討論

SCTP 的 Multi-homing 對於可以同時使用多個網路介面是個很大的優點,而且他在 傳輸層 (Transport Layer)上面實作,效率會比在應用層 (Application Layer)上實作來的好,

和 Mobile IP 的作法比較,它並不需要在網路上部署 Home agent 及 Foreign agent,不過它 在某些方面是有缺點的。以下將對一些缺點作說明。

z 既有的應用程式需要重新設計以及編譯

因為現有的網路應用程式,基本上皆是使用 TCP 或 UDP 通訊協定,然而 SCTP 是 新定義的通訊協定,如果既有的程式需要支援此通訊協定,勢必需要重新改寫編譯,這 很花成本也不符合效益,這點是新通訊協定常有共通的毛病,尤其是既有傳輸層的通訊 協定 (TCP/UDP…)使用的量太大了,需要改的程式就多的數不完。

z NAT 及防火牆問題

以現有的 NAT 機器,或是防火牆等網路中的元件,對於新定義的通訊協定,大致 上來說均不支援,也就是說看不懂格式的網路封包均會丟棄不予理會。以 NAT 來說,

當位於 NAT 內部的 LAN 要對外連線時,發送 SCTP 封包出去,這時大部分的 NAT 不了 解該封包為哪一種,所以均丟棄,不會作 IP 以及 port 的轉換對應 (mapping)。NAT 要區 別 TCP 以及 UDP 的封包是需要的,因為 TCP 在要求連線的時候,封包會有一個 SYN 的 flag,可以讓 NAT 知道要建連線了,便會對外打開一個 port 讓封包進來,要結束的時候 也會有一個 flag 通知,NAT 就可以關閉該 IP 以及 port 的對應,讓封包進不來。然而 UDP,

並沒有連線導向的機制,也就是說對於連線出去的 UDP 必須要知道是 UDP 型態才能設 定 IP 以及 port 對應的 timeout 時間,如果不設 timeout 時間的話,不會知道什麼時候結束 連線,對 NAT 來說,UDP 的 IP 以及 port 需要繼續維持對應關係,這樣會佔用 NAT 的 session 數量以及對外的 port 數,導致效能不彰,另一個原因是區分通訊協定,可以統計 分析網路流量,進而執行過濾、監控等網路管理的動作,如限制某些網站的內容等,所 以區別通訊協定對於 NAT 裝置是必要的。

相關文件