在 Oracle® Solaris 11.2 中管理 TCP/IP 网络、IPMP 和 IP 隧道

退出打印视图

更新时间: 2014 年 7 月
 
 

添加使用 SCTP 协议的服务

流控制传输协议 (Stream Control Transmission Protocol, SCTP) 以与 TCP 类似的方式为应用层协议提供服务。但是,SCTP 允许单方或双方为多宿主系统的两个系统进行通信。SCTP 连接称为关联。在关联中,应用程序将要传输的数据分为一个或多个消息流,也称为多流化。SCTP 连接可以转到有多个 IP 地址的端点,这对电话应用程序尤其重要。如果站点使用 IP 过滤器或 IPsec,则 SCTP 的多宿主功能是出于安全考虑。sctp(7P) 手册页介绍了其中一些安全方面的注意事项。

如何添加使用 SCTP 协议的服务

缺省情况下,SCTP 包括在 Oracle Solaris 中,且不需要其他配置。但是,可能需要显式配置某些应用层服务才能使用 SCTP。echodiscard 就是这样的应用程序示例。以下过程说明如何添加使用 SCTP 一对一样式套接字的回显服务。可以使用同一过程为 TCP 和 UDP 添加服务。

以下任务说明如何将 inetd 守护进程管理的 SCTP inet 服务添加到 SMF 系统信息库。然后,该任务说明如何使用 SMF 命令添加该服务。

开始之前

执行以下过程之前,请为服务创建清单文件。该过程以 echo 服务的清单 echo.sctp.xml 为例。

  1. 使用拥有系统文件的写入特权的用户帐户,登录到本地系统。
  2. 通过使用 pfedit 命令将新服务的定义添加到 /etc/services 文件中。

    请参见 pfedit(1M) 手册页。

    对于服务定义,使用以下语法:

    service-name port/protocol aliases
  3. 转到存储服务清单的目录,然后导入服务清单。
    # cd dir-name
    # svccfg import service-manifest-name

    例如,可以按照以下方式,使用位于 service.dir 目录中的清单 echo.sctp.xml 添加新 SCTP echo 服务:

    # cd service.dir
    # svccfg import echo.sctp.xml
  4. 验证是否已添加服务清单。
    # svcs FMRI

    对于 FMRI 参数,使用服务清单的故障管理资源标识符 (Fault Managed Resource Identifier, FMRI)。

  5. 列出服务的属性以确定是否需要进行修改。
    # inetadm -l FMRI
  6. 启用新服务。
    # inetadm -e FMRI
  7. 验证是否已启用该服务。
示例 1-2  添加使用 SCTP 传输协议的服务

以下示例给出要使用的命令以及使 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