「SCTPによるネットワーキングの向上」を試してみた
Posted on Sat, 22 Aug 2009 12:20:59 +0900
近頃、SCTPを使ったプロジェクトによくたずさわっているので SCTPによるネットワーキングの向上 の例を自分の環境でも 試してみることにしました。
準備
使用したLinuxのディストリビューションはUbuntuで、カーネルは2.6.28-15です。 SCTPを使用するにはsctpのパッケージをインストールする必要があります。 (sctp_sendmsg/sctp_recvmsg関数やSOL_SCTP等の関連デファイン値を使用)
$ apt-get install libsctp-dev libsctp1 lksctp-tools
で、あとはコンパイル。sctpのライブラリを引き込むのを忘れないように。
$ gcc sctpsrvr.c -lsctp -Wall -O2 -o server
$ gcc sctpclnt.c -lsctp -Wall -O2 -o client
実行
プログラム実行とtsharkでのパケットダンプ確認まで。 なにげにtsharkのオプションがtcpdumpと異なっていて さくっとコマンドが実行できないのが...
$ ./server &
$ ./client
(Local) Sat Aug 22 12:08:36 2009
(GMT ) Sat Aug 22 03:08:36 2009
$
$ sudo tshark -i lo -R sctp.port==9999
Running as user "root" and group "root". This could be dangerous.
Capturing on lo
0.000000 127.0.0.1 -> 127.0.0.1 SCTP INIT
0.000117 127.0.0.1 -> 127.0.0.1 SCTP INIT_ACK
0.000158 127.0.0.1 -> 127.0.0.1 SCTP COOKIE_ECHO
0.000248 127.0.0.1 -> 127.0.0.1 SCTP COOKIE_ACK
0.000444 127.0.0.1 -> 127.0.0.1 SCTP DATA
0.000487 127.0.0.1 -> 127.0.0.1 SCTP SACK
0.000529 127.0.0.1 -> 127.0.0.1 SCTP DATA
0.197933 127.0.0.1 -> 127.0.0.1 SCTP SACK
0.197958 127.0.0.1 -> 127.0.0.1 SCTP SHUTDOWN
0.197980 127.0.0.1 -> 127.0.0.1 SCTP SHUTDOWN_ACK
0.198014 127.0.0.1 -> 127.0.0.1 SCTP SHUTDOWN_COMPLETE
INIT/INIT_ACT/COOKIE_ECHO/COOKIE_ACKで接続し、アプリケーションデータを 送受信後、SHUTDOWN/SHUTDOWN_ACK/SHUTDOWN_COMPLETEの切断までの動作が 確認できます。