HCIP —— BGP 基础 (下)

BGP 的状态机

--- 建立对等体之间的TCP会话:指定建立对等体的对象

六种状态机

Idle状态

Idle 等待状态(相当于OSPF的down状态)--- 采用TCP单播建邻

Idle 状态下,启动BGP协议后必须指定建立对等体的目标之后,才能进入下一个状态(依靠IGP协议:静态、直连等

Connect 状态

Connect 状态下,BGP对等体之间开始建立TCP会话连接

Opensent 状态

如果TCP会话建立成功则进入到OpenSent状态。

Active 状态

如果TCP会话建立失败则进入Active状态(尝试状态)。

OpenConfirm 状态

如果认可对等体发过来的Open报文中的参数,首先会回复一个Keepalive报文用来确认Open报文中的参数已近被我认可,并且进入OpenConfirm 状态。

OpenSent 状态

如果TCP会话(三次握手)建立成功则进入OpenSent 状态,在OpenSent状态下,开始发送Open报文去建立BGP对等体关系

Established 状态

如果收到对等体发送Keepalive报文,则进入Established状态。

BGP的工作过程

  1. 基于IGP(静态、直连、RIP、OSPF...)协议实现路由可达,原因:BGP需要建立TCP会话(单播)
  2. 必须指定邻居关系,邻居之间进行单播传输通过三次握手,来建立TCP会话通道。之后所有的BGP通信都将基于TCP会话通道来传输。并且依靠TCP提供传输的可靠性。
  3. 使用Open报文和Keepalive报文来进行邻居关系的建立Open报文用来建邻使用的参数,Keepalive报文用于Open报文参数的确认。最终完成对等体关系的建立。生成邻居表,存储BGP对等体关系信息
  4. 建立邻居关系后,使用Update报文来共享路由条目信息。信息中将携带目标网络号,掩码及路径属性;之后,将发送以及收集到的路由信息记录在一张表中 --- BGP表
  5. 之后,会将BGP表中的最优的路由信息通过路径属性选择的结果)加载到路由表中。
  6. 收敛完成后,将使用Keepalive报文进行对等体之间的周期保活,默认的保活时间为 180 S (hold time), 发送周期为 60 S
  7. 如果这个过程中出现任何问题,都将使用Notification报文进行 告警
  8. 如果拓扑结构出现突变(增加/删除),则将使用Update报文来进行触发更新,并通告给其他的对等体。

BGP的机制

BGP的路由黑洞

存在问题:控制层面的可达数据层面实际不可达

IGP内部没有运行BGP的设备,当访问BGP网段流量来到这些设备之后,由于控制层面可达,数据层面不可达(因为这些设备没有运行BGP,没有BGP的网段的路由信息),那么将丢弃这些流量。

解决方法:

  1. 所有设备均运行BGP
  2. 重发布
  3. MPLS (Multi-Protocol Label Switching 多标签交换协议)--- 最早用来专门解决BGP路由黑洞,运用MPLS - VPN 广泛。

原理:MPLS是根据标签来转发的,而不是路由条目。只要边界路由器上有BGP路由,接下来路由传播在内部路由器走MPLS,通过标签转发,即使路由有黑洞,也可以通,因为我内部走的是标签。

同步机制  --- 当设备学习到一条BGP路由时,如果本地的IGP路由不可达,则将视该BGP路由无效。  首先 可以先通告命令 查看路由条目:display ip routing-table 。  ---- 默认关闭的

BGP的防环 --- 水平分割

EBGP的水平分割

BGP 为了解决EBGP路由环路的问题,设计了一个AS - PATH的属性,设备在发出AS 时会携带本AS的AS号,当路由信息携带该AS号,那么对应该AS的设备不会接受该路由

同时AS - PATH 属性也是BGP的一个选路依据,当其他属性一致时,会选择AS - PATH属性 更短的路径。

IBGP的水平分割

当运行BGP的设备 从IBGP对等体处学习到一条IBGP路由,那么将不再转发给其他的IBGP对等体。

解决方案  --- 在IBGP对等体直接构建全连的IBGP对等体关系

引起两个问题:

1.增加拓扑的复杂性导致网络的可拓展性差。

2.增大了资源的占用。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 12:46:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 12:46:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 12:46:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 12:46:07       20 阅读

热门阅读

  1. spring更加松散的获取bean的方式ObjectProvider

    2023-12-11 12:46:07       47 阅读
  2. 代码随想录-刷题第二十二天

    2023-12-11 12:46:07       45 阅读
  3. RabbitMQ学习

    2023-12-11 12:46:07       28 阅读
  4. 使用TensorFlow构建深度学习模型

    2023-12-11 12:46:07       39 阅读
  5. K8S学习指南(6)-k8s核心概念label和label selector

    2023-12-11 12:46:07       32 阅读