乾颐堂军哥HCIE课程10-BGP的路由联邦实施以及团体属性操控路由

  1. 云栖社区>
  2. 博客>
  3. 正文

乾颐堂军哥HCIE课程10-BGP的路由联邦实施以及团体属性操控路由

科技小能手 2017-11-13 21:16:00 浏览1244
展开阅读全文

BGP知识
拓扑图
乾颐堂军哥HCIE课程10-BGP的路由联邦实施以及团体属性操控路由
IBGP防止环路机制带来的问题,为保证更新信息可以到达所有IBGP对等体
BGP Speaker与IBGP Speaker之间要保证会话的全互连,但这从而又带来IBGP会话数n(n-1)/2的问题
解决方案:
路由反射 (RFC2796)
联盟 (RFC3065)

1.BGP的RR

同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。如图1所示,在AS65000内一台设备作为RR,三台设备作为客户机,形成Cluster1。此时AS65000中IBGP的连接数从配置RR前的10条减少到4条,不仅简化了设备的配置,也减轻了网络和CPU的负担。

RR突破了“从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。”的限制,并采用独有的Cluster_List属性和Originator_ID属性防止路由环路。RR向IBGP邻居发布路由规则如下:

从非客户机学到的路由,发布给所有客户机。

从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。

从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

Cluster_List属性
路由反射器和它的客户机组成一个集群(Cluster),使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。

当一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。

当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。

Originator_ID属性
Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。

当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。

当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。

备份路由反射器:
为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。
当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。
RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2、Client3)反射,同时相互反射。
RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。
多集群路由反射器:
一个AS中可以存在多个集群,各个集群的RR之间建立IBGP对等体。当RR所处的网络层不同时,可以将较低网络层次的RR配成客户机,形成分级RR。当RR所处的网络层相同时,可以将不同集群的RR全连接,形成同级RR。
分级路由反射器:
降低对指定路由器IBGP路由通告机制的限制,允许将从IBGP对等体接收到的更新信息传给某些IBGP对等体

1.1 RR的规则

RR中的3个角色:
路由反射器 (Route Reflector) 
客户机 (Client)
非客户机 (Non-Client)

切记:非非(非客户端之间)不传
1)从非客户端收到的路由会更新给客户端和ebgp邻居
[R3]dis bgp routing-table 6.6.6.6

BGP local router ID : 10.1.35.3
Local AS number : 345
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 6.6.6.6/32:
From: 55.1.1.1 (10.1.35.5)
Route Duration: 00h09m31s 
Relay IP Nexthop: 10.1.35.5
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 55.1.1.1
Qos information : 0x0
AS-path 60, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 48
Advertised to such 2 peers:
10.1.30.10
44.1.1.1 //更新给客户端
2)从客户端收到的路由会更新给所有的邻居(客户端和非客户端、eBGP,不反射回该客户端)

BGP local router ID : 10.1.35.3
Local AS number : 345
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 2.2.2.2/32:
RR-client route.
From: 44.1.1.1 (4.4.4.4)
Route Duration: 00h10m16s 
Relay IP Nexthop: 10.1.35.5
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 44.1.1.1
Qos information : 0x0
AS-path 20, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 144
Advertised to such 2 peers:
10.1.30.10 //更新给ebgp
55.1.1.1 //更新给非客户端
3)从eBGP学习到的路由更新给客户端和非客户端

1.2 RR的防环属性

当一个AS内存在多台RR为Client提供冗余时,RR间的路由更新很有可能会形成环路,为防止该现象,引入了Cluster的概念。
通常,一个客户的簇只拥有一个RR,并由RR的BGP Router-id去标识该簇。有时,为了防止单点失效,在单一簇里引入多个RR
Originator ID属性用于防止在反射器和客户机/非客户机之间产生环路
Originator_ID属性长4字节,可选非过渡属性,属性类型为9 ,是由路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID
当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入到这条路由,标识这条路由的始发路由器。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID
当其它BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理
对于AS之间,BGP用于防止环路的主要措施是通过AS_Path属性记录途经的AS路径,带有本地AS号的路由将被路由器丢弃;对于AS之内,BGP防止路由环路的方法是禁止IBGP对等体发布从AS内部学来的路由。
路由反射器的实现是基于放宽对“BGP在AS内学到的路由不会在AS中转发”的要求,即允许IBGP对等体之间发布从AS内部学来的路由。在这种情况下,Cluster_List属性被引入,用于防止AS内部的环路。

