配置BGP引流(通过CLI)

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 BGP引流

下面以引流模式为自动引流,防护对象为1.1.1.1/32为例,介绍BGP引流的实现机制:

  1. 当到达防护对象IP地址1.1.1.1/32的流量发生异常时,管理中心自动下发一条引流任务到清洗设备。清洗设备上生成一条32位主机UNR路由,UNR路由目的IP地址为防护对象1.1.1.1/32,下一跳为与清洗设备回注接口直连的Router1接口GE1/0/2。
  2. 清洗设备的清洗口GE2/0/1与Router1的接口GE1/0/1建立BGP Peer,清洗设备把生成的UNR路由通过BGP发布给Router1。
  3. 路由发布给Router1后,生成一条目的IP地址为1.1.1.1/32,出接口指向清洗设备的接口GE2/0/1的32位主机路由。
  4. 后续Router1收到Internet发来的目的地址为1.1.1.1/32的报文时,查找路由表,根据最长掩码匹配原则,优先将报文从Router1的GE1/0/1接口送到清洗设备的GE2/0/1接口,实现引流。
说明:
  • UNR(User Network Route,用户网络路由)是一种私有路由,与IGP、BGP、OSPF、静态路由、直连路由等公有路由一样,可以添加到路由表中指导转发。
  • 为避免引流失败,请检查路由器上是否存在优先级高于引流路由的路由。
在上述实现机制中,清洗设备上的32位主机UNR路由,需要命令行和管理中心结合配置,才能生成。步骤如下:
  1. 清洗设备上,执行命令firewall ddos bgp-next-hop { ip-address | ipv6 ipv6-address },配置生成路由时使用的下一跳地址。即与清洗设备回注接口直连的Router1接口GE1/0/2。
  2. 在管理中心界面,为防护对象配置引流模式,动态生成引流任务。配置过程请参见配置防御模式。也可手工创建静态引流任务,配置过程请参见配置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 ]

请用户根据实际的部署情况,选择是否配置本命令:

  • 如果使用UNR路由回注方式,由于清洗设备需要根据生成的UNR路由将流量转发至接入路由设备,因此不能配置此命令。
  • 如果使用静态路由回注方式,为了避免生成的UNR路由影响静态路由转发,需要配置此命令。
  • 如果使用GRE回注方式,为了避免生成的UNR路由影响GRE转发,需要配置此命令。
  • 如果使用MPLS LSP回注方式,为了避免生成的UNR路由影响MPLS转发,需要配置此命令。
  • 如果使用MPLS VPN回注方式,为了避免生成的UNR路由影响MPLS转发,需要配置此命令。
  • 如果存在多条回注链路,并且清洗设备已经通过OSPF等路由协议学习到了去往防护对象地址的路由,为了避免生成的UNR路由影响OSPF转发,需要配置此命令。

配置清洗设备

BGP引流在清洗设备上的配置过程如下。

  1. 在用户视图下执行命令system-view,进入系统视图。
  2. 执行命令firewall ddos bgp-next-hop { ip-address | ipv6 ipv6-address },配置动态生成路由时使用的下一跳地址。

    ip-address为清洗设备回注接口的下一跳IP地址,即与清洗设备回注接口直连的路由器接口的IP地址。ip-address不能是清洗设备上接口的IP地址。

    清洗设备只支持配置一个下一跳地址,多次执行本命令,新配置的IP地址只会覆盖原有配置。

  3. (可选)执行命令firewall ddos bgp-next-hop fib-filter [ ipv6 ],配置对生成的UNR路由进行FIB过滤。

    配置本命令后,动态生成的UNR路由不下发FIB表。

  4. (可选)执行如下命令,配置BGP团体属性。

    说明:

    请用户根据实际组网需求进行BGP团体属性配置。通常情况下,为避免路由环路,建议用户配置该过滤策略。

    1. 系统视图下,执行命令route-policy route-policy-name { permit | deny } node node,创建路由策略的节点,并进入路由策略的视图。
    2. 执行命令apply community no-advertise,不向任何对等体发送匹配的路由。
    3. 执行命令quit,返回系统视图。
    4. 执行命令bgp { as-number-plain | as-number-dot },启动BGP(指定本地AS编号),进入BGP视图。

      as-number为自治系统号,取值范围是1~65535。

    5. 执行命令ipv4-family unicast,进入IPv4单播地址族视图。
    6. 执行命令peer { ipv4-address | group-name } advertise-community,将标准团体属性传给对等体/对等体组。
    7. 执行命令peer { ipv4-address | group-name } route-policy route-policy-name export,配置出方向的路由策略。
  5. 执行如下命令,配置BGP发布动态生成的路由。

    1. 执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
    2. (可选)执行命令ipv4-family vpn-instance vpn-instance-name,进入BGP-VPN实例视图。

      当回注方式为MPLS VPN回注时,清洗设备作为PE设备,需要在引流接口绑定VPN实例。因此在使用BGP引流时,需要在BGP-VPN实例视图下配置BGP对等体。

    3. 执行命令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地址。

    4. 执行命令import-route unr [ med med | route-policy route-policy-name ] *,配置BGP引入UNR路由。

      执行本命令后,系统会将生成的路由引入到BGP中,并通过BGP发布到接入路由设备,实现引流的功能。

任务示例

图2所示,检测设备和清洗设备以旁路方式部署到网络中,对到达防护对象的流量进行检测和清洗。在清洗设备上配置BGP引流,当检测设备检测到防护对象流量异常时,管理中心自动下发引流策略,清洗设备发布引流路由将异常流量引导至清洗设备进行清洗,清洗后再将正常流量回送到原有链路继续转发。

图2 配置BGP引流举例

假设某防护对象的IP地址为2.2.2.0/24,当检测到去往2.2.2.2/32的流量异常时,需要将去往2.2.2.2/32的流量自动引流到清洗设备进行清洗,配置过程如下:

  1. 在清洗设备上,配置生成动态路由时使用的下一跳地址。

    <sysname> system-view
    [sysname] firewall ddos bgp-next-hop 7.7.2.2

    此处的7.7.2.2为与清洗设备回注接口直连路由器接口GE1/0/2的IP地址。

  2. 在管理中心,选择防御 > 策略配置 > 防护对象,配置防护对象IP地址为2.2.2.0/24。
  3. 在管理中心,选择防御 > 策略配置 > 防护对象,为此防护对象配置引流模式为“自动”
  4. 当到达防护对象2.2.2.2/32的流量发生异常时,管理中心会自动向清洗设备下发引流任务,清洗设备上会生成一条到达2.2.2.2的UNR路由,下一跳为7.7.2.2,并下发到FIB表中。清洗后的流量会匹配此表项后转发至Router1的GE1/0/2接口。

    如果使用MPLS、GRE等回注方式,需要配置firewall ddos bgp-next-hop fib-filter命令,使生成的UNR路由不下发FIB表,避免影响MPLS或GRE转发。

  5. 配置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引流功能。不同版本的路由器配置不同,请根据实际路由器版本进行配置,以下配置仅供参考。

  1. 执行命令system-view,进入系统视图。
  2. 执行命令bgp as-number,进入BGP视图。
  3. 执行命令peer ipv4-address as-number as-number,指定对等体的IP地址及其所属的AS编号。

    as-number指定对等体所属的AS编号,支持IBGP和EBGP两种。

    ipv4-address为直连对等体的接口IP地址,即清洗设备接口GE2/0/1的IP地址。


华为专有和保密信息
版权所有 © 华为技术有限公司