BGP协议是用于自治系统AS之间的动态路由协议。
BGP特性:
是一种外部网关协议,与OSPF、RIP等内部网关协议不同,其着眼点不在于发现和计算路由,而是着眼于在AS之间控制路由的转播和选择最佳路由。
BGP使用TCP作为传输层协议(端口号179),提高了协议的可靠性。
BGP 进行域间路由选择,因此对协议的稳定性要求很高,故可用TCP协议的高可靠性来保证协议的稳定性。
在BGP的对等体之间必须逻辑上连通,并且进行TCP连接;目的端口号为179,本地端口号任意。
BGP支持无类别域间路由CIDR。 BGP路由更新时,只发送更新路由,大减少了BGP的传播路由所占用的带宽;
AS之间:BGP通过携带AS路径信息来标记途径的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
AS内部:BGP在AS内学到的路由不会在AS中转发,避免了在AS内产生环路。 即为防止环路,BGP协议规定,路由器从IBGP学习到的路由不向它的IBGP对等体发布。另外为了 防止产生路由黑洞,协议还规定BGP发言者从IBGP获得的路由是否发布给它的EBGP对等体与是否同步相关。
BGP的运行是通过消息驱动的,共有5种消息类型(Open、Update、Notification、Keeplive和Route-refresh).
Open消息:是TCP建立连接后发送的第一个消息,用于建立BGP对等体之间的连接关系并进行参数协商,内容包括BGP版本、AS号、路由ID、HOLD TIME值、认证信息等。
Update消息:用于在对等体之间交换路由信息。可以发布多条属性相同的可达路由信息,也可以多条不可达的路由信息。
Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接就会中断。
Keeplive 消息:BGP会周期性地向对等体发出Keeplive消息,用来保持连接的有效性。
Route-refresh消息:用来通知对等体自己支持路由刷新能力。
4.BGP的状态机
BGP共有6种状态机:Idle、Connect、Active、OpenSent、Openconfirm、Established.
首先是Idle状态,BGP协议一旦start,状态机就进入Connect状态,在Connect状态,若Connect-Rtry定时器超时,则BGP状态机会停留在Connect状态。同时,BGP试图建产TCP连接,如果TCP连接建立失败,在BGP状态机进入ACTIVE状态。若TCP连接建立成功,则BGP状态机直接进入Opensent状态。在ACTIVE状态,若TCP连接依然不能建立起来,那么BGP状态机就会一直停留在active状态,直到TCP连接成功,才会进入opensent状态。在opensent状态,BGP一旦收一个正确的open报文,就会进入openconfirm状态。在openconfirm状态,当keeplive定时器超时,BGP状态机就会停留在openconfirm状态。直到BGP收到keeplive报文,BGP状态机才会进入established,这时BGP连接才算建立起来。
在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active、Established。当BGP状态是active时,BGP邻居之间是无法通告路由的,主要是因为TCP连接还没有建立起来,建立邻居关系的地址之间,IGP路由不通。Established状态,说明BGP对等体之间可以通告路由了。
原文地址:http://blog.51cto.com/ahtao/2344627
时间: 2024-10-01 04:36:33