目录

什么是AS?

协议基础

特点

什么时候使用BGP

邻居关系

配置

路由宣告

防环机制

路由反射器

联邦

BGP工作过程

BGP路由黑洞问题

BGP的认证


什么是AS?

自治系统(Autonomous System)是指使用统一内部路由协议的一组网络。 如果成员单位的网络路由器准备采用EGP(Exterior Gateway Protocol) BGP(Border Gateway Protocol)或 IDRP(OSI Inter-Domain Routing Protocol)协议,可以申请AS号码。一般如果该单位的网络规模比较大或者将来会发展成较大规模的网络, 而且有多个出口,建议建立成一个自治系统,这样就需要AS号码。 如果网络规模较小,或者规模较为固定,而且只有一个出口, 可采用静态路由或其它路由协议,这样就不需要AS号码。https://www.cidr-report.org    标准AS编号  16位二进制   0-65535

路径矢量(一个AS为一跳)--- 距离矢量(一个路由器为一跳)

协议基础

EGP协议 、无类别协议;无算法有规则,基于TCP封装,使用TCP端口号179

特点

  • 收敛速度慢
  • 基于TCP做认证,认证信息在TCP报文中
  • 单播更新
  • 具有丰富的属性
  • 支持路由认证
  • 默认不被用于负载均衡——通过各种选路规则仅仅产生一条最佳路径
  • BGP支持认证和聚合(汇总)

什么时候使用BGP

  • 传输AS
  • 连接多宿主(多出口)
  • 对进入和离开本AS的流量实现强大的控制策略

邻居关系

  • IBGP内部邻居关系AD---200
  • EBGP外部邻居关系AD---20
  • IGBP TTL=255
  • EBGP TTL=1
  • 邻居---直连  因为BGP协议中存在非直连邻居的需求,故BGP邻居称为毗邻关系
  • EBGP邻居关系 ----  外部BGP邻居关系,建邻的两台设备处于不同的AS中
  • IBGP邻居关系  ---- 内部BGP邻居关系,建邻的两台设备处于相同的AS中

配置

建立BGP邻居关系

[r1]bgp 1   启动时需要定义AS号,没有多进程概念;一台设备只能在一个AS中工作

[r1-bgp]router-id 1.1.1.1  建议配置RID;RID的生成规则同OSPF;

1、单链路的EBGP邻居关系

[r1-bgp]peer 12.1.1.2 as-number 2      对端接口ip地址    对端所在的AS号

2、建立IBGP邻居关系;--由于一个AS的内部大多拓扑冗余比较丰富,若使用物理接口来作为源、目IP地址建立BGP邻居,将浪费冗余资源;建议使用环回接口作为源/目ip地址;

稳定/且可以同时使用多条链路资源

切记:在使用环回地址作为源、目ip地址时;及要定义目标为对端的环回,还需要修改本端的源为环回,否则将自动使用本地的物理出口作为源

[r2-bgp]peer  3.3.3.3 connect-interface LoopBack 0

3、多链路的EBGP邻居关系  、建议使用环回作为源、目标接口

      IP可达问题—一般使用静态

[r4]ip route-static  5.5.5.0 24 45.1.1.2

[r4]ip route-static 5.5.5.0 24 54.1.1.2

      建立EBGP邻居关系

[r4]bgp 2

[r4-bgp]peer  5.5.5.5 as-number 3

[r4-bgp]peer  5.5.5.5 connect-interface LoopBack 0

TTL问题,默认IBGP邻居间的数据包TTL值为255,EBGP邻居间TTL值为1;

  因此若使用环回来建立EBGP邻居关系,TTL不够;故,必须修改

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2

两端配置完成后,邻居间先进行TCP的三次握手,建立TCP的会话

r1]display  tcp status

当TCP会话建立后,邻居间收发一次open包(携带RID),建立BGP的邻居关系;生成邻居表

[r1]display  bgp peer

 BGP local router ID : 1.1.1.1

 Local AS number : 1

 Total number of peers : 1                Peers in established state : 1

 Peer        V        AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv

12.1.1.2        4           2        5        6     0 00:03:22 Established       0

表格尾部的数字0,代表从该邻居处学习到的路由条目数量

路由宣告

BGP协议所宣告路由为本地路由表中任何来源产生的路由信息;

宣告时,可逐条选择本地路由表中的路由信息宣告:

[r1]bgp 1

[r1-bgp]network 1.1.1.0 24

切记:宣告时,所宣告的网络号必须和本地路由表中的记录完全一致

当宣告配置完成后,本地生成BGP表;-装载本地发出及接收到所有BGP路由

[r1]display  bgp routing-table 
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   1.1.1.0/24            0.0.0.0         0                     0      i
状态   目标网络号                        属性

