本页内容
通过组播隧道接口过滤单播数据包
配置单播隧道
要配置单播隧道,请配置 gr-
接口(使用 GRE 封装)或 ip-
接口(使用 IP-IP 封装),并包括 tunnel
和 family
语句:
gr-fpc/pic/port or ip-fpc/pic/port { unit logical-unit-number { copy-tos-to-outer-ip-header; reassemble-packets; tunnel { allow-fragmentation; destination destination-address; do-not-fragment; key number; routing-instance { destination routing-instance-name; } source address; ttl number; } family family { address address { destination address; } } } }
您可以在以下层级配置这些语句:
[edit interfaces]
[edit logical-systems logical-system-name interfaces]
您可以为每个 GRE 或 IP-IP 接口配置多个逻辑单元,并且每个单元只能配置一个隧道。
在 M 系列和 T 系列路由器上,可以在服务 PIC 或隧道 PIC 上配置接口。在 MX 系列路由器上,配置多服务 DPC 上的接口。
每个隧道接口都必须是一个点对点接口。点对点是默认的接口连接类型,因此无需在 point-to-point
逻辑接口配置中包含语句。
您必须指定隧道的目标和源地址。其余语句可选。
对于从隧道退出的传输数据包,在配置为隧道源的接口上不支持转发路径功能,例如反向路径转发 (RPF)、转发表过滤、源类使用、目标类使用和无状态防火墙过滤,但在隧道 pic 接口上受支持。
但是,从 GRE 或 IP-IP 报头获取的服务等级 (CoS) 信息会通过隧道传输,由重新输入的数据包使用。有关更多信息,请参阅 《Junos OS 路由设备服务等级用户指南》。
为防止配置无效,Junos OS 不允许将层级的 source
or destination
语句[edit interfaces gr-fpc/pic/port unit logical-unit-number tunnel]
指定的地址设置为与接口自己的子网地址相同(由 [edit interfaces gr-fpc/pic/port unit logical-unit-number family family-name]
层次结构级别上的address
语句指定)。
要设置封装标头中包含的生存时间 (TTL) 字段,请包含语句 ttl
。如果为隧道显式配置 TTL 值,则必须将其配置为比隧道中的跃点数大一个。例如,如果隧道有 7 个跃点,则必须将 TTL 值配置为 8。
您必须在逻辑接口上至少配置一个系列。要通过 GRE 隧道接口启用 MPLS,必须在 GRE 接口配置中包含该 family mpls
语句。此外,您必须在 [edit protocols]
层次结构级别包括适当的语句,以便通过 GRE 隧道启用资源预留协议 (RSVP)、MPLS 和标签交换路径 (LSP)。单播隧道是双向的。
配置的隧道不能在到达目标的任何点通过网络地址转换 (NAT)。有关更多信息,请参阅 隧道服务概述 和 MPLS 应用程序用户指南。
对于 GRE 隧道,默认设置是将外部 IP 报头中的 ToS 位设置为所有零。要让路由引擎将 ToS 位从内部 IP 报头复制到外部,请添加语句 copy-tos-bits-to-outer-ip-header
。(这种从内到外部的 ToS 位复制已经是 IP-IP 隧道的默认行为。)
对于自适应服务或多服务接口上的 GRE 隧道接口,您可以配置其他隧道属性,如下部分所述:
- 在 GRE 隧道上配置密钥编号
- 在 GRE 封装之前在 GRE 隧道上启用数据包分片
- 为隧道指定 MTU 设置
- 配置 GRE 隧道以将位复制到外部 IP 报头
- 在 GRE 封装后对数据包启用分片和重组
- 支持 IPv6 GRE 隧道
在 GRE 隧道上配置密钥编号
对于 M 系列和 T 系列路由器上的自适应服务和多服务接口,您可以分配一个键值,以识别 GRE 隧道内的单个流量,如 RFC 2890《 GRE 的密钥和序列号扩展》中的定义。但是,每个隧道源对和目标对只允许一个密钥。
进入隧道的每个 IP 版本 4 (IPv4) 数据包都使用 GRE 隧道密钥值封装。退出隧道的每个 IPv4 数据包都经过 GRE 隧道密钥值验证并解封装。自适应服务或多服务 PIC 会丢弃与配置的键值不匹配的数据包。
要向 GRE 隧道接口分配密钥值,请添加语句 key
:
key number;
您可以在以下层级包含此语句:
[edit interfaces interface-name unit logical-unit-number tunnel]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number tunnel]
密钥编号可以是 0 到 4,294,967,295。您必须在隧道端点上配置相同的 GRE 隧道密钥值。
以下示例说明了在 GRE 隧道配置中使用密钥语句:
interfaces { gr-1/2/0 { unit 0 { tunnel { source 10.58.255.193; destination 10.58.255.195; key 1234; } ... family inet { mtu 1500; address 10.200.0.1/30; ... } } } }
在 GRE 封装之前在 GRE 隧道上启用数据包分片
仅对于自适应服务和多服务接口上的 GRE 隧道接口,可以在 IPv4 数据包在 GRE 隧道中进行 GRE 封装之前,启用分片。
默认情况下,通过 GRE 隧道传输的 IPv4 流量不会分段。要启用 GRE 隧道中 IPv4 数据包分片,请包括以下 clear-dont-fragment-bit
语句:
clear-dont-fragment-bit;
您可以在以下层级包含此语句:
[edit interfaces interface-name unit logical-unit-number]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number]
在配置中包含语句 clear-dont-fragment-bit
时,所有数据包上都会清除不分片 (DF) 位,甚至是不超过隧道最大传输单元 (MTU) 的数据包。如果数据包的大小超过隧道的 MTU 值,则数据包在封装之前会分片。如果数据包大小未超过隧道的 MTU 值,则数据包不会分片。
您还可以清除通过 IP 安全 (IPsec) 隧道传输的数据包中的 DF 位。有关更多信息,请参阅 配置 IPsec 规则。
为隧道指定 MTU 设置
要在 GRE 隧道上启用密钥编号和分片(如在 GRE 隧道上配置密钥编号 和 在 GRE 封装之前在 GRE 隧道上启用数据包分片中所述),还必须为隧道指定 MTU 设置。
要为隧道指定 MTU 设置,请包括以下 mtu
语句:
mtu bytes;
您可以在以下层级包含此语句:
[edit interfaces gr-fpc/pic/port unit logical-unit-number family inet]
[edit logical-system logical-system-name interfaces gr-fpc/pic/port unit logical-unit-number family inet]
有关 MTU 设置的更多信息,请参阅 路由设备的 Junos OS 网络接口库。
配置 GRE 隧道以将位复制到外部 IP 报头
与 IP-IP 隧道不同,GRE 隧道默认不会将 ToS 位复制到外部 IP 报头。要让路由引擎将内部 ToS 位复制到路由引擎发送的数据包的外部 IP 报头(这是某些隧道路由协议所必需的),请将该 copy-tos-to-outer-ip-header
语句包含在 GRE 接口的逻辑单元层次结构级别。此示例将内部 ToS 位复制到 GRE 隧道上的外部 IP 报头:
[edit interfaces] gr-0/0/0 { unit 0 { copy-tos-to-outer-ip-header; family inet; } }
在 GRE 封装后对数据包启用分片和重组
在对数据包进行 GRE 封装后,您可以为 GRE 隧道启用数据包分片和重组。当 GRE 封装数据包的大小大于数据包通过的链路的 MTU 时,GRE 封装的数据包将分片。您可以在隧道端点处配置 GRE 接口,以重组分片的 GRE 封装数据包,然后再在网络上进一步处理这些数据包。
对于您在接口上配置的每个隧道,可以通过添加 allow-fragmentation
或 do-not-fragment
语句来启用或禁用 GRE 封装数据包分片:
allow-fragmentation; do-not-fragment;
您可以在以下层级配置这些语句:
[edit interfaces interface-name unit logical-unit-number tunnel]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number tunnel]
如果在隧道上配置 allow-fragmentation
,则 DF 位不会在 GRE 封装数据包的外部 IP 报头中设置,从而支持分片。默认情况下,超过链路 MTU 大小的 GRE 封装数据包不会分片,并且会丢弃。
要启用在隧道端点的 GRE 接口上重组分片 GRE 封装的数据包,请包括以下 reassemble-packets
语句:
reassemble-packets;
您可以在以下层级配置此语句:
[edit interfaces interface-name unit logical-unit-number]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number]
从 Junos OS 17.3R1 版开始,您可以在具有 MPC7E、MPC8E 和 MPC9E 的 MX 系列路由器上的 GRE 隧道接口上配置 GRE 封装数据包的分片和重新分配。
从 Junos OS 17.1R1 版开始,您可以通过 MPC2E-NGs、MPC3E-NGs、MPC5E 和 MPC6E 的 MX 系列路由器上的 GRE 隧道接口上配置 GRE 封装数据包的分片和重新分配。
从 Junos OS 14.2 版开始,您可以通过 MPC1、MPC2、MPC3、MPC4 和 MPC-16X10GE 在 MX 系列路由器上的 GRE 隧道接口上配置 GRE 封装数据包的分片和重新处理。
在 Junos OS 14.1 及更早版本中,仅具有 MS-DPC 的 MX 系列路由器支持对 GRE 封装数据包进行分片和重新处理。
支持 IPv6 GRE 隧道
从 Junos OS 17.3R1 版开始,您可以在 MX 系列路由器上配置 IPv6 通用路由封装 (GRE) 隧道接口。这样,您可以通过 IPv6 网络运行 GRE 隧道。可封装在 IPv6 GRE 隧道中的数据包有效负载族包括 IPv4、IPv6、MPLS 和 ISO。不支持 IPv6 交付数据包分片和重组。
要配置 IPv6 GRE 隧道接口,请在层次结构级别指定 IPv6 地址source
destination
[interfaces gr-0/0/0 unit 0 tunnel]
,在[interfaces gr-0/0/0 unit 0]
层次结构级别指定 family inet6
IPv6 地址,并在层次结构级别指定 IPv6 地址address
[interfaces gr-0/0/0 unit 0 family inet6]
。
另请参阅
示例:配置单播隧道
配置两个未编号的 IP-IP 隧道:
[edit interfaces] ip-0/3/0 { unit 0 { tunnel { source 192.168.4.18; destination 192.168.4.253; } family inet; } unit 1 { tunnel { source 192.168.4.18; destination 192.168.4.254; } family inet; } }
通过在层次结构级别添加地址 [edit interfaces ip-0/3/0 unit (0 | 1) family inet]
来配置编号隧道接口:
[edit interfaces] ip-0/3/0 { unit 0 { tunnel { source 192.168.4.18; destination 192.168.4.253; } family inet { address 10.5.5.1/30; } } unit 1 { tunnel { source 192.168.4.18; destination 192.168.4.254; } family inet { address 10.6.6.100/30; } } }
通过在层次结构级别包含 family mpls
语句 [edit interfaces gr-1/2/0 unit 0]
,通过 GRE 隧道配置 MPLS:
[edit interfaces] gr-1/2/0 { unit 0 { tunnel { source 192.168.1.1; destination 192.168.1.2; } family inet { address 10.1.1.1/30; } family mpls; } }
另请参阅
将隧道限制为组播流量
对于承载 IPv4 或 IP 版本 6 (IPv6) 流量的接口,您可以将隧道接口配置为仅允许组播流量。要配置仅组播隧道,请添加 multicast-only
语句:
multicast-only;
您可以在以下层级配置此语句:
[edit interfaces interface-name unit logical-unit-number family family]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number family family]
组播隧道过滤所有单播数据包;如果传入数据包不发往 224/8 或更高版本的前缀,则丢弃数据包并递增一个计数器。
只能在 GRE、IP-IP、PIM 和组播隧道 (mt
) 接口上配置此属性。
如果路由器有隧道服务 PIC,则 Junos OS 会自动为您配置的每个虚拟专用网络 (VPN) 配置一个组播隧道接口 (mt
)。无需配置组播隧道接口。