HCIP的学习(15)

第六章,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---->网络层可达信息 (无条件学习)
    • 内容与撤销路由列表相同
相关推荐
JaguarJack25 分钟前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo36 分钟前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack1 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理2 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1232 天前
matlab画图工具
开发语言·matlab
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
dustcell.2 天前
haproxy七层代理
java·开发语言·前端
norlan_jame2 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone2 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
gihigo19982 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频