Cluster_List是可选非过渡属性,属性类型编码为10。
Cluster_List由一系列的Cluster_ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的As路径的AS_Path属性有相似之处。Cluster_List由路由反射器产生。
当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个。
当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入Cluster_List,然后反射该更新路由。
Cluster_List只被RR用来检测路由环路,不是RR的客户机和非客户机不会检测该属性。
Cluster_List只在AS内部传播,从EBGP对等体收到的含有Cluster_List的路由将被丢弃。
簇(cluster),RR和它们的客户端组成一个簇
reflector cluster-id 3.3.3.3 //可选配置
起源ID(originator ID)的防环现象:
Jan 14 2018 10:38:47.58.1-08:00 R4 RM/6/RMDEBUG:
BGP.Public : Error identified while receiving UPDATE message from the peer 55.1.1.1 and ignored
Reason: (ORIGINATORID equal to RouterID). //如果起源ID=RID,则不接收该路由。思路:1)是否产生了路由(路由始发者) 2)是否更新出去 3)路由是否被接受
簇ID(cluster id),
Jan 14 2018 10:52:06.970.4-08:00 R5 RM/6/RMDEBUG:
BGP.Public : Error identified while receiving UPDATE message from the peer 33.1.1.1 and ignored
Reason: (Received CLUSTERLIST Value greater than allowed loop count of ClusterID of the speaker). //由于簇list中包含了自身的簇ID,所以拒绝该路由!
6.6.6.6这条路由R5更新给R3,R3接收了,why?
只有路由被反射了,才会增加起源ID/簇ID属性
dis bgp routing-table 2.2.2.2

BGP local router ID : 10.1.35.5
Local AS number : 345
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 2.2.2.2/32:
RR-client route.
From: 33.1.1.1 (10.1.35.3)
Route Duration: 00h01m59s 
Relay IP Nexthop: 10.1.1.1
Relay IP Out-Interface: Serial1/0/0
Original nexthop: 44.1.1.1
Qos information : 0x0
AS-path 20, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 96
Originator: 4.4.4.4 //起源ID
Cluster list: 3.3.3.3 //簇列表
Advertised to such 2 peers:
66.1.1.1
44.1.1.1
1.3 层次化的RR+补充路由反射器情况下的下一跳
多层RR而已
[R3-bgp]peer 44.1.1.1 next-hop-local //不能实现需求

[R3-bgp]peer 44.1.1.1 route-policy NHOP export //RR上出方向应用策略无效(ENSP 390)
R4上:
[R4-bgp]peer 33.1.1.1 route-policy NHOP import
route-policy NHOP permit node 5 
if-match acl 2006
apply ip-address next-hop 33.1.1.1 //如果匹配到acl20006调用的路由,修改下一跳为RR的更新源地址
route-policy NHOP permit node 10 //允许其他路由从RR更新
acl number 2006 
rule 5 permit source 6.6.6.6 0 
验证:
<R4>dis bgp routing-table

BGP Local router ID is 4.4.4.4 
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete

Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn

> 2.2.2.2/32 10.1.24.2 0 0 20i
>i 6.6.6.0/28 55.1.1.1 100 0 60 123e //路由策略放行的路由,不做修改
*>i 6.6.6.6/32 33.1.1.1 0 100 0 60i //生效,修改了下一跳

2.联邦

联盟通过把大的AS分成多个更小的AS来解决IBGP全互连的问题,这些自治系统叫做成员AS。因为成员AS之间使用EBGP会话,它们之间不需要全互连。然而在每一个成员AS中,IBGP全互连的要求仍然适用。

联盟中的EBGP会话和常规的EBGP会话有所不同。为了区分它们,这种类型的EBGP会话叫做联盟内的EBGP会话。与普通EBGP会话区别就发生在当通过会话传播路由的时候,联盟内的EBGP会话在一方面遵循路由通告的部分IBGP规则,在另一方面又遵循路由通告的部分EBGP规则。如:在发送更新的时候,NEXP_HOP、MED和LOCAL_PREF被保留,而AS-PATH被修改。

对于外部邻居来说(联盟外的的对等体),成员AS拓扑是不可见的。也就是说,在发向EBGP邻居的更新消息中,已经剥去了联盟内被修改的AS_PATH。从其他的自治系统来看,联盟就像单个AS一样。
每个成员AS中,IBGP全连接是需要的。路由反射也可以被部署。部署联盟的一个明显优势就是其成员AS不需要使用相同的IGP。每个成员AS不需要向其他成员AS通告自己的内部拓扑。不过,当使用不同的IGP时,每一个成员AS内必须保证BGP下一跳的可达性。
它没有改变iBGP的更新机制,所以不需要额外的防环规则
比如下一跳、本地优先级等属性在整个联邦保持不变
当前,AS_PATH属性被定义为公认必遵属性,该属性由AS号所组成。AS_PATH属性字段由三元组所组成:
Path Segment Type, Path Segment Length, Path Segment Value
在BGPv4里,path segment type字段是由1字节长的数值所组成,主要是标识AS_PATH的不同类型:

