站点图标 Linux-技术共享

华为,HCIP-BGP基础,视频教程

YOUtube地址:https://www.youtube.com/watch?v=gppOb4CQe0k&list=PLVn1389-PVzW3MzK9tBfQI91NWnkAO-Su
BGP-----边界网关协议
AS----自治系统
AS定义:由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合。
 
AS划分的原因
  • 整个网络规模较大,伴随的是路由表中的路由数量进一步增加,路由表规模变大,路由收敛速度变慢,设备性能消耗加大。-----范围太大。
  • AS之间可能是由不同的机构、公司,相互之间无法完全信任,使用IGP协议可能存在暴露AS内部的网络信息的风险。
不同的AS通过AS号进行区分,AS号存在16bit、32bit两种。IANA----互联网数字分配机构。
  • 16位AS号,取值范围1-65534(其中0和65535保留),其中64512-65534为私有的AS号,可以自行使用,公有的AS号为1-64511
  • 保留AS号
    • RFC4893标准,23456该AS号为保留AS号
    • RFC5398标准
      • 16位AS号:64496-64511-----16个
      • 32位AS号:65536-65551-----16个

 

BGP基础

BGP-1------RFC1105
BGP-2------RFC1163
BGP-3------RFC1267
BGP-4------RFC1771----4271
 
BGP协议介绍 
1、首先RIP是基于UDP进行数据传输的,而UDP是一个不可靠的协议,他在传输过程中可能会丢失某些数据。
2、缺省情况下,RIP协议的路由更新报文的发送间隔是30S,而如果两个AS内部的路由表非常大,30秒的时间可能还不够将所有的路由信息传递给对方AS,这样,整条链路完全就是为了RIP的通告报文服务,而不能转发数据流量。 
 
解决方法:
  • 将UDP协议更换为TCP协议。不用担心数据丢失,并且TCP会预先建立连接,也就让路由器有一个准备的时间而不是像RIP一样毫无准备的接收大量更新数据。
  • 取消周期更新,改为触发更新。
    • 在第一次路由数据同步完成后,如果有路由增加,就发送通告路由增加的报文。如果路由删除,就发送一个通告路由删除的报文。
    • 如果路由信息发生改变,就先发送一个通告路由删除的报文,在发送一个通告路由增加的报文。 

 

运行BGP协议之间的设备传递路由信息,原因在于若传递拓扑信息,会导致路由器负载过高,并且会让对端AS看到本端的拓扑信息,引发安全问题。
BGP需要传递所有的通过BGP学习到的路由信息,并且运行了BGP协议的路由器,所维护的路由表是包含了整个互联网的所有路由信息的。 

 

BGP特点
  • BGP基于TCP,只要能够建立TCP连接,就可以建立BGP连接
  • 触发式更新,不再进行周期更新
  • 只传递路由信息,而不会暴露AS内的拓扑信息
    • 不传递拓扑的原因
      • 拓扑信息资源占用量大
      • 会暴露AS内部的拓扑连接情况
  • 无类别的路径矢量型协议
    • 无类别-----传递时携带真实子网掩码
    • 矢量-----方向性,谁传递的路由,谁为下一跳
    • 距离矢量----将一个路由器看做一个单位计算距离
    • 路径矢量----将一个AS看做一个整体,从而计算一跳。 
IGP协议的主要任务是将AS内部的未知网段信息计算获取到,而BGP则主要是将IGP协议计算出来的路由信息进行搬运和传递,并不去计算路由。

 

BGP的特征 
IGP协议特点
  • 选路佳
  • 收敛快
  • 占用资源少
可控性
因为在重发布的过程中,由于会抹除原有度量值,会导致出现选路不佳的情况。而BGP为了弥补这个不足点,直接舍弃了开销值。取而代之的是设计了很多的路径属性。
可靠性
  • BGP因为只有触发更新,而不存在周期更新。所以,需要确保其可靠性,使用TCP为传输层协议。
  • 端口号179。-------BGP会话的建立是手工指定的(单播形式)。
  • IGP协议不选择使用TCP的原因:
    • TCP传输效率低
    • TCP传输占用资源大
    • TCP协议只能实现单播,所以,无法通过组播或广播的形式发送数据,将导致IGP协议无法自动发现邻居关系,只能手工指定。 
AS-BY-AS
BGP将一个AS看做是一个整体。
BGP协议不支持负载均衡。 
 
IGP协议追求 
收敛速度快 
选路佳(无环路)
占用资源少
EGP协议追求 
可控性
可靠性 
AS-BY-AS 

 

 

