BGP(边界网关协议)
自治系统就是处于一个管理机构(比如运营商)控制之下的路由器和网络群组的全体,它们对互联网执行共同的路由策略。
BGP是一个路径矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS的协议。BGP属于外部网关路由协议,它解决的是AS之间的选路问题。如果把一个城市比作一个自治系统,那么像RIP、OSPF等协议就相当于该城市的公交车或地铁,而BGP则是火车,运行在城市之间。BGP分为eBGP external(外部)AS之间的BGP邻居关系,EBGP邻居通常是指运行BGP协议的对等体两端分别在不同的AS内。iBGP internal(内部)同一个AS内部的BGP邻居关系,IBGP邻居通常是指运行BGP协议的对等体两端均在同一个AS域内,属于同一个 BGP AS内部。
但BGP不就是边界网关协议吗,为什么有一个iBGP内部网关协议
其实他们是分工合作互不干扰
好比每个国家都有负责外交的人员,外交部就是专门和别的国家打交道
然后国内的媒体就从外交部那边得到信息后在公布给社会
这里的外交部就充当着eBGP的身份
国内媒体就是iBGP
eBGP仅仅处理自治系统间的数据传输
iBGP不负责自治系统之间,它是在自治系统内部进行管理
它俩有两个重要的区别
第一个就是iBGP从eBGP那得到的自治系统路径是不会进行更新或者修复的
要更新也得由eBGP那边更新或者修改,iBGP内部不会独自修改
正如国内媒体在得到国际新闻以后不能自行编造新闻,不然会使得国内民众的信息不对称
还有就是eBGP之间是不需要进行全互联的其实这个想想就能明白,如果一个国家要和另外一个国家互联,但是因为中间有其他国家隔着就需要另外架设网络来绕过中间国家,但如果中间国家也有使用BGP的话,就可以透过中间国家来传递数据了,因此就不需要进行全互联了。
但iBGP就需要全互联了
首先是自治系统内部的路由,要实现全互联是没有外部的阻扰的。其次如果不进行全互联的话,可能会产生如路由黑洞的问题。,不进行全互联也没法进行最优路径选择。
当然在一个大的自治系统里进行iBGP全互联也有一定难度。
那有了iBGP是不是不需要IGP了?
其实不然,iBGP就如同国际新闻在国内流通
IGP就仅仅是国内新闻在国内流通
他们的职责是不一样的,所以是要共存的
在两个BGP建立会话的时候,会有4种基本报文类型
open报文:建立连接
update报文:建立连接后,交换和更新路由信息
notification报文:中断,拒绝或加入错误信息
keepalive报文:保持会话状态
BGP在交互的过程中还需要状态来方便会话的每一步执行
最初是ldle空闲状态
初始连接的时候是connect连接状态
到了active活跃状态时候就是进行TCP三次握手
发送报文后,就是opensent状态了
接着BGP会等待keepalive或者notification报文,此时是openconfirm状态
最后BGP会话进行连接的时候就是established状态了