SCTP 的安裝與編程

 

SCTP 提供信息的可靠傳輸。在LTE eNB 中,S1 Control Plane interface上的S1-AP協議信息,以及X2 Control Plane interface上的X2-AP協議信息,利用SCTP進行傳輸。MME建立SCTP Server,監聽來自於eNB的SCTP連接。eNB初始化後,則建立一個Sctp client,並與相應的MME建立連接。連接建立之後,MME和eNB可通過SCTP connection發送/接收數據。

 

安裝

  • Linux 2.6以上版本,提供SCTP支持。可通過以下命令,查看內核

> lsmod | grep sctp

  • Apt-get install lksctp-tools (亦可在網站上直接下載,安裝)

測試:

run SCTP server in one terminal,

>sctp_darn –H 0 –P 2500 –l

run SCTP client in another terminal,

>sctp_darn –H 0 –P 2600 –h 127.0.0.1 –p 2500 –s

  • 下載 Lksctp-tools-1.0.11.tar.gz,解壓縮。運行.

./config,

make

make install //install the -lsctp

  • >cp sctp.h /usr/include/netinet (if needed)

 

 

Note:

若內核不提供支持,可編譯配置內核,以支持sctp。

Make menuconfig (CONFIG_IP_SCTP=m, CONFIG_SCTP_DBG_MSG=y, CONFIG_SCTP_DBG_OBJCNT=y)

 

 

編程

主要函數:

client

》socket( AF_INET, SOCK_STREAM, IPPROTO_SCTP )

》bind( listenSock, (struct sockaddr *)&servaddr, sizeof(servaddr) ) //server

》setsockopt( connSock, IPPROTO_SCTP, SCTP_INITMSG,

                     &initmsg, sizeof(initmsg) )

》listen( listenSock, 5 ) //server

》connect( connSock, (struct sockaddr *)&servaddr, sizeof(servaddr) )           //client

》accept( listenSock, (struct sockaddr *)NULL, (int *)NULL )  //server

》sctp_recvmsg( connSock, (void *)buffer, sizeof(buffer),

                        (struct sockaddr *)NULL, 0, &sndrcvinfo, &flags )

》sctp_sendmsg( connSock, (void *)buffer, (size_t)strlen(buffer),

                         NULL, 0, 0, 0, LOCALTIME_STREAM, 0, 0 )

》close(connSock)

 

 

編譯選項

》gcc –Wall –o xxx xxx.c –L/usr/local/lib –lsctp

》 ./xxx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章