Value Segment Type
1 AS_SET: 由一系列AS号无序地组成,包含在UPDATE消息里。
2 AS_SEQUENCE: 由一系列AS号顺序地组成,包含在UPDATE消息里。
3 AS_CONFED_SEQUENCE: 在本地联盟内由一系列成员AS号按顺序地组成,包含在UPDATE消息中,只能在本地联盟内传递。
4 AS_CONFED_SET: 在本地联盟内由一系列成员AS无序地组成,包含在UPDATE消息中,同样只能在本地联盟内传递。

需求:
as345被配置为联邦,R3和R4为成员as64512(私有as号码的最小值),R5为成员as65535(私有as号码的最大值),R3和R5构建联邦as的ebgp邻居
[R5-bgp]dis th
[V200R003C00]
#
bgp 65535
confederation id 345 //表明本as的“国家”身份
confederation peer-as 64512 //表明和成员as的eBGP邻居关系
peer 33.1.1.1 as-number 64512 
peer 33.1.1.1 ebgp-max-hop 255 
peer 33.1.1.1 connect-interface LoopBack0 //不要忘记成员as的ebgp多跳也需要配置,否则ttl为1,报文无法到达对端
peer 33.1.1.1 next-hop-local //对成员as修改下一跳,否则路由不会优化
peer 66.1.1.1 as-number 60 //构建国家间的ebgp邻居
peer 66.1.1.1 ebgp-max-hop 255 
peer 66.1.1.1 connect-interface LoopBack0
<R5>dis bgp routing-table 2.2.2.2

BGP local router ID : 10.1.35.5
Local AS number : 65535
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 2.2.2.2/32:
From: 33.1.1.1 (10.1.35.3)
Route Duration: 00h02m08s 
Relay IP Nexthop: 10.1.1.1
Relay IP Out-Interface: Serial1/0/0
Original nexthop: 44.1.1.1
Qos information : 0x0
AS-path (64512) 20, origin igp, MED 0, localpref 100, pref-val 0, valid, external-confed, best, select, active, pre 255, IGP cost 96
Advertised to such 1 peers:
66.1.1.1

3.BGP的团体属性

团体属性是BGP的私有属性,在BGP对等体之间传播,且不受AS的限制。利用团体属性可以使多个AS中的一组BGP设备共享相同的策略,从而简化路由策略的应用和降低维护管理的难度。
BGP设备可以在发布路由时(或者针对邻居更新以及收取时、或者引入路由时),新增或者改变路由的团体属性。
是在BGP中一种给路由条目打上标记,用于确保路由过滤和选择的连续性,BGP路由器可以过滤进出路由更新或者优选某些路由
可选传输属性,必须针对做peer x.x.x.x advertise-community
最容易忽略的是:peer x.x.x.x advertise-community
团体属性可以有多种应用方式,不同的应用结果不同
NETWORK、针对邻居在出/入方向应用、引入路由的时候应用、聚合的时候应用
3.1 众所周知的团体属性(路由过滤相关)
INTERNET,默认属性,所有路由都具备这个属性
no-advertise,不更新路由给邻居
aggregate 6.6.6.0 255.255.255.240 suppress-policy SUPPRESS attribute-policy ATTRIBUTE 
//聚合路由时修改团体属性
route-policy ATTRIBUTE permit node 10 
apply community no-advertise 
[R6-bgp]dis bgp rou 6.6.6.0

BGP local router ID : 0.0.6.6
Local AS number : 60
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 6.6.6.0/28:
Aggregated route. 
Route Duration: 00h03m10s 
Direct Out-interface: NULL0
Original nexthop: 127.0.0.1
Qos information : 0x0
Community:no-advertise //由于是路由在生成时就具备该属性,所以不在更新给邻居
针对邻居应用的实例:
route-policy COMM permit node 5 
if-match acl 2006 
apply community no-advertise //仅仅对acl2006的路由做出团体属性no-advertise
#
route-policy COMM permit node 10 //放行其他路由,不做团体属性的修改
bgp 60
peer 55.1.1.1 advertise-community
peer 55.1.1.1 route-policy COMM export //针对邻居调用
验证结果:
<R5>dis bgp routing-table 6.6.6.6

