第六章,BGP—边界网关协议
自治系统—AS
定义:由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合。
AS的来源:
- 整个网络规模过大,会导致路由信息收敛速度过慢,设备对相同目标认知不同。
- AS之间可能是不同的机构或企业,相互之间无法完全信任,使用IGP协议会存在暴露网络信息的风险。
AS号,16bit和32bit。---->IANA组织进行分配
- 取值范围1-65534(0和65535保留)(常用16bit)
- 1-64511---------公有AS号
- 64512-65534-----------私有AS号
BGP基础
运行了BGP协议的路由器,其所维护的路由表,是包含了整个互联网的所有路由信息。
BGP特点
- BGP是基于TCP协议进行数据传输,必须先建立TCP连接,再建立BGP会话连接。
- 仅具备触发更新,而不再进行周期更新。
- BGP协议只传递路由信息,不会暴露AS内部的拓扑信息。
- 通常BGP被称为无类别的路径矢量协议。
- 无类别----传递时携带掩码信息
- 矢量----方向性:谁传递给我的路由信息,谁就是我的下一跳。
- 路径矢量----将一个AS看做一个整体,从而计算下一跳。
BGP与IGP协议有本质上的区别,IGP协议主要的任务是将AS内部的未知网段信息计算获取到路由信息,而BGP则主要是将通过IGP协议计算出的路由信息进行搬运,并不会计算路由信息。
BGP特征
- 可控性
- BGP使用大量的路径属性,取代了IGP协议中的Cost,来对路由信息进行管控。
- 可靠性
- 依靠TCP完成可靠性建设。TCP端口179。
- 两台运行BGP协议的设备,需要网络管理员手工配置邻居的IP地址,从而实现数据通讯。
- AS-BY-AS
- 在BGP的视角当中,会将一个AS看做为一个整体。
- 因为BGP是将一个AS看做一个整体,但是在该整体内部数据传输时,并非相同,故BGP默认不支持负载均衡功能。
BGP的对等体关系
BGP因为传输层使用的是TCP协议,所以,只要在TCP协议可以正常建立会话的基础上就可以完成BGP会话的建立工作-------BGP支持非直连建邻。----前提网络可达。----->BGP协议的搭建是建立在IGP协议之上。
对等体关系可以简单理解为邻居关系,建立连接。
- EBGP
- 位于不同自治系统的BGP路由器之间的BGP对等体关系。
- EBGP对等体一般使用直连方式建立邻居关系,故而,TTL数值被设定为1。
- 两台路由器之间要建立EBGP对等体关系,需要满足如下条件
- 两台路由器所属的AS不同—>判别方式:本地设备通过网络管理员的配置知晓对端的AS,从而判断是否处于相同AS。
- 配置EBGP时,peer命令所指定的邻居IP地址必须为网络可达(因为有时不一定代表直连数据可通,可能直连串口线,另一端借用环回IP),保证TCP连接可以正常建立。
- IBGP
- 位于相同自治系统的BGP路由器之间的BGP对等体关系。
- IBGP对等体一般使用非直连建邻,故而TTL数值被设定为255。
缺省情况下,BGP协议使用报文出接口作为TCP连接的本地接口IP。但是在某些情况下,我们可以指定BGP对等体之间的会话IP地址;例如,在IBGP对等体关系中,常使用环回接口地址作为通讯的源地址。原因是因为loopback接口非常稳定,而且可以借助AS内的IGP协议实现冗余来保证可靠性。
总结:
- 无类别路径矢量协议
- BGP使用单播更新来发送数据,基于TCP实现通讯。
- 增量更新(触发更新(删除/修改)是直接发一条新的路由信息,而增量更新是发送两条,第一条用于删除,第二条用于添加)
- 具有丰富的路径属性来取代IGP中的度量值参数,从而控制选路。
- 可以在控制层流量的出入口通过路由策略实现可控性
- 默认不被用于负载均衡-----会通过各种选路规则选择出一条最优路径信息。
- BGP支持认证以及路由聚合。
BGP数据包
Marker(标记位):全为1,代表开始接收BGP报文
Length:整个BGP报文长度
Type:1-5表示后面5种报文类型(按顺序)
Route-refresh-----路由刷新包
作用:用来要求对等体重新发送指定地址族(IPv4、IPv6)的路由信息。
一般为本端修改了相关路由策略之后让对方重新发送update报文,本端执行新的路由策略重新计算BGP路由。----前提提交为双方均支持路由刷新功能。
open包
是TCP建立之后发送的第一个BGP报文,用于建立BGP对等体之间的连接关系。该过程无非就是进行参数协商的过程。
- Version :版本BGP4
- AS号(My AS:发送者出于的AS区域)
- 不管接收到的open报文中的AS号是否与本地AS号相同,都不会影响到BGP对等体关系的建立。
- 但是,如果open报文中的AS号,与本地建邻时由网络管理员编写的AS号不同,则邻居关系无法建立。
- BGP对等体在建立邻居时,会配置对等体所在的AS号,如果对端发送的open报文中所包含的AS号与本地配置不同,才会导致建邻失败。
- RID(= BGP Identifier:BGP标识符)
- 如果两端RID相同,则对等体关系建立失败。
- Opt Parm Len:可选项字段长度
- Optional parameters:可选项字段
- 认证字段
- 如果认证方式或者认证数据不同,则导致建邻失败。
- 该字段永远以MD5形式,存储在TCP的选项字段中。
- Hold Time----保活时间
- BGP在建立对等体关系时两端需要协商该参数,并保持一致。但是该参数并不会影响BGP对等体关系的建立。
- 如果两端的保活时间不同,则按照较小的一端数值来执行。
- 如果在该时间内未收到对端发送来的报文信息,则认为BGP连接断开。该时间默认为180S,报文的周期发送时间为保活时间的三分之一,即60S。
- 该参数可以设置为0,此时代表不发送keepalive报文周期保活。
- 因为BGP会话是基于TCP会话建立,只要TCP判断连接断开,则BGP会话断开,故保活机制对于BGP而言并不那么重要,而设定保活机制原因仅仅是因为TCP判断会话断开所需要的时间过长,为了加快收敛速度,添加保活机制。
- 路由刷新功能(在可选项字段携带,支持就携带)
keepalive包与notification包
作用:主要用来进行周期保活,临时充当确认报文。
keepalive报文没有数据部分,只有头部19字节,类型中是4。
keepalive报文发送时间默认为保活时间的三分之一。
keepalive报文的确认实际上是针对open报文中的参数信息进行确认。而非open报文本身。TCP协议进行确认的目的是为了保障数据传输的可靠性,而keepalive报文确认的目的是为了告知对端本地认可你的参数内容。
当收到的open报文中的参数通过验证,则回复keepalive报文;如果未通过验证,则回复notification报文。
Update包-----更新包
作用:用于在对等体之间传递路由信息,可以用于发布和撤销路由(不能更改,更改只能两次Update包)。
- 撤销路由字段长度(撤销路由列表的长度)
- 撤销路由列表
- length---->待撤销路由的掩码信息
- perfix---->传输的IP地址前缀信息。
- 路径属性字段长度
- 路径属性列表
- NLRI---->网络层可达信息(无条件学习)
- 内容与撤销路由列表相同