BGP基础
-
我们将网络范围分为
- IGP:AS内,代表算法:RIP,OSPF
- EGP:AS外,代表算法:BGP
-
BGP重要属性:AS_path 记录数据包走过的所有AS
优点:1.筛选最优路径 2.防止环路
BGP黑洞问题
A路由通告过程(蓝色的箭头和字体)
- A会把自己的IP告知给B 这时候B就知道如果要转发1.1.1.0/24的地址,下一跳是101
- B学习到了A的地址之后,会继续转发给E 因为B和E是AS内路由,所以此消息会通过OSPF算法由B经由C或D发给E,而且因为是AS内路由,AS_path不变
- E学习到了A的地址之后,会继续转发给F,此时AS_path变为 102 101
- 此时F也学习到了A的地址
在F学习到A的地址之后,开始准备向A发送一个数据包了!
- F首先知道下一跳是E,于是将数据包转发给E
- E收到这个数据包之后就要将这个数据包转发给B,但是E和B不是直连,E和B是AS内路由器,在AS内传递数据的话就要用到OSPF算法,于是E就将数据包转发给C或D由他们转发给B
- 当C或D收到数据包的时候,因为C或D没有运行BGP,所以他们并没有学习到1.1.1.0/24,而且此时他们的路由表里面也没有1.1.1.0/24这个地址,所以他们就不知道下一跳是什么,于是他们就会丢包
同步规则
同步就是:如果一个路由器从IBGP哪里学习到一个地址,他不能使用这个地址,也不能将这个地址转发给EBGP对等网络
如上图,还是刚刚那个情况,A的地址转发到E的时候就会停止了,将不会继续转发给F了。
除非,此时IGP也让E学习了A的地址,那么E才可以将地址转发给F。
因为只有当IGP也学习了A这个地址表示CD也学会了这个地址,这样就不会出现路由黑洞,此时达到了一个BGP和IGP的同步。
黑洞解决方法
- import(同步机制):缺点:地址太多
- 全网BGP
- MPLS
IBGP水平分割规则
当A发送一个地址给B的时候,B不会再将这个地址转发给同一个AS里面的路由(也就是B不会再转发给C)
这样就不会形成环路了
产生问题
E就无法收到地址了
解决办法:
- 路由反射器
- 联邦
BGP路径属性
- 公认属性
- 公认必遵:所有BGP都能识别且必须在报文中携带的。例:Origin|AS-path|Next hop
- 公认自决:所有BGP都能识别但不要求必须在报文中携带。例:Local-Preference|ATOMIC_Aggregate
- 可选属性
- 可选传递:可以不支持该属性,但是应该转发包含该属性的路由。例:Community|Aggregator
- 可选非传递:可以不支持该属性,且不转发包含该属性的路由。例:MED|Originator_ID|Cluster_list|*pre_value