BGP local router ID : 10.1.35.5
Local AS number : 65535
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 6.6.6.6/32:
From: 66.1.1.1 (0.0.6.6)
Route Duration: 00h00m11s 
Relay IP Nexthop: 10.1.56.6
Relay IP Out-Interface: Serial2/0/0
Original nexthop: 66.1.1.1
Qos information : 0x0
Community:no-advertise //团体属性
AS-path 60, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255, IGP cost 48
Not advertised to any peer yet //不更新给任何邻居

no-export,不更新路由给真正的EBGP
此时R3和R4是否具备no-export属性?没有,因为默认不向邻居通告团体属性
R6:
route-policy COMM permit node 5 
if-match acl 2006 
apply community no-export //对acl2006命中的路由,增加“不通告给真正的ebgp”的团体属性
#
route-policy COMM permit node 10 //对其他路由放心
peer 55.1.1.1 route-policy COMM export
[R5-bgp]peer 33.1.1.1 advertise-community
[R3-bgp]peer 44.1.1.1 advertise-community
[R3-bgp]peer 55.1.1.1 advertise-community
<R4>dis bgp routing-table 6.6.6.6

BGP local router ID : 4.4.4.4
Local AS number : 64512
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 6.6.6.6/32:
From: 33.1.1.1 (10.1.35.3)
Route Duration: 00h03m51s 
Relay IP Nexthop: 10.1.1.1
Relay IP Out-Interface: Serial1/0/0
Original nexthop: 55.1.1.1
Qos information : 0x0
Community:no-export //团体属性

no-export-subconfed,不更新路由给其他成员AS(local-as)/仅仅在该AS传递(如果没有联邦就等同于no-export参数)
R6:
route-policy COMM permit node 5 
if-match acl 2006 
apply community no-export-subconfed 
#
route-policy COMM permit node 10
<R5>dis bgp routing-table 6.6.6.6

BGP local router ID : 10.1.35.5
Local AS number : 65535
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 6.6.6.6/32:
From: 66.1.1.1 (0.0.6.6)
Route Duration: 00h01m45s 
Relay IP Nexthop: 10.1.56.6
Relay IP Out-Interface: Serial2/0/0
Original nexthop: 66.1.1.1
Qos information : 0x0
Community:no-export-subconfed
AS-path 60, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255, IGP cost 48
Not advertised to any peer yet //不更新给其他的成员as
结果是成员as 64512中不存在路由
需求:请在AS345中配置(不允许在as60配置),使得AS64512 得到该路由
团体属性是一种需要配合使用的参数,具备一个破坏性的参数
route-policy NO permit node 10 
apply community none //可以把所有团体属性拿掉
新需求:
<R5>dis bgp routing-table 6.6.6.6

BGP local router ID : 10.1.35.5
Local AS number : 65535
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 6.6.6.6/32:
From: 66.1.1.1 (0.0.6.6)
Route Duration: 00h00m03s 
Relay IP Nexthop: 10.1.56.6
Relay IP Out-Interface: Serial2/0/0
Original nexthop: 66.1.1.1
Qos information : 0x0
Community:<60:6>, no-export-subconfed
3.2 自定义的团体属性
3.3 团体属性列表应用和影响选路
团体属性列表,用于去匹配团体属性
[R1]ip community-filter 1 permit 60:6 //团体属性列表命中某些团体属性
route-policy XUANLU permit node 10 
if-match community-filter 1 
apply preferred-value 10 //针对团体属性修改影响选路的参数
#
route-policy XUANLU permit node 20 //放行其他路由
[R1-route-policy]bgp 10
[R1-bgp]peer 15.15.15.15 route-policy XUANLU import //针对邻居来影响选路
<R1>tracert 6.6.6.6
traceroute to 6.6.6.6(6.6.6.6), max hops: 30 ,packet length: 40,press CTRL_C to break 
1 10.1.15.5 60 ms 40 ms 40 ms 
2 10.1.56.6 50 ms 40 ms 50 ms 
总结:
1).对某些路由自定团体属性 2).别忘记向邻居通告团体属性,否则中断了策略 3)应用 4)对团体属性列表匹配的路由,通过路由策略影响选路
作业:
R6上产生的路由6.6.6.6自定义团体属性60:6;
AS345的R4+R1建立ebgp邻居
AS345的R5+SW3建立ebgp邻居
R1上到达6.6.6.6通过高速的以太网转发数据,其他路由不受影响

4.BGP的选路属性和操作


本文转自EnderJoe 51CTO博客,原文链接:http://blog.51cto.com/enderjoe/2060784

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注