BGP基础理论

BGP

AS(自治系统号)

指的是在同一个组织管理下使用相同策略的设备的集合。
(在一个自治系统内使用相同选路策略)

作用 用于管理规模不断扩大的网络。网络被分成了不同的自治系统。

自治系统 AS 1-65535 占 2字节
其中64512-65535 私用用于IPV6
私有的AS号 64512-65535 占 4字节
占4字节(64 bit)的AS号能够支持与2字节(32bit)AS号设备兼容

BGP 边界网关协议

BGP是一种基于策略的距离(路径)矢量(向量)路由协议

为啥会自身设计防环(彻底)?

环路产生原因:从自身发布的内容,又从别处学习到自身发送回来的
BGP 可以记录AS路径(距离)—— 该路由所经过的AS号
AS: R1:AS100--> R2:AS200 会记录AS1 到AS2的距离 
当BGP speaker收到携带自己AS号的路由时,不接收条AS路径信息

优点 主要用于对内部路由的传播及选路最佳路由(可根据BGP的属性 Attribute判断)

BGP特征

  1. 工作在应用层,基于TCP,端口号为179的距离矢量协议,继承了TCP的可靠性和面向连接的特征

  2. 路由更新可靠机制

针对 IGP: RIP--> 采用周期性更新(30s)
                    OSPF,EIGRP,IS-IS --> 内部的路由可靠更新机制(如 类似		ack确认更新报文)
  	 EGP: BGP 基于TCP连接, 没有周期性的更新,使用keepalive报文检验TCP连接维持邻居关系
  BGP采用的单播更新(一对一)

 增量更新及触发更新 --BGP只发送update 更新报文更新路由。

   (好处:大大减少 BGP 传播路由所占用的带宽,所以BGP适合在Internet上传播大量的路由信息)
  1. BGP通告路由必须跟接口配置的网段一致

  2. 支持VLSM及CIDR

  3. BGP邻居的建立路由通告是分开的,并且采用 手动指定邻居(/手动建立对等体)

  4. BGP邻居建立只要路由可达,不一定需要依靠背物理连接,也可以用环回口建立(分EBGP、IBGP情况)

  5. BGP 采用路由聚合和路由衰减防止路由振荡(Route Flaps)有效提高了网络的稳定性

  6. BGP 易于扩展,能够适应网络新技术的发展

BGP 术语

  1. BGP发言者(speaker): 运行BGP协议的路由器设备

  2. BGP邻居(neighbor)=BGP对等体 (peer):二台运行BGP的路由器之间建立了一条基于TCP(179)连接的后,建立的关系

  1. 不同类型的BGP的对等体类型

    1. IBGP对等体: 同一AS号内建立对等体

      1. 通常情况下IBGP对等体一般使用回环口建立邻居,但邻居之间必须路由可达

      (IBGP 用环回口建立不会受物理链路断开所影响,稳定性好)

      1. BGP发言者从IBGP获得的路由不会在传给其他的IBGP对等体

      (也可以说IBGP 学习到路由不会在本AS系统传递—防环机制)

      1. 从IBGP对等体学习到的路由,下跳保持不变,同时不会记录AS号(相同AS号之间)
    2. EBGP对等体:不同AS号间建立对等体

      1. 通常情况下EBGP对等体直连物理口建立
      2. BGP发言者EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP), 从EBGP对等体学习到的路由,会记录AS距离 —设计防环
  1. 对等体组(peer group)是一组采用相同策略更新的BGP邻居。

    当一个对等体加入对等体组中时,该对等体将会获得所在对等体相同的配置,当对等体组的策略配置发生改变时,组内成员也会发生改变

    注意点
    若采用直连链路建立邻居关系,一旦接口或链路出现故障,接口状态也会down,BGP邻居会话就会断开。
    在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用环回口建立EBGP对等体关系,则应注意EBGP多跳问题。
    

BGP 五种 报文

