国家 / 地区

09-ACL和QoS配置指导

05-Flowspec配置

本章节下载  (190.76 KB)

docurl=/cn/Service/Document_Software/Document_Center/Routers/Catalog/CR/CR19000/Configure/Operation_Manual/H3C_CR19000_CG-E1511-5W200/09/201905/1185294_30005_0.htm

05-Flowspec配置


1 Flowspec

1.1  Flowspec简介

Flowspec(Flow Specification,流规格)用来实现对BGP网络中的非法流量进行过滤与巡查,以减轻DoS(Denial of Service,拒绝服务)攻击和DDoS(Distributed Denial of Service,分布式拒绝服务)攻击对网络的影响。借助BGP路由更新,Flowspec针对攻击流量的特点,可集中配置和管理匹配规则以及流量动作,并快速地将匹配规则和流量动作应用到其他BGP路由器中。

1.1.1  Flowspec设备角色

·     Flowspec路由器:也称为Flowspec控制器,为BGP网络中的BGP路由器,通过BGP Update报文,向Flowspec边界路由器传递包含匹配规则以及流量动作的Flowspec路由。

·     Flowspec边界路由器:也称为Flowspec客户端,为BGP网络中的BGP路由器,可接收BGP Update报文中Flowspec路由器创建地Flowspec路由。

配置Flowspec时,应选取BGP网络中的一台BGP路由器作为Flowspec路由器,网络中的其他BGP路由器作为Flowspec边界路由器。

1.1.2  Flowspec工作原理

为支持Flowspec,MP-BGP定义了Flowspec IPv4地址族和Flowspec VPNv4 地址族,并新增了Flowspec NLRI(Network Layer Reachability Information,网络层可达性信息),即Flowspec路由。通过Flowspec IPv4地址族和Flowspec VPNv4 地址族,Flowspec可以将携带匹配规则和流量动作的Flowspec路由在公网和VPN实例中进行传播。

图1-1所示,通过BGP路由更新的形式,Flowspec路由器向Flowspec边界路由器发布Flowspec路由,Flowspec边界路由器收到Flowspec路由后,将Flowspec路由中的匹配规则和流量动作应用到设备的转发平面,从而对进入设备的流量采取适当的流量动作。Flowspec路由同样也支持跨AS传输,从而实现在最接近攻击源的设备上对攻击流量进行管控,这样能够最大程度地减少攻击流量对网络转发性能的影响。

图1-1 Flowspec原理图

 

1.2  Flowspec配置任务简介

Flowspec配置任务如下:

(1)     创建并激活Flowspec路由

需要在Flowspec路由器上创建并激活Flowspec路由。

(2)     应用Flowspec路由

¡     在公网中应用Flowspec路由

¡     VPN实例中应用Flowspec路由

需要在Flowspec路由器上应用Flowspec路由。

(3)     配置BGP发布Flowspec路由

¡     配置BGP发布公网Flowspec路由

¡     配置BGP发布VPN实例Flowspec路由

需要在Flowspec路由器和Flowspec边界路由器上配置BGP发布Flowspec路由。

(4)     (可选)配置BGP Flowspec路由反射

需要在Flowspec路由器上配置BGP Flowspec路由反射。

1.3  Flowspec配置准备

配置Flowspec前,需要在Flowspec路由器和Flowspec边界路由器上配置BGP基本功能,具体配置请参见“三层技术-IP路由配置指导”中的“BGP”。

1.4  创建并激活Flowspec路由

(1)     进入系统视图。

system-view

(2)     创建Flowspec路由。

flow-route flowroute-name

(3)     定义Flowspec路由的报文匹配规则。

if-match match-criteria

(4)     配置Flowspec路由的流量动作。

apply action

(5)     (可选)检查Flowspec路由下未生效的匹配规则及流量动作。

check flow-route-configuration

(6)     激活Flowspec路由中的匹配规则及流量动作。

commit

缺省情况下,Flowspec路由下配置的匹配规则及流量动作未生效。

1.5  应用Flowspec路由

1.5.1  在公网中应用Flowspec路由

(1)     进入系统视图。

system-view

(2)     进入Flowspec视图。

flowspec

(3)     创建Flowspec IPv4地址族。

address-family ipv4

(4)     应用已创建的Flowspec路由。

