计算机网络-4-8-外部网关协议BGP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络-4-8-外部网关协议BGP相关的知识,希望对你有一定的参考价值。
参考技术A1989年,公布了新的外部网关协议 BGP(边界网关协议) ,我们目前使用最多的版本是BGP-4(但仍然是起草方案[RFC 4271]),简写为BGP。
在不同的自治系统AS中之间的路由选择为什么不选择前面讨论的内部网关协议,如RIP或者OSPF?我们知道,内部网关协议(如RIP或RSPF)主要是设法使数据报在一个AS当中尽可能从源站发送到目的站。然而BGP使用的环境却不同,这主要有以下两种原因:
由于上述情况,边界网关协议BGP只能时力求寻找一条能够到达目的网络且 比较好的 的路由(不能兜圈子),而 并非要找一条最佳路由 ,BGP采用了 路径向量(path vector)路由选择协议 ,它与距离向量协议(如RIP)和链路状态协议(如OSPF)都有很大的区别。
在配置BGP的时候,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的 BGP发言人 。一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是 BGP边界路由器 ,但也可以不是BGP边界路由器。
一个BGP发言人与其他AS的BGP发言人要交换路由信息,就要先建立起TCP连接(端口号为179),然后在此连接上交换BGP报文以建立 BGP会话(session) ,利用BGP会话交换路由信息,如增加了新的路由,或撤销过时的路由,以及报告出差错情况等等。使用TCP连接能提供可靠的服务,也简化了路由选择协议。使用TCP连接路由信息的两个BGP发言人,彼此成为对方的 邻站(neighbor)或 对等站(peer)。
图4-38表示BGP发言人和自治系统AS之间的关系示意图。在图中画出了三个自治系统中的5个BGP发言人,每个BGP发言人除了必须运行BGP协议模块外,还必须要运行该自治系统内部的内部网关协议,例如OSPF协议或者RIP协议。
边界网关协议BGP所交换的网络可达性的信息就是要到达某个网络(用网络前缀表达式)所要经过的一系列自治系统。当BGP发言人互相交换了网络可达的信息后,各BGP发言人就根据所采用的策略从收到的路由器信息找到到达各自治系统较好的路由,图4-39表示了从图4-38的AS1上的一个BGP发言人构造出的自治系统连通图,它是树形结构,不存在回路。
在如下图4-40中,给出了一个BGP发言人交换路径向量的例子。自治系统AS2的BGP发言人通过主干网的BGP发言人:”要到达网络N1,N2,N3,N4和N5可以经过AS2“。主干网在收到这个通知后,就发出通知:”要到达网络N1,N2,N3和N4可经过AS2可沿着路经(AS1和AS2)“。同理,主干网还可以发出通知:”要经过网络N5,N6,N7可沿路径(AS1和AS3)“。
从上面可以看出:BGP协议交换路由信息的结点数量级是 自治系统个数 ,这要比这些自治系统中的网络个数少很多,每一个自治系统中BGP发言人(路由器)的数目是很少的,这样就使得自治系统之间的路由选择并不过分复杂。
BGP支无分类持域间路由选择协议CIDR,因此BGP的路由表也就包括 目的网络前缀信息,下一跳路由器,以及要到达目的网络所要经过的自治系统序列 ,由于使用了路径向量信息,就可以很容易的避免”兜圈子”。
在BGP协议刚刚运行的时候,BGP的邻站是交换整个BGP路由表,但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。在RFC 4271中规定了BGP-4种报文:
若两个邻站属于不同AS,而其中一个邻站打算要定期和另一个邻站交换路由信息,一开始就应该发送一个OPEN报文,如果邻站接受邻站的关系,就用KEEPALIVE报文(一般每隔30s)。KEEPALIVE报文只有19字节长(只用BGP报文的通用首部),因此不会造成网络上太大的开销。
UPDATE报文是BGP协议的核心,BGP发言人可以使用UPDATE报文撤销它以前通知过的路由,也可以宣布增加新的路由, 撤销路由可以一次性撤销许多条,但是新增路由,每个UPDATE报文只能添加一条。 BGP可以很容易地解决距离向量路由选择算法中的“坏消息传播得慢“这一问题。当某个路由器或者链路出现故障的时候,由于BGP发言人可以从不止一个邻站获取路由信息。因此很容易地选择出新的路由。距离向量算法往往不能给出正确的选择,因为这些算法往往不能给出正确的选择,是因为这些算法不能指出哪些邻站的目的站的路由时独立的。
图4-41给出了BGP报文的格式。四种类型的BGP报文具有同样的通用首部,其长度为19字节,通用首部分为三个字段:
OPEN报文共有6个字段:
UPDATE报文共有5个字段:
KEEPALIVE报文只有BGP的19字节长度的通用首部。
NOTIFICATION报文只有三个字段:
BGP协议
- BGP协议概述
BGP协议是用于自治系统AS之间的动态路由协议。
BGP特性:
是一种外部网关协议,与OSPF、RIP等内部网关协议不同,其着眼点不在于发现和计算路由,而是着眼于在AS之间控制路由的转播和选择最佳路由。
BGP使用TCP作为传输层协议(端口号179),提高了协议的可靠性。
BGP 进行域间路由选择,因此对协议的稳定性要求很高,故可用TCP协议的高可靠性来保证协议的稳定性。
在BGP的对等体之间必须逻辑上连通,并且进行TCP连接;目的端口号为179,本地端口号任意。
BGP支持无类别域间路由CIDR。 BGP路由更新时,只发送更新路由,大减少了BGP的传播路由所占用的带宽; - BGP是一种距离矢量路由协议,从设计上避免了环路
AS之间:BGP通过携带AS路径信息来标记途径的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
AS内部:BGP在AS内学到的路由不会在AS中转发,避免了在AS内产生环路。 即为防止环路,BGP协议规定,路由器从IBGP学习到的路由不向它的IBGP对等体发布。另外为了 防止产生路由黑洞,协议还规定BGP发言者从IBGP获得的路由是否发布给它的EBGP对等体与是否同步相关。 - BGP消息
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对等体之间可以通告路由了。
以上是关于计算机网络-4-8-外部网关协议BGP的主要内容,如果未能解决你的问题,请参考以下文章