天天看点

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

BGP知识

拓扑图

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

IBGP防止环路机制带来的问题,为保证更新信息可以到达所有IBGP对等体

BGP Speaker与IBGP Speaker之间要保证会话的全互连,但这从而又带来IBGP会话数n(n-1)/2的问题

解决方案:

路由反射 (RFC2796)

联盟 (RFC3065)

同一集群内的客户机只需要与该集群的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对等体

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 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 

Original nexthop: 44.1.1.1

AS-path 20, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 144

10.1.30.10 //更新给ebgp

55.1.1.1 //更新给非客户端

3)从eBGP学习到的路由更新给客户端和非客户端

当一个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

Paths: 2 available, 1 best, 1 select

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

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 //簇列表

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 //生效,修改了下一跳

联盟通过把大的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的私有属性,在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

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

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

no-export,不更新路由给真正的EBGP

此时R3和R4是否具备no-export属性?没有,因为默认不向邻居通告团体属性

R6:

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

no-export-subconfed,不更新路由给其他成员AS(local-as)/仅仅在该AS传递(如果没有联邦就等同于no-export参数)

apply community no-export-subconfed 

route-policy COMM permit node 10

Local AS number : 65535

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

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 //可以把所有团体属性拿掉

新需求:

Route Duration: 00h00m03s 

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

继续阅读