iT邦幫忙

2022 iThome 鐵人賽

DAY 11
1

本文目標:

  • 認識 SCTP protocol
  • 認識 NGAP protocol

SCTP 介紹

SCTP(Stream Control Transmission Protocol)相關的定義可以在 RFC4960 找到,SCTP 對比 TCP 協定有以下特點:

  • 初始化採用 4-way handshake
  • 結束時採用 3-way handshake
  • 使用 chunck 傳遞資料
  • Multi-homing
  • Multi-streaming
  • SACK(selective acknowledgement)機制
  • Path MTU Discovery
  • Ordered/Unordered 傳輸機制

本篇文章會依據上面列出的特點一一做介紹。

SCTP association & termination

參考上圖,SCTP 的初始化採用四向交握的設計,如此一來可以避免 TCP 容易受到服務阻斷攻擊的弱點。再來是 SCTP 使用三向交握的方式結束連線,這樣可以避免 TCP 的半關閉狀態(意即有一方已關閉連線,但是另一方仍繼續傳送資料)。

SCTP Headers

image

Multi-homing

Multi-homing 的特性允許端點與端點之間的連線透過多個網路裝置進行傳遞,當一個 SCTP 連線具有多路徑時(應在 init ack 訊息中表示),SCTP 會選擇其中一個路徑做為資料傳輸的 primary path,其它的路徑作為 backup path。
SCTP 利用 heartbeat 定期檢測各個線路是否存活,當 primary path 中斷或是發生故障時,backup path 便能夠頂替上來加速故障轉移。

上圖為 SCTP init ack 的訊息內容,注意紅匡處的部分,我們可以發現在訊息中帶有多個 ip 位址。

Multi-streaming

image

SCTP multi-streaming 的特性可以大大的提高傳輸速率,在端點之間建立連線時,必須先協調好串流數量,將不同類型的資料分開使用不同的串流進行傳輸。
如果有某一個資料流發生阻塞,其他的資料流也不會受到任何影像,在每一個資料流中的 data chunk 都有各自的 stream sequence number,所以每一個資料流可以分開來管理封包的重送機制。想像一下,如果 http 協定可以基於 SCTP 重新設計,那麼瀏覽網站之前瀏覽器可以讓不同的檔案透過個別的資料流傳輸,大大的降低傳輸時間。

SACK(selective acknowledgement)機制

  • 接收端會發送 sack 訊息給發送端,sack 訊息會乘載所有已經收到的 Transmission Sequence Number(TSN)。
  • Cumulative TSN ack 欄位表示所有資料已經正確的在接收端重組。
  • Gap block 用於表示哪些 data chunk 已經送達、哪些 data chunk 遺失了。

image

以上圖為例:

  • TSN Ack = 29 表示截至 29 為止的 data chunk 都已經正確的被接收。
  • block 1 的 start 以及 end 分別是 3 和 4,表示接收端有收到 TSN 為 32(29+3)與 33(29+4)的 data chunk。
  • block 2 的 start 以及 end 都是 6,表示接收端有收到 TSN 為 35(29+6)的 data chunk。

Path MTU Discovery

MTU(傳輸單元最大值)代表一個裝置可以接受的最大資料封包的大小,如果超過 MTU 限制,那個封包會被切分成多個 segment,等到接收端收到這些被拆分的段落時再進行重組。
而 SCTP 支援 Path MTU discovery 的功能,這樣就可以確保封包在經過 IP layer 時不被分割。

image

圖片出處:https://techhub.hpe.com/eginfolib/networking/docs/switches/5130ei/5200-3942_l3-ip-svcs_cg/content/483572500.htm

上圖為傳統的 MTU discovery 流程圖,相比 TCP 協定,由於 SCTP 還具有 Multi-homing 的特性,在經過每一個 path 時都會取得 PMTU,因此,SCTP 可以從所有蒐集到的 PMTU 選擇一個最小值作為 sMPTU,並且在 SCTP layer 就先行調整 data chunk 的大小再傳入 IP layer,這樣的做法也帶來了更大的傳輸率,因為在 IP layer 進行分割之後,若碰到封包的某一個部分遺失,那麼就會需要將整個 segment 進行重傳。

Ordered/Unordered 傳輸機制

SCTP 支援 Ordered 與 Unordered 的傳輸機制,比起前者,後者不需要依序傳輸,這很好的避免了 Head-of-line blocking 的問題。
Head-of-line blocking 是指當一列的第一個封包在傳輸時受到阻礙,會導致整列的封包受到影響,這個狀況比較常出現在具有 buffering 機制的交換機、或是傳送端的傳輸順序錯亂。

