您当前的位置:首页 > 知乎文章

浅谈BGP工作原理

时间:2022-02-28 10:48:08  知乎原文链接  作者:网盾科技

BGP(Border Gateway Protocol)被称为边界网关协议,是一种运行于TCP上的唯一一种能够处理因特网大小的网络协议,也是唯一一种可以完善无关路由域间的多路连接协议。BGP主要用于与其他BGP线路建立网络连接、相互交换包括AS在内的信息。这种信息对于构成AS互联的拓扑图、清洗路由环路同时施加决策给AS有着极大的成效。

小科普:什么是AS?

AS(Autonomous System)被称为自治系统,指的是受实体管控下有着一致的选路策略的IP网络。BGP中的每个AS对应一个AS号来进行区别,而AS号又分为4字节和2字节,4字节的范围在1到4294967295之间,而2字节则在1到65535之间,若一个设备使用4字节AS,它就可以兼容2字节的AS。

小科普:什么是BGP路由器号?

BGP的路由器号(router ID)是一个用于标识BGP设备的32位值,通常是IPv4的形势,会携带在BGP建立会话时发送的Open报文中。每个BGP设备都必须有这样一个router ID否则无法进行连接。

对于每一个BGP设备而言,Router ID都具有唯一性,可以设备自动选取也可以手工进行设置。缺省情况下,BGP选择设备上的loopback接口的IPv4地址作为此BGP设备的router ID。假如也没有loopback接口怎么办?那么,就会选择接口中最大的IPv4地址作为BGP的router ID:一旦router ID生成,除非接口地址被删除否则即使设置了更大的地址也会维持这个ID不变。

对BGP的概念有了一个初步了解后,我们还需要进一步涉入BGP的工作原理。

BGP建立连接

BGP设备之间会使用以下5种报文建立会话,其中只有Keepalive报文的发送性质属于周期性,其余四种均为触发式:

Update报文:BGP对等体之间交换网络层可达性信息。

Notification报文:出错,中止连接。

Open报文:作BGP对等体之间的连接建立。

Route-refresh报文:改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。

Keepalive报文:BGP对等体之间作周期性的信息交换,保持会话有效(默认为六十秒)。

class="ztext-empty-paragraph">

在两个BGP网络相互建立连接之前,先要建立邻居关系。(BGP不是一种根据兴趣对象建立动态连接的路由器,而是具有一种根据邻居IP地址配置的特殊性)

BGP使用keepalive分组确认可访问性,假若发给某一BGP设备三个连续的keepalive分组全部丢失,那么这个BGP会被定位为不可达。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

Idle:此状态不允许传入,不进行网络资源的分配。在持续性差错条件下,经常性的重启会导致波动,所以在第一次进入空闲状态后,路由器会设置定时器重试,在定时器到期时才会重启BGP。

Connect:在三次TCP握手建立完成后,BGP等待TCP连接完成,假如连成在发送Open分组给对方后就会更改为OpenSent状态;假如连接失败,会根据失败类型更改状态为Idle、Active或者仍然保持Connect。

Active:初始化一个TCP连接来与BGP达成邻居关系的建立。假如连接成功将会变成OpenSent状态,失败则会返回Idle状态或者保持Active。

OpenSent:BGP发送Open分组给对方后等待分组回应都会显示为OpenSent,假如分组成功则会变成OpenConfirm并给对方发送一条Keepalive分组,假如没有收到回应则会返回ldle状态或保持Active。

OpenConfirm:BGP在最后一步等待对方分组它的keepalive,假如成功就会变更状态为Established,不然报错重新回到Idle。

Established:BGP对等体之间进入可以作信息交换的状态,分组包括Keepalive、upadate以及Notification。

此处的Active是发起方,Connect是回应方,可以使用debug IP BGP、debug IP BGP summary、debug IP BGP events命令进行查看。

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门