示例:配置管理范围
了解组播管理范围
通过将组播配置到管理定义的拓扑区域,您可以使用组播范围来限制组播流量。组播范围控制组播消息的传播 — 组播组加入消息,这些消息都以上游向源发送,数据转发向下游发送。范围可以缓解带宽等稀缺资源的压力,并改善隐私或扩展属性。
IP 组播实施可通过在 IP 报头中使用实时 (TTL) 字段来实现一定程度的范围。然而,事实证明,TTL 范围难以可靠地实施,结果方案往往很复杂,难以理解。
管理范围的 IP 组播为组播范围提供了更清晰、更简单的语义。地址至管理范围组播地址的数据包不会跨越配置的管理边界。管理范围的组播地址在本地分配,因此无需跨管理边界进行唯一。
管理范围为 IP 版本 4 (IPv4) 组播地址空间的范围为 239.0.0.0.0 到 239.255.255.255.255。
IPv4 管理范围组播空间的结构松散地基于 RFC 1884 IP 版本 6 寻址架构中所述的 IP 版本 6 (IPv6) 寻址架构。
有两个众所周知的范围:
IPv4 本地范围 — 此范围包括 239.255.0.0.0/16 范围内的地址。本地范围为最小封闭范围,不能进一步分割。虽然本地范围的确切程度与站点有关,但本地范围区域不得跨越任何其他范围边界,并且必须完全包含在任何更大的范围内或等于任何更大的范围。如果范围区域在一个区域中重叠,则重叠区域必须在当地范围内。
IPv4 组织本地范围 — 此范围包括 239.192.0.0/14。这是组织在定义私有使用范围时分配子域的空间。
239.0.0.0/10、239.64.0.0/10 和 239.128.0.0/10 的间距未分配,可用于扩展此空间。
IPv4 组播空间中还有另外两个范围类:静态分配的链路本地范围(224.0.0.0/24)和包含各种地址的静态全局范围分配。
所有范围范围都本质上是双向的,即加入消息和数据转发在范围接口上的两个方向上进行控制。
您可通过创建与一组路由设备接口和地址范围关联的命名范围来配置组播范围,或者引用范围策略来指定接口并将地址范围配置为一系列过滤器。不能将这两种方法结合在一起(包括两种方法的配置的提交操作失败)。这些方法在要求上有所不同,导致与命令的 show multicast scope
输出不同。
IP 组播网络中必须避免路由环路。由于组播路由器必须为每个下游分支复制数据包,因此环路数据包不仅无法到达目标,而且环路传输的每个数据包都会使环路数据包数倍增,最终使网络不堪重负。
范围限制可用于转发组播数据包的路由器和接口。范围可以使用 IP 数据包标头中的 TTL 字段,但 TTL 范围取决于管理员对网络拓扑的全面了解。这种拓扑结构可能会随着链路故障而改变并恢复,使得 TTL 成为组播的一种糟糕的解决方案。
组播范围是管理的,因为组播地址范围保留用于范围范围,如 RFC 2365 中所述。边界上的路由器必须能够过滤组播数据包,并确保数据包不会超出既定限制。
管理范围比 TTL 范围范围要好得多,但在许多情况下,管理范围数据包的丢弃仍由网络管理员决定。例如,组播地址范围 239/8 在 RFC 2365 中定义为管理范围,使用此范围的数据包不会在网络“边界”(通常是路由域)之外转发。但是只有网络管理员知道边界路由器在哪里,并可以正确实施范围。
单播路由协议使用的组播组(如所有 OSPF 路由器的 224.0.0.5)仅对该 LAN 进行管理范围。这种范围允许在运行 OSPF 的每个 LAN 上均使用相同的组播地址,而不会出现冲突。
另请参阅
示例:创建名为“组播范围”的组播范围
此示例说明如何配置具有四个范围的组播范围: 本地、 组织、 工程和 营销。
要求
开始之前:
配置隧道接口。请参阅 用于路由设备的 Junos OS 网络接口库。
配置内部网关协议或静态路由。请参阅 用于路由设备的 Junos OS 路由协议库。
概述
本地范围在 GRE 隧道接口上配置。组织范围配置在 GRE 隧道接口和 SONET/SDH 接口上。工程范围配置在一个 IP-IP 隧道接口和两个 SONET/SDH 接口上。营销范围配置在一个 GRE 隧道接口和两个 SONET/SDH 接口上。Junos OS 可以对任何用户可配置的 IPv6 或 IPv4 组进行范围。
要通过定义指定范围来配置组播范围,必须为范围指定名称、配置范围的路由设备接口集以及范围的地址范围。
语句中指定 prefix
的前缀必须为每个 scope
语句唯一。如果多个范围包含相同的前缀,则只有最后一个范围适用于接口。如果您需要在多个接口上进行相同的前缀范围,请在语句中 interface
列出所有前缀以获取单 scope
个语句。
配置具有指定范围的组播范围时,所有范围边界都必须包括 本地 范围。如果未配置此范围,则会在所有范围的接口自动添加该范围。 本地 范围限制组播组 239.255.0.0/16 对附加 LAN 的使用。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,然后将命令复制粘贴到层次结构级别的 [edit]
CLI 中。
set routing-options multicast scope local prefix fe00::239.255.0.0/128 set routing-options multicast scope local interface gr-2/1/0.0 set routing-options multicast scope organization prefix 239.192.0.0/14 set routing-options multicast scope organization interface gr-2/1/0.0 set routing-options multicast scope organization interface so-0/0/0.0 set routing-options multicast scope engineering prefix 239.255.255.0/24 set routing-options multicast scope engineering interface ip-2/1/0.0 set routing-options multicast scope engineering interface so-0/0/1.0 set routing-options multicast scope engineering interface so-0/0/2.0 set routing-options multicast scope marketing prefix 239.255.254.0/24 set routing-options multicast scope marketing interface gr-2/1/0.0 set routing-options multicast scope marketing interface so-0/0/2.0 set routing-options multicast scope marketing interface so-1/0/0.0
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南中的配置模式下使用 CLI 编辑器。
配置本地范围。
[edit routing-options multicast] user@host# set scope local interface gr-2/1/0 user@host# set scope localprefix fe00::239.255.0.0/128
配置组织范围。
[edit routing-options multicast] user@host# set scope organization interface [ gr-2/1/0 so-0/0/0 ] user@host# set scope organization prefix 239.192.0.0/14
配置工程范围。
[edit routing-options multicast] user@host# set scope engineering interface [ ip-2/1/0 so-0/0/1 so-0/0/2 ] user@host# set scope engineering prefix 239.255.255.0/24
配置营销范围。
[edit routing-options multicast] user@host# set scope marketing interface [ gr-2/1/0 so-0/0/2 so-1/0/0 ] user@host# set scope marketing prefix 239.255.254.0/24
如果完成设备配置,请提交配置。
user@host# commit
结果
输入 命令以 show routing-options
确认您的配置。
user@host# show routing-options multicast { scope local { interface gr-2/1/0; prefix fe00::239.255.0.0/128; } scope organization { interface [ gr-2/1/0 so-0/0/0 ]; prefix 239.192.0.0/14; } scope engineering { interface [ ip-2/1/0 so-0/0/1 so-0/0/2 ]; prefix 239.255.255.0/24; } scope marketing { interface [ gr-2/1/0 so-0/0/2 so-1/0/0 ]; prefix 239.255.254.0/24; }
验证
要验证组范围是否有效,请发出 show multicast scope
以下命令:
user@host> show multicast scope Resolve Scope name Group prefix Interface Rejects local fe00::239.255.0.0/128 gr-2/1/00 organization 239.192.0.0/14 gr-2/1/0 so-0/0/00 engineering 239.255.255.0/24 ip-2/1/0 so-0/0/1 so-0/0/20 marketing 239.255.254.0/24 gr-2/1/0 so-0/0/2 so-1/0/00
使用指定范围配置范围时, show multicast scope
操作模式命令将显示已定义范围、前缀和接口的名称。
示例:使用范围策略进行组播范围搜索
此示例说明如何配置名为 allow-auto-rp-on-backbone 的组播范围策略, 允许在面向主干的接口上为自动 RP 组 224.0.1.39/32 和 224.0.1.40/32 组提供数据包,并拒绝 224.0.1.0/24 和 239.0.0.0/8 地址范围内的其他所有地址。
要求
开始之前:
配置内部网关协议或静态路由。请参阅 用于路由设备的 Junos OS 路由协议库。
概述
每个引用的策略都必须在 [edit policy-options]
层次结构级别上正确配置,指定用于配置范围的路由设备接口集,并将范围的地址范围定义为一系列路由过滤器。组播范围策略仅支持 接口、 路由过滤器和 前缀列表 匹配条件。所有其他配置的匹配条件均被忽略。支持的唯一操作是 接受、 拒绝和策略流操作 下一个任期 和 下一个策略。 拒绝操作 表示已配置接口上的两个方向抑制加入和组播转发。 接受 操作允许接口上的两个方向加入和组播转发。默认情况下,范围策略适用于所有接口。默认操作为 接受。
使用范围策略配置的组播范围范围从某些方面与使用指定范围配置(使用 scope
语句):
您无法将范围策略应用于特定路由实例,因为所有范围策略都适用于所有路由实例。相比之下,指定的范围确实单独适用于特定路由实例。
与采用指定范围相比,范围策略范围范围不会自动在范围边界上添加 本地 范围。您必须显式配置本地范围边界。 本地 范围限制组播组 239.255.0.0/16 对附加 LAN 的使用。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,然后将命令复制粘贴到层次结构级别的 [edit]
CLI 中。
set policy-options policy-statement allow-auto-rp-on-backbone term allow-auto-rp from interface so-0/0/0.0 set policy-options policy-statement allow-auto-rp-on-backbone term allow-auto-rp from interface so-0/0/1.0 set policy-options policy-statement allow-auto-rp-on-backbone term allow-auto-rp from route-filter 224.0.1.39/32 exact set policy-options policy-statement allow-auto-rp-on-backbone term allow-auto-rp from route-filter 224.0.1.40/32 exact set policy-options policy-statement allow-auto-rp-on-backbone term allow-auto-rp then accept set policy-options policy-statement allow-auto-rp-on-backbone term reject-these from route-filter 224.0.1.0/24 orlonger set policy-options policy-statement allow-auto-rp-on-backbone term reject-these from route-filter 239.0.0.0/8 orlonger set policy-options policy-statement allow-auto-rp-on-backbone term reject-these then reject set routing-options multicast scope-policy allow-auto-rp-on-backbone
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南中的配置模式下使用 CLI 编辑器。
定义允许使用哪些数据包。
[edit policy-options policy-statement allow-auto-rp-on-backbone] user@host# set term allow-auto-rp from interface so-0/0/0.0 user@host# set term allow-auto-rp from interface so-0/0/1.0 user@host# set term allow-auto-rp from route-filter 224.0.1.39/32 exact user@host# set term allow-auto-rp from route-filter 224.0.1.40/32 exact user@host# set term allow-auto-rp then accept
定义不允许使用哪些数据包。
[edit policy-options policy-statement allow-auto-rp-on-backbone] user@host# set term reject-these from route-filter 224.0.1.0/24 orlonger user@host# set term reject-these from route-filter 239.0.0.0/8 orlonger user@host# set term reject-these then reject
应用策略。
[edit routing-options multicast] user@host# set scope-policy allow-auto-rp-on-backbone
如果完成设备配置,请提交配置。
user@host# commit
结果
输入 show policy-options
和 show routing-options
命令以确认您的配置。
user@host# show policy-options policy-statement allow-auto-rp-on-backbone { term allow-auto-rp { from { /* backbone-facing interfaces */ interface [ so-0/0/0.0 so-0/0/1.0 ]; route-filter 224.0.1.39/32 exact; route-filter 224.0.1.40/32 exact; } then { accept; } } term reject-these { from { route-filter 224.0.1.0/24 orlonger; route-filter 239.0.0.0/8 orlonger; } then reject; } }
user@host# show routing-options multicast { scope-policy allow-auto-rp-on-backbone; }
验证
要验证范围策略是否有效,请发出 show multicast scope
配置模式命令:
user@host> show multicast scope Scope policy: [ allow-auto-rp-on-backbone ]
使用范围策略配置组播范围时, show multicast scope
操作模式命令仅显示范围策略的名称。
示例:配置面向外部的 PIM 边界路由器
在此示例中,您可在[编辑路由选项组播]层次结构级别添加范围语句,以防止自动 RP 流量“泄漏”到或泄露至 PIM 域。下面定义的两个范围(自动 rp-39 和自动 rp-40)适用于特定地址。范围范围语句定义了组范围,从而防止组信息流泄露。
routing-options { multicast { scope auto-rp-39 { prefix 224.0.1.39/32; interface t1-0/0/0.0; } scope auto-rp-40 { prefix 224.0.1.40/32; interface t1-0/0/0.0; } scope scoped-range { prefix 239.0.0.0/8; interface t1-0/0/0.0; } } }