Das SCTP-Transportprotokoll stellt den Protokollen auf der Anwendungsschicht Services ähnlich dem TCP bereit. SCTP ermöglicht jedoch die Kommunikation zwischen zwei Systemen, von denen entweder eines oder beide Multihomed-Hosts sein können. Die SCTP-Verbindung wird als Assoziation bezeichnet. Bei einer Assoziation teilt eine Anwendung die zu übertragenden Daten in einen oder mehrere Datenströme oder Mehrfach-Datenströme (multi-streamed) auf. Eine SCTP-Verbindung kann zu Endpunkten mit mehreren IP-Adressen führen, wodurch diese Verbindungsart insbesondere für Telefonieanwendungen wichtig ist. Wenn IP Filter oder IPsec an Ihrem Standort eingesetzt werden, müssen die Multihoming-Fähigkeiten von SCTP in die Sicherheitsbetrachtungen einbezogen werden. Einige dieser Überlegungen sind in der Manpage sctp(7P) beschrieben.
SCTP ist standardmäßig in Oracle Solaris enthalten und erfordert keine zusätzliche Konfiguration. Eventuell müssen Sie jedoch bestimmte Services auf der Anwendungsschicht zur Verwendung von SCTP konfigurieren. Einige Beispielanwendungen sind echo und discard. Im folgenden Verfahren wird gezeigt, wie Sie einen echo-Service hinzufügen, der ein SCTP 1:1-Socket verwendet.
Darüber hinaus können Sie das folgende Verfahren verwenden, um Services für die Transportschichtprotokolle TCP und UDP hinzuzufügen.
In der folgenden Aufgabe wird gezeigt, wie Sie einen SCTP inet-Service hinzufügen, der vom inetd-Daemon für das SMF-Repository verwaltet wird. Dann wird in der Aufgabe gezeigt, wie der Service mit den Befehlen der Service Management Facility (SMF) hinzugefügt wird.
Informationen zu den SMF-Befehlen finden Sie unter SMF Command-Line Administrative Utilities in System Administration Guide: Basic Administration.
Syntaktische Informationen finden Sie in den Manpages für die SMF-Befehle, die in diesem Verfahren genannt werden.
Ausführliche Informationen zu SMF finden Sie in der Manpage smf(5).
Bevor Sie das folgende Verfahren ausführen, erstellen Sie eine Manifestdatei für den Service. In dem Verfahren wird ein Manifest für den echo-Service mit der Bezeichnung echo.sctp.xml als Beispiel verwendet.
Melden Sie sich mit einem Benutzerkonten, das über Schreibrechte für Systemdateien verfügt, beim lokalen System an.
Bearbeiten Sie die /etc/services-Datei und fügen Sie eine Definition für den neuen Service hinzu.
Verwenden Sie bei der Definition des Service die folgende Syntax:
service-name |port/protocol | aliases |
Fügen Sie den neuen Service hinzu.
Wechseln Sie in das Verzeichnis, in dem das Manifest gespeichert ist, und geben Sie Folgendes ein:
# cd dir-name # svccfg import service-manifest-name |
Die vollständige Syntax des svccfg-Befehls finden Sie in der Manpage svccfg(1M).
Angenommen, Sie möchten einen neuen SCTP echo-Service mithilfe des Manifests echo.sctp.xml hinzufügen, das momentan im Verzeichnis service.dir gespeichert ist. In diesem Fall geben Sie Folgendes ein:
# cd service.dir # svccfg import echo.sctp.xml |
Prüfen Sie, ob das Servicemanifest hinzugefügt wurde:
# svcs FMRI |
Als FMRI-Argument verwenden Sie den Fault Managed Resource Identifier (FMRI) des Servicemanifests. Für den SCTP echo-Service verwenden Sie beispielsweise den folgenden Befehl:
# svcs svc:/network/echo:sctp_stream |
Dieser Befehl sollte eine Ausgabe ähnlich der Folgenden erzeugen:
STATE STIME FMRI disabled 16:17:00 svc:/network/echo:sctp_stream |
Ausführliche Informationen zum svcs-Befehl finden Sie in der Manpage svcs(1).
Die Ausgabe deutet darauf hin, dass das neue Servicemanifest derzeit deaktiviert ist.
Listen Sie die Eigenschaften des Services auf, um festzustellen, ob Sie Änderungen vornehmen müssen.
# inetadm -l FMRI |
Ausführliche Informationen zum inetadm-Befehl finden Sie in der Manpage inetadm(1M).
Für den SCTP echo-Service geben Sie z. B. Folgendes ein:
# 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 |
Aktivieren Sie den neuen Service:
# inetadm -e FMRI |
Prüfen Sie, ob der Service aktiviert wurde:
Für den neuen echo-Service geben Sie z. B. Folgendes ein:
# inetadm | grep sctp_stream . . enabled online svc:/network/echo:sctp_stream |
Im folgenden Beispiel werden die Befehle und Dateieinträge vorgestellt, mit denen Sie dafür sorgen, dass der echo-Service das SCTP-Transportschichtprotokoll verwendet.
$ 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 |