06-Flowspec配置
本章节下载 (267.09 KB)
Flowspec(Flow Specification,流规格)用来实现对BGP网络中的非法流量进行过滤与巡查,以减轻DoS(Denial of Service,拒绝服务)攻击和DDoS(Distributed Denial of Service,分布式拒绝服务)攻击对网络的影响。借助BGP路由更新,Flowspec针对攻击流量的特点,可集中配置和管理匹配规则以及流量动作,并快速地将匹配规则和流量动作应用到其他BGP路由器中。
· Flowspec路由器:也称为Flowspec控制器,为BGP网络中的BGP路由器,通过BGP Update报文,向Flowspec边界路由器传递包含匹配规则以及流量动作的Flowspec路由。
· Flowspec边界路由器:也称为Flowspec客户端,为BGP网络中的BGP路由器,可接收BGP Update报文中Flowspec路由器创建的Flowspec路由。
配置Flowspec时,应选取BGP网络中的一台BGP路由器作为Flowspec路由器,网络中的其他BGP路由器作为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传输,从而实现在最接近攻击源的设备上对攻击流量进行管控,这样能够最大程度地减少攻击流量对网络转发性能的影响。
Flowspec配置任务如下:
(1) 创建并激活Flowspec路由
需要在Flowspec路由器上创建并激活Flowspec路由。
(2) 应用Flowspec路由
需要在Flowspec路由器上应用Flowspec路由。
需要在Flowspec路由器和Flowspec边界路由器上配置BGP发布Flowspec路由。
(4) (可选)配置BGP Flowspec路由反射
需要在Flowspec路由器上配置BGP Flowspec路由反射。
配置Flowspec前,需要在Flowspec路由器和Flowspec边界路由器上配置BGP基本功能,具体配置请参见“三层技术-IP路由配置指导”中的“BGP”。
(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) 进入系统视图。
system-view
(2) 进入Flowspec视图。
flowspec
(3) 创建Flowspec IPv4地址族。
address-family ipv4
(4) 应用已创建的Flowspec路由。
flow-route flowroute-name
缺省情况下,公网中未应用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实例的Route Target。
vpn-target { vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] | auto }
缺省情况下,未配置VPN实例的Route Target。
关于ip vpn-instance、route-distinguisher和vpn-target命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。
(3) 进入VPN实例IPv4 Flowspec地址族视图。
address-family ipv4 flowspec
(4) 配置VPN实例下IPv4 Flowspec地址族的VPN target。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情况下,未配置VPN实例下IPv4 Flowspec地址族的VPN target。
VPN实例IPv4 Flowspec地址族的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路由。
缺省情况下BGP Flowspec邻居会对收到的Flowspec路由及路由重定向下一跳的合法性进行验证。
· Flowspec路由合法指的是:
¡ Flowspec路由携带了匹配目的地址的规则。
¡ BGP Flowspec邻居(接收及发送该Flowspec路由的设备)上存在目的地址为“Flowspec路由目的地址”的BGP路由,且该BGP路由来自发送设备。
在不关注Flowspec路由合法性的情况下,可以关闭本功能,此时BGP Flowspec邻居收到Flowspec路由后,不会对其进行合法性验证。
· Flowspec路由的重定向下一跳合法指的是(假设Flowspec路由的重定向下一跳为设备A):
¡ BGP Flowspec邻居上存在设备A的BGP路由。
¡ 设备A与BGP Flowspec邻居在同一AS内。
在不关注Flowspec路由重定向下一跳合法性的情况下,可以关闭本功能,BGP Flowspec邻居收到Flowspec路由后,不会对其进行合法性验证。
在Flowspec路由器上配置BGP发布Flowspec路由时,该Flowspec路由会通过BGP路由发布给Flowspec边界路由器,同时也会在本Flowspec路由器上生效。
关于bgp和peer enable命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 请依次执行以下命令进入BGP IPv4 Flowspec地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 flowspec
(3) 允许BGP Flowspec邻居间交换路由信息。
peer { group-name | ipv4-address [ mask-length ] } enable
缺省情况下,BGP Flowspec邻居间不能交换路由信息。
(4) (可选)关闭对来自BGP Flowspec邻居的Flowspec路由的合法性验证功能。
peer { group-name | ip-address [ mask-length ] } validation-disable
缺省情况下,会对接收的Flowspec路由进行合法性验证。
(5) (可选)关闭对来自BGP Flowspec邻居的Flowspec路由的重定向下一跳合法性验证功能。
peer { group-name | ip-address [ mask-length ] } validation-redirect-disable
缺省情况下,EBGP Flowspec邻居会对接收的Flowspec路由进行重定向下一跳合法性验证。
(6) (可选)配置向对等体发送路由时不改变下一跳。
peer { group-name | ipv4-address [ mask-length ] } next-hop-invariable
缺省情况下,向EBGP对等体/对等体组发布Flowspec路由时会将下一跳属性改为自己的地址。
(1) 进入系统视图。
system-view
(2) 请依次执行以下命令进入BGP-VPN IPv4 Flowspec地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 flowspec
(3) 允许BGP Flowspec邻居间交换路由信息。
peer { group-name | ipv4-address [ mask-length ] } enable
缺省情况下,BGP Flowspec邻居间不能交换路由信息。
(4) (可选)关闭对来自BGP Flowspec邻居的Flowspec路由的合法性验证功能。
peer { group-name | ip-address [ mask-length ] } validation-disable
缺省情况下,会对接收的Flowspec路由进行合法性验证。
(5) (可选)关闭对来自BGP Flowspec邻居的Flowspec路由的重定向下一跳合法性验证功能。
peer { group-name | ip-address [ mask-length ] } validation-redirect-disable
缺省情况下,EBGP Flowspec邻居会对接收的Flowspec路由进行重定向下一跳合法性验证。
(6) (可选)配置向EBGP对等体发送路由时不改变下一跳地址。
peer { group-name | ipv4-address [ mask-length ] } next-hop-invariable
缺省情况下,向EBGP对等体/对等体组发布Flowspec路由时会将下一跳属性改为自己的地址。
(1) 进入系统视图。
system-view
(2) 请依次执行以下命令进入BGP VPNv4 Flowspec地址族视图。
bgp as-number [ instance instance-name ]
address-family vpnv4 flowspec
(3) 允许BGP Flowspec邻居间交换路由信息。
peer { group-name | ipv4-address [ mask-length ] } enable
缺省情况下,BGP Flowspec邻居间不能交换路由信息。
(4) (可选)配置向EBGP对等体发送路由时不改变下一跳地址。
peer { group-name | ipv4-address [ mask-length ] } next-hop-invariable
缺省情况下,向EBGP对等体/对等体组发布Flowspec路由时会将下一跳属性改为自己的地址。
路由反射用来解决IBGP对等体需要全连接的问题。在一个AS内,一台路由器作为RR(Route Reflector,路由反射器),其它路由器作为客户机(Client)与路由反射器建立IBGP连接。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立BGP连接。
路由反射器及其客户机形成了一个集群。通常情况下,一个集群中只有一个路由反射器,该反射器的Router ID就作为集群ID,用于识别该群。
(1) 进入系统视图
system-view
(2) 进入BGP IPv4 Flowspec地址族视图、BGP-VPN IPv4 Flowspec地址族视图或BGP VPNv4 Flowspec地址族视图。请选择其中一项进行配置。
¡ 请依次执行以下命令进入BGP IPv4 Flowspec地址族视图。
bgp as-number [ instance instance-name ]
address-family ipv4 flowspec
¡ 请依次执行以下命令进入BGP-VPN IPv4 Flowspec地址族视图。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-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。
在任意视图下执行display命令可以显示Flowspec在BGP网络中的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset、refresh命令可以复位BGP Flowspec地址族下的BGP会话或清除Flowspec路由的统计信息。
关于Flowspec显示和维护命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP命令”。
表1-1 Flowspec显示和维护
操作 |
命令 |
|
显示BGP Flowspec对等体信息 |
display bgp [ instance instance-name ] peer ipv4 flowspec [ vpn-instance vpn-instance-name ] [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ] |
|
显示BGP Flowspec对等体组的信息 |
display bgp [ instance instance-name ] group ipv4 flowspec [ vpn-instance vpn-instance-name ] [ group-name group-name ] |
|
显示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 [ vpn-instance vpn-instance-name ] 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 | ip [ vpn-instance vpn-instance-name ] } [ slot slot-number ] (IRF模式) display flow-route { all | flow-route-id | ip [ vpn-instance vpn-instance-name ] } [ chassis chassis-number slot slot-number ] |
|
手工对BGP会话进行软复位 |
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv4 flowspec [ vpn-instance vpn-instance-name ] |
|
手工对VPNv4地址族下的BGP会话进行软复位 |
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } vpnv4 flowspec [ 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 [ vpn-instance vpn-instance-name ] |
|
复位BGP VPNv4 Flowspec地址族下的BGP会话 |
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | internal | group group-name } vpnv4 flowspec [ vpn-instance vpn-instance-name ] |
|
清除Flowspec路由的统计信息 |
reset flow-route statistics { all | flow-route-id | ip [ vpn-instance vpn-instance-name ] } |
|
如图1-2所示,所有路由器均运行BGP协议。Device A作为Flowspec控制器,配置了Flowspec路由,Device B作为Flowspec客户端,通过BGP协议接收并应用Device A发送的Flowspec路由。现要求对BGP网络中PE设备收到的目的地址为1.1.1.0/24和端口号为10的报文进行限速处理,降低这些报文占用的带宽资源。
图1-2 Flowspec基本组网图
(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(kbps)
[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
# 查看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 ipv4 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(kbps)
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!