* 可用

> 优秀  

使用i标识该条目通过本地的IBGP邻居学习

一条条目可用且优秀才能传输给本地的其他邻居;才能加载到本地的路由表中;

条目优秀的条件:

  • 同步问题—目前的设备同步规则默认关闭,该问题在当下已经不需要关注了

        同步问题—本地必须先通告IGP学习到该路由,在通过BGP学习

  • 下一跳不可达问题—因为AS-BY-AS规则  使得下一跳地址在一个AS内部传递时,默认不修改;故通过本地的IBGP邻居学习到的路由,大多下一跳不可达
[r2]bgp 2

[r2-bgp]peer  3.3.3.3 next-hop-local   R2将路由传输给3.3.3.3时,修改下一跳地址为R2

防环机制

  • IBGP水平分割机制:本地一个从IBGp邻居学习到的路由条目,不得传给本地其他的IBGP邻居
  • EBGP水平分割:接收到的路由条目中,若存在本地的AS号将拒绝该条目进入
  • 缺点:在IBGP水平分割的限制下,虽然避免了IBGP的环路产生,但同时也使得AS内部为了能够传递路由条目,必须两两间建立IBGP邻居关系,邻居关系成指数上升,配置量巨大
  • 解决方案:联邦、路由反射器

路由反射器

客户端、非客户端必须分别为RR的IBGP邻居关系;三种角色构建为一个簇(组);
一个簇内可以存在多台设备,但至少一个簇内存在一个RR和一个客户端
规则:
1)RR从一台EBGP邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
2)RR从一台客户端邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
3)RR从一台非客户端邻居处学习到的路由可以共享给本地的其他客户端、EBGP;不能共享给其他的非客户端;
注:被反射路由,在反射过程中,其属性不发生任何变化;若RR接收的条目不优,不具备传递性,将不被反射;

[r3-bgp]peer 2.2.2.2 reflect-client    ibgp邻居2.2.2.2成为本地的客户端,同时本地成为RR;
 

联邦

  • 联邦,将一个大as逻辑为多个小as;小AS使用私有AS号,小AS间为联邦内的bepg邻居关系,可以像EBGP一样传递路由,但不能修改属性; 对于联邦外的AS,只能看到大AS号;
  • 所有的启动,建邻、管理均基于小AS号进行
  • 联邦内所有设备需要声明自己所在的大AS号
  • 小AS间的ebgp邻居需要互指对端的小as号
[r3]bgp 64512
 [r3-bgp]router-id 3.3.3.3
 [r3-bgp]confederation id  2   声明本地的大AS号
 [r3-bgp]confederation peer-as 64513   对端小AS号
 [r3-bgp]pe 2.2.2.2 as-number 64512
 [r3-bgp]pe 2.2.2.2 connect-interface LoopBack 0
 [r3-bgp]pe 4.4.4.4 as-number 64513
 [r3-bgp]pe 4.4.4.4 connect-interface  LoopBack 0
     [r3-bgp]pe 4.4.4.4 ebgp-max-hop 2

注:在实际工程中,路由器反射器与联邦技术是结合,在一个拓扑中共同使用的;

BGP工作过程

  1. 配置完成后,邻居间进行单播TCP3次握手,目标端口号为179,建立TCP的会话;之后所有的BGP协议数据包会基于该会话进行传输
  2. 会话建立后,邻居间正常收发一次open报文建立BGP邻居关系,生成邻居表(BGP协议的open报文中将携带本地的RID—生成方式和OSPF一致;仅需要本地及本地所有邻居唯一即可)
  3. 邻居建立后,默认1min使用keeplive周期保活邻居关系(周期保活TCP会话)
  4. 管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议进行宣告;使用updata数据包进行邻居间的路由共享,之后生成BGP表(装载本地发出及收到的所有路由条目)默认将最优路径加载于路由表中(最优仅仅基于BGP的选路规则,不一定为最佳路径)
  5. 收敛完成后仅keeplive周期保活即可
  6. 若出现错误信息,邻居间将使用Notification报文进行报错

BGP路由黑洞问题

非直连建邻到达控制层面路由条目可传递,递归计算路由可达,而实际数据层面流量在经过没有运行BGP协议的路由器时无法通过,导致有去无回

解决方案:

  • 物理、逻辑拓扑全连:物理直连/VPN
  • 邻居关系全连:网络中所有设备均运行BGP协议
  • BGP重发布到IGP
  • MPLS多协议标签交换(推荐)

BGP的认证

[r3-bgp]peer  34.1.1.2 password cipher 123456

                                  双方密码需要一致,密码默认基于MD5计算后转发