多协议 BGP
了解多协议 BGP
多协议 BGP (MP-BGP) 是 BGP 的扩展,使 BGP 能够承载多个网络层和地址族的路由信息。MP-BGP 可以将用于组播路由的单播路由与用于单播 IP 转发的路由分开承载。
要启用 MP-BGP,请将 BGP 配置为携带单播 IPv4 以外的地址族的网络层可达性信息 (NLRI),方法是包含 family inet
以下语句:
family inet { (any | flow | labeled-unicast | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } rib-group group-name; topology name { community { target identifier; } } } }
要使 MP-BGP 能够承载 IPv6 地址族的 NLRI,请包含以下 family inet6
语句:
family inet6 { (any | labeled-unicast | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } rib-group group-name; } }
要仅在路由器上,要使 MP-BGP 能够承载 IPv4 地址族的第 3 层虚拟专用网络 (VPN) NLRI,请包含以下 family inet-vpn
语句:
family inet-vpn { (any | flow | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } rib-group group-name; } }
要仅在路由器上,要使 MP-BGP 能够为 IPv6 地址家族传输第 3 层 VPN NLRI,请包含以下 family inet6-vpn
语句:
family inet6-vpn { (any | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}} rib-group group-name; } }
要仅在路由器上,要使 MP-BGP 能够为 IPv4 地址族传输组播 VPN NLRI 并启用 VPN 信令,请包含以下 family inet-mvpn
语句:
family inet-mvpn { signaling { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}} <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}} } }
要使 MP-BGP 能够为 IPv6 地址家族承载组播 VPN NLRI 并启用 VPN 信令,请包含以下 family inet6-mvpn
语句:
family inet6-mvpn { signaling { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}} <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout <forever | minutes>; drop-excess <percentage>; hide-excess <percentage>;}} } }
有关基于 BGP 的多协议组播 VPN 的详细信息,请参阅 Junos OS 组播协议用户指南。
有关可包含这些语句的层次结构级别的列表,请参阅这些语句的语句摘要部分。
如果更改在层次结构级别中 [edit protocols bgp family]
指定的地址族,则会丢弃路由设备上的所有当前 BGP 会话,然后重新建立。
在 Junos OS 9.6 版及更高版本中,可以为特定的 BGP 地址族指定循环值。
默认情况下,BGP 对等方仅承载用于单播转发目的的单播路由。要将 BGP 对等方配置为仅承载组播路由,请指定该 multicast
选项。要将 BGP 对等方配置为同时承载单播和组播路由,请指定该 any
选项。
配置 MP-BGP 后,BGP 会将 MP-BGP 路由安装到不同的路由表中。每个路由表由协议族或地址族指示器 (AFI) 和后续地址族标识符 (SAFI) 标识。
以下列表显示了所有可能的 AFI 和 SAFI 组合:
AFI=1,SAFI=1,IPv4 单播
AFI=1,SAFI=2,IPv4 组播
AFI=1,SAFI=128,L3VPN IPv4 单播
AFI=1,SAFI=129,L3VPN IPv4 组播
AFI=2,SAFI=1,IPv6 单播
AFI=2,SAFI=2,IPv6 组播
AFI=25, SAFI=65, BGP-VPLS/BGP-L2VPN
AFI=2,SAFI=128,L3VPN IPv6 单播
AFI=2,SAFI=129,L3VPN IPv6 组播
AFI=1, SAFI=132, RT-Constrain
AFI=1, SAFI=133, 流量规格
AFI=1, SAFI=134, 流量规格
AFI=3, SAFI=128, CLNS VPN
AFI=1, SAFI=5, NG-MVPN IPv4
AFI=2, SAFI=5, NG-MVPN IPv6
AFI=1, SAFI=66, MDT-SAFI
AFI=1,SAFI=4,标记为 IPv4
AFI=2,SAFI=4,标记为 IPv6 (6PE)
inet.2 路由表中安装的路由只能导出到 MP-BGP 对等方,因为它们使用 SAFI,并将其标识为组播源的路由。inet.0 路由表中安装的路由只能导出到标准 BGP 对等方。
inet.2 路由表应该是 inet.0 中路由的子集,因为您不太可能有指向无法向其发送单播流量的组播源的路由。inet.2 路由表存储用于组播反向路径转发检查的单播路由,以及 MP-BGP 从 NLRI 组播更新中获知的其他可访问性信息。配置 MP-BGP 时,将自动创建 inet.2 路由表(通过将 NLRI 设置为 any
)。
启用 MP-BGP 时,可以执行以下操作:
限制 BGP 对等会话上接收的前缀数
您可以限制在 BGP 对等会话上接收的前缀数,并在注入的前缀数超过设定的限制时记录速率受限的消息。您还可以在前缀数超过限制时取消对等互连。
要配置 BGP 会话上可接收的前缀数限制,请包含以下 prefix-limit
语句:
prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>; }
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
对于 maximum number
,请指定一个介于 1 到 4,294,967,295 之间的值。当超过指定的最大前缀数时,将发送系统日志消息。
如果包含该 teardown
语句,则当超过最大前缀数时,会话将被拆除。如果指定百分比,则当前缀数超过指定最大限制的该百分比时,将记录消息。会话被拆除后,它会在短时间内重新建立(除非您包含该 idle-timeout
语句)。如果包含该 idle-timeout
语句,则可以将会话保持指定的时间量或永久关闭。如果指定 forever
,则只有在发出 clear bgp neighbor
命令后才会重新建立会话。如果包括该 drop-excess <percentage>
选项,则在达到最大前缀数时将删除多余的路由。如果指定百分比,则当前缀数超过最大数量的百分比值时,将记录路由。如果包括该 hide-excess <percentage>
选项,则在达到最大前缀数时将隐藏多余的路由。如果指定百分比,则当前缀数超过最大数量的百分比值时,将记录路由。如果修改了百分比,将自动重新评估路由。如果活动路由低于指定的百分比,这些路由将保持为隐藏。
在 Junos OS 9.2 版及更高版本中,您也可以配置 BGP 对等会话上可接受的前缀数限制。有关更多详细信息,请参阅限制 BGP 对等会话上接受的前缀数。
限制 BGP 对等会话上接受的前缀数
在 Junos OS 9.2 版及更高版本中,您可以限制 BGP 对等会话上可接受的前缀数。当超过指定的限制时,将发送系统日志消息。您还可以指定在超出指定前缀数限制时重置 BGP 会话。
要配置 BGP 对等会话上可接受的前缀数限制,请包含以下 accepted-prefix-limit
语句:
accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop <percentage>; hide <percentage>; }
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
对于 maximum number,请指定一个介于 1 到 4,294,967,295 之间的值。
包括用于 teardown
在接受的前缀数超过配置的限制时重置 BGP 对等会话的语句。您还可以包括一个介于 1 到 100 之间的百分比值,以便在接受的前缀数超过最大限制的该百分比时发送系统日志消息。默认情况下,重置的 BGP 会话会在短时间内重新建立。包括语句以防止 idle-timeout
在指定的时间段内重新建立 BGP 会话。您可以配置 1 到 2400 分钟的超时值。包括防止 forever 在发出 clear bgp neighbor
命令之前重新建立 BGP 会话的选项。如果包含 drop-excess <percentage>
语句并指定百分比,则当前缀数超过百分比时,将丢弃多余的路由。如果包含 hide-excess <percentage>
语句并指定百分比,则当前缀数超过百分比时,将隐藏多余的路由。如果修改了百分比,将自动重新评估路由。
启用不间断活动路由 (NSR) 并切换到备份路由引擎时,关闭的 BGP 对等方将自动重新启动。即使配置了 idle-timeout forever
语句,对等方也会重新启动。
或者,您可以对 BGP 对等会话上可 接收 (而不是接受)的前缀数配置限制。有关更多详细信息,请参阅限制 BGP 对等会话上接收的前缀数。
配置 BGP 路由表组
当 BGP 会话收到单播或组播 NLRI 时,它会在相应的表中安装路由(inet.0对于inet6.0单播和/或inet6.2组播inet.2)。要将单播前缀同时添加到单播表和组播表,可以配置 BGP 路由表组。如果无法执行多播 NLRI 协商,这将非常有用。
要配置 BGP 路由表组,请包含以下 rib-group
语句:
rib-group group-name;
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
解析到位于其他 AS 中的 PE 路由设备的路由
您可以允许将标记的路由放置在 inet.3 路由表中以进行路由解析。然后,针对远程 PE 位于另一个自治系统 (AS) 上的提供商边缘 (PE) 路由设备连接解析这些路由。要使 PE 路由设备在 VPN 路由和转发 (VRF) 路由实例中安装路由,下一跃点必须解析为存储在表中的 inet.3 路由。
要将路由解析到 inet.3 路由表中,请包含以下 resolve-vpn
语句:
resolve-vpn group-name;
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
允许标记和未标记的路由
您可以允许在单个会话中交换标记和未标记的路由。标记的路由放置在 inet.3 或 inet6.3 路由表中,标记和未标记的单播路由都可以发送到路由设备或由路由设备接收。
要允许交换标记和未标记的路由,请包含以下 rib
语句:
rib (inet.3 | inet6.3);
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
示例:通过 IPv4 传输配置 IPv6 BGP 路由
此示例演示如何通过 IPv4 连接导出 IPv6 和 IPv4 前缀,其中两端都配置了 IPv4 接口。
要求
在配置此示例之前,不需要除设备初始化之外的特殊配置。
概述
导出 IPv6 BGP 前缀时,请记住以下几点:
BGP 使用 IPv4 映射的 IPv6 前缀派 生下一跃点前缀。例如,IPv4 下一跃点前缀
10.19.1.1
转换为 IPv6 下一跃点前缀 ::ffff:10.19.1.1。注:必须有到 IPv4 映射的 IPv6 下一跃点的活动路由才能导出 IPv6 BGP 前缀。
必须通过链路配置 IPv6 连接。连接必须是 IPv6 隧道或双堆栈配置。此示例使用双堆栈。
配置 IPv4 映射的 IPv6 前缀时,请使用长度超过 96 位的掩码。
如果要使用普通 IPv6 前缀,请配置静态路由。此示例使用静态路由。
图 1 显示了示例拓扑。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
设备 R1
set interfaces fe-1/2/0 unit 1 family inet address 192.168.10.1/24 set interfaces fe-1/2/0 unit 1 family inet6 address ::ffff:192.168.10.1/120 set interfaces lo0 unit 1 family inet address 10.10.10.1/32 set protocols bgp group ext type external set protocols bgp group ext family inet unicast set protocols bgp group ext family inet6 unicast set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 192.168.10.10 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options rib inet6.0 static route ::ffff:192.168.20.0/120 next-hop ::ffff:192.168.10.10 set routing-options static route 192.168.20.0/24 next-hop 192.168.10.10 set routing-options autonomous-system 100
设备 R2
set interfaces fe-1/2/0 unit 2 family inet address 192.168.10.10/24 set interfaces fe-1/2/0 unit 2 family inet6 address ::ffff:192.168.10.10/120 set interfaces fe-1/2/1 unit 3 family inet address 192.168.20.21/24 set interfaces fe-1/2/1 unit 3 family inet6 address ::ffff:192.168.20.21/120 set interfaces lo0 unit 2 family inet address 10.10.0.1/32 set protocols bgp group ext type external set protocols bgp group ext family inet unicast set protocols bgp group ext family inet6 unicast set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext neighbor 192.168.10.1 peer-as 100 set protocols bgp group ext neighbor 192.168.20.1 peer-as 300 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options autonomous-system 200
设备 R3
set interfaces fe-1/2/0 unit 4 family inet address 192.168.20.1/24 set interfaces fe-1/2/0 unit 4 family inet6 address ::ffff:192.168.20.1/120 set interfaces lo0 unit 3 family inet address 10.10.20.1/32 set protocols bgp group ext type external set protocols bgp group ext family inet unicast set protocols bgp group ext family inet6 unicast set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 192.168.20.21 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options rib inet6.0 static route ::ffff:192.168.10.0/120 next-hop ::ffff:192.168.20.21 set routing-options static route 192.168.10.0/24 next-hop 192.168.20.21 set routing-options autonomous-system 300
配置设备 R1
分步过程
下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置设备 R1:
配置接口,包括 IPv4 地址和 IPv6 地址。
[edit interfaces] user@R1# set fe-1/2/0 unit 1 family inet address 192.168.10.1/24 user@R1# set fe-1/2/0 unit 1 family inet6 address ::ffff:192.168.10.1/120 user@R1# set lo0 unit 1 family inet address 10.10.10.1/32
配置 EBGP。
[edit protocols bgp group ext] user@R1# set type external user@R1# set export send-direct user@R1# set export send-static user@R1# set peer-as 200 user@R1# set neighbor 192.168.10.10
-
启用 BGP 以承载 IPv4 单播和 IPv6 单播路由。
[edit protocols bgp group ext] user@R1# set family inet unicast user@R1# set family inet6 unicast
默认情况下,IPv4 单播路由处于启用状态。但是,在配置其他 NLRI 地址系列时,必须显式配置 IPv4 单播。
-
配置路由策略。
[edit policy-options] user@R1# set policy-statement send-direct term 1 from protocol direct user@R1# set policy-statement send-direct term 1 then accept user@R1# set policy-statement send-static term 1 from protocol static user@R1# set policy-statement send-static term 1 then accept
配置一些静态路由。
[edit routing-options] user@R1# set rib inet6.0 static route ::ffff:192.168.20.0/120 next-hop ::ffff:192.168.10.10 user@R1# set static route 192.168.20.0/24 next-hop 192.168.10.10
配置自治系统 (AS) 编号。
[edit routing-options] user@R1# set autonomous-system 100
结果
在配置模式下,输入 show interfaces
、show policy-options
、show protocols
和 show routing-options
命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
user@R1# show interfaces fe-1/2/0 { unit 1 { family inet { address 192.168.10.1/24; } family inet6 { address ::ffff:192.168.10.1/120; } } } lo0 { unit 1 { family inet { address 10.10.10.1/32; } } }
user@R1# show policy-options policy-statement send-direct { term 1 { from protocol direct; then accept; } } policy-statement send-static { term 1 { from protocol static; then accept; } }
user@R1# show protocols bgp { group ext { type external; family inet { unicast; } family inet6 { unicast; } export [ send-direct send-static ]; peer-as 200; neighbor 192.168.10.10; } }
user@R1# show routing-options rib inet6.0 { static { route ::ffff:192.168.20.0/120 next-hop ::ffff:192.168.10.10; } } static { route 192.168.20.0/24 next-hop 192.168.10.10; } autonomous-system 100;
如果完成设备配置,请从配置模式输入 commit。在设备 R2 和设备 R3 上重复配置,根据需要更改接口名称和 IP 地址。
验证
确认配置工作正常。
检查邻居状态
目的
确保已启用 BGP 来承载 IPv6 单播路由。
操作
在操作模式下,输入 show bgp neighbor
命令。
user@R2> show bgp neighbor Peer: 192.168.10.1+179 AS 100 Local: 192.168.10.10+54226 AS 200 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ send-direct send-static ] Options: <Preference AddressFamily PeerAS Refresh> Address families configured: inet-unicast inet6-unicast Holdtime: 90 Preference: 170 Number of flaps: 0 Peer ID: 10.10.10.1 Local ID: 10.10.0.1 Active Holdtime: 90 Keepalive Interval: 30 Peer index: 0 BFD: disabled, down Local Interface: fe-1/2/0.2 NLRI for restart configured on peer: inet-unicast inet6-unicast NLRI advertised by peer: inet-unicast inet6-unicast NLRI for this session: inet-unicast inet6-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality NLRI that restart is negotiated for: inet-unicast inet6-unicast NLRI of received end-of-rib markers: inet-unicast inet6-unicast NLRI of all end-of-rib markers sent: inet-unicast inet6-unicast Peer supports 4 byte AS extension (peer-as 100) Peer does not support Addpath Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 1 Received prefixes: 3 Accepted prefixes: 2 Suppressed due to damping: 0 Advertised prefixes: 4 Table inet6.0 Bit: 20000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 1 Accepted prefixes: 1 Suppressed due to damping: 0 Advertised prefixes: 2 Last traffic (seconds): Received 24 Sent 12 Checked 60 Input messages: Total 132 Updates 6 Refreshes 0 Octets 2700 Output messages: Total 133 Updates 3 Refreshes 0 Octets 2772 Output Queue[0]: 0 Output Queue[1]: 0 Peer: 192.168.20.1+179 AS 300 Local: 192.168.20.21+54706 AS 200 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ send-direct send-static ] Options: <Preference AddressFamily PeerAS Refresh> Address families configured: inet-unicast inet6-unicast Holdtime: 90 Preference: 170 Number of flaps: 0 Peer ID: 10.10.20.1 Local ID: 10.10.0.1 Active Holdtime: 90 Keepalive Interval: 30 Peer index: 1 BFD: disabled, down Local Interface: fe-1/2/1.3 NLRI for restart configured on peer: inet-unicast inet6-unicast NLRI advertised by peer: inet-unicast inet6-unicast NLRI for this session: inet-unicast inet6-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality NLRI that restart is negotiated for: inet-unicast inet6-unicast NLRI of received end-of-rib markers: inet-unicast inet6-unicast NLRI of all end-of-rib markers sent: inet-unicast inet6-unicast Peer supports 4 byte AS extension (peer-as 300) Peer does not support Addpath Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 1 Received prefixes: 3 Accepted prefixes: 2 Suppressed due to damping: 0 Advertised prefixes: 4 Table inet6.0 Bit: 20000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 1 Accepted prefixes: 1 Suppressed due to damping: 0 Advertised prefixes: 2 Last traffic (seconds): Received 1 Sent 15 Checked 75 Input messages: Total 133 Updates 6 Refreshes 0 Octets 2719 Output messages: Total 131 Updates 3 Refreshes 0 Octets 2734 Output Queue[0]: 0 Output Queue[1]: 0
意义
输出 inet6-unicast 中出现的各种情况表明 BGP 已启用以承载 IPv6 单播路由。
检查路由表
目的
确保设备 R2 的 inet6.0 路由表中具有 BGP 路由。
操作
在操作模式下,输入 show route protocol bgp inet6.0
命令。
user@R2> show route protocol bgp table inet6.0 inet6.0: 7 destinations, 10 routes (7 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both ::ffff:192.168.10.0/120 [BGP/170] 01:03:49, localpref 100, from 192.168.20.1 AS path: 300 I > to ::ffff:192.168.20.21 via fe-1/2/1.3 ::ffff:192.168.20.0/120 [BGP/170] 01:03:53, localpref 100, from 192.168.10.1 AS path: 100 I > to ::ffff:192.168.10.10 via fe-1/2/0.2
通过 BGP 通告 IPv4 路由概述
在 IPv6 网络中,BGP 通常通过 BGP 对等方之间的 IPv6 会话通告 IPv6 网络层可达性信息。在早期版本中,Junos OS 仅支持 inet6 单播、inet6 组播或 inet6 标记单播地址族的交换。此功能允许交换所有 BGP 地址族。在以 IPv6 为核心的双堆栈环境中。此功能使 BGP 能够通过 IPv6 BGP 会话通过 IPv4 下一跃点通告 IPv4 单播可达性。
此功能仅适用于 BGP IPv6 会话,其中两个端点都配置 IPv4。可以是 local-ipv4-address
环路地址,也可以是 IBGP 或多跃点 EBGP 会话的任何 ipv4 地址。对于不属于 BGP 联盟的单跳外部 BGP 扬声器,如果配置的本地 IPv4 地址未直接连接,BGP 会话将关闭并保持空闲状态,并生成错误,该错误将显示在命令输出 show bgp neighbor
中。
要通过 IPv6 会话启用 IPv4 路由播发,请按如下方式进行配置 local-ipv4-address
:
[edit protocols bgp family inet unicast] local-ipv4-address local ipv4 address;
您无法为 inet6 单播、inet6 组播或 inet6 标记的单播地址族配置此功能,因为 BGP 已能够通过 IPv6 BGP 会话通告这些地址族。
仅当 BGP 使用自下一跃点播发路由时,才使用配置的 local-ipv4-address
。当 IBGP 播发从 EBGP 对等方获知的路由或路由反射器向其客户端播发 BGP 路由时,BGP 不会更改路由下一跃点,忽略配置 local-ipv4-address
的 ,并使用原始 IPv4 下一跃点。
另请参阅
示例:通过 IPv6 BGP 会话通告 IPv4 路由
此示例说明如何通过 IPv6 BGP 会话通告 IPv4 路由。在以 IPv6 为核心的双堆栈环境中,需要访问远程 IPv4 主机。因此,BGP 使用 IPv6 源地址和目标地址,通过 BGP 会话向 BGP 对等方播发具有 IPv4 下一跃点的 IPv4 路由。此功能使 BGP 能够通过 IPv6 BGP 会话上的 IPv4 下一跃点通告 IPv4 单播可达性。
要求
此示例使用以下硬件和软件组件:
三台具有双堆栈功能的路由器
在所有设备上运行的 Junos OS 16.1 或更高版本
在通过 IPv6 BGP 会话启用 IPv4 通告之前,请确保:
配置设备接口。
在所有设备上配置双堆栈。
概述
从版本 16.1 开始,Junos OS 允许 BGP 通过 IPv6 BGP 会话通过 IPv4 下一跃点通告 IPv4 单播可达性。在早期的 Junos OS 版本中,BGP 只能通过 IPv6 BGP 会话通告 inet6 单播、inet6 组播和 inet6 标记的单播地址家族。此功能允许 BGP 通过 IPv6 会话交换所有 BGP 地址族。您可以启用 BGP 以通过 IPv6 会话将具有 IPv4 下一跃点的 IPv4 路由播发到 BGP 对等方。仅当 BGP 使用自下一跃点播发路由时,才使用配置的 local-ipv4-address
。
您无法为 inet6 单播、inet6 组播或 inet6 标记的单播地址族配置此功能,因为 BGP 已能够通过 IPv6 BGP 会话通告这些地址族。
拓扑学
在 中 图 2,IPv6 外部 BGP 会话在路由器 R1 和 R2 之间运行。在路由器 R2 和路由器 R3 之间建立 IPv6 IBGP 会话。IPv4 静态路由将重新分发到 R1 上的 BGP。要通过 IPv6 BGP 会话重新分配 IPv4 路由,必须在层次结构级别的所有 [edit protocols bgp address family]
路由器上启用新功能。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到 [edit] 层级的 CLI 中,然后从配置模式进入 commit
。
路由器 R1
set interfaces ge-0/0/0 unit 0 description R1->R2 set interfaces ge-0/0/0 unit 0 family inet address 140.1.1.1/24 set interfaces ge-0/0/0 unit 0 family inet6 address ::140.1.1.1/126 set interfaces lo0 unit 0 family inet6 address 1::1/128 set routing-options static route 11.1.1.1/32 discard set routing-options static route 11.1.1.2/32 discard set routing-options autonomous-system 64497 set protocols bgp group ebgp-v6 type external set protocols bgp group ebgp-v6 export p1 set protocols bgp group ebgp-v6 peer-as 64496 set protocols bgp group ebgp-v6 neighbor ::140.1.1.2 description R2 set protocols bgp group ebgp-v6 neighbor ::140.1.1.2 family inet unicast local-ipv4-address 140.1.1.1 set policy-options policy-statement p1 from protocol static set policy-options policy-statement p1 then accept
路由器 R2
set interfaces ge-0/0/0 unit 0 description R2->R1 set interfaces ge-0/0/0 unit 0 family inet address 140.1.1.2/24 set interfaces ge-0/0/0 unit 0 family inet6 address ::140.1.1.2/126 set interfaces ge-0/0/1 unit 0 description R2->R3 set interfaces ge-0/0/1 unit 0 family inet address 150.1.1.1/24 set interfaces ge-0/0/1 unit 0 family inet6 address ::150.1.1.1/126 set interfaces lo0 unit 0 family inet6 address 1::2/128 set routing-options autonomous-system 64496 set protocols bgp group ibgp-v6 type internal set protocols bgp group ibgp-v6 export change-nh set protocols bgp group ibgp-v6 neighbor ::150.1.1.2 description R3 set protocols bgp group ibgp-v6 neighbor ::150.1.1.2 family inet unicast local-ipv4-address 150.1.1.1 set protocols bgp group ebgp-v6 type external set protocols bgp group ebgp-v6 peer-as 64497 set protocols bgp group ebgp-v6 neighbor ::140.1.1.1 description R1 set protocols bgp group ebgp-v6 neighbor ::140.1.1.1 family inet unicast local-ipv4-address 140.1.1.2 set policy-options policy-statement change-nh from protocol bgp set policy-options policy-statement change-nh then next-hop self set policy-options policy-statement change-nh then accept
路由器 R3
set interfaces ge-0/0/0 unit 0 description R3->R2 set interfaces ge-0/0/0 unit 0 family inet address 150.1.1.2/24 set interfaces ge-0/0/0 unit 0 family inet6 address ::150.1.1.2/126 set interfaces lo0 unit 0 family inet6 address 1::3/128 set routing-options autonomous-system 64496 set protocols bgp group ibgp-v6 type internal set protocols bgp group ibgp-v6 neighbor ::150.1.1.1 description R2 set protocols bgp group ibgp-v6 neighbor ::150.1.1.1 family inet unicast local-ipv4-address 150.1.1.2
配置路由器 R1
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要配置路由器 R1:
修改相应的接口名称、地址和其他参数后,对其他路由器重复此过程。
使用 IPv4 和 IPv6 地址配置接口。
[edit interfaces] user@R1# set ge-0/0/0 unit 0 description R1->R2 user@R1# set ge-0/0/0 unit 0 family inet address 140.1.1.1/24 user@R1# set ge-0/0/0 unit 0 family inet6 address ::140.1.1.1/126
配置环路地址。
[edit interfaces] user@R1# set lo0 unit 0 family inet6 address 1::1/128
配置需要播发的 IPv4 静态路由。
[edit routing-options] user@R1# set static route 11.1.1.1/32 discard user@R1# set static route 11.1.1.2/32 discard
为 BGP 主机配置自治系统。
[edit routing-options] user@R1# set autonomous-system 64497
在外部边缘路由器上配置 EBGP。
[edit protocols] user@R1# set bgp group ebgp-v6 type external user@R1# set bgp group ebgp-v6 peer-as 64496 user@R1# set bgp group ebgp-v6 neighbor ::140.1.1.2 description R2
启用该功能以通过 BGP IPv6 会话通告 IPv4 地址 140.1.1.1。
[edit protocols] user@R1# set bgp group ebgp-v6 neighbor ::140.1.1.2 family inet unicast local-ipv4-address 140.1.1.1
定义策略 p1 以接受所有静态路由。
[edit policy-options] user@R1# set policy-statement p1 from protocol static user@R1# set policy-statement p1 then accept
在 EBGP 组 ebgp-v6 上应用策略 p1。
[edit protocols] user@R1# set bgp group ebgp-v6 export p1
结果
在配置模式下,输入 show interfaces 、show protocols、show routing-options 和 show policy-options 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@R1# show interfaces ge-0/0/0 { unit 0 { description R1->R2; family inet { address 140.1.1.1/24; } family inet6 { address ::140.1.1.1/126; } } lo0 { unit 0 { family inet { address 1::1/128; } } } }
[edit] user@R1# show protocols bgp { group ebgp-v6 { type external; export p1; peer-as 64496; neighbor ::140.1.1.2 { description R2; family inet { unicast { local-ipv4-address 140.1.1.1; } } } } }
[edit] user@R1# show routing-options static { route 11.1.1.1/32 discard; route 11.1.1.2/32 discard; } autonomous-system 64497;
[edit] user@R1# show policy-options policy-statement p1 { from { protocol static; } then accept; }
如果完成设备配置,请提交配置。
user@R1# commit
验证
确认配置工作正常。
验证 BGP 会话是否已启动
目的
验证 BGP 是否在配置的接口上运行,以及每个邻居地址的 BGP 会话是否处于活动状态。
操作
在操作模式下,在路由器 R1 上运行 show bgp summary 命令。
user@R1> show bgp summary Groups: 1 Peers: 1 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending inet.0 0 0 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... ::140.1.1.2 64496 4140 4158 0 0 1d 7:10:36 0/0/0/0 0/0/0/0
意义
BGP 会话已启动并正在运行,并且已建立 BGP 对等互连。
验证是否正在播发 IPv4 地址
目的
验证路由器 R1 是否正在向配置的 BGP 邻接方播发配置的 IPv4 地址。
操作
在操作模式下,在路由器 R1 上运行 show route advertising-protocol bgp ::150.1.1.2 命令。
user@R1> show route advertising-protocol bgp ::150.1.1.2 inet.0: 48 destinations, 48 routes (48 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 11.1.1.1/32 Self 64497 64497 I * 11.1.1.2/32 Self 64497 64497 I
意义
IPv4 静态路由正在播发至 BGP 邻居路由器 R2。
验证 BGP 邻居路由器 R2 是否收到播发的 IPv4 地址
目的
验证路由器 R2 是否收到路由器 R1 通过 IPv6 向 BGP 邻居播发的 IPv4 地址。
操作
user@R2> show route receive-protocol bgp ::140.1.1.1 inet.0: 48 destinations, 48 routes (48 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 11.1.1.1/32 140.1.1.1 64497 I * 11.1.1.2/32 140.1.1.1 64497 I iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden) inet6.0: 9 destinations, 10 routes (9 active, 0 holddown, 0 hidden)
意义
路由器 R2 的路由表中存在静态 IPv4 路由表示它正在从路由器 R1 接收播发的 IPv4 路由。
了解使用 IPv6 下一跳入 BGP 的 IPv4 路由重新分配
在主要传输 IPv6 流量的网络中,需要在需要时路由 IPv4 路由。例如,具有仅支持 IPv6 的网络,但其客户仍路由 IPv4 流量的互联网服务提供商。在这种情况下,有必要迎合此类客户并通过 IPv6 网络转发 IPv4 流量。如 RFC 5549 中所述, 使用 IPv6 下一跳播发 IPv4 网络层可达性信息 IPv4 流量通过隧道从客户端设备 (CPE) 设备传输到 IPv4-over-IPv6 网关。这些网关通过任播地址通告给 CPE 设备。然后,网关设备会创建到远程 CPE 设备的动态 IPv4-over-IPv6 隧道,并通告 IPv4 聚合路由以引导流量。
动态 IPv4-over-IPv6 隧道功能在 Junos OS 17.3R1 版中不支持统一 ISSU。
具有可编程接口的路由反射器 (RR) 通过 IBGP 连接到网关路由器和主机路由,并将 IPv6 地址作为下一跃点。这些 RR 通告 IPv4 /32 地址,以将隧道信息注入网络。网关路由器可创建到远程客户提供商边缘的动态 IPv4-over-IPv6 隧道。网关路由器还会通告 IPv4 聚合路由以引导流量。然后,RR 将隧道源路由通告给 ISP。当 RR 删除隧道路由时,BGP 也会撤回路由,从而导致隧道被拆除且 CPE 无法访问。当移除所有聚合路由参与者路由时,网关路由器还会撤回 IPv4 聚合路由和 IPv6 隧道源路由。当锚数据包转发引擎线卡出现故障时,网关路由器会发送路由撤回,以便将流量重定向到其他网关路由器。
引入了以下扩展以支持具有 IPv6 下一跃点的 IPv4 路由:
BGP 下一跳编码
BGP 通过下一跃点编码功能进行了扩展,该功能用于发送带有 IPv6 下一跃点的 IPv4 路由。如果此功能在远程对等方上不可用,BGP 将根据此编码功能对等方进行分组,并从协商的网络层可访问性信息 (NLRI) 列表中移除没有编码功能的 BGP 系列。Junos OS 只允许一个解析表,例如 inet.0。要允许具有 IPv6 下一跃点的 IPv4 BGP 路由,BGP 会创建新的解析树。此功能允许 Junos OS 路由表具有多个解析树。
除了 RFC 5549( 使用 IPv6 下一跃点宣传 IPv4 网络层可达性信息 )之外,还引入了 RFC 5512 中指定的新封装社区,引入了 BGP 封装后续地址族标识符 (SAFI) 和 BGP 隧道封装属性 来确定下一跃点地址的地址族。封装社区指示入口节点需要创建的隧道类型。当 BGP 接收具有 IPv6 下一跃点地址和 V4oV6 封装社区的 IPv4 路由时,BGP 将创建 IPv4-over-IPv6 动态隧道。当 BGP 接收没有封装社区的路由时,将在不创建 V4oV6 隧道的情况下解析 BGP 路由。
在层次结构级别提供了[edit policy-statement policy name term then]
新的策略操作dynamic-tunnel-attributes dyan-attribute
来支持新的扩展封装。
隧道定位
动态隧道基础架构通过隧道定位得到增强,可支持更多隧道。需要对隧道进行本地化,以便在锚点发生故障时提供处理流量的弹性。一个或多个机箱相互备份,让路由协议进程 (rpd) 将流量从故障点引导至备用机箱。机箱仅将这些聚合前缀(而非单个环路地址)播发到网络中。
隧道处理
IPv4 over IPv6 隧道使用动态隧道基础架构和隧道锚定来支持所需的机箱范围。隧道状态本地化为数据包转发引擎,其他数据包转发引擎将流量引导至隧道锚点。
隧道入口
将 IPv4 流量封装在 IPv6 标头内。
最大传输单元 (MTU) 强制实施在封装之前执行。如果封装的数据包大小超过隧道 MTU,并且未设置 IPv4 数据包,
DF-bit
则会对数据包进行分段,并封装这些分段。对内部数据包标头使用基于哈希的流量负载平衡。
将流量转发到目标 IPv6 地址。IPv6 地址取自 IPv6 报头。
隧道出口
解封装 IPv6 数据包中的 IPv4 数据包。
执行反欺骗检查,以确保 IPv6、IPv4 对与用于设置隧道的信息匹配。
从解封装数据包的 IPv4 标头中查找 IPv4 目标地址,并将数据包转发到指定的 IPv4 地址。
隧道负载平衡和锚数据包转发引擎故障处理
数据包转发引擎故障需要及时处理,以避免对锚定在数据包转发引擎上的隧道流量进行空路由过滤。隧道定位涉及使用 BGP 通告全局修复故障。隧道流量从故障点转移到包含相同隧道状态的其他备份机箱。对于流量负载平衡,机箱配置为为每个前缀集通告不同的多出口鉴别器 (MED) 值,以便只有四分之一隧道的流量通过每个机箱。CPE 流量也以类似的方式处理,方法是在每个机箱上配置同一组任播地址,并且仅将四分之一的流量引导到每个机箱。
锚数据包转发引擎是对隧道执行所有处理的单个实体。锚点数据包转发引擎的选择是通过静态配置进行的,并绑定到数据包转发引擎物理接口。当其中一个数据包转发引擎出现故障时,守护程序会标记线卡上的所有数据包转发引擎关闭,并将此信息传达给路由协议进程路由协议进程和其他守护程序。路由协议进程针对锚定在故障数据包转发引擎上的前缀和分配给关闭的数据包转发引擎的 IPv6 地址发出 BGP 撤销。这些播发将流量重新路由到其他备份机箱。当发生故障的数据包转发引擎再次启动时,机箱会将数据包转发引擎 up
标记为并更新路由协议进程。路由协议进程会触发对其对等方的 BGP 更新,锚定到特定数据包转发引擎的隧道现在可用于路由流量。对于大规模隧道配置,此过程可能需要几分钟时间。因此,该 Ack
机制内置于系统中,可确保在将流量切换回原始机箱时将流量损失降至最低。
隧道环回流统计信息
动态隧道基础架构使用数据包转发引擎中的环回流在封装后对数据包进行环路处理。由于此环回流的带宽有限,因此需要监控隧道环回流的性能。
要监控环路流的统计信息,请使用显示聚合环回流统计信息(包括转发速率、丢弃数据包速率和字节速率)的操作命令 show pfe statistics traffic detail
。
另请参阅
配置 BGP 以重新分配具有 IPv6 下一跃点地址的 IPv4 路由
从版本 17.3R1 开始,Junos OS 设备可以通过纯 IPv6 网络转发 IPv4 流量,而该网络通常无法转发 IPv4 流量。如 RFC 5549 中所述,IPv4 流量通过隧道从 CPE 设备传输到 IPv4-over-IPv6 网关。这些网关通过任播地址通告给 CPE 设备。然后,网关设备会创建到远程客户端设备的动态 IPv4-over-IPv6 隧道,并通告 IPv4 聚合路由以引导流量。具有可编程接口的路由反射器将隧道信息注入网络。路由反射器通过 IBGP 连接到网关路由器,网关路由器将 IPv6 地址作为下一跃点播发主机路由的 IPv4 地址。
动态 IPv4-over-IPv6 隧道功能在 Junos OS 17.3R1 版中不支持统一 ISSU。
在开始配置 BGP 以使用 IPv6 下一跃点地址分发 IPv4 路由之前,请执行以下操作:
配置设备接口。
配置 OSPF 或任何其他 IGP 协议。
配置 MPLS 和 LDP。
配置 BGP。
要将 BGP 配置为使用 IPv6 下一跃点地址分配 IPv4 路由,请执行以下操作:
另请参阅
启用第 2 层 VPN 和 VPLS 信令
您可以启用 BGP 来传输第 2 层 VPN 和 VPLS NLRI 消息。
要启用 VPN 和 VPLS 信令,请包含以下 family
语句:
family { l2vpn { signaling { prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>; } } } }
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
要配置最大前缀数,请包含以下 prefix-limit
语句:
prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}
有关可包含此语句的层次结构级别的列表,请参阅此语句的语句摘要部分。
设置最大前缀数时,当达到该数量时,将记录一条消息。如果包含该 teardown
语句,则当达到最大前缀数时,会话将被拆除。如果指定百分比,则当前缀数达到该百分比时,将记录消息。会话被拆除后,它会在短时间内重新建立。包括语句以 idle-timeout
将会话关闭指定的时间量或永久关闭。如果指定 forever
,则只有在使用该 clear bgp neighbor
命令后,才会重新建立会话。如果包含 drop-excess <percentage>
语句并指定百分比,则当前缀数超过百分比时,将丢弃多余的路由。如果包含 hide-excess <percentage>
语句并指定百分比,则当前缀数超过百分比时,将隐藏多余的路由。如果修改了百分比,将自动重新评估路由。
另请参阅
了解用于流量过滤的 BGP 流路由
流路由是 IP 数据包匹配条件的聚合。流路由作为输入转发表过滤器(隐式)安装,并使用流规范网络层可达性信息 (NLRI) 消息在网络中传播,并安装到流路由表中 instance-name.inetflow.0
。仅当满足特定匹配条件时,数据包才能通过流路由。
流路由和防火墙过滤器的相似之处在于,它们基于其组件过滤数据包,并对匹配的数据包执行操作。流路由提供流量过滤和速率限制功能,与防火墙过滤器非常相似。此外,您还可以在不同的自治系统之间传播流路由。
流路由由 BGP 通过流规范 NLRI 消息传播。必须启用 BGP 才能传播这些 NLRI。
从 Junos OS 15.1 版开始,我们实施了一些更改,以扩展对现有 inet-flow 和 inetvpn-flow 家族的不间断活动路由 (NSR) 支持,并根据 draft-ietf-idr-bgp-flowspec-oid-01 扩展 BGP flowspec 的路由验证。作为此增强功能的一部分,引入了两个新语句。请参阅 强制先行 和 不安装。
从 Junos OS 16.1 版开始,IPv6 支持扩展到 BGP 流规范,允许传播 IPv6 和 VPN-IPv6 数据包的流量规范规则。BGP 流量规范可自动协调流量过滤规则,以缓解不间断活动路由 (NSR) 期间的分布式拒绝服务攻击。
从 Junos OS 16.1R1 版开始,BGP 流规范支持流量标记 extended-community
过滤操作。对于 IPv4 流量,Junos OS 会将传输 IPv4 数据包的 DiffServ 代码点 (DSCP) 位修改为扩展社区的相应值。对于 IPv6 数据包,Junos OS 会将传输 IPv6 数据包字段的前 traffic class
6 位修改为扩展社区的相应值。
从 Junos OS 17.1R1 版开始,BGP 可以在安装了第三代 FPC(PTX5000 上的 FPC3-PTX-U2 和 FPC3-PTX-U3,以及 PTX3000 上的 FPC3-SFF-PTX-U0 和 FPC3-SFF-PTX-U1)的 PTX 系列路由器上传输流规范网络层可达性信息 (NLRI) 消息。通过在 BGP 过程中传播防火墙过滤器信息,可以跨自治系统动态传播防火墙过滤器,以防止拒绝服务 (DOS) 攻击。
从 Junos OS 17.2R1 版开始,BGP 可以在安装了第三代 FPC 的PTX1000路由器上传输流规范的网络层可达性信息 (NLRI) 消息。通过在 BGP 过程中传播防火墙过滤器信息,可以跨自治系统动态传播防火墙过滤器,以防止拒绝服务 (DOS) 攻击。
从 cRPD 20.3R1 版开始,通过 BGP 流规范 NLRI 传播的流路由和监管规则通过 cRPD 环境中的 Linux Netfilter 框架下载到 Linux 内核。
流路由的匹配条件
您可以指定在对流路由执行语句中的 then
操作之前数据包必须匹配的条件。语句中的所有 from
条件必须与要执行的操作匹配。指定匹配条件的顺序并不重要,因为数据包必须与术语中的所有条件匹配才能进行匹配。
要配置匹配条件,请在层次结构级别包含 match
语句 [edit routing-options flow]
。
表 1 描述流路由匹配条件。
匹配条件 |
Description |
---|---|
|
IP 目标地址字段。 您可以使用可选字段(仅在配置为模式的 |
|
TCP 或用户数据报协议 (UDP) 目标端口字段。不能在同一术语中同时 要代替数值,可以指定以下文本同义词之一(还会列出端口号): |
|
差异服务代码点 (DSCP)。DiffServ 协议在 IP 报头中使用服务类型 (ToS) 字节。此字节中最重要的六位构成 DSCP。 可以用十六进制或十进制形式指定 DSCP。 |
|
匹配流标签值。此字段的值范围为 0 到 1048575。 此匹配条件仅在配置为模式的 |
|
片段类型字段。关键字按与其关联的片段类型分组:
此匹配条件仅在配置为模式的 |
|
ICMP 代码字段。此值或关键字提供的信息比 更 要代替数值,您可以指定以下文本同义词之一(还会列出字段值)。关键字按与其关联的 ICMP 类型分组:
|
|
ICMP 数据包类型字段。通常,将此匹配项与 代替数值,您可以指定以下文本同义词之一(字段值也会列出): |
|
IP 数据包总长度。 |
|
TCP 或 UDP 源或目标端口字段。不能在同一术语中同时 要代替数值,可以指定 下 |
|
IP 协议字段。代替数值,您可以指定以下文本同义词之一(字段值也会列出): 只有在配置为模式的 |
|
IP 源地址字段。 您可以使用可选字段(仅在配置为模式的 |
|
TCP 或 UDP 源端口字段。不能在同一术语中指定 您可以指定 下 |
|
TCP 标头格式。 |
流路由的操作
您可以指定在数据包与您在流路由中配置的条件匹配时要执行的操作。要配置操作,请在层次结构级别包含 then
语句 [edit routing-options flow]
。
表 2 描述了流路由操作。
动作或动作修改器 |
Description |
---|---|
行动 | |
|
接受数据包。这是默认设置。 |
|
以静默方式丢弃数据包,而不发送互联网控制消息协议 (ICMP) 消息。 |
|
将路径中的所有社区替换为指定的社区。 |
马克 value |
为与此流匹配的流量设置 DSCP 值。指定一个介于 0 到 63 之间的值。仅具有针对模式配置 |
|
继续下一个匹配条件进行评估。 |
|
指定数据包转发到的路由实例。 |
|
限制流路由上的带宽。以位/秒 (bps) 表示限制。从 Junos OS 版本 16.1R4 开始,速率限制范围为 [0 到 100000000000]。 |
|
对流路由上的流量进行采样。 |
验证流路由
仅当使用验证过程验证流路由时,Junos OS 才会将流路由安装到流路由表中。路由引擎在将路由安装到流路由表之前进行验证。
使用 BGP 网络层可达性信息 (NLRI) 消息接收的流路由在安装到流主实例路由表 instance.inetflow.0
之前经过验证。验证过程在 draft-ietf-idr-flow-spec-09.txt流规范规则的传播中进行了描述。您可以使用 BGP NLRI 消息绕过流路由的验证过程,并使用您自己的特定导入策略。
若要跟踪验证操作,请在层次结构级别包含validation
[edit routing-options flow]
语句。
支持 BGP 流规范算法版本 7 及更高版本
默认情况下,Junos OS 使用 BGP 流量规范草案版本 6 中定义的术语排序算法。在 Junos OS 10.0 版及更高版本中,您可以将路由器配置为符合术语排序算法,该算法首先在 BGP 流量规范版本 7 中定义,并通过 RFC 5575“ 流规范路由的传播”提供支持。
我们建议您将 Junos OS 配置为使用首先在 BGP 流规范草案版本 7 中定义的术语排序算法。我们还建议您将 Junos OS 配置为在路由器上配置的所有路由实例上使用相同的术语排序算法。
要将 BGP 配置为使用首先在互联网草稿版本 7 中定义的流规范算法,请在层次结构级别包含 standard
该语句 [edit routing-options flow term-order]
。
要恢复为使用版本 6 中定义的术语排序算法,请在层次结构级别包含legacy
[edit routing-options flow term-order]
该语句。
配置的术语顺序仅具有本地意义。也就是说,术语顺序不会随发送到远程 BGP 对等方的流路由一起传播,这些对等方的术语顺序完全由其自己的术语顺序配置决定。因此,当您不知道远程对等方的术语顺序配置时,在配置顺序相关操作 next term
时应小心。本地 next term
可能与远程对等方上配置的不同 next term
。
在 Junos OS 演化版上, next term
不能显示为操作的最后一个术语。不支持指定为操作但未配置任何匹配条件的筛选词 next term
。
从 Junos OS 16.1 版开始,您可以选择不 flowspec 对特定接口上接收的流量应用过滤器。在过滤器的 flowspec 开头添加一个新术语,用于接受在这些特定接口上接收的任何数据包。新术语是一个变量,用于创建作为流规范筛选器的一部分附加到转发表筛选器的术语排除列表。
要排除flowspec过滤器应用于特定接口上接收的流量,您必须首先通过在层次结构级别包含系列inet
过滤器组group-id
语句[edit interfaces]
来在此类接口上配置 ,group-id
然后通过在层次结构级别包含flow interface-group group-id exclude
语句[edit routing-options]
来将过滤器附加到flowspec接口组。您只能使用该set routing-options flow interface-group group-id
语句为每个路由实例配置一个group-id
。
另请参阅
示例:使 BGP 能够承载流量规范路由
此示例说明如何允许 BGP 携带流规范网络层可达性信息 (NLRI) 消息。
要求
准备工作:
配置设备接口。
配置内部网关协议 (IGP)。
配置 BGP。
配置路由策略,将路由(例如直接路由或 IGP 路由)从路由表导出到 BGP。
概述
通过在 BGP 过程中传播防火墙过滤器信息,可以跨自治系统动态传播防火墙过滤器,以防止拒绝服务 (DOS) 攻击。流路由被封装到流规范 NLRI 中,并通过网络或虚拟专用网络 (VPN) 传播,共享类似过滤器的信息。流路由是匹配条件和数据包结果操作的聚合。它们为您提供流量过滤和速率限制功能,与防火墙过滤器非常相似。默认实例、VPN 路由和转发 (VRF) 实例以及虚拟路由器实例支持单播流路由。
导入和导出策略可应用于族 inet flow
或族 inet-vpn flow
NLRI,影响接受或播发的流路由,类似于将导入和导出策略应用于其他 BGP 族的方式。唯一的区别是流策略配置必须包含 from rib inetflow.0
语句。此语句导致将策略应用于流路由。如果策略只有 then reject
or 语句 then accept
而没有 from
语句,则会发生此规则的例外。然后,该策略会影响所有路由,包括 IP 单播和 IP 流。
流路由过滤器首先在路由器上静态配置,具有一组匹配标准,后跟要执行的操作。然后,除了 之外,还会 family inet unicast
在此启用 BGP 的设备与其对等方之间配置 ( family inet flow
或 family inet-vpn flow
)。
默认情况下,静态配置的流路由(防火墙过滤器)会播发到支持 family inet flow
或 family inet-vpn flow
NLRI 的其他启用 BGP 的设备。
启用 BGP 的接收设备在将防火墙过滤器安装到流路由表 instance-name.inetflow.0
之前执行验证过程。RFC 5575, 流规范规则的传播中介绍了验证过程。
如果启用了 BGP 的接收设备满足以下条件,则接受流路由:
流路由的发起方与嵌入在路由中的目标地址的最佳匹配单播路由的发起方匹配。
与流路由的目标地址相比,没有更具体的单播路由,其活动路由已从不同的下一跃点自治系统接收。
第一个标准确保单播转发使用的下一跃点正在播发过滤器,以获取流路由中嵌入的目标地址。例如,如果流路由给定为 10.1.1.1,proto=6,port=80,则启用 BGP 的接收设备会在单播路由表中选择与目标前缀 10.1.1.1/32 匹配的更具体的单播路由。在包含 10.1/16 和 10.1.1/24 的单播路由表上,后者被选为要比较的单播路由。仅考虑活动的单播路由条目。这遵循的概念是,如果由最佳单播路由的发起方播发,则流路由有效。
第二个标准涉及将给定地址块分配给不同实体的情况。解析为最匹配的单播路由(即聚合路由)的流仅在未涵盖路由到不同下一跃点自治系统的更具体的路由时,才会被接受。
您可以使用 BGP NLRI 消息绕过流路由的验证过程,并使用您自己的特定导入策略。当 BGP 携带流规范 NLRI 消息时, no-validate
层次结构级别的语句 [edit protocols bgp group group-name family inet flow]
在策略接受数据包后省略流路由验证过程。您可以配置导入策略以匹配目标地址和路径属性,例如社区、下一跃点和 AS 路径。您可以指定在数据包与您在流路由中配置的条件匹配时要执行的操作。要配置操作,请在层次结构级别包含语句 [edit routing-options flow]
。流规范 NLRI 类型包括 RFC 5575 中定义的目标前缀、源前缀、协议和端口等组件。导入策略可以使用流规范 NLRI 中的路径属性和目标地址筛选入站路由。导入策略无法筛选 RFC 5575 中的任何其他组件。
流规范定义了所需的协议扩展,以满足最常见的 IPv4 单播和 VPN 单播过滤应用。可以重复使用相同的机制并添加新的匹配标准,以解决其他 BGP 地址族(例如,IPv6 单播)的类似过滤问题。
在表中安装 inetflow.0
流路由后,该路由也会添加到内核中的防火墙过滤器列表中。
仅在路由器上,VPN 支持流规范的 NLRI 消息。VPN 将 NLRI 中的路由目标扩展社区与导入策略进行比较。如果存在匹配项,VPN 可以开始使用流路由来过滤和速率限制数据包流量。收到的流路由将安装到流路由表中 instance-name.inetflow.0
。流路由还可以在整个 VPN 网络中传播并在 VPN 之间共享。要使多协议 BGP (MP-BGP) 能够承载地址族的 inet-vpn
流规范 NLRI,请在层次结构级别包含 flow
该语句 [edit protocols bgp group group-name family inet-vpn]
。VPN 流路由仅支持默认实例。为具有系列 inet-vpn
的 VPN 配置的流路由不会自动验证,因此 no-validate
该语句在层次结构级别不受支持 [edit protocols bgp group group-name family inet-vpn]
。如果在单个 AS 中的设备之间本地配置流路由,则不需要验证。
导入和导出策略可以应用于 family inet flow
或 family inet-vpn flow
NLRI,从而影响接受或播发的流路由,类似于将导入和导出策略应用于其他 BGP 系列的方式。唯一的区别是流策略配置必须包含 from rib inetflow.0
语句。此语句导致将策略应用于流路由。如果策略只有 then reject
or 语句 then accept
而没有 from
语句,则会发生此规则的例外。然后,该策略会影响所有路由,包括 IP 单播和 IP 流。
此示例说明如何配置以下导出策略:
允许通告路由筛选器指定的流路由的策略。仅通告 10.13/16 块覆盖的流路由。此策略不会影响单播路由。
允许将所有单播和流路由通告到邻接方的策略。
不允许向邻接方播发所有路由(单播或流)的策略。
拓扑学
配置
配置静态流路由
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set routing-options flow route block-10.131.1.1 match destination 10.131.1.1/32 set routing-options flow route block-10.131.1.1 match protocol icmp set routing-options flow route block-10.131.1.1 match icmp-type echo-request set routing-options flow route block-10.131.1.1 then discard set routing-options flow term-order standard
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 BGP 对等会话,请执行以下操作:
配置匹配条件。
[edit routing-options flow route block-10.131.1.1] user@host# set match destination 10.131.1.1/32 user@host# set match protocol icmp user@host# set match icmp-type echo-request
配置操作。
[edit routing-options flow route block-10.131.1.1] user@host# set then discard
(推荐)对于流规范算法,请配置基于标准的术语顺序。
[edit routing-options flow] user@host# set term-order standard
在默认的术语排序算法中,如 flowspec RFC 草案版本 6 中所指定的那样,具有不太具体的匹配条件的术语总是在具有更具体的匹配条件的术语之前进行评估。这会导致永远不会评估具有更具体匹配条件的术语。RFC 5575 版本 7 对算法进行了修订,以便在不太具体的匹配条件之前评估更具体的匹配条件。为了向后兼容,Junos OS 中的默认行为不会更改,即使较新的算法更有意义。要使用较新的算法,请在配置中包含该
term-order standard
语句。Junos OS 10.0 及更高版本支持此语句。
结果
在配置模式下,输入 show routing-options
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@host# show routing-options flow { term-order standard; route block-10.131.1.1 { match { destination 10.131.1.1/32; protocol icmp; icmp-type echo-request; } then discard; } }
如果完成设备配置,请从配置模式输入 commit
。
由路由过滤器指定的通告流路由
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set protocols bgp group core family inet unicast set protocols bgp group core family inet flow set protocols bgp group core export p1 set protocols bgp group core peer-as 65000 set protocols bgp group core neighbor 10.12.99.5 set policy-options policy-statement p1 term a from rib inetflow.0 set policy-options policy-statement p1 term a from route-filter 10.13.0.0/16 orlonger set policy-options policy-statement p1 term a then accept set policy-options policy-statement p1 term b then reject set routing-options autonomous-system 65001
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 BGP 对等会话,请执行以下操作:
配置 BGP 组。
[edit protocols bgp group core] user@host# set family inet unicast user@host# set family inet flow user@host# set export p1 user@host# set peer-as 65000 user@host# set neighbor 10.12.99.5
配置流策略。
[edit policy-options policy-statement p1] user@host# set term a from rib inetflow.0 user@host# set term a from route-filter 10.13.0.0/16 orlonger user@host# set term a then accept user@host# set term b then reject
配置本地自治系统 (AS) 编号。
[edit routing-options] user@host# set autonomous-system 65001
结果
在配置模式下,输入 show protocols
、 show policy-options
和 show routing-options
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@host# show protocols bgp { group core { family inet { unicast; flow; } export p1; peer-as 65000; neighbor 10.12.99.5; } }
[edit] user@host# show policy-options policy-statement p1 { term a { from { rib inetflow.0; route-filter 10.13.0.0/16 orlonger; } then accept; } term b { then reject; } }
[edit] user@host# show routing-options autonomous-system 65001;
如果完成设备配置,请从配置模式输入 commit
。
播发所有单播和流路由
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set protocols bgp group core family inet unicast set protocols bgp group core family inet flow set protocols bgp group core export p1 set protocols bgp group core peer-as 65000 set protocols bgp group core neighbor 10.12.99.5 set policy-options policy-statement p1 term a then accept set routing-options autonomous-system 65001
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 BGP 对等会话,请执行以下操作:
配置 BGP 组。
[edit protocols bgp group core] user@host# set family inet unicast user@host# set family inet flow user@host# set export p1 user@host# set peer-as 65000 user@host# set neighbor 10.12.99.5
配置流策略。
[edit policy-options policy-statement p1] user@host# set term a then accept
配置本地自治系统 (AS) 编号。
[edit routing-options] user@host# set autonomous-system 65001
结果
在配置模式下,输入 show protocols
、 show policy-options
和 show routing-options
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@host# show protocols bgp { group core { family inet { unicast; flow; } export p1; peer-as 65000; neighbor 10.12.99.5; } }
[edit] user@host# show policy-options policy-statement p1 { term a { prefix-list inetflow; } then accept; } }
[edit] user@host# show routing-options autonomous-system 65001;
如果完成设备配置,请从配置模式输入 commit
。
播发无单播或流路由
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set protocols bgp group core family inet unicast set protocols bgp group core family inet flow set protocols bgp group core export p1 set protocols bgp group core peer-as 65000 set protocols bgp group core neighbor 10.12.99.5 set policy-options policy-statement p1 term a then reject set routing-options autonomous-system 65001
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 BGP 对等会话,请执行以下操作:
配置 BGP 组。
[edit protocols bgp group core] user@host# set family inet unicast user@host# set family inet flow user@host# set export p1 user@host# set peer-as 65000 user@host# set neighbor 10.12.99.5
配置流策略。
[edit policy-options policy-statement p1] user@host# set term a then reject
配置本地自治系统 (AS) 编号。
[edit routing-options] user@host# set autonomous-system 65001
结果
在配置模式下,输入 show protocols
、 show policy-options
和 show routing-options
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@host# show protocols bgp { group core { family inet { unicast; flow; } export p1; peer-as 65000; neighbor 10.12.99.5; } }
[edit] user@host# show policy-options policy-statement p1 { term a { then reject; } }
[edit] user@host# show routing-options autonomous-system 65001;
如果完成设备配置,请从配置模式输入 commit
。
限制路由表中安装的流路由数
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set routing-options rib inetflow.0 maximum-prefixes 1000 set routing-options rib inetflow.0 maximum-prefixes threshold 50
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
应用路由限制可能会导致不可预测的动态路由协议行为。例如,一旦达到限制并且路由被拒绝,BGP 不一定会在路由数降至限制以下后尝试重新安装被拒绝的路由。可能需要清除 BGP 会话才能解决此问题。
要限制流路由:
设置表中安装
inetflow.0
的前缀数上限。[edit routing-options rib inetflow.0] user@host# set maximum-prefixes 1000
将阈值设置为 50%,当安装 500 个路由时,系统会在系统日志中记录警告。
[edit routing-options rib inetflow.0] user@host# set maximum-prefixes threshold 50
结果
在配置模式下,输入 show routing-options
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@host# show routing-options rib inetflow.0 { maximum-prefixes 1000 threshold 50; }
如果完成设备配置,请从配置模式输入 commit
。
限制 BGP 对等会话上接收的前缀数
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit maximum 1000 set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit teardown 50 set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit drop-excess 50 set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit hide-excess 50
您可以一次包含一个 teardown <percentage>
、 drop-excess <percentage>
或 hide-excess<percentage>
语句选项。
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
为特定邻接方配置前缀限制可以更可预测地控制哪个对等方可以通告多少条流路由。
要限制前缀的数量,请执行以下操作:
将来自邻居 10.12.99.2 的 BGP 路由限制设置为 1000 个。
[edit protocols bgp group x1] user@host# set neighbor 10.12.99.2 family inet flow prefix-limit maximum 1000
-
将邻接方会话或前缀配置为在会话或前缀达到其限制时执行
teardown <percentage>
、drop-excess <percentage>
或hide-excess<percentage>
语句选项。[edit routing-options rib inetflow.0] user@host# set neighbor 10.12.99.2 family inet flow prefix-limit teardown 50 set neighbor 10.12.99.2 family inet flow prefix-limit drop-excess 50 set neighbor 10.12.99.2 family inet flow prefix-limit hide-excess 50
如果指定
teardown <percentage>
语句并指定百分比,则当前缀数达到该百分比时,将记录消息。关闭会话后,会话将在短时间内重新建立,除非您包含该idle-timeout
语句。如果指定
drop-excess <percentage>
语句并指定百分比,则当前缀数超过该百分比时,将丢弃多余的路由如果指定
hide-excess <percentage>
语句并指定百分比,则当前缀数超过该百分比时,将隐藏多余的路由。
结果
在配置模式下,输入 show protocols
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@host# show protocols bgp { group x1 { neighbor 10.12.99.2 { flow { prefix-limit { maximum 1000; teardown 50; drop-excess <percentage>; hide-excess <percentage>; } } } } } }
如果完成设备配置,请从配置模式输入 commit
。
验证
确认配置工作正常。
验证 NLRI
目的
查看为邻居启用的 NLRI。
操作
在操作模式下,运行 show bgp neighbor 10.12.99.5
命令。inet-flow
在输出中查找。
user@host> show bgp neighbor 10.12.99.5 Peer: 10.12.99.5+3792 AS 65000 Local: 10.12.99.6+179 AS 65002 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ direct ] Options: <Preference HoldTime AddressFamily PeerAS Refresh> Address families configured: inet-unicast inet-multicast inet-flow Holdtime: 90 Preference: 170 Number of flaps: 1 Error: 'Cease' Sent: 0 Recv: 1 Peer ID: 10.255.71.161 Local ID: 10.255.124.107 Active Holdtime: 90 Keepalive Interval: 30 Peer index: 0 Local Interface: e1-3/0/0.0 NLRI advertised by peer: inet-unicast inet-multicast inet-flow NLRI for this session: inet-unicast inet-multicast inet-flow Peer supports Refresh capability (2) Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 2 Received prefixes: 2 Suppressed due to damping: 0 Advertised prefixes: 3 Table inet.2 Bit: 20000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 0 Table inetflow.0 Bit: 30000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 0 Last traffic (seconds): Received 29 Sent 15 Checked 15 Input messages: Total 5549 Updates 2618 Refreshes 0 Octets 416486 Output messages: Total 2943 Updates 1 Refreshes 0 Octets 55995 Output Queue[0]: 0 Output Queue[1]: 0 Output Queue[2]: 0
验证路由
目的
查看流动路线。示例输出显示了从 BGP 获知的流路由和静态配置的流路由。
对于本地配置的流路由(在 [edit routing-options flow]
层次结构级别配置),路由由流协议安装。因此,您可以通过指定表来显示流路由,如 或 show route table instance-name.inetflow.0
中show route table inetflow.0
所示,其中instance-name
路由实例名称。或者,您可以通过运行 show route protocol flow
命令来显示跨多个路由实例的所有本地配置的流路由。
如果流路由不是本地配置的,而是从路由器的 BGP 对等方接收的,则此流路由将由 BGP 安装在路由表中。您可以通过指定表或运行 show route protocol bgp
来显示流路由,这将显示所有 BGP 路由(流和非流)。
操作
在操作模式下,运行 show route table inetflow.0
命令。
user@host> show route table inetflow.0 inetflow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 100.100.100.100,*,proto=1,icmp-type=8/term:1 *[BGP/170] 00:00:18, localpref 100, from 100.0.12.2 AS path: 2000 I, validation-state: unverified Fictitious 200.200.200.200,*,proto=6,port=80/term:2 *[BGP/170] 00:00:18, localpref 100, from 100.0.12.2 AS path: 2000 I, validation-state: unverified Fictitious
user@host> show route table inetflow.0 extensive inetflow.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden) 7.7.7.7,8.8.8.8/term:1 (1 entry, 1 announced) TSI: KRT in dfwd; Action(s): accept,count *Flow Preference: 5 Next hop type: Fictitious Address: 0x8d383a4 Next-hop reference count: 3 State: <Active> Local AS: 65000 Age: 9:50 Task: RT Flow Announcement bits (1): 0-Flow AS path: I
user@host> show route hidden inetflow.0: 2 destinations, 2 routes (0 active, 0 holddown, 2 hidden) + = Active Route, - = Last Active, * = Both 100.100.100.100,*,proto=1,icmp-type=8/term:N/A [BGP ] 00:00:17, localpref 100, from 100.0.12.2 AS path: 2000 I, validation-state: unverified Fictitious 200.200.200.200,*,proto=6,port=80/term:N/A [BGP ] 00:00:17, localpref 100, from 100.0.12.2 AS path: 2000 I, validation-state: unverified Fictitious
意义
流路由表示防火墙过滤器的术语。配置流路由时,请指定匹配条件和操作。在匹配属性中,您可以匹配源地址、目标地址和其他限定符,例如端口和协议。对于包含多个匹配条件的单个流路由,所有匹配条件都封装在该路由的前缀字段中。在流路由上发出 show route
命令时,将显示路由的前缀字段以及所有匹配条件。 10.12.44.1,*
表示匹配条件为 match destination 10.12.44.1/32
。如果输出中的前缀为 *,10.12.44.1
,则表示匹配条件为 match source 10.12.44.1/32
。如果匹配条件同时包含源和目标,则星号将替换为地址。
术语顺序号表示防火墙过滤器中正在评估的术语(流路由)的顺序。该 show route extensive
命令显示每个术语(路由)的操作。
验证流验证
目的
显示流路由信息。
操作
在操作模式下,运行 show route flow validation detail
命令。
user@host> show route flow validation detail inet.0: 0.0.0.0/0 Internal node: best match, inconsistent 10.0.0.0/8 Internal node: no match, inconsistent 10.12.42.0/24 Internal node: no match, consistent, next-as: 65003 Active unicast route Dependent flow destinations: 1 Origin: 10.255.124.106, Neighbor AS: 65003 10.12.42.1/32 Flow destination (1 entries, 1 match origin) Unicast best match: 10.12.42.0/24 Flags: Consistent 10.131.0.0/16 Internal node: no match, consistent, next-as: 65001 Active unicast route Dependent flow destinations: 5000 Origin: 10.12.99.2, Neighbor AS: 65001 10.131.0.0/19 Internal node: best match 10.131.0.0/20 Internal node: best match 10.131.0.0/21
验证防火墙过滤器
目的
显示内核中安装的防火墙过滤器。
操作
在操作模式下,运行 show firewall
命令。
user@host> show firewall Filter: __default_bpdu_filter__ Filter: __flowspec_default_inet__ Counters: Name Bytes Packets 10.12.42.1,* 0 0 196.1.28/23,* 0 0 196.1.30/24,* 0 0 196.1.31/24,* 0 0 196.1.32/24,* 0 0 196.1.56/21,* 0 0 196.1.68/24,* 0 0 196.1.69/24,* 0 0 196.1.70/24,* 0 0 196.1.75/24,* 0 0 196.1.76/24,* 0 0
当超过允许的流路由数时验证系统日志记录
目的
如果配置了安装的流路由数限制(如中所述 限制路由表中安装的流路由数),请在达到阈值时查看系统日志消息。
操作
在操作模式下,运行 show log <message>
命令。
user@host> show log message Jul 12 08:19:01 host rpd[2748]: RPD_RT_MAXROUTES_WARN: Number of routes (1000) in table inetflow.0 exceeded warning threshold (50 percent of configured maximum 1000)
当超过 BGP 对等会话上收到的前缀数时,验证系统日志记录
目的
如果配置了安装的流路由数限制(如中所述 限制 BGP 对等会话上接收的前缀数),请在达到阈值时查看系统日志消息。
操作
在操作模式下,运行 show log message 命令。
如果指定 teradown <percentage>
语句选项:
user@host> show log message Jul 12 08:44:47 host rpd[2748]: 10.12.99.2 (External AS 65001): Shutting down peer due to exceeding configured maximum prefix-limit(1000) for inet-flow nlri: 1001
如果指定 drop-excess <percentage>
语句选项:
user@host> show log message Jul 27 15:26:57 R1_re rpd[32443]: BGP_DROP_PREFIX_LIMIT_EXCEEDED: 1.1.1.2 (Internal AS 1): Exceeded drop-excess maximum prefix-limit(4) for inet-unicast nlri: 5 (instance master)
如果指定 hide-excess <percentage>
语句选项:
user@host> show log message Jul 27 15:26:57 R1_re rpd[32443]: BGP_HIDE_PREFIX_LIMIT_EXCEEDED: 1.1.1.2 (Internal AS 1): Exceeded hide-excess maximum prefix-limit(4) for inet-unicast nlri: 5 (instance master)
示例:配置 BGP 以承载 IPv6 流量规范路由
此示例说明如何为流量筛选配置 IPv6 流规范。BGP 流规范可用于自动执行流量过滤规则的域间和域内协调,以减轻拒绝服务攻击。
要求
此示例使用以下硬件和软件组件:
两台 MX 系列路由器
Junos OS 16.1 或更高版本
在启用 BGP 以承载 IPv6 流规范路由之前:
在设备接口上配置 IP 地址。
配置 BGP。
配置路由策略,用于将路由(例如静态路由、直接路由或 IGP 路由)从路由表导出到 BGP。
概述
流规范提供针对拒绝服务攻击的保护,并限制消耗带宽并在源附近停止带宽的不良流量。在早期的 Junos OS 版本中,通过 BGP 传播 IPv4 的流规范规则作为网络层可达性信息。从 Junos OS 16.1 版开始,IPv6 系列支持流规范功能,并允许传播 IPv6 和 IPv6 VPN 的流量规范规则。
拓扑学
图 7 显示了示例拓扑。路由器 R1 和路由器 R2 属于不同的自治系统。在路由器 R2 上配置 IPv6 流规范。所有传入流量都根据流规范条件进行过滤,并根据指定的操作对流量进行不同的处理。在此示例中,与流规范条件匹配的所有流向 abcd::11:11:11:10/128 的流量都将被丢弃;而接受发往 ABCD::11:11:11:30/128 且符合流规范条件的流量。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到 [edit] 层级的 CLI 中,然后从配置模式进入 commit
。
路由器 R1
set interfaces ge-1/1/4 unit 0 family inet6 address abcd::13:14:2:1/120 set interfaces lo0 unit 0 family inet6 address abcd::128:220:21:197/128 set routing-options router-id 128.220.21.197 set routing-options autonomous-system 64496 set protocols bgp group ebgp type external set protocols bgp group ebgp family inet6 unicast set protocols bgp group ebgp family inet6 flow set protocols bgp group ebgp peer-as 64497 set protocols bgp group ebgp neighbor abcd::13:14:2:2
路由器 R2
set interfaces ge-1/0/0 unit 0 family inet6 address abcd::192:2:1:1/120 set interfaces ge-1/1/5 unit 0 family inet6 address abcd::13:14:2:2/120 set interfaces lo0 unit 0 family inet6 address abcd::128:220:41:229/128 set routing-options rib inet6.0 static route abcd::11:11:11:0/120 next-hop abcd::192:2:1:2 set routing-options rib inet6.0 flow route route-1 match destination abcd::11:11:11:10/128 set routing-options rib inet6.0 flow route route-1 match protocol tcp set routing-options rib inet6.0 flow route route-1 match destination-port http set routing-options rib inet6.0 flow route route-1 match source-port 65535 set routing-options rib inet6.0 flow route route-1 then discard set routing-options rib inet6.0 flow route route-2 match destination abcd::11:11:11:30/128 set routing-options rib inet6.0 flow route route-2 match icmp6-type echo-request set routing-options rib inet6.0 flow route route-2 match packet-length 100 set routing-options rib inet6.0 flow route route-2 match dscp 10 set routing-options rib inet6.0 flow route route-2 then accept set routing-options router-id 128.220.41.229 set routing-options autonomous-system 64497 set protocols bgp group ebgp type external set protocols bgp group ebgp family inet6 unicast set protocols bgp group ebgp family inet6 flow set protocols bgp group ebgp export redis set protocols bgp group ebgp peer-as 64496 set protocols bgp group ebgp neighbor abcd::13:14:2:1 set policy-options policy-statement redis from protocol static set policy-options policy-statement redis then accept
配置路由器 R2
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要配置路由器 R2:
修改相应的接口名称、地址和其他参数后,对路由器 R1 重复此过程。
使用 IPv6 地址配置接口。
[edit interfaces] user@R2# set ge-1/0/0 unit 0 family inet6 address abcd::192:2:1:1/120 user@R2# set ge-1/1/5 unit 0 family inet6 address abcd::13:14:2:2/120
配置 IPv6 环路地址。
[edit interfaces] user@R2# set lo0 unit 0 family inet6 address abcd::128:220:41:229/128
配置路由器 ID 和自治系统 (AS) 编号。
[edit routing-options] user@R2# set router-id 128.220.41.229 user@R2# set autonomous-system 64497
配置路由器 R1 和路由器 R2 之间的 EBGP 对等会话。
[edit protocols] user@R2# set bgp group ebgp type external user@R2# set bgp group ebgp family inet6 unicast user@R2# set bgp group ebgp family inet6 flow user@R2# set bgp group ebgp export redis user@R2# set bgp group ebgp peer-as 64496 user@R2# set bgp group ebgp neighbor abcd::13:14:2:1
配置静态路由和下一跃点。因此,路由将添加到路由表中以验证此示例中的要素。
[edit routing-options] user@R2# set rib inet6.0 static route abcd::11:11:11:0/120 next-hop abcd::192:2:1:2
指定流规范条件。
[edit routing-options] user@R2# set rib inet6.0 flow route route-1 match destination abcd::11:11:11:10/128 user@R2# set rib inet6.0 flow route route-1 match protocol tcp user@R2# set rib inet6.0 flow route route-1 match destination-port http user@R2# set rib inet6.0 flow route route-1 match source-port 65535
配置操作 discard 以丢弃与指定匹配条件匹配的数据包。
[edit routing-options] user@R2# set rib inet6.0 flow route route-1 then discard
指定流规范条件。
[edit routing-options] user@R2# set rib inet6.0 flow route route-2 match destination abcd::11:11:11:30/128 user@R2# set rib inet6.0 flow route route-2 match icmp6-type echo-request user@R2# set rib inet6.0 flow route route-2 match packet-length 100 user@R2# set rib inet6.0 flow route route-2 match dscp 10
配置 accept 操作以接受与指定匹配条件匹配的数据包
[edit routing-options] user@R2# set rib inet6.0 flow route route-2 then accept
定义允许 BGP 接受静态路由的策略。
[edit policy-options] user@R2# set policy-statement redis from protocol static user@R2# set policy-statement redis then accept
结果
在配置模式下,输入 show interfaces 、show protocols、show routing-options 和 show policy-options 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。
[edit] user@R2# show interfaces ge-1/0/0 { unit 0 { family inet6 { address abcd::192:2:1:1/120; } } } ge-1/1/5 { unit 0 { family inet6 { address abcd::13:14:2:2/120; } } } lo0 { unit 0 { family inet6 { address abcd::128:220:41:229/128; } } }
[edit] user@R2# show protocols bgp { group ebgp { type external; family inet6 { unicast; flow; } export redis; peer-as 64496; neighbor abcd::13:14:2:1; } }
[edit] user@R2# show routing-options rib inet6.0 { static { route abcd::11:11:11:0/120 next-hop abcd::192:2:1:2; } flow { route route-1 { match { destination abcd::11:11:11:10/128; protocol tcp; destination-port http; source-port 65535; } then discard; } route route-2 { match { destination abcd::11:11:11:30/128; icmp6-type echo-request; packet-length 100; dscp 10; } then accept; } } } router-id 128.220.41.229; autonomous-system 64497;
[edit] user@R2# show policy-options policy-statement redis { from protocol static; then accept; }
验证
确认配置工作正常。
验证 inet6flow 表中是否存在 IPv6 流规范路由
目的
在路由器 R1 和 R2 中显示表中的 inet6flow
路由,并验证 BGP 是否已学习流路由。
操作
在操作模式下,在路由器 R1 上运行 show route table inet6flow.0 extensive 命令。
user@R1> show route table inet6flow.0 extensive inet6flow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535/term:1 (1 entry, 1 announced) TSI: KRT in dfwd; Action(s): discard,count *BGP Preference: 170/-101 Next hop type: Fictitious, Next hop index: 0 Address: 0x9b24064 Next-hop reference count: 2 State:<Active Ext> Local AS: 64496 Peer AS: 64497 Age: 20:55 Validation State: unverified Task: BGP_64497.abcd::13:14:2:2 Announcement bits (1): 0-Flow AS path: 64497 I Communities: traffic-rate:64497:0 Accepted Validation state: Accept, Originator: abcd::13:14:2:2, Nbr AS: 64497 Via: abcd::11:11:11:0/120, Active Localpref: 100 Router ID: 128.220.41.229 abcd::11:11:11:30/128,*,icmp6-type=128,len=100,dscp=10/term:2 (1 entry, 1 announced) TSI: KRT in dfwd; Action(s): accept,count *BGP Preference: 170/-101 Next hop type: Fictitious, Next hop index: 0 Address: 0x9b24064 Next-hop reference count: 2 State: <Active Ext> Local AS: 64496 Peer AS: 64497 Age: 12:51 Validation State: unverified Task: BGP_64497.abcd::13:14:2:2 Announcement bits (1): 0-Flow AS path: 64497 I Accepted Validation state: Accept, Originator: abcd::13:14:2:2, Nbr AS: 64497 Via: abcd::11:11:11:0/120, Active Localpref: 100 Router ID: 128.220.41.229
在操作模式下, show route table inet6flow.0 extensive 在路由器 R2 上运行命令。
user@R2> show route table inet6flow.0 extensive inet6flow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535/term:1 (1 entry, 1 announced) TSI: KRT in dfwd; Action(s): discard,count Page 0 idx 0, (group pe-v6 type External) Type 1 val 0xaec8850 (adv_entry) Advertised metrics: Nexthop: Self AS path: [64497] Communities: traffic-rate:64497:0 Path abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535 Vector len 4. Val: 0 *Flow Preference: 5 Next hop type: Fictitious, Next hop index: 0 Address: 0x9b24064 Next-hop reference count: 3 State: <Active> Local AS: 64497 Age: 14:21 Validation State: unverified Task: RT Flow Announcement bits (2): 0-Flow 1-BGP_RT_Background AS path: I Communities: traffic-rate:64497:0 abcd::11:11:11:30/128,*,proto=17,port=65535/term:2 (1 entry, 1 announced) TSI: KRT in dfwd; Action(s): accept,count Page 0 idx 0, (group pe-v6 type External) Type 1 val 0xaec8930 (adv_entry) Advertised metrics: Nexthop: Self AS path: [64497] Communities: Path abcd::11:11:11:30/128,*,proto=17,port=65535 Vector len 4. Val: 0 *Flow Preference: 5 Next hop type: Fictitious, Next hop index: 0 Address: 0x9b24064 Next-hop reference count: 3 State: <Active> Local AS: 64497 Age: 14:21 Validation State: unverified Task: RT Flow Announcement bits (2): 0-Flow 1-BGP_RT_Background AS path: I
意义
表中存在路由 abcd::11:11:11:10/128 和 abcd::11:11:11:30/128 inet6flow
确认 BGP 已获知流路由。
验证 BGP 摘要信息
目的
验证 BGP 配置是否正确。
操作
在操作模式下, show bgp summary 在路由器 R1 和 R2 上运行命令。
user@R1> show bgp summary Groups: 1 Peers: 1 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending inet6.0 1 1 0 0 0 0 inet6flow.0 2 2 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... abcd::13:14:2:2 2000 58 58 0 2 19:48 Establ inet6.0: 1/1/1/0 inet6flow.0: 2/2/2/0 user@R2> show bgp summary Groups: 1 Peers: 1 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending inet6.0 0 0 0 0 0 0 inet6flow.0 0 0 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... abcd::13:14:2:1 64496 51 52 0 0 23:03 Establ inet6.0: 0/0/0/0 inet6flow.0: 0/0/0/0
意义
验证表是否 inet6.0
包含 BGP 邻接方地址,并且已与其 BGP 邻接方建立对等会话。
验证流验证
目的
显示流路由信息。
操作
在操作模式下,在路由器 R1 上运行 show route flow validation 命令。
user@R1> show route flow validation inet6.0: abcd::11:11:11:0/120 Active unicast route Dependent flow destinations: 2 Origin: abcd::13:14:2:2, Neighbor AS: 64497 abcd::11:11:11:10/128 Flow destination (1 entries, 1 match origin, next-as) Unicast best match: abcd::11:11:11:0/120 Flags: Consistent abcd::11:11:11:30/128 Flow destination (1 entries, 1 match origin, next-as) Unicast best match: abcd::11:11:11:0/120 Flags: Consistent
意义
输出显示表中的 inet6.0
流路由。
验证 IPv6 路由的流量规范
目的
显示基于指定的流量规范路由丢弃和接受的数据包数。
操作
在操作模式下, show firewall filter_flowspec_default_inet6_ 在路由器 R2 上运行命令。
user@R2> show firewall filter __flowspec_default_inet6__ Filter: __flowspec_default_inet6__ Counters: Name Bytes Packets abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535 0 0 abcd::11:11:11:30/128,*,proto=17,port=65535 6395472 88826
意义
输出指示发往 abcd::11:11:11:10/128 的数据包将被丢弃,路由 abcd:::11:11:11:11:11:30/128 已接受 88826 个数据包。
配置 BGP 流规范操作重定向至 IP 以过滤 DDoS 流量
从 Junos OS 版本 18.4R1 开始,支持 BGP 流规范互联网草案draft-ietf-idr-flowspec-redirect-ip-02.txt重定向 至 IP 操作 中所述的 BGP 流规范。重定向至“IP 操作”使用扩展的 BGP 社区为服务提供商网络中的 DDoS 缓解提供流量过滤选项。旧版流规范重定向到 IP 使用 BGP 下一跃点属性。默认情况下,Junos OS 使用扩展社区通告重定向到 IP 流规范操作。此功能是支持虚拟服务控制网关 (vSCG) 中的服务链所必需的。重定向至 IP 操作允许将匹配的流规范流量转移到全局可访问的地址,该地址可以连接到过滤设备,该过滤设备可以过滤 DDoS 流量并将干净的流量发送到出口设备。
在开始将流量重定向到 BGP 流规范路由的 IP 之前,请执行以下操作:
配置设备接口。
配置 OSPF 或任何其他 IGP 协议。
配置 MPLS 和 LDP。
配置 BGP。
使用 BGP 扩展社区配置重定向到 IP 功能。
使用 nexthop 属性配置旧版流规范重定向到 IP 功能。
您无法将策略配置为使用 BGP 扩展社区将流量重定向到某个 IP 地址,并将旧版重定向到下一跃点 IP 地址。
将旧版流量规范重定向配置为互联网草案draft-ietf-idr-flowspec-redirect-ip-00.txt中指定的 IP,BGP 流规范扩展社区,以便流量重定向到层次结构级别的 IP 下一跃点 。
[edit group bgp-group neighbor bgp neighbor family inet flow] user@host# set legacy-redirect-ip-action
定义与下一跃点属性匹配的策略。
[edit policy options] user@host#policy statement policy_name user@host#from community community-name user@host#from next-hop ip-address
例如,定义策略 p1 以将流量重定向到下一跃点 IP 地址 10.1.1.1。
[edit policy options] user@host#policy statement p1 user@host#from community redirnh user@host#from next-hop 10.1.1.1
定义一个策略,以使用旧版流量规范下一跃点属性重定向到 IP 操作来设置、添加或删除 BGP 社区。
[edit policy-options] user@host# policy-statement policy_name user@host# then community set community-name user@host# then community add community-name user@host# then community delete community-name user@host# then next-hop next-hop-address
例如,定义策略 p1 并设置、添加或删除 BGP 社区 redirnh 以将 DDoS 流量重定向到下一跃点 IP 地址 10.1.1.1。
[edit policy-options policy-statement p1] user@host# then community set redirnh user@host# then community add redirnh user@host# then community delete redirnh user@host# then next-hop 10.1.1.1
另请参阅
使用 BGP 流规范 DSCP 操作转发流量
配置 BGP 流规范 (FlowSpec) DSCP 操作,以有效地使用转发类和丢失优先级信息跨网络转发数据包。
BGP FlowSpec DSCP 操作转发数据包的优势
-
将流量转发到预期的 COS 队列,在该队列中,COS 策略将正确应用于流量。
-
根据预配的 DSCP 值影响本地转发行为(例如,隧道的选择)。
-
有助于有效管理网络上的流量。
当数据包进入路由器时,数据包会经过入口接口应用的功能(如防火墙、COS 等)。在入口接口上配置 BGP FlowSpec 过滤器时,将根据 DSCP 操作将过滤器应用于每个路由实例的数据包。DSCP 操作对数据包进行分类和重写,同时通过 BGP FlowSpec 筛选器更改 DSCP 代码。根据转发类和丢失优先级信息,将数据包放入正确的转发队列。仅当满足特定匹配条件时,数据包才会通过流路由传输。匹配条件可以是源和目的 IP 地址、源和目的端口、DSCP、协议号等。转发等级和丢失优先级信息通过反向映射表进行更新。
下面是在服务提供商和企业客户网络之间建立的 BGP 会话的拓扑。
在此拓扑中,在服务提供商和企业客户网络之间为 BGP FlowSpec 配置 BGP 会话。BGP FlowSpec 过滤器同时应用于 PE1 和 PE2 路由器。进入这些路由器的数据包将根据 BGP FlowSpec 过滤器和 DSCP 操作进行重写。
要在设备上启用 BGP FlowSpec 过滤器,您需要在 [edit forwarding-options family (inet | inet6)
] 层次结构级别添加dscp-mapping-classifier
配置语句:
forwarding-options { family inet { dscp-mapping-classifier ipv4-classifer; } family inet6 { dscp-mapping-classifier ipv6-classifer; } }
以下示例服务类配置将 DSCP 代码点映射到转发类和丢失优先级:
class-of-service { classifiers { dscp dscp1 { forwarding-class best-effort { loss-priority low code-points 000000; } } } }
变更历史表
是否支持某项功能取决于您使用的平台和版本。 使用 Feature Explorer 查看您使用的平台是否支持某项功能。
extended-community
过滤操作。