BGP的对等关系
BGP因为传输层使用的是TCP协议,所以只要在TCP协议可以正常建立会话的基础上就可以完成BGP的建邻工作。
BGP支持非直连建邻(网络可达)-----BGP的非直连建邻是建立在IGP(静态)之上的。
BGP存在两种对等体关系类型:EBGP、IBGP。 
  • EBGP对等体关系
    • 位于不同自治系统的BGP路由器之间的BGP对等体关系。
    • EBGP对等体一般使用直连建立对等体关系。EBGP邻居之间的报文中TTL值被设置为1。
    • 两台路由器之间要建立EBGP对等体关系,需要满足如下条件:
      • 两个路由器属于不同AS
      • 在配置时,peer命令所指定的对等体的IP地址必须路由可达,TCP连接必须正常建立。
  • IBGP对等体关系
    • 位于相同自治系统的BGP路由器之间的BGP对等体关系。
    • IBGP对等体一般使用非直连建邻。IBGP邻居之间的报文中TTL值被设置为255。
    • 在IBGP对等体中,常使用环回接口地址作为源目IP地址。
      • 环回接口稳定
      • 并且可以借助AS内部的IGP和冗余拓扑来保证可靠性。
BGP的特点总结:
1. 无类别路径矢量协议-----AS-BY-AS
2. 使用单播更新来发送消息;基于TCP 179号端口工作。
3. 增量更新机制----仅触发更新,无周期更新
4. 具有丰富的路径属性来取代IGP中的度量值进行选路,可以由多个属性共同控制协议
5. 可以在流量的进出口实行路由策略----可控性
6. 默认不被用于负载均衡-----会通过各种选路规则仅仅产生一条最佳路径
7. BGP支持认证和聚合 

 

 

BGP的数据包

BGP报文头部

 

Route-refresh包-----路由刷新包
作用:用来要求对等体重新发送指定地址族的路由信息。
一般为本端修改了相关路由策略之后让对方重新发送更新报文,本端执行新的路由策略重新计算BGP路由。
双方均支持路由刷新功能。 

 

OSPF中的hello报文------可以周期性的发现、建立和保活邻居关系。

 

Open包
是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系。

  • Hold Time-----保活时间
  • BGP Identifier-----BGP的标识符(RID)
    • 与OSPF中的RID用法相同
    • 全网唯一
    • 获取方式:手工配置>最大环回接口>最大物理接口 

 

BGP需要协商的参数 
  • AS号
    • BGP的open报文会携带本地的AS号,通过比较两端的AS号可以判断对端是否和本端处于相同AS。
      • 不管这个AS号与本地的AS号是否相同,都不影响BGP对等体的建立。
    • 另外,如果对方的AS号和本地指定对等体时写的AS号不同,则会导致邻居关系无法建立。
      • peer 12.0.0.2 as-number 100
  • RID
    • 通过对比open报文中的RID值,可以判断是否相同,若相同则会导致建邻失败。
  • 认证字段
    • BGP也可以进行认证,认证口令不同,则也会导致建邻失败。
    • 该字段永远以MD5值的方式保存在TCP的选项字段。
  • 保活时间-----并不影响BGP对等体的建立。
    • BGP在建立对等体关系时,需要协商该参数。
    • 如果在该时间内未收到对端发来的keepalive报文或者update报文,则认为BGP连接中断。----180S。
      • 报文更新时间----三分之一保活时间----60S。
    • 若双方保活时间不一致,则按照小的时间进行。
    • 该参数可以设置为0,若设置为0,则代表不发送keepalive报文。
  • 路由刷新功能

 

keepalive包
作用:用来进行周期保活。 
除了保活机制外,keepalive报文还在open报文协商参数时,临时充当确认报文-----确认open报文中的参数是否认可。 

 

update包---更新包 
作用:用于在对等体之间传递路由信息,可以用于发布、撤销路由。-----携带需要传递的路由信息。
需要携带的参数主要就是目的网络号、子网掩码信息和路径属性。

 

 

Notification包 
纯粹的告警机制。当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发送该报文),就会向对等体发送该报文,告知对端错误原因。之后BGP连接会立即中断。 

 

 

 

BGP的状态机
BGP的角色
  • Speaker
    • 发送BGP报文的设备被称为BGP Speaker(发言者)
    • 它接收或产生新的报文信息,并发布给其他BGP Speaker。Speaker角色是针对具体报文发送过程而言的,网络中每台BGP路由器均可称为自己发送BGP报文的Speaker。
  • Peer
    • 相互交换报文的Speaker之间互相称为peer(对等体)

 

