SCTP トランスポートプロトコルは、TCP に類似した方法でアプリケーション層プロトコルにサービスを提供します。ただし、SCTP では 2 つのシステム間での通信が可能です。これらのシステムは、片方または両方がマルチホームであってもかまいません。SCTP 接続は「アソシエーション」と呼ばれます。アソシエーションでは、アプリケーションがデータを分割し、1 つまたは複数のメッセージストリームとして伝送します (マルチストリーム化)。SCTP 接続は、複数の IP アドレスを持つエンドポイントに到達できます。これは、テレフォニーアプリケーションにとって特に重要です。IP Filter や IPsec を使用する場合、SCTP のマルチホーム機能はセキュリティーの点で考慮を要します。考慮点については、sctp(7P) のマニュアルページを参照してください。
デフォルトで SCTP は Oracle Solaris に組み込まれています。したがって、構成を別に行う必要はありません。ただし、SCTP を使用するためには、一定のアプリケーション層サービスを明示的に構成しなければならない場合があります。このようなアプリケーションの例としては、echo や discard があります。次の手順は、ワンツーワンスタイルの SCTP ソケットを使用する echo サービスの追加方法を示しています。
さらに、次の手順を使えば、TCP や UDP のトランスポート層プロトコル用のサービスを追加できます。
次の作業では、inetd デーモンによって管理される SCTP inet サービスを SMF リポジトリに追加します。さらに、作業の後半では、サービス管理機能 (SMF) コマンドを使ってこのサービスを追加します。
SMF コマンドについては、『Solaris のシステム管理 (基本編)』の「SMF コマンド行管理ユーティリティー」を参照してください。
構文については、SMF コマンドのマニュアルページを参照してください (手順を参照)。
SMF の詳細は、smf(5) のマニュアルページを参照してください。
次の手順を実行する前に、サービスのマニフェストファイルを作成してください。この手順では、例として、echo サービス用のマニフェスト echo.sctp.xml を使用します。
システムファイルに対する書き込みアクセス権を持つユーザーアカウントでローカルシステムにログインします。
/etc/services ファイルを編集し、新しいサービスの定義を追加します。
service-name |port/protocol | aliases |
新しいサービスを追加します。
サービスマニフェストが格納されているディレクトリに移り、次のように入力します。
# cd dir-name # svccfg import service-manifest-name |
svccfg の詳しい構文については、svccfg(1M) のマニュアルページを参照してください。
現在 service.dir ディレクトリにあるマニフェスト echo.sctp.xml を使用して、SCTP の新しい echo サービスを追加するとします。その場合、次のように入力します。
# cd service.dir # svccfg import echo.sctp.xml |
サービスマニフェストが追加されているか確認します。
# svcs FMRI |
FMRI 引数には、サービスマニフェストの Fault Managed Resource Identifier (FMRI) を使用します。たとえば、SCTP の echo サービスの場合は、次のコマンドを使用します。
# svcs svc:/network/echo:sctp_stream |
次のような出力が表示されます。
STATE STIME FMRI disabled 16:17:00 svc:/network/echo:sctp_stream |
svcs コマンドの詳細は、svcs(1) のマニュアルページを参照してください。
出力は、新しいサービスマニフェストが使用不可になっていることを示しています。
サービスの属性をリストして、変更を加える必要があるかどうかを決めます。
# inetadm -l FMRI |
inetadm コマンドの詳細は、inetadm(1m) のマニュアルページを参照してください。
たとえば、SCTP echo サービスの場合は、次のように入力します。
# 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" . . default tcp_trace=FALSE default tcp_wrappers=FALSE |
新しいサービスを使用可能にします。
# inetadm -e FMRI |
サービスが使用可能になっていることを確認します。
たとえば、新しい echo サービスの場合、次のように入力します。
# inetadm | grep sctp_stream . . enabled online svc:/network/echo:sctp_stream |
次の例では、使用するコマンドと、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 |