SCTP Connection

SCTP(Stream Control Transmission Protocol)というTCP, UDPに変わる通信プロトコルについてテストしてみました。
セキュリティ面でDDoS攻撃によるSYN Floodに強く、データ転送面では送信と受信が同じ単位で扱える便利さがあります。個人的にはまずこの二つに注目しましたが、まだまだ高い機能を持っています。

参考:
http://www.asahi-net.or.jp/~AA4T-NNGK/ipttut/output/sctpcharacteristics.html

Stream Control Transmission Protocol (SCTP) はネットワーク戦線ではまだ新顔の部類に入るプロトコルだが、利用される場面は日に日に広がりつつあり TCP および UDP プロトコルの弱点を改善するものでもあるため、こうしてセクションを設けて解説することにした。 SCTP は TCP にも勝る高信頼性を備え、なお且つ、プロトコルヘッダの造りから、オーバーヘッドが低く抑えられている。

ということで実装してみました。
環境 : Ubuntu 14.04

SCTPclie.c (クライアント)

SCTPserv.c (サーバ)

下記サイトを参考にしました。

「SCTPによるネットワーキングの向上」
http://www.ibm.com/developerworks/jp/linux/library/l-sctp/

ストリームID(sndrcvinfo.sinfo_stream)を取得するのに、うまくできない時がありました。送信と受信を相互にすると、挙動が不安定なときがありました。(タイミングによるものかどうか) 一応上のようなやり方で安定して通信できるようになりましたが・・・失敗したときようにループを多めにまわしています。
コマンド

apt-get install libsctp-dev
cc -o SCTPclie SCTPclie.c -lsctp
cc -o SCTPserv SCTPserv.c -lsctp

実行結果
sctp01e

バケットキャプチャ
sctp02

あと、マルチホーミングによる障害対応にも興味がありますので、また機会があればテストしたみたいです。