BGP报文分析
BGP中除了keepalive为周期更新,其他都是为触发更新(需要一定的触发条件)

  1. open 用于发现、建立邻居关系
  1. keepalive 维护邻居关系
    60s发送一次更新hold time(保持时间):180s
  1. update 用来路由更新(删减、增加),携带路由的属性

  2. notification 当设备检测到错误状态(BGP邻居建立过程中的报错状态),发送该报文,用来显示错误情况

  1. route-refresh(路由重置)向邻居重新请求路由信息
    软清 --> 重新请求路由信息

    思科设备更新效率较慢,一般需要软清

    #思科 clear ip bgp * soft
    

    硬清–> 重新请求建立邻居更新

    #思科 clear ip bgp * 
    

BGP 的六种状态

  • idle 空闲状态 刚刚启用BGP协议,但未建立邻居关系 – >处于正在查找路由
  • connect 连接状态 正在和对等体建立TCP连接阶段
  • open-sent 发送状态 open报文,open报文中携带邻居建立的参数,等待邻居的open报文
  • open-comfirm 确认状态 收到对方的open报文,收到的open报文中的参数匹配发送keepalive报文,等待对方keepalive报文
  • established 已建立状态 收到对方的keepalive报文,开始使用update报文进行路由更新
  • active 活跃状态 设备已发送open报文,但是一直等待对方的响应
BGP 邻居关系建立过程

R1 (AS 200)   R2 (AS 100) ---> idle 状态--正在查找路由
1、-----TCP 三次握手 ——————
先启动BGP的一端先使用随机端口号向对端的179端口发起TCP连接,完成TCP连接的建立
R1 TCP SYN  -->  R2 
R2 TCP SYN + ACK --> R1
R1 ACK -->  R2
----完成TCP三次握手后 ---> connect 状态
2、-----对等体建立阶段一 ——————
三次握手建立完成之后,邻居之间相互发送open报文,携带参数用于对等体建立
R1 open  -->  R2 ---> active 状态处于等待对方响应,为建立邻居关系
R2 open  --> R1
-----等待邻居建立 ———> open-sent 状态双方都收到 open报文
3、-----对等体建立阶段二 ——————
参数协商正常之后双方相互发送Keepalive报文 ---> open-comfirm 状态 --针对收到后的open报文中的参数匹配
R1 keeplive  -->  R2 
R2 keeplive  --> R1
收到对端发送的Keepalive报文之后对等体建立成功 --->established 状态 双方都收到对端的keeplive
双方定期发送Keepalive报文用于保持连接。
4、----BGP对等体的维护
R1 update  -->  R2 
R2 update  --> R1
BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体。

R1 与 R2 建立过程图
在这里插入图片描述

BGP 三张表

1、邻居表

存放邻居的信息

查看命令

思科 show ip bgp summary 
State/PfxRcd:邻居状态/从邻居学习到的路由信息数量
!!思科设备如果是邻居关系正常的话state不会显示、只有PfxRcd

在这里插入图片描述

华为/华三 display bgp peer ipv4    
而华为、华三设备只有Established状态显示

在这里插入图片描述

2、BGP转发表

存放通过BGP学习到的信息

查看

华为/华三  display bgp routing-table ipv4

在这里插入图片描述

思科 do show ip bgp

在这里插入图片描述

只有标记 *> 有效且最优的才能加入进路由表

​                    i inter 内部学习到(IBGP)
​               		e exter 由EBGP学习到了
3、BGP 路由表
  1. 将通过BGP学习到的最优且有效的路由加入进路由表

  2. EBGP对等体获取的路由,会发布给所有BGP对等体。

  3. IBGP水平分割(防护机制): 从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体。(目的防止AS内产生环路)

  4. BGP同步原则:当一台路由器从自己的 IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由), 它将不能使用该条路由或把这条路由通告给自己的EBGP对等体

