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