BGP更新
BGP更新可分为两类:一是人为的手动更新,二是BGP触发更新。
BGP分类
BGP可以分为两类 :EBGP和IBGP
EBGP:这类BGP,是为不是一个AS号之间的BGP对等体。
IBGP:这类BGP,为相同AS号之间的BGP对等体。
BGP的报文类型
Open报文: 用于建立BGP邻居关系。
update报文:用于在两端BGP对等体之间交互路由信息。
keepalive报文:两端BGP对等体建立邻居,用于保持BGP邻居关系。这类报文默认每隔60s发送一次。
notfication报文:两端BGP对等体之间交换信息,如果检测出错误信息就会发送此类报文。
Route-refresh报文:这是路由跟新所发送的BGP报文。
其中在上面的五种报文类型中,只有keepalive报文时周期性更新,其他都为触发性更新
BGP状态机
BGP状态机可分为,idle--connect--active--openstart--openConfirm--Established
idle空闲状态:idle这是BGP的初始状态,在此状态下,BGP禁止邻居发送来的链接请求,只有当start事件之后,BGP才会尝试与对等体之间进行TCP三次链接,并转到connect状态。
connect连接状态:再此状态下,BGP启动重传定时器,等待TCP完成连接。
@如果连接成功,那么BGP就会发送Open报文,并转到openstart状态。
@如果TCP连接失败,那么就会转到active状态下。
@如果连接时,重传定时器超时,那么就会停留在connect状态下,继续跟其他BGP对等体之间建立连接。
active状态:在此状态下,BGP总是在尝试与BGP对等体之间建立TCP连接。
@如果连接成功,那么就会发送Open报文,并转到openstart状态。
@如果连接失败,则继续停留在active状态下。
@如果连接重传定时器超时,BGP还是没有收到对等体发送来的报文,那么就会转到connect状态下。
openstart状态:在此状态下,BGP会根据对等体发来的open报文,来对里面的AS号,区域号,和版本号等来进行检查。
@如果收到的open报文正确,那么就会发送keepalive报文,来保持BGP对等体之间的连接。
@如果收到的open报文有误差,那么就会发送notfication报文,并且状态恢复到idle状态。
openConfirm状态:在这个状态下,BGP等待对等体发来,keepalive报文或者notfication报文。
@如果收到了keepalive报文,那么就会转到Established状态
@如果收到了notfication报文,那么就会转到idle状态
Established状态:这个状态下,BGP就可以正常和对等体之间交互update报文,keepalive等报文。
注意:openstart是接收open报文,发送keepalive报文和notfication报文;而openConfirm状态下是只接收keepalive报文和notfication报文。
BGP的防环机制
EBGP使用AS-PATH属性来进行防环,首先当一个EBGP路由经过一个AS区域的时候,那么就会在最左面,也就是前面,加上这个经过的AS区域的AS号,当再次经过的这个区域的时候,区域就不会接收此类的路由。
IBGP使用一种水平切割机制,来进行一种防环,他的意思就是,在一个IBGP区域内,在中间部分,逻辑上水平切割一下,路由不会到达切割的另一边。
BGP选路规则
当到达同一目的地存在多条路由时,BGP采如下策略进行路由选择
1.如果此路由的下一跳不可达,忽略此路由
2.优选协议首选值(PreVal)最高的路由,默认0
3.优选本地优先级(Local_Pref)最高的路由,默认为100
4.优选本地生成的路由
5.优选AS路径(AS-PATH)最短的路由
6.比较Origin属性,依次选择Origin类型为IGP,EGP,Incomplete的路由
7.优选MED值最低的路由
8.优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
9.优选到BGP下一跳IGP Metric较小的路由
10.优选Cluster ID最短的路由
11.优选Router ID最小的路由器发布的路由
12比较对等体的 ip address ,优选从具有较小ip address的对等体学来的路由
BGP 属性
1.BGP属性可分为四大类
第一类:公认必遵属性@这类属性,能够被所有BGP对等体识别,且必须都需要遵守,必须都要携带,如果识别不出来的话,路由信息就会报错。
第二类 : 公认任意@这类属性,可以不被BGP对等体识别,可以不用携带此类路由,不携带此类路由也不会报错。
第三类 : 可选过渡@这类属性,可以不会被BGP对等体识别,即使不识别,BGP对等体一样会接收并转发此类的属性,并且不会报错。
第四类 : 可选非过度@此类属性,不会被BGP 对等体识别,也会不转发此类属性报文到BGP邻居。