(除非它需要从IGP协议(例如OSPF、静态路由等)学习到这条路由 否则会造成BGP 路由黑洞

路由黑洞:指当数据报文被转发到某个路由器时,
该路由器没有关于目标网络的路由而造成丢包的现象。
  • 当路由器学习到BGP路由后,需对路由的下一跳进行检查
    下一跳在路由表中可达,正常加表
    下一跳在路由表中不可达,丢弃该路由
扩展1
!!!注意:
# 为什么需要将IBGP下一跳改成自己
原因: 从IBGP对等体学习到的路由,下一跳保持不变
------------
R1:AS100 --> R2:AS100 ---> R3:AS200 ---> R4:AS200
------------
R4 要想从从R1 学习到的路由,由于从IBGP对等体学习到的路由,下一跳保持不变(一般以环回口通告,且环回口路由可达)
需要R2、R3 IBGP边界设备上将下一跳改为自己
*修改下一跳为自己条件
 1、本台设备是边界 
 2、传递给IBGP邻居时 
 #配置命令
思科 neighbor 1.1.1.1 next-hop-self
华为/华三  peer 4.4.4.4 next-hop-local (需要进入IPv4地址族中)
IBGP学习到的AD 及路由优先级 AD :200, pre:255
 
#而针对从EBGP对等体学习到的路由,下一跳是EBGP对等体的地址(一般以物理口通告)
EBGP学习到的AD 及路由优先级 AD :20 ,pre :255
扩展2
# BGP 路由黑洞
产生
一台没有启用BGP协议的设备,收到通过BGP方式学习到的路由,那么进行查看,发现没有匹配上的路由信息,那么将收到的数据包进行丢弃
同时 也可以解决IBGP对等体连接数量过多问题      
------------------
R4:AS100 --> R2:AS200 ---> R1:AS200 ---> R3:AS200 --> R5:AS300

R4与R2 之间建立EBGP       R2 与 R3 之间建立IBGP·azsx     R3 与 R5建立EBGP
------------------
R5 要学习到 R4的路由信息
# 1. 首先会查找前往R4的路由条目,R5会发update更新报文给R3对等体
  2. R3 收到R5的update报文会去查找路由表,再同一AS中会出现一条BGP和IGP路由条目
  3. R3会收到 二条路由条目下一跳 来自同一IGP(如OSPF)R1的IGP路由条目,另一条来自对等体IBGP R2的BGP路由条目
     但是对于R3来说,R2为非直连下一跳,需要进行路由迭代,通过IGP学习到的路由迭代出下一跳为R1。
  4. R3将报文发送给R1 R1收到报文后查找路由表,因为R1并非BGP路由器,未与R2建立IBGP对等体关系。因此R1上并无BGP路由,
  针对R1来说没有发现去往R4的路由,会查询失败,造成了R5去往R4的路由时没有匹配的路由信息,然后进行丢弃。 

解决BGP路由黑洞
1、通过IGP学习 将IGP路由信息重分布进 BGP中
2、通过BGP学习
* IBGP全互联: 两两设备建立IBGP对等体关系
R2、R3之间建立非直连的IBGP对等体关系,以此让BGP路由器R2将路由传递给BGP路由器R3。
(利用IBGP的水平分割,从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体,所以要采用全互联)
(如果拓扑较大,实现起来比较复杂,不推荐)
* BGP路由发射器  
RR(Route Reflector) 路由反射器:RR将学习到的路由,反射给每一个IBGP对等体(client)
RR客户端条件 不需要做任何配置,只需要与RR建立邻居关系,由路由反射器学习到路由给客户端。
在R2和R3之间建立RR路由反射器,R3就不会将路由传给R1,而是通过传给与IBGP建立对等体的R2,由R2去查找去往R4的路由
(回来是R2传给IBGP对等体R3,由R3——> R5,所以需要在R2、R3上同时建立) 
思科配置 neighbor 4.4.4.4 route-reflector-client 


后续属性内容可以看
BGP属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值