flow-route flowroute-name

缺省情况下,公网中未应用Flowspec路由。

1.5.2  在VPN实例中应用Flowspec路由

(1)     进入系统视图。

system-view

(2)     配置VPN实例。

a.     创建VPN实例,并进入VPN实例视图。

ip vpn-instance vpn-instance-name

b.     配置VPN实例的RD。

route-distinguisher route-distinguisher

缺省情况下,未配置VPN实例的RD。

c.     配置VPN实例的RT。

vpn-target { vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] | auto }

缺省情况下,未配置VPN实例的Route Target。

关于ip vpn-instanceroute-distinguishervpn-target命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。

(3)     进入IPv4 Flowspec VPN地址族视图。

address-family ipv4 flowspec

(4)     配置VPN实例下IPv4 Flowspec VPN的VPN target。

vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]

缺省情况下,未配置VPN实例下IPv4 Flowspec VPN的VPN target。

IPv4 Flowspec VPN的VPN target必须与之前配置的VPN实例的Route target保持一致。

(5)     依次执行以下命令退回系统视图。

a.     quit

b.     quit

(6)     进入Flowspec视图。

flowspec

(7)     创建Flowspec IPv4 VPN实例地址族并关联已创建的VPN实例。

address-family ipv4 vpn-instance vpn-instance-name

(8)     应用已创建的Flowspec路由。

flow-route flowroute-name

缺省情况下,VPN实例中未应用Flowspec路由。

1.6  配置BGP发布Flowspec路由

1.6.1  配置限制和指导

关于bgppeer enable命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP命令”。

1.6.2  配置BGP发布公网Flowspec路由

1. 功能简介

设备接收到公网Flowspec路由后,缺省会对来自BGP Flowspec邻居的Flowspec路由及路由重定向下一跳的合法性进行验证。

·     Flowspec路由合法指的是:

¡     Flowspec路由携带了匹配目的地址的规则。

¡     BGP Flowspec邻居存在匹配规则中目的地址为目的地址的BGP路由。

在不关注Flowspec路由的合法性的情况下,可以关闭本功能,BGP Flowspec邻居收到Flowspec路由后,不进行合法性验证执行该匹配规则对应的流量动作。

·     Flowspec路由的重定向下一跳合法指的是:

¡     BGP Flowspec邻居上存在重定向到下一跳地址的BGP路由。

¡     下一跳的地址与BGP Flowspec邻居在同一AS。

在不关注Flowspec路由重定向下一跳的合法性的情况下,可以关闭本功能,BGP Flowspec邻居收到Flowspec路由后,不进行合法性验证执行重定向动作。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ] [ multi-session-thread ]

(3)     创建BGP IPv4 Flowspec地址族。

address-family ipv4 flowspec

(4)     允许BGP Flowspec邻居间交换路由信息。

peer { group-name | ipv4-address [ mask-length ] } enable

缺省情况下,BGP Flowspec邻居间不能交换路由信息。

(5)     (可选)关闭对来自BGP Flowspec邻居的Flowspec路由的合法性验证功能。

peer { group-name | ip-address [ mask-length ] } validation-disable

缺省情况下,对来自BGP Flowspec邻居的Flowspec路由进行合法性验证,通过合法性验证后才会执行Flowspec路由中的流量动作。

(6)     (可选)关闭对来自BGP Flowspec邻居的Flowspec路由的重定向下一跳合法性验证功能。

peer { group-name | ip-address [ mask-length ] } validation-redirect-disable

缺省情况下,对来自EBGP Flowspec邻居的Flowspec路由进行重定向下一跳合法性验证,通过合法性检验后才会执行Flowspec路由中的重定向动作。

(7)     (可选)配置向对等体发送路由时不改变下一跳。

peer { group-name | ipv4-address [ mask-length ] } next-hop-invariable

缺省情况下,向对等体/对等体组发布路由时会将下一跳改为自己的地址。

1.6.3  配置BGP发布VPN实例Flowspec路由

(1)     进入系统视图。

system-view

(2)     进入BGP实例视图。

bgp as-number [ instance instance-name ] [ multi-session-thread ]

(3)     创建BGP VPNv4 Flowspec地址族。

address-family vpnv4 flowspec

