防环机制种类
(1)AS内防环:
① IBGP邻居之间通过IBGP的水平分割防止环路。
② 配置路由反射器之后,路由反射器通过CLUSTER_LIST防止环路;路由反射器的客户端通过ORIGINATOR_ID防止环路。
③ 在confederation 内部,confederation 成员AS间使用成员的AS号来防环。
(2)AS间防环:EBGP邻居通过AS_PATH防止环路。
BGP 路由经过 RR,会添加几种属性,如何避免环路
(1)cluster-list
cluster-list 就是路由沿途经反射器反射,RR默认就会将自己的cluster-id(默认为router-id)写进cluster-list,接收路由器,一旦发现cluster-list里面有跟自己cluster-id一样的,就会拒收路由,所以上图R1会拒收传回来的路由从而起到防环的作用。
(2)originator-id
路由器发现originator-id 跟自己router-id一致就不收,所以上图的情况r4会拒收自己发起的被RR反射回来的路由。
要接收带有本AS的路由时如何做,设计这种机制的原因
(1)可以使用peer allow-as-loop
(2)可以使用route-policy(apply as-path overwrite,覆盖as号)
(3)做聚合(不加as-set)
(4)可以使用peer fake-as
场景:
一个公司如果有两个站点,但是只申请了一个as号的时候。此时就需要做相应的操作,不然会因为AS-Path防环机制而导致一边学习不到路由
BGP存在的环路的场景说明
- 第一种场景:
拓扑描述:
R1和R3之间没有直连链路,R1、R2、R3之间运行rip,R1和R3建立IBGP邻居关系,R1和R2建立EBGP邻居关系,R2和R3之间不建立邻居关系,在R3上宣告一条30.30.30.0/24的BGP路由
现象:
在R1和R2之间会有数据包环路
解释:
R3把这条路由通过IBGP传给R1,R1收到这条路由会把这条路由通过EBGP传给R2,所以,R1、R2、R3都是有这条路由。但是数据在传输的时候,当R1去访问30.30.30.0/24时下一跳指向R3,通过迭代,数据发给R2,R2查找自己路由表,发现下一跳指向R1,又把数据包扔回给R1,环路出现
解决方法:
在R1上传路由给R2时,下一跳不改变
- 第二种场景:
拓扑描述:
R2、R3、R4之间运行rip,R2和R4之间建立IBGP,R2和R1建立EBGP,R3上没有起BGP,为了保证网络可达性,在R4上将BGP引入到RIP(import-routebgp permit-ibgp)
现象:
R3和R4之间出现数据包环路
解释:
R1把1.1.1.0/24传给R2,R2将路由传给R4并将下一跳改为自己,R4上学到这条路由后,将此路由从BGP引入到RIP,R3通过RIP学到这条路由。当R4去访问1.1.1.0/24时,下一跳指向R2,通过迭代,把数据扔给R3,R3关于1.1.1.0/24路由,是通过R4学到的,下一跳指向R4,又把数据包扔回给R4,环路出现
解决方法:
1.在R2上做引入。或者不将BGP引入rip。
2.通过其他方法解决路由黑洞(mpls、隧道)