蘋果小豬研究室
  • 首頁
  • 中譯資料
  • 網路觀念
    • OSGi 平台
    • SCTP 通訊協定簡介
      • 1 多重串流 (Multi-streaming)
      • 2 路徑多宿 (Multi-homing)
      • 3 SACK 機制
      • 4 Path MTU Discovery
      • 5 Ordered/Unordered 傳送機制
      • 6. SCTP API
      • 7. TCP 與 SCTP 通訊協定比較
      • 8. 參考文獻
    • TCP over SCTP tunnel
    • TCP 與 SCTP 協定轉換機制
    • UPnP 與 UPnP AV
  • Linux 程式設計
    • [C] 產生亂數
    • [C] Pointer and array
    • [Script] strncmp
    • [C] Linux 取得 HD 序號
    • [C] 程式範例-切割 subnet
    • C struct 的使用
    • C 目錄相關
    • const 修飾詞
    • Dangling pointer(懸置指標)
    • dnsmole
    • dos2unix 程式碼
    • Function pointer in C
    • GCC header limits.h
    • GDB 參數
    • glibc detected (double free)
    • IEEE 754 and float 範例程式
    • kernel 中的網路卡名稱與命名順序關係
    • Linux 序列埠程式設計
    • loop device 的數目
    • Perl & LWP
    • Remote Control over CGI
    • 偵測 NAT 內部主機連線狀況
    • 利用 libpcap 取得所有的網路裝置名稱
    • 取得時間
    • strncpy
    • 從應用層程式取得傳輸層 TCP 資訊
    • 於 Linux 上撰寫 daemon server 要注意的
    • 為什麼需要 & 0377
    • 研究 setsid()
    • 與 HTTP 協定有關的 RFC
    • 製作 patch 檔
    • 設計在背景執行的 Linux 程式
    • 讀取 STDIN (Standard INPUT) 範例程式
    • 關於 Linux CPU smp_affinity
    • 陣列名稱與指標
  • 網路服務推薦
    • 專案管理工具 - clickup
    • 文件大師 - gitbook
  • glibc 中文手冊
    • GNU C 函式庫常見問題(FAQ)
  • Linux 系統操作
    • /proc/sys/net/ipv4/conf/eth* 目錄中的參數
    • Linux 伺服器效能調校
    • Linux 設定網卡速度
    • Proxy ARP
    • sysrq
    • Turn off beep in Linux system
    • umask()
    • 以 ethtool 查看網路卡狀態及設定
    • 使用 nameif 修改 Linux 網路卡名稱
    • 使用 xhost
    • 利用 sed 取出檔案中某行
    • 在 bash 中設定 Proxy server
    • 在 Linux 系統呈現 dd 的進度
    • 字串取代,使用 awk & sed
    • 尋找多種副檔名
    • 常用 VIM 選項
    • 自動 CPU 調頻節能控制
    • 自動執行程式
    • 設定 Debian 預設啟動服務
    • 設定 DHCPd server
    • 透過 RS-232 操作 Linux console
    • Linux connect to serial port
  • 資訊安全
    • ARP spoofing 技術管控區網流量實例
    • dsniff
    • Linux Socket Filtering
    • Linux 系統安全管理
    • Security 資訊
    • sniffer 相關工具 - IPgrad, tcpick
    • 以 Linux 實務 ARP Spoofing
    • 將文字隱藏於 JPEG 圖檔
    • 資安工具
    • 資安相關網站
    • 限制 localhost 的 P2P 上傳流量
  • 實用工具
    • 實驗基本數據製圖指令 gnuplot
  • 交換連結
  • 網頁設定
  • 網路應用
    • 網路時光機
  • Foldng@Home
  • 文獻推薦
    • 電子書
    • 提問的智慧
    • 好書
  • 隱私政策
Powered by GitBook
On this page
Edit on GitHub
  1. 網路觀念
  2. SCTP 通訊協定簡介

6. SCTP API

Previous5 Ordered/Unordered 傳送機制Next7. TCP 與 SCTP 通訊協定比較

Last updated 2 years ago

目前於Linux平台SCTP API [14] 之實作有LKSCTP (Linux kernel SCTP)[16] 與SCTPLIB [17],如圖8的LKSCTP的堆疊架構所示,LKSCTP將SCTP協定實作於作業系統之kernel space,應用層之網路程式使用socket API或ULP(upper layer protocol)以使用SCTP協定進行傳輸,lksctp運作於Linux作業系統之kernel space。

SCTPLIB(圖9)在作業系統中是屬於user space的設計,利用raw socket的方式於user space運作SCTP協定,以服務應用層網路程式。SCTPLIB為了能夠達到於系統內部服務多個應用層網路程式,透過UDP協定 [20] 與SCTP daemon協同運作,SCTP daemon是負責同步排程工作以及與底層溝通的任務。以作業系統層面比較LKSCTP與SCTPLIB之SCTP API實作,由於SCTPLIB位於user space,因此在kernel space與user space間需要額外付出資料複製的成本,因此預期LKSCTP效能會較SCTPLIB佳。

在Siddiqui等人的研究中 [13],他們進行兩個實驗比較SCTP協定實作在kernel space與user space之效能,在第一個實驗中,他們比較了SCTP協定切換路徑所需耗費的時間延遲,經由實驗結果得到,LKSCTP所耗費之時間延遲遠小於SCTPLIB,作者認為這是因為SCTPLIB需要時間與SCTP Daemon協調,因此在傳送與處理ASCONF [15] 訊息時會增加額外的負擔;在第二個實驗中,他們分別於LKSCTP與SCTPLIB之SCTP API環境中,以檔案傳輸程式(FTP)傳輸不同資料尺寸之檔案,經由結果得知LKSCTP之運作效能均較SCTPLIB優異。

Nurul Islam [7] 等人使用SCTPLIB之SCTP API,實驗主要的目的在分析傳輸不同的data chunk大小對傳輸效能所造成的影響,因此他們設計了兩個實驗場景,分別是設定無封包遺失與5 % 封包遺失的實驗場景,實驗一是在無封包遺失的場景中進行,先後傳輸288 bytes與488 bytes的資料,兩次傳輸由於是各自獨立進行,因此不會互相競爭,透過實驗結果分析可以得到傳輸488 bytes的平均傳輸率比288 bytes高,也就是傳輸較大的data chunk可以獲得較高的傳輸效能。實驗二是在 5% 封包遺失率的場景進行,同樣是分別傳輸288 bytes與488 bytes的資料,結果與之前的實驗相似,傳輸較大的data chunk平均能夠獲得較高的傳輸率。他們認為這樣的結果是因為在SCTP中使用Appropriate Byte Counting [4]、Limited Transmit [2] 與SACK等機制。由於SCTP是計算已接收的SACK回應bytes數來增加壅塞視窗的大小,因此,即使SCTP使用SACK延遲也不會減緩壅塞視窗的成長。

圖8、LKSCTP之堆疊架構圖
圖9、SCTPLIB之堆疊架構圖