NGAP 介紹

NGAP(NG Application Protocol over N2 Interface)Protocol 由一些基本流程組成,一個基本流程都是 NG-RAN 與 AMF 之間的溝通流程。

  • NG-C (N2)
    NG-C 使用 NGAP protocol 讓 CU 能夠連接一個或多個 AMF。
  • NG-U (N3)
    NG-U 使用 GTP-U protocol 讓 CU 能夠連接一個或多個 UPF。

N-GAP 主要功能

  • NGAP 能夠管理 gNB 和 AMF 之間的程序所需的所有機制。
  • NGAP 同樣支援執行於 UE 與 AMF 之間的 NAS procedures 傳輸。
  • NGAP 可以向上與向下兼容,版本與版本之間並不會有衝突 (包含 IE Set 以及標準格式編碼的 ID 和 criticality fields)。
  • NGAP 能夠讓 3GPP access 與 non-3GPP access 與核心網路互動 (defined in 3GPP TS 38.413 specification)。
  • NGAP 依賴可靠的傳輸機制(NGAP 設計在 SCTP 協定上)
  • NGAP 與 S1AP 不同,後者並不允許 non-3GPP accesses。
  • N2 interface 提供了管理功能,舉例來說:NG Setup、Reset、Error Indication 以及 Load Balancing。
  • NGAP 支援 Initial UE Context Setup,使 gNB 建立 initial UE context(UE 相關的內文資料)。
  • NGAP 使基地台能夠提供 UE capability information 給 AMF。
  • 支援 PDU Session Setup, modification 以及 release,這些訊息用於管理 Data plane 的資源(如果 UE 要建立 PDU Session,從基地台到核網之間也需要為接下來的資料流事先分配資源)。
  • Paging 功能用於尋找處於 CM-IDLE 狀態的 UE,相關訊息也實作在 NGAP 上。
  • 追蹤 UE 的 mobility(包含 location reporting)。
  • 支援警告訊息(適用於 emergency services)。

NGAP 上的兩大服務

  • Non UE-associated Service
    這類的 NGAP Services 與 RAN 有關 (NGAP Signaling connection),負責處理一些超載的狀態以及交換 gNB 與 AMF 的 configuration data。
  • UE-associated services
    這類的 NGAP Services 與 UE 有關,像是: Registration, PDU Session Establishment, Deregistration etc。

Types of NGAP Procedures

Elementary Procedure:NGAP 由數個 Elementary Procedures(EPs)組成,每個 Elementary Procedure 是 NG-RAN Node 和 AMF 之間互動的基本單位。
這些程序皆是單獨定義的,目的是希望利用這些程序靈活構建完整的流程。

如果某些 EP 之間的獨立性受到限制,則在相關 EP 描述下進行描述。除非限制另有說明,否則 EP 可以作為獨立過程相互獨立地調用,這些過程可以並行發起。在第 2 階段規範(例如,TS 38.401 [2]、TS 38.410 [3] 和 TS 38.300 [8])中規定了幾個 NGAP EP 一起使用或與來自其他接口的 EP 一起使用。

根據 3GPP TS 38.413 定義 NGAP Procedures 能夠被分為兩大類:

兩者最大的差別是前者需要被接收端回覆,而後者不需要。

  • Request Response Procedure
    In this types of procedures, the initiator gets a response from the receiver of the request, indicating whether the request was successfully handled or not or a failure response.
  • No Response Procedures
    These elementary procedures without does not expect a response from the receiver. These messages are used, e.g., when AMF wants to only deliver a downlink NAS message. There is no need for gNB to provide a response in that case since error handling is handled on NAS level.

總結

本篇文章簡單的介紹了 SCTP 與 NGAP 協定,並且順帶講解了一些網路封包傳輸的概念和專有名詞,會特別介紹 SCTP 協定是因為在 EPC 中 MME 與 eNB(S1 interface)以及 5GC 中的 AMF 與 gNB(N2 interface)皆使用 SCTP 協定進行資料傳輸。
有意思的是,SCTP 除了電信領域外幾乎沒有其他領域的應用,我想可能是因為 SCTP 比起 TCP 和 UDP 較複雜、沒有被整合至 TCP/IP 當中,但我們日常使用手機上網時其實會以極高的頻率觸發 SCTP 訊息的傳輸,算是一個為大家默默付出不吭聲的網路協定(?)

References


上一篇
5G protocol stack
下一篇
PFCP 協定介紹
系列文
5G 核心網路與雲原生開發之亂彈阿翔36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言