Stream Control Transmission Protocol (SCTP) プロトコルは、TCP に類似した方法でアプリケーション層プロトコルにサービスを提供します。ただし、SCTP では 2 つのシステム (一方または両方がマルチホームでもよい) 間での通信が可能です。SCTP 接続は「アソシエーション」と呼ばれます。アソシエーションでは、アプリケーションがデータを分割し、1 つまたは複数のメッセージストリームとして伝送します (マルチストリーム化)。SCTP 接続は、複数の IP アドレスを持つエンドポイントに到達できます。これは、テレフォニーアプリケーションにとって特に重要です。IP Filter や IPsec を使用する場合、SCTP のマルチホーム機能はセキュリティーの点で考慮を要します。考慮点については、sctp(7P)のマニュアルページを参照してください。
デフォルトで SCTP は Oracle Solaris に組み込まれており、構成を別に行う必要はありません。ただし、SCTP を使用するためには、一定のアプリケーション層サービスを明示的に構成しなければならない場合があります。例として、echo や discard などのアプリケーションがあります。次の手順では、SCTP 1 対 1 スタイルのソケットを使用する echo サービスを追加する方法を説明します。TCP および UDP 用のサービスを追加する場合も同じ手順を使用できます。
次のタスクでは、inetd デーモンによって管理される SCTP inet サービスを SMF リポジトリに追加する方法を説明します。このタスクでは、次に、SMF コマンドを使用してサービスを追加する方法について説明します。
始める前に
次の手順を実行する前に、サービスのマニフェストファイルを作成してください。この手順では、例として、echo サービスのマニフェスト echo.sctp.xml を使用しています。
pfedit(1M)のマニュアルページを参照してください。
service-name port/protocol aliases
# cd dir-name # svccfg import service-manifest-name
たとえば、次のように、service.dir ディレクトリにあるマニフェスト echo.sctp.xml を使用して、新しい SCTP echo サービスを追加します。
# cd service.dir # svccfg import echo.sctp.xml
# svcs FMRI
FMRI 引数には、サービスマニフェストの Fault Managed Resource Identifier (FMRI) を使用します。
# inetadm -l FMRI
# inetadm -e FMRI
次の例は、echo サービスに SCTP を使用させるために必要なコマンドとファイルエントリを示しています。
# cat /etc/services
.
.
echo 7/tcp
echo 7/udp
echo 7/sctp
# cd service.dir
# svccfg import echo.sctp.xml
# svcs network/echo*
STATE STIME FMRI
disabled 15:46:44 svc:/network/echo:dgram
disabled 15:46:44 svc:/network/echo:stream
disabled 16:17:00 svc:/network/echo:sctp_stream
# inetadm -l svc:/network/echo:sctp_stream
SCOPE NAME=VALUE
name="echo"
endpoint_type="stream"
proto="sctp"
isrpc=FALSE
wait=FALSE
exec="/usr/lib/inet/in.echod -s"
user="root"
default bind_addr=""
default bind_fail_max=-1
default bind_fail_interval=-1
default max_con_rate=-1
default max_copies=-1
default con_rate_offline=-1
default failrate_cnt=40
default failrate_interval=60
default inherit_env=TRUE
default tcp_trace=FALSE
default tcp_wrappers=FALSE
# inetadm -e svc:/network/echo:sctp_stream
# inetadm | grep echo
disabled disabled svc:/network/echo:stream
disabled disabled svc:/network/echo:dgram
enabled online svc:/network/echo:sctp_stream