(4)     允许BGP Flowspec邻居间交换路由信息。

peer { group-name | ipv4-address [ mask-length ] } enable

缺省情况下,BGP Flowspec邻居间不能交换路由信息。

1.7  配置BGP Flowspec路由反射

1.7.1  配置Flowspec路由反射器

1. 功能简介

路由反射用来解决IBGP对等体需要全连接的问题。在一个AS内,一台路由器作为RR(Route Reflector,路由反射器),其它路由器作为客户机(Client)与路由反射器建立IBGP连接。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立BGP连接。

路由反射器及其客户机形成了一个集群。通常情况下,一个集群中只有一个路由反射器,该反射器的Router ID就作为集群ID,用于识别该群。

2. 配置步骤

(1)     进入系统视图

system-view

(2)     进入BGP IPv4 Flowspec地址族视图、BGP VPNv4 Flowspec地址族视图。

¡     请依次执行以下命令进入BGP IPv4 Flowspec地址族视图。

bgp as-number [ instance instance-name ]

address-family ipv4 flowspec

¡     请依次执行以下命令进入BGP VPNv4 Flowspec地址族视图。

bgp as-number [ instance instance-name ]

address-family vpnv4 flowspec

(3)     配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。

peer { group-name | ipv4-address [ mask-length ] } reflect-client

缺省情况下,未配置路由反射器及其客户机。

(4)     (可选)配置不对接收到的VPNv4 Flowspec路由进行Route Target过滤。

undo policy vpn-target

缺省情况下,对接收到的VPNv4 Flowspec路由进行Route Target过滤,即只将Export Route Target属性与本地Import Route Target属性匹配的VPNv4 Flowspec路由加入到路由表。

本命令仅支持在BGP VPNv4 Flowspec地址族视图执行。

(5)     (可选)允许路由反射器在客户机之间反射路由。

reflect between-clients

缺省情况下,允许路由反射器在客户机之间反射路由。

(6)     (可选)配置路由反射器的集群ID。

reflector cluster-id { cluster-id | ipv4-address }

缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。

1.8  Flowspec显示和维护

在任意视图下执行display命令可以显示Flowspec在BGP网络中的运行情况,通过查看显示信息验证配置的效果。

在用户视图下执行resetrefresh命令可以复位BGP Flowspec地址族下的BGP会话。

关于Flowspec显示和维护命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP命令”。

表1-1 Flowspec显示和维护

操作

命令

BGP Flowspec对等体信息

display bgp [ instance instance-name ] peer ipv4 flowspec [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ]

显示BGP VPNv4 Flowspec对等体信息

display bgp [ instance instance-name ] peer vpnv4 flowspec [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ]

显示BGP IPv4 Flowspec路由信息

display bgp [ instance instance-name ] routing-table ipv4 flowspec [ vpn-instance vpn-instance-name ] [ flowspec-prefix [ advertise-info ] | statistics ]

display bgp [ instance instance-name ] routing-table ipv4 flowspec peer ipv4-address { advertised-routes | received-routes } [ flowspec-prefix | statistics ]

显示BGP VPNv4 Flowspec信息

display bgp [ instance instance-name ] routing-table vpnv4 flowspec [ peer ipv4-address { advertised-routes | received-routes } [ flowspec-prefix | statistics ] | [ route-distinguisher route-distinguisher ] [ flowspec-prefix [ advertise-info ] ] | statistics ]

显示BGP IPv4 Flowspec地址族下打包组的相关信息

display bgp [ instance instance-name ] update-group ipv4 flowspec [ ipv4-address ]

显示BGP VPNv4 Flowspec地址族下打包组的相关信息

display bgp [ instance instance-name ] update-group vpnv4 flowspec [ ipv4-address ]

显示Flowspec边界路由器上Flowspec路由的运行信息

display flow-route { all | flow-route-id | [ instance instance-name ] [ ip [ vpn-instance vpn-instance-name ] ] } [ chassis chassis-number slot slot-number[ cpu cpu-number ] ]

手工对BGP会话进行软复位

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv4 flowspec

手工对VPNv4地址族下的BGP会话进行软复位

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } vpnv4 [ vpn-instance vpn-instance-name ]

复位BGP IPv4 Flowspec地址族下的BGP会话

reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 flowspec

