造价通

反馈
取消

热门搜词

造价通

取消 发送 反馈意见

路由交换协议外部网关协议

2022/07/15185 作者:佚名
导读:早期的互联网最初采用一种外部网关协议(EGP,ExteriorGatewayProtocol)的。EGP是为一个简单的树形拓扑结构设计的。随着互联网的迅速扩大,EGP逐渐暴露出了很多的局限性,如不能处理环路和多个网络网状连接等情况。为了克服EGP的局限性,IETF制定了实际上现已成为标准的边界网关协议(BGP,BorderGatewayProtocol)。 BGP经历了不同的阶段,从最早的版本BG

早期的互联网最初采用一种外部网关协议(EGP,ExteriorGatewayProtocol)的。EGP是为一个简单的树形拓扑结构设计的。随着互联网的迅速扩大,EGP逐渐暴露出了很多的局限性,如不能处理环路和多个网络网状连接等情况。为了克服EGP的局限性,IETF制定了实际上现已成为标准的边界网关协议(BGP,BorderGatewayProtocol)。

BGP经历了不同的阶段,从最早的版本BGP1发展到了当前的版本BGP4。BGP4是第一个支持CIDR的版本。

BGP是一种用于在自治系统之间传递路由信息的路径向量协议。路径向量的含义是指BGP路由消息中带有一个自治域号码的序列,它说明了一条路由所通过的路径,这样可有效地检测并避免复杂拓扑结构中可能出现的环路问题。BGP支持CIDR寻址方式,减少了路由表长度,从而加快了选路速度。另外,BGP使用TCP作为其传输协议(缺省端口号为179),这保证了传输的可靠性,由于差错控制功能全部由TCP协议完成,因此BGP自身的实现就变得非常简单。

BGP协议在TCP连接上传送4种消息类型,包括:Open分组用来建立对等体连接;Update消息用来在BGP对等体之间传输路由信息;Keepalive消息用于周期性刷新对等体连接,以确保连接的有效性;Notification消息用于通知其他BGP对等体检测到一个差错。

BGP协议的运行分为建立对等体连接和路由更新处理两个阶段。BGP进程的对等体连接建立过程可用如图2所示的有限状态机模型来表示。

图2BGP对话的有限状态机模型

①空闲状态:这是连接的第一阶段。BGP进程等待一个通常由网络管理员发出的启动事件,然后BGP初始化资源,复位连接重试计数器,打开一个TCP连接端口,并开始监听可能由远程对等体启动的连接,若成功,就转换到连接状态,否则将回到空闲状态。

②连接状态:BGP进程等待TCP连接的建立。如果TCP连接已建立,就转换到OPEN发送状态,同时发送OPEN消息。如果TCP连接没有建立,那么将转换到行动(active)状态。如果连接重试计时器溢出,状态就停留在连接阶段,计时器将被复位,一个TCP连接请求被启动。

③行动状态:BGP进程建立一个TCP连接,获得一个对等体。若成功,则转换为Open发送状态,同时发送Open消息。如果TCP连接计时器溢出,那么BGP进程将重新设置计时器,并回到连接状态。一般地,如果BGP进程的状态在连接与行动之间来回变化,则表明存在故障,不能建立TCP连接。这可能是因为对等体的IP地址不可达。

④Open发送状态:BGP进程等待接收来自对等体的Open消息。若收到Open消息,就对Open消息进行正确性检查:如果没有错误,就转换为Open确认状态,同时开始发送Keepalive消息,并且复位Keepalive时钟;否则,发送Notification消息,转换到空闲状态。在这个阶段,BGP进程比较对等体的自治域号码,以确认对等体是内部对等体还是外部对等体。

⑤Open确认状态:BGP进程等待一个Keepalive或Notification报文。如果收到Keepalive报文,就进入对等已建立状态,表示对等体连接已建立;如果收到Notification报文,则回到空闲状态。

⑥已建立状态:BGP进程与对等体交换Update或Keepalive数据包,假设Keepalive计时器的值不是零,那么当收到Update或Keepalive数据包时,计时器将复位。如果收到任何Notification报文,则说明系统出现错误,将就回到空闲状态。

路由更新处理是BGP协议的核心。当BGP收到一个Update消息时,首先验证Update数据包的有效性,若Update消息内没有错误信息,那么就调用图3所示的路由更新处理过程。

一个Update消息或者通告一条可达路由,或者撤销多条不再可达路由。对于不可达路由,BGP将从BGP路由表或路由信息库的输入路由表中删除这些不可达路由,然后再调用决策过程处理。对于收到的可达路由信息,BGP将根据输入路由策略进行路由过滤及属性控制。例如,BGP要过滤从一个对等体收到的一条路径的某个自治域号码,为了防止流量通过该对等体到达该自治网络,输出的路由将存储到BGP路由表或路由信息库的输入路由表中。

BGP决策过程基于路径属性值,在多条可达路由中选择一条到达某个目的地的最佳路由。BGP协议使用的一些重要的路径属性包括:

①起源(Origins):表示一条路由的起源,如由外部BGP获取,或者由内部路由协议输入等。

图3BGP路由更新处理过程

②自治系统路径(AS_Path):一条路由到达一个目的地址所经过的一系列自治系统号码。

③下一段地址(Next-hop):到达一个网络的下一跳地址。

④多出口判别(MULTI_EXIT_DISC):用于提示进入一个多入口自治系统的入口优先级。

⑤本地优先(LOCAL_PREF):用于自治系统内部到达某一地址出口点的优先权。

BGP决策过程分为以下几个步骤:

①如果下一段地址是不可达的,这路由就要被忽略;

②优先选择最大本地优先的路由;

③如果本地优先相同,优先选择本地始发的路由;

④如果本地始发相同,优先选择具有最短自治系统路径的路由;

⑤如果自治系统路径相同,优先选择具有低起源属性的路由;

⑥如果起源属性相同,优先选择具有最低多出口判别属性值的路由;

⑦如果以上情况都相同,优先选择可通过最近对等体到达的路由。

由以上决策过程产生的最佳路由是路由器本身使用的,将被存储到BGP路由表的内部使用路由表中,同时输入到路由转发表。

BGP路由表中内部使用路由表的路由以及路由器在本地产生的路由需要通告给其他的对等体。在送出更新消息以前,要应用输出策略进行路由过滤及属性控制。例如,自治系统内存在多个入口,给各个入口设置不同的多出口判别属性来调整各个入境流量的大小。另外,还需区别内部和外部对等体,例如从内部对等体得知的路由不应传送到内部对等体。

总之,BGP协议是一种基于策略的路由协议,虽然协议本身相对简单,但配置相当复杂,若使用不当,则有可能影响其他网络。更详细的BGP协议内容及应用指导参见IETFRFC1771、RFC1773等。

*文章为作者独立观点,不代表造价通立场,除来源是“造价通”外。
关注微信公众号造价通(zjtcn_Largedata),获取建设行业第一手资讯

热门推荐

相关阅读