系统管理指南:网络服务

修改 SLP 搜索请求的超时

在以下两种情况下,可能需要更改 SLP 搜索请求的超时:

更改缺省超时

高网络延迟可以导致 UA 和 SA 在请求和注册的响应返回之前超时。 如果多个子网、拨号线路或 WAN 将 UA 与 SA 分隔,或者同时将 UA 和 SA 与 DA 分隔,则延迟可能会导致产生问题。通过检查 SLP 请求是否因 UA 和 SA 请求和注册的超时而失败,可以确定延迟是否是问题所在。也可使用 ping 命令来度量实际延迟。

下表列出了用于控制超时的配置属性。可以使用本节中的过程来修改这些属性。

表 9–4 超时属性

属性 

说明 

net.slp.multicastTimeouts

net.slp.DADiscoveryTimeouts

net.slp.datagramTimeouts

这些属性可以控制在放弃传输之前用于重复的多点传送和单点传送 UDP 消息传输的超时。 

net.slp.multicastMaximumWait

该属性可以控制放弃多点传送消息之前传输该消息的最长时间。 

net.slp.datagramTimeouts

DA 超时的上限,由为此属性列出的值的总和来指定。会向 DA 重复发送 UDP 数据报,直到收到响应或达到超时界限为止。 

如果在多点传送服务搜索或 DA 搜索期间频繁出现超时现象,可增大 net.slp.multicastMaximumWait 属性的值,其缺省值为 15000 毫秒(15 秒)。增大最长等待时间可以留出更多时间,以便完成高延迟网络中的请求。在更改 net.slp.multicastMaximumWait 之后,还应该修改 net.slp.multicastTimeoutsnet.slp.DADiscoveryTimeouts。这些属性的超时值之和等于 net.slp.multicastMaximumWait 值。

Procedure如何更改缺省超时

使用以下过程可以更改用于控制超时的 SLP 属性。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 slpd 和主机上的所有 SLP 活动。


    # svcadm disable network/slp
    
  3. 在更改配置设置之前,先备份缺省的 /etc/inet/slp.conf 文件。

  4. slpd.conf 文件中更改 net.slp.multicastMaximumWait 属性。


    net.slp.multicastMaximumWait=value
    
    value

    32 位整数,它列出为 net.slp.multicastTimeoutsnet.slp.DADiscoveryTimeouts 设置的值之和

    缺省值 = 15000 毫秒(15 秒)

    值范围 = 1000 至 60000 毫秒

    例如,如果确定多点传送请求需要等待 20 秒(20000 毫秒),则需要调整为 net.slp.multicastTimeoutsnet.slp.DADiscoveryTimeouts 属性列出的值,使两者之和等于 20000 毫秒。


    net.slp.multicastMaximumWait=20000
    
    net.slp.multicastTimeouts=2000,5000,6000,7000
    
    net.slp.DADiscoveryTimeouts=3000,3000,6000,8000
  5. 如果需要,请在 slpd.conf 文件中更改 net.slp.datagramTimeouts 属性:


    net.slp.datagramTimeouts=value
    
    value

    32 位整数的列表,它以毫秒为单位指定将单点传送数据报传输实现到 DA 时的超时

    缺省值 = 3000,3000,3000

    例如,可将数据报超时增大到 20000 毫秒,以避免频繁超时。


    net.slp.datagramTimeouts=2000,5000,6000,7000

    在高性能网络中,可以减小多点传送和单点传送 UDP 数据报传输的超时界限。如果减小超时界限,则同时会减小满足 SLP 请求所需的延迟。

  6. 保存更改并关闭文件。

  7. 重新启动 slpd 以激活更改。


    # svcadm enable network/slp
    

配置随机等待界限

如果网络通信流量很大或冲突率很高,与 DA 的通信会受到影响。冲突率很高时,发送代理必须重新传送 UDP 数据报。通过使用 snoop 来监视作为 SA 服务器运行 slpd 的主机和作为 DA 运行 slpd 的主机网络中的流量,可以确定是否正在重新传输。在作为 SA 服务器运行 slpd 的主机的 snoop 跟踪中,如果出现同一服务的多个服务注册消息,则可能存在通知冲突。

在引导时,冲突特别容易引起问题。当 DA 最初启动时,它会发送未经请求的通知,并且 SA 以注册进行响应。SLP 要求 SA在接收 DA 通知后随机等待一段时间再进行响应。随机等待界限分布均匀,最大值由 net.slp.randomWaitBound 控制。缺省的随机等待界限为 1000 毫秒(1 秒)。

Procedure如何配置随机等待界限

使用以下过程在 slp.conf 文件中更改 net.slp.RandomWaitBound 属性。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 slpd 和主机上的所有 SLP 活动。


    # svcadm disable network/slp
    
  3. 在更改配置设置之前,先备份缺省的 /etc/inet/slp.conf 文件。

  4. slpd.conf 文件中更改 net.slp.RandomWaitBound 属性:


    net.slp.RandomWaitBound=value
    
    value

    用于计算在尝试联系 DA 之前的随机等待时间的上限

    缺省值 = 1000 毫秒(1 秒)

    值范围 = 1000 至 3000 毫秒

    例如,可将最长等待时间延长至 2000 毫秒(2 秒)。


    net.slp.randomWaitBound=2000

    延长随机等待界限时,注册中将出现更长的延迟。SA 可以用新搜索到的 DA 以更慢的速度完成注册,以避免冲突和超时。

  5. 如果需要,请在 slpd.conf 文件中更改 net.slp.datagramTimeouts 属性:


    net.slp.datgramTimeouts=value
    
    value

    32 位整数的列表,它以毫秒为单位指定将单点传送数据报传输实现到 DA 时的超时

    缺省值 = 3000,3000,3000

    例如,可将数据报超时增大到 20000 毫秒,以避免频繁超时。


    net.slp.datagramTimeouts=2000,5000,6000,7000

    在高性能网络中,可以减小多点传送和单点传送 UDP 数据报传输的超时界限。此设置可减小满足 SLP 请求时的延迟量。

  6. 保存更改并关闭文件。

  7. 重新启动 slpd 以激活更改。


    # svcadm enable network/slp