复位BGP VPNv4 Flowspec地址族下的BGP会话

reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | internal | group group-name } vpnv4 flowspec

 

1.9  Flowspec典型配置举例

1.9.1  Flowspec基本组网配置举例

1. 组网需求

图1-2所示,所有路由器均运行BGP协议。Device A作为Flowspec控制器,配置了Flowspec路由,Device B作为Flowspec客户端,通过BGP协议接收并应用Device A发送的Flowspec路由。现要求对BGP网络中PE设备收到的目的地址为1.1.1.0/24和端口号为10的报文进行限速处理,降低这些报文占用的带宽资源。

2. 组网图

图1-2 Flowspec基本配置组网图

 

3. 配置步骤

(1)     配置各接口的IP地址(略)

(2)     配置Device A

# 配置BGP连接。

<DeviceA> system-view

[DeviceA] bgp 100

[DeviceA-bgp-default] peer 10.1.1.2 as-number 200

[DeviceA-bgp-default] address-family ipv4 flowspec

[DeviceA-bgp-default-flowspec-ipv4] peer 10.1.1.2 enable

[DeviceA-bgp-default-flowspec-ipv4] peer 10.1.1.2 validation-disable

[DeviceA-bgp-flowspec-ipv4] quit

[DeviceA-bgp-default] quit

# 配置Flowspec路由。

[DeviceA] flow-route route1

[DeviceA-flow-route-route1] if-match destination-ip 1.1.1.0 24

[DeviceA-flow-route-route1] if-match destination-port 10

[DeviceA-flow-route-route1] apply traffic-rate 20

[DeviceA-flow-route-route1] check flow-route-configuration

Traffic filtering rules:

 Destination ip   :  1.1.1.0 255.255.255.0

 Destination port :  10

Traffic filtering actions:

 Traffic rate : 20

[DeviceA-flow-route-route1] commit

[DeviceA-flow-route-route1] quit

# 为公网Flowspec IPv4地址族指定路由。

[DeviceA] flowspec

[DeviceA-flowspec] address-family ipv4

[DeviceA-flowspec-ipv4] flow-route route1

[DeviceA-flowspec-ipv4] quit

(3)     配置Route B

# 配置BGP连接。

<DeviceB> system-view

[DeviceB] bgp 200

[DeviceB-bgp-default] peer 10.1.1.1 as-number 100

[DeviceB-bgp-default] address-family ipv4 flowspec

[DeviceB-bgp-default-flowspec-ipv4] peer 10.1.1.1 enable

[DeviceB-bgp-default-flowspec-ipv4] peer 10.1.1.1 validation-disable

[DeviceB-bgp-default-flowspec-ipv4] quit

[DeviceB-bgp-default] quit

4. 验证配置

# 查看Device A的BGP IPv4 Flowspec对等体状态。

[DeviceA] display bgp peer ipv4 flowspec

 BGP local router ID: 192.168.150.1

 Local AS number: 100

 Total number of peers: 1                 Peers in established state: 1

  * - Dynamically created peer

  Peer                    AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

  10.1.1.2               200       10       12    0       0 00:06:40 Established

# 查看Device B的 BGP IPv4 Flowspec对等体连接状态。

[DeviceB] display bgp peer ipv4 flowspec

 BGP local router ID: 192.168.150.2

 Local AS number: 200

 Total number of peers: 1                 Peers in established state: 1

  * - Dynamically created peer

  Peer                    AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

  10.1.1.1               100       10       12    0       0 00:06:40 Established

# 查看Device B 收到的Flowspec路由策略。

[DeviceB] display bgp routing-table ipv4 flowspec

 Total number of routes: 1

 

 BGP local router ID is 192.168.150.2

 Status codes: * - valid, > - best, d - dampened, h - history

               s - suppressed, S - stale, i - internal, e - external

               a - additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >e DEST:1.1.1.0/24/40

                        0.0.0.0                    100        0       ?

# 查看Device B上Flowspec路由的运行信息。

<DeviceB> display flow-route all

Total number of flow-routes: 1

 

Flow-Route (ID 0x0)

  BGP instance : default

  Traffic filtering rules:

   Destination IP   : 1.1.1.0 255.255.255.0

   Destination port : 10

  Traffic filtering actions:

   Traffic rate          : 20

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!