BGP的状态机仅描述的是对等体关系建立过程的状态变化。BGP可以将邻居建立过程和BGP路由收发过程分开。 

  • IDLE-----空闲状态
    • 所有设备启动BGP进程后,首先进入该状态。
    • 进入该状态后,等待手工指定邻居。
    • 当手工指定邻居之后,将会进入到一个检查环节。需要检查手工指定的IP地址在本地全局路由表中是否可达,只有可达,才可以正常建立TCP的会话,如果不可达,则邻居关系建立失败,停留在IDLE状态。
    • 若检查成功,则进入Connect状态。
  • Connect-----连接状态
    • 建立TCP会话连接
    • 在该状态下,会开启一个连接重传定时器。----32秒。
    • 如果成功建立TCP会话,会关闭连接重传定时器,并进入OpenSent状态。
    • 如果建立失败,则进入Active状态。
    • 如果重传定时器超时,BGP仍然没有收到对等体的响应,那么BGP会继续尝试与对等体建立TCP会话,并一直处于Connect状态。
  • Active状态----尝试状态
    • 该状态是因为第一次TCP会话建立失败进入的,在该状态会重新尝试建立TCP会话。
    • 如果成功建立,则进入OpenSent状态,并会关闭连接重传定时器。
    • 如果失败,则停留在Active状态。
    • 与Connect状态共同使用同一个连接重传定时器。
  • OpenSent-----发出本地的Open报文
    • 也将收到对端发送的open报文,并会查看其中的参数,如果参数没有问题,则本地将发送keepalive报文进行确认,之后进入openconfirm状态。
    • 如果发现收到的open报文中的参数不认可,那么BGP会发送notification报文给对等体,并进入idle状态。
    • 对等体关系的指定是双向的,所以当双方都使用peer命令指定了对等体后,均会主动与对等体建立TCP连接。但是这样就会建立两条TCP的双向连接,所以BGP会选择第一个TCP链接断开。
  • OpenConfirm----等待确认状态
    • 在该状态机是,等待对方发送的keepalive报文。如果接收到对端发送的keepalive报文,则代表参数协商通过,会进入最终状态。
    • 如果收到的是notification报文,则转至idle状态。
  • Established------连接建立完成状态
    • 对等体关系建立完成的标志。
    • 在该状态下,BGP可以和对等体交互Update报文、keepalive报文、Route-refersh报文和Notification报文。

 

 

BGP的工作过程
1. 基于IGP协议或静态路由实现邻居IP可达
2. 启动BGP协议,并指定邻居关系
  • 1. 邻居之间单播传输报文,通过三次握手机制,建立TCP会话通道。
  • 2. 后续BGP所有的通讯都将基于TCP会话通道来传输。包括传输所需要的可靠性机制。
3. 使用open报文和keepalive报文进行对等体关系的建立。open报文用来携带建立对等体关系时所需要使用的参数,keepalive报文用于参数的确认。最终完成对等体关系的建立。生成邻居表。
4. 使用update报文来共享路由信息。信息中将携带目标网络号、掩码及路径属性;之后,设备会将所有的自己发送的以及接收的路由信息记录在一张表中-----BGP表。
5. 将BGP表中的最优路由信息(通过路径属性选择)加载到全局路由表中。
6. 此时路由收敛完成,将使用keepalive报文进行周期保活,默认保活时间为180S,周期发送时间默认为保活时间的1/3,即60S。
7. 如果出现错误信息,则将使用notification报文进行告警
8. 如果出现结构突变,则将使用update报文进行触发更新

 

 

BGP的防环机制
EBGP的水平分割
AS_Path属性-----记录AS路径的一个属性
当路由信息再一次传回本地AS时,路由器通过查看AS_Pathshux1,可以清楚的知晓该属性包含本地AS号,故拒绝学习该路由信息。 

 

IBGP的水平分割 

BGP规定,当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。-----IBGP水平分割机制。

 

解决方案
1. 构建全联的IBGP对等体关系
  • 1. 当AS内部设备数量巨大时,IBGP邻居关系会呈指数型增长,而非直连建邻之间传递的数据还是要依靠物理链路,故全连接建邻会导致占据大量的链路资源,并且路由器维护大量的TCP和BGP会话连接,需要消耗大量的设备资源。
  • 2. 网络的可扩展性差。
2. 打破IBGP水平分割
  • 1. 联邦
  • 2. 路由反射器

 

BGP的路由黑洞

由于BGP协议可以非直连建邻,所有导致BGP协议可能出现跨越未运行BGP协议的设备,导致BGP路由传递后,控制层面可达。但是数据层面,流量流经未运行BGP协议的设备时,无法通过,形成路由黑洞。
 
避免路由黑洞的方式-----BGP同步更新规则----当一台路由器从自己的IBGP对等体学习到一条BGP路由时,它将不能使用该条路由或把这条路由信息通告给自己的EBGP对等体,除非它又从IGP协议学习到这条路由,也就是要求IBGP路由与IGP路由同步。
 
在华为数通设备上,BGP同步更新规则缺省是被关闭的,并且华为也不允许开启BGP同步规则。
解决方案:
1. 让未运行BGP协议的设备运行BGP协议---建立全连接的IBGP环境。
2. 物理或逻辑拓扑全联
3. 在IGP协议中,重发布BGP协议的路由信息
4. MPLS----多标签标记交换。 
退出移动版