跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中管理服务位置协议服务 Oracle Solaris 11.1 Information Library (简体中文) |
多宿主服务器在多个 IP 子网中用作主机。该服务器有时可以有多个网络接口卡,并可用作路由器。包括多播包在内的 IP 包将在接口之间进行路由。在有些情况下,会禁用接口之间的路由。以下各节介绍如何为此类情况配置 SLP。
无需进行任何配置,slpd 便可侦听缺省网络接口上的多播和 UDP/TCP 单播。如果在多宿主计算机的接口之间启用了单播和多播路由,则无需进行额外配置。这是因为到达另一接口的多播包正确路由至缺省接口。因此,对 DA 或其他服务通告的多播请求将到达 slpd。如果由于某种原因未打开路由,则需要进行配置。
如果下面的任何一个条件存在,都可能需要配置多宿主计算机。
在接口之间启用了单播路由,而禁用了多播路由。
在接口之间同时禁用了单播路由和多播路由。
接口之间的多播路由被禁用时,通常是因为网络中尚未部署多播。在此情况下,广播通常用于不基于 DA 的服务搜索和个别子网上的 DA 搜索。通过将 net.slp.isBroadcastOnly 属性设置为 True 来配置广播。
表 3-5 配置非路由的多个网络接口
|
如果设置了 net.slp.interfaces 属性,slpd 将侦听该属性所列接口而非缺省接口上的单播和多播/广播 SLP 请求。
通常,设置 net.slp.interfaces 属性时会同时通过设置 net.slp.isBroadcastOnly 属性来启用广播,原因是网络中尚未部署多播。但是,如果已经部署多播,而多播未在此特定多宿主主机上路由,则多播请求可从多个接口到达 slpd。当包的路由由与子网(接口为这些子网提供服务)连接的另一台多宿主主机或路由器处理时,会出现这种情况。
出现此类情况时,发送请求的 SA 服务器或 UA 将收到来自多宿主主机上的 slpd 的两个响应。然后,客户机库对响应进行过滤,客户机将看不到这些响应。但这些响应在 snoop 跟踪中可见。
注 -
如果关闭单播路由,则所有子网都无法访问多宿主主机上的 SA 客户机通告的服务。如果这些服务无法访问,SA 客户机可以执行以下操作:
对每个子网通告一个服务 URL。
确保用可访问的 URL 应答来自特定子网的请求。
SA 客户机库不执行任何操作来确保对可访问的 URL 进行通告。服务计划(它可能处理也可能不处理无路由的多宿主主机)将负责确保对可访问的 URL 进行通告。
在禁用单播路由的多宿主主机上部署服务之前,请使用 snoop 来确定服务是否可以正确处理来自多个子网的请求。此外,如果计划在多宿主主机上部署 DA,请参见DA 放置和范围名称指定。
使用以下过程在 slp.conf 文件中更改 net.slp.interfaces 属性。
# svcadm disable network/slp
net.slp.interfaces=value
网络接口卡的 IPv4 地址或主机名的列表,DA 或 SA 应在该网络接口卡上侦听端口 427 上的多播、单播 UDP 和 TCP 消息
例如,具有三个网络接口卡和已关闭多播路由的服务器将连接至三个子网。这三个网络接口的 IP 地址为 192.147.142.42、192.147.143.42 和 192.147.144.42。子网掩码为 255.255.255.0。以下属性设置将使 slpd 侦听所有三个接口上的单播和多播/广播消息:
net.slp.interfaces=192.147.142.42,192.147.143.42,192.147.144.42
# svcadm enable network/slp
如果具有多个接口的主机通过使用 slpd 和代理注册来通告服务,slpd 通告的服务 URL 必须包含可访问的主机名或地址。如果在接口之间启用单播路由,则所有子网上的主机都可以访问其他子网上的主机。还可以对任何子网上的服务进行代理注册。但是,如果已禁用单播路由,则一个子网上的服务客户机将无法通过多宿主主机来访问另一子网上的服务。但是,那些客户机也许可以通过另一个路由器来访问服务。
例如,假设缺省主机名为 bigguy 的主机在三个不同的非路由子网上有三个接口卡。这些子网上的主机名分别是 bigguy(IP 地址是 192.147.142.42)、bigguy1(IP 地址是 192.147.143.42)以及 bigguy2(IP 地址是 192.147.144.42)。现在,假设传统打印机 oldprinter 连接至 143 子网,并且用 net.slp.interfaces 将 URL service:printing:lpr://oldprinter/queue1 配置为侦听所有接口。oldprinter URL 在所有接口上都通告代理。142 和 144 子网中的计算机将接收 URL 以响应服务请求,但无法访问 oldprinter 服务。
对此问题的解决方案是用只与 143 子网连接的计算机(而非多宿主主机)上运行的 slpd 来执行代理通告。只有 143 子网上的主机可以获得通告,以作为对服务请求的响应。
为了确保客户机获得可访问的服务,在具有多宿主主机的网络中放置 DA 和指定范围名称时必须格外谨慎。当禁用了路由且配置了 net.slp.interfaces 属性时,要特别小心。此外,如果在多宿主计算机的接口之间启用了单播路由,则不需要进行任何特殊的 DA 和范围配置。将以从任何子网中都可访问的 DA 标识服务对通告进行高速缓存。但是,如果禁用了单播路由,则不合适的 DA 放置将产生问题。
要确定上一个示例会导致什么问题,请考虑 bigguy 运行 DA 并且所有子网中的客户机都具有相同范围时可能出现的情况。143 子网中的 SA 将向 DA 注册其服务通告。即使 143 子网中的主机无法访问,144 子网上的 UA 也可以获得这些服务通告。
此问题的一个解决方案是在每个子网而非多宿主主机上运行 DA。在此情况下,多宿主主机上的 net.slp.interfaces 属性应配置一个接口主机名或地址,或者应将其保留为不配置,从而强制使用缺省接口。此解决方案的一个缺点是,多宿主主机通常是可以更好处理 DA 的计算负载的大型计算机。
另一个解决方案是在多宿主主机上运行 DA 但配置范围,以使每个子网上的 SA 和 UA 具有不同范围。例如,在前面的情况下,142 子网上的 UA 和 SA 可能具有一个名为 scope142 的范围。143 子网上的 UA 和 SA 可能具有名为 scope143 的另一个范围,而 144 子网上的 UA 和 SA 可能具有名为 scope144 的第三个范围。可在具有三个接口的 bigguy 中配置 net.slp.interfaces 属性,以使 DA 对这三个子网中的三个范围提供服务。
配置 net.slp.interfaces 属性可使多宿主主机上的 DA 在子网之间桥接服务通告。如果网络中关闭了多播路由,但在多宿主主机的接口之间启用了单播路由,此类配置将很有用。由于单播在接口之间进行路由,因此服务所在子网之外的子网中的主机可在收到服务 URL 时联系服务。没有 DA 时,特定子网上的 SA 服务器只能接收同一子网上的广播,因此,它们无法找到其子网之外的服务。
必须配置 net.slp.interfaces 属性的最常见情形是网络中未部署多播而改用广播时。在其他情况下,需要慎重地考虑和规划,以避免不必要的重复响应或无法访问的服务。