BGP引流是一种常用的引流方式。清洗设备通过BGP向路由器发布UNR路由,将防护对象的流量引导至清洗设备。在引流路由器、清洗设备和ATIC管理中心上均需要配置。
如图1所示,Router1的GE1/0/1接口与清洗设备的GE2/0/1接口之间建立引流通道,GE2/0/1为清洗口,GE2/0/2为回注口。通过配置引流任务,在清洗设备上生成32位主机UNR路由。在清洗设备和对端路由器Router1上配置BGP功能,并将这条UNR路由导入BGP中,由BGP将UNR路由发布给Router1。
下面以引流模式为自动引流,防护对象为1.1.1.1/32为例,介绍BGP引流的实现机制:
在管理中心界面,为防护对象配置引流模式,动态生成引流任务。配置过程请参见配置防御模式。也可手工创建静态引流任务,配置过程请参见配置BGP引流(通过ATIC)。
生成的引流任务下发到清洗设备上后,生成相应命令行:firewall ddos traffic-diversion [ vpn-instance vpn-instance-name ] ip ip-address [ mask | mask-length ] [ ip-link name ],或者firewall ddos traffic-diversion [ vpn6-instance vpn6-instance-name ] ipv6 ipv6-address [ mask-length ]。
上述两个步骤配置完成后,清洗设备上将会生成一条UNR路由。例如,在管理中心对IP地址为1.1.1.1/32的防护对象配置自动引流模式,并在清洗设备上执行命令firewall ddos bgp-next-hop 2.2.2.2后,当检测设备检测到1.1.1.1/32异常时,清洗设备上将会生成一条目的地址为1.1.1.1/32,下一跳为2.2.2.2的UNR路由。
清洗设备上生成的这条UNR路由还有回注的功能。当流量引流到清洗设备上,完成清洗后,流量可以通过清洗设备之前生成的UNR路由,再被送回到Router1的接口GE1/0/2。这种情况下,为避免流量再被Router1送回清洗设备,形成环路,需要在接口GE1/0/2上配置策略路由。通过策略路由将流量送到下行路由器Router2,最终将报文送到防护对象。
然而,在有些场景中,比如存在多条回注链路时,并不能简单的使用清洗设备上的这条UNR路由实现流量的回注。此时需要过滤清洗设备生成的这条UNR路由,使其不下发到FIB表中,不能影响回注流量,同时配置其他回注策略,将流量送回原链路。
在清洗设备上,过滤这条UNR路由的命令为:
[sysname] firewall ddos bgp-next-hop fib-filter [ ipv6 ]
请用户根据实际的部署情况,选择是否配置本命令:
BGP引流在清洗设备上的配置过程如下。
执行命令firewall ddos bgp-next-hop { ip-address | ipv6 ipv6-address },配置动态生成路由时使用的下一跳地址。
ip-address为清洗设备回注接口的下一跳IP地址,即与清洗设备回注接口直连的路由器接口的IP地址。ip-address不能是清洗设备上接口的IP地址。
清洗设备只支持配置一个下一跳地址,多次执行本命令,新配置的IP地址只会覆盖原有配置。
(可选)执行命令firewall ddos bgp-next-hop fib-filter [ ipv6 ],配置对生成的UNR路由进行FIB过滤。
配置本命令后,动态生成的UNR路由不下发FIB表。
(可选)执行如下命令,配置BGP团体属性。
请用户根据实际组网需求进行BGP团体属性配置。通常情况下,为避免路由环路,建议用户配置该过滤策略。
执行命令bgp { as-number-plain | as-number-dot },启动BGP(指定本地AS编号),进入BGP视图。
as-number为自治系统号,取值范围是1~65535。
执行如下命令,配置BGP发布动态生成的路由。
(可选)执行命令ipv4-family vpn-instance vpn-instance-name,进入BGP-VPN实例视图。
当回注方式为MPLS VPN回注时,清洗设备作为PE设备,需要在引流接口绑定VPN实例。因此在使用BGP引流时,需要在BGP-VPN实例视图下配置BGP对等体。
执行命令peer ipv4-address as-number { as-number-plain | as-number-dot },指定对等体的IP地址及其所属的AS编号。
as-number所指定对等体所属的AS编号应该和本地AS号相同。
ipv4-address为直连对等体的接口IP地址,即直连路由器Router1接口GE1/0/1的IP地址。
执行命令import-route unr [ med med | route-policy route-policy-name ] *,配置BGP引入UNR路由。
执行本命令后,系统会将生成的路由引入到BGP中,并通过BGP发布到接入路由设备,实现引流的功能。
如图2所示,检测设备和清洗设备以旁路方式部署到网络中,对到达防护对象的流量进行检测和清洗。在清洗设备上配置BGP引流,当检测设备检测到防护对象流量异常时,管理中心自动下发引流策略,清洗设备发布引流路由将异常流量引导至清洗设备进行清洗,清洗后再将正常流量回送到原有链路继续转发。
假设某防护对象的IP地址为2.2.2.0/24,当检测到去往2.2.2.2/32的流量异常时,需要将去往2.2.2.2/32的流量自动引流到清洗设备进行清洗,配置过程如下:
在清洗设备上,配置生成动态路由时使用的下一跳地址。
<sysname> system-view [sysname] firewall ddos bgp-next-hop 7.7.2.2
此处的7.7.2.2为与清洗设备回注接口直连路由器接口GE1/0/2的IP地址。
如果使用MPLS、GRE等回注方式,需要配置firewall ddos bgp-next-hop fib-filter命令,使生成的UNR路由不下发FIB表,避免影响MPLS或GRE转发。
配置BGP团体属性,及发布动态生成的路由。
[sysname] route-policy 1 permit node 1 [sysname-route-policy] apply community no-advertise [sysname-route-policy] quit [sysname] bgp 100 [sysname-bgp] peer 7.7.1.2 as-number 100 [sysname-bgp] import-route unr [sysname-bgp] ipv4-family unicast [sysname-bgp-af-ipv4] peer 7.7.1.2 route-policy 1 export [sysname-bgp-af-ipv4] peer 7.7.1.2 advertise-community [sysname-bgp-af-ipv4] quit [sysname-bgp] quit
完成上述配置后,生成的UNR路由会被引入到BGP中,并通过BGP发布到Router1,实现引流的功能。
本节以华为NE80E为例,介绍路由器的BGP相关配置。Router1需要完成以下配置,与清洗设备共同实现BGP引流功能。不同版本的路由器配置不同,请根据实际路由器版本进行配置,以下配置仅供参考。
执行命令peer ipv4-address as-number as-number,指定对等体的IP地址及其所属的AS编号。
as-number指定对等体所属的AS编号,支持IBGP和EBGP两种。
ipv4-address为直连对等体的接口IP地址,即清洗设备接口GE2/0/1的IP地址。