当前位置:   article > 正文

第五章 BGP工作

第五章 BGP工作

第5章 BGP工作

一、AS自治系统

AS(Autonomous System,自治系统)指的是一组有相同的路由策略、受同一组织或管理者控制的网络设备的集合。AS是互联网的基本组织单位,用于划分不同网络的管理范围。

在互联网中,每个自治系统都有唯一的AS号,用来标识和区分不同的自治系统。AS号是一个16位或32位的数字,由互联网分配机构(如IANA和各地区注册局)负责分配。

  • IANA(Internet Assigned Numbers Authority,因特网地址分配组织):IAB( InternetArchitecture Board,因特网体系委员会)的下设组织。IANA授权NIC(NetworkInformation Center,网络信息中心)和其他组织负责IP地址和域名分配,同时,IANA负责维护TCP/IP协议族所采用的协议标识符数据库,包括自治系统号。

  • 在长度为 16bit 的AS号表示方式中:64512~65534私有AS号,用于联邦配置

  • 在长度为 32bit 的AS号表示方式中:4200000000~4294967294私有AS号

  • 不存在设备同时属于两个AS区域。

定义

BGP(Border Gateway Protocol,边界网关协议)是一种在互联网中用于交换路由信息的路径矢量协议。BGP主要用于在不同自治系统(AS)之间交换路由信息,以实现互联网的全局路由选择和通信。

BGP分为 V1 V2 V3 V4 V4+(MPBGP)4个版本。

EGP --- 外部网关协议(BGP的前身,已被淘汰)

比较

BGP和RIP传递路由信息共同点都是无类别的协议。

区别

  • RIP 属于 距离矢量路由协议,端口号520,传输层协议使用UDP用户数据报文协议

  • OSPF 属于 链路状态路由协议,端口号89,无传输层协议,使用IP协议

  • BGP 属于 路径矢量路由协议,传输层协议使用TCP传输控制协议,使用TCP端口号179通信。

BGP是以一个AS做完一个整体视为一跳。

矢量 --- 都是针对目标网段从哪个路由器学习到,下一跳就写该路由器。

应用场景

对于IGP而言:选路佳,收敛快,占用资源少

对于BGP而言,应用场景的需求不同(负责AS之间通讯)

  • 选路

    • 放弃开销值,引入路径属性的概念,相当于通过一个目标网络多个参数同时衡量。

  • 路由传递可靠性

    • BGP在传输层使用了TCP传输控制协议确保数据包传输的可靠性。BGP使用TCP端口号179进行通信。

      • TCP建立连接收敛速度慢

      • TCP建立的是单播通讯

  • AS-BY-AS

    • BGP将一个AS视为一个整体,AS做完一个整体视为一跳

注意:BGP的路由优先级很低,Pre = 255

二、对等体关系

BGP对等体指的是在BGP协议中互相交换路由信息的两个网络设备或路由器。在BGP中,两个相互连接的路由器之间建立了对等关系,彼此成为对等体,通过BGP协议进行路由信息的交换和学习,以实现路由表的更新和最佳路径的选择。

分类
  • IBGP对等体(Internal Peer)
    • 同一AS内部的两个BGP路由器之间建立的对等关系。内部对等体之间交换的是该AS内部的路由信息,通常用于在同一AS内部的不同路由器之间传递路由信息。

  • EBGP对等体(External Peer)
    • 不同AS之间的两个BGP路由器之间建立的对等关系。外部对等体之间交换的是不同AS之间的路由信息,用于跨越自治系统边界进行路由交换和选择最佳路径。

BGP针对AS之间的对等体关系的建立采用直连建邻,EBGP设备之间传递的数据包TTL值默认为1

AS内部往往存在很多没有运行BGP的设备,所以采用非直连建邻,IBGP数据包TTL值为255

对等体
  • 发现对等体 --- 必须人为指定

  • 建立对等体 --- OPEN包

三、BGP数据包

BGP报文头部

Open报文

  • AS号

    • 本端设备收到对端建立对等体设备发送的OPEN报文中携带本设备所在的AS号,如果AS号对应则可以建立,如果AS号不能对应则失败。

  • 保活时间

    • 当默认180S 内没有收到对端发送的BGP报文则认为对等体失效,将会把从该对等体处学习到的路由信息删除

    • 保活时间不一致不会导致建立失败,只会双方协商一个统一的保活时间(按更小的算),该时间会在open报文中携带并协商。

    • BGP的RID和OSPF协议的规则完全一致

  • 可选字段

    • Router-refresh:路由刷新的数据包

数据包类型

hello包的作用为发现建立和保活邻居关系,而BGP中分的更细。

报文

  • Open包
    • 建立对等体关系

  • Update包
    • BGP没有周期更新

    • update报文是真正携带BGP路由信息的数据包。

  • Notification包
    • BGP的告警报文,在整个BGP工作过程中出现问题,会发送告警报文,告知对端设备失败的原因。

  • Keepalive包
    • 周期保活的数据包,默认keepalive报文的发送周期是1/3的保活时间。

    • 用来做open报文的临时确认包,充当open报文参数协商成功的标志。

  • Router-refresh包
    • 路由刷新的数据包,用来同步策略

四、BGP状态机

过程
IDLE空闲状态
本地路由可达检测

检测本设备路由表中是否存在建立对等体设备IP地址的路由,如果有路由才会进入Connect状态。

五、BGP工作过程

  1. 基于IGP(静态、直连、RIP、OSPF...)实现路由可达

    • 原因:BGP需要建立TCP会话(单播)--- BGP工作的前提

  2. 指定对等体关系,邻居之间单播传输,通过三次握手,建立TCP会话通道。之后所有的BGP通信都将基于TCP会话通道来传输,并且依靠TCP提供传输的可靠性

  3. 使用Open报文Keeplive报文进行邻居关系的建立。OPEN报文用来携带建邻使用的参数,keeplive报文用于Open报文参数的确认和BGP对等体的保活,最终完成对等体关系的建立;生成邻居表,存储BGP对等体关系信息

  4. 建立对等体关系后,使用Update报文共享路由条目信息。信息中将携带目标网络号,掩码及路径属性。之后,将发送收集到的路由信息记录在一张BGP表中。

  5. 之后会将BGP表中最优的路由信息(通过路径属性选择的结果)加载到路由表中。

    • 唯一的最优解:BGP默认没有负载均衡。

  6. 收敛完成后,将使用Keeplive报文进行对等体之间周期保活,默认的保活时间为180S(holdtime),发送周期为 60S

  7. 如果这个过程中出现任何问题,都将使用Notification报文进行告警

  8. 如果出现结构突变(网段消失或者新增网段),则将使用Update报文进行触发更新,并通告给其他的对等体。

路由黑洞

将数据发送给了没有运行BGP的设备,则未运行的设备接收到信息后会直接丢弃

解决方法
  • 所有AS内部设备都运行BGP,但是成本较高

  • 利用重发布,将BGP路由重发布到AS内部动态路由协议中。

  • MPLS多协议标记交换,通过在数据包上添加标签(Label),并在网络设备之间使用这些标签来快速转发数据包,从而实现更高效的数据传输。 --- 真正的路由黑洞问题解决方案

BGP路由发布

  • Network:目标网段/掩码

  • NextHop:对BGP路由而言,谁发送的路由信息,下一跳就是谁;如果是自身发布的路由信息,则使用0.0.0.0来指代自身

  • Path/Ogn:前者指AS_Path,当一条路由信息发出本AS时会添加本AS的AS号,如果在AS内部传递则仅传递该属性。后者表示起源码

状态码

BGP对于每一条路由信息均设置了状态码(Status codes)。

  • 星号 * :代表该路由可用,对于设备收到的路由信息,会检测下一跳的可达性,如果下一跳可达,则代表该路由可用,只有可用的路由才会参与路由选举

  • 大于号 >:代表该路由是最优的路由信息,如果BGP路由有多个来源,也会涉及选路,BGP会根据每一条路由的属性选择最好的路由最终加载到路由表中,只有最优的路由才会加表和传递

  • i:代表路由来源于内部,即IBGP路由。

  • S:抑制,代表该路由被抑制将不能传递给其他BGP对等体。

注意

BGP不能发布建邻网段,在表中可以发现建邻网段不可用不最优;这是因为建邻是为了获取IP信息,但是为了建邻我们连接了静态,但是此时再获取建邻信息已经无用,这是一种逻辑悖论

解决方案:可以再创建一个网段更换网段来进行发布。

Ogn:起源码,标注路由来源

  • I:如果是Network宣告的路由来自IGP协议自身。

  • E:代表来自EGP协议(已无价值)。

  • ?:如重发布的路由(除上述两种外的其他手段发布的路由)。

  • I > E > ?

发布方法

运行BGP的设备路由表中存在的路由条目信息都可以发布。

  • 直接宣告需要发布的网段。

  • 可以利用重发布批量宣告路由信息。

重发布路由可能不是所有网段都需要进行BGP路由发布,所以可以利用路由策略仅发布需要的网段。

BGP路由聚合

定义

BGP路由聚合(等价汇总)可以减少BGP路由表的大小,提高网络的性能和可扩展性。路由聚合可以将一组具有相同属性目标网络范围合并成一个更大的目的网络范围,从而减少路由表中的条目数量

聚合方式
  • 自动聚合

    • 只能针对重发布的路由进行聚合。

    • 只能聚合到主类,可能会产生巨大的路由黑洞

  • 手工聚合

    • 问题1:手工聚合不会抑制明细路由(也是可用且优

      • 解决:在聚合同时使用明细抑制的关键字去抑制所有明细路由。

    • BGP有时候并不希望抑制所有明细路由。

    • 问题2:聚合之后的路由信息一些属性会缺失,主要就是AS_PATH属性会缺失。

      • 解决:可以设置AS_Set关键字让聚合路由继承明细路由的AS_Path属性。一旦明细路由来自不同的AS则会用大括号{}括起来,选路会视为一跳EBGP防环分开看

注意
  • BGP为了避免缺省和聚合相遇出现环路,会自动在配置了聚合的路由器上生成一条指向空接口的路由。

  • 因为聚合路由会造成属性缺失,所以BGP设计了两个预警属性针对聚合路由,相当于提示需要额外关注该聚合路由。

    • Aggregator:生成聚合路由的设备RID和AS号Atomic

    • Atomic-aggregate:纯粹的预警属性---当抑制所有明细才会出现

BGP防环

路由环路指的是数据包在网络中无限地循环转发,无法到达目的地,造成网络故障和性能问题。在动态路由协议中(EIGRP,OSPF)不会触发环路,

  • OSPF的路由器之间通过交换链路状态信息来计算最短路径,而不是通过传递路由更新信息。通过建立邻居关系,局限了信息传播范围,确保网络中只有必要的信息交换,不会引入不必要的路由循环。

  • EIGRP是一种混合型路由协议,结合了距离矢量和链路状态的优点,使用了可靠的邻接关系可靠性校验机制,确保路由信息的稳定传输,避免出现环路。

  • RIP是一种基于跳数的距离矢量路由协议,每个路由器只知道到达目的网络的跳数,因此无法判断全局最优路径,可能会导致路由环路的产生。

  • 在BGP中,因为路由策略的复杂性和AS之间的信任关系,如果配置不当或者出现错误的路由过滤策略,可能会出现路由环路的情况。

EBGP环路

  • 不同AS之间EBGP对等体产生的路由环路。

  • 解决方案
    • 专门设计一个路径属性去解决EBGP环路问题。

    • AS_Path路径值:当路由信息发出一个AS,则会携带该AS的AS号,如果本AS设备收到该路由信息后发现AS_Path中存在自己的AS号,则不会学习该路由信息。

    • AS_Path属性的添加一定是新发出的AS号在前面(从左往右)。

IBGP环路

  • 同一AS中IBGP对等体产生的路由环路。

  • 解决方案
    • IBGP的水平分割:运行了BGP的设备,如果从自身的IBGP对等体处学习到的路由信息,将不能传递给自身其他的IBGP对等体

    • 问题:水平分割会导致一些BGP路由器没有学习到BGP路由,从而无法访问(路由信息不全)。

    • 解决

      • AS内部,让所有运行BGP的设备都两两之间建立BGP对等体,即构建全连的BGP网络(非最佳方案)。

      • 路由反射器

      • 联邦技术

路由反射器

定义:给运行BGP的路由设备设计的一种身份

  • 客户:在配置完反射器之后,需要指定该反射器的客户,该反射器建立的对等体邻居都可以成为客户,客户至少有一个

  • 非客户:其他没有指定为客户的对等体就是反射器的非客户。

  • 反射簇:反射器和他的客户会形成一个系统(集体),这个系统叫反射簇。

  • 反射簇的簇ID:就是形成该反射簇的反射器RID

反射规则非非不传

只有从非客户传递的路由信息不会传递非客户

  • 前提:只有可用且优的路由才会反射。

  • 当反射器从自身的客户处学习到一条IBGP路由,则会反射给自身的客户和非客户

  • 当反射器从自身的非客户处学习到一条IBGP路由,则会反射给自身的客户

反射器问题
  • 问题1:只能反射一跳,可以继续配置反射器来延长反射传递的距离。

  • 问题2:打破的IBGP的水平分割可能会出现环路

在反射器中设计了单独的防环属性

  • 起源者ID Originator:在一个AS内部反射路由源头设备的RID,当传递路由信息时如果已经有了该起源者ID则不会修改,没有则写为反射源头设备的RID。

    • 只有起源者ID相同才会学习该路由。但是无法百分百防环。

  • 簇列表 Cluster list:每经过一个路由器反射都会添加该设备的反射簇的簇ID(形成该反射簇的反射器RID),类似AS_Path将簇ID添加到表头

    • 结合起源者ID一起使用防环,只有路由信息的起源者ID不相同并且没有簇列表中的RID才会学习该路由信息。

联邦技术

在IBGP对等体关系中划分多个小团体,并使用私有AS号划分(64512~65534),每个小团体之间相当于一个联邦内部EBGP对等体关系。

BGP基础配置

命令
  • 启动BGP协议,一台BGP设备只能属于一个AS

    • bgp [AS号]

  • 手工配置BGP的RID(可选)

    • 要在BGP进程中修改,不配置则系统自动配置

    • router-id [RID]

  • 建立BGP对等体

    • EBGP对等体间使用直连建邻的方式,注意直连IP选择对端的直连接口IP

    • 也可以使用环回IP建立对等体

    • peer [直连/环回IP] as-number [对端AS号]

  • 在环回建邻后修改必须更新源地址(双方)

    • 使用环回建立后必须手工修改更新源地址

    • peer [环回IP] connect-interface LoopBack[接口号]

  • 规定EBGP对等体TTL值(Time To Leave)

    • EBGP对等体之间,BGP数据包TTL值为1,必须修改TTL为更大的值,不指定默认配置为255

    • EBGP对等体间使用环回建邻后修改TTL值

    • peer [环回IP] ebgp-max-hop [TTL值]

  • 删除已经建邻的设备信息

    • undo peer [RID/建邻IP]

  • 查看BGP对等体关系表

    • display bgp peer

  • 查看BGP表(设备发布和学习到的BGP路由)

    • display bgp routing-table

    • 在后面加上网段展开所有该网段信息,加上掩码可以单独指定特定网段。

    • display bgp routing-table [网段] [掩码]

路由发布

  • 宣告网段

    • 掩码可以是真实掩码,也可以是十进制掩码

    • network [网段] [掩码]

    • 重发布批量宣告路由信息(所有网段)

    • import-route direct/static

    • 重发布时调用路由策略,利用策略只发布自身需要发布的网段

    • import-route direct route-policy [策略名]

  • 让设备传递路由时修改下一跳属性

    • peer [IP] next-hop-local

路由聚合(均在BGP进程中进行)

  • 自动聚合

    • summary automatic

  • 手工聚合

    • 掩码形式任意

    • aggregate [聚合后网段] [掩码]

    • 明细抑制

    • aggregate [聚合后网段] [掩码] detail-suppressd

    • 让聚合路由继承明细路由的AS_Path属性

    • aggregate [聚合后网段] [掩码] as-set detail-suppressd

路由反射器

  • 指定反射器的客户,自身自动成为反射器

    • peer [客户RID] reflect-client

联邦

  • 启动协议使用联邦AS号(私有AS号范围)

    • bgp [64512~65534]

  • 配置联邦时声明自身所处的公有AS号

    • 配置了联邦的BGP设备同时属于两个AS

    • confederation id [公有AS]

  • 联邦内部IBGP对等体关系建立

    • 注意指定的AS号是私有AS号

    • peer [建邻RID] as-number [私有AS]

    • 同时使用环回建邻,需要修改更新源地址

    • peer [建邻RID] connect-interface LoopBack [接口号]

  • 声明对端建对等体的AS号

    • 建立联邦EBGP对等体时,必须声明对端建邻对等体的AS号,用来区分是哪一种EBGP对等体。

    • 声明顺序必须在建邻之前,否则会报错

    • confederation peer-as [对端私有AS号]

    • 使用环回建立EBGP对等体时,需要手工修改EBGP数据包TTL值。

问题
  • 问题1:因为AS-by-AS原则导致AS内部IBGP路由传递过程中下一跳属性不会自行修改,导致AS内部路由器下一跳不可达,路由不可用。可以让设备传递路由时修改下一跳属性

  • 问题2:因为IBGP水平分割导致AS内部的IBGP路由只能传递一跳。所以可以在AS内部构建全连BGP网络两两之间建立BGP对等体的方式解决。

  • 问题3:手工聚合不会自动抑制明细路由。可以在聚合同时使用明细抑制的关键字去抑制所有明细路由

  • 问题4:聚合之后的路由信息一些属性会缺失,主要就是AS_PATH属性会缺失。可以设置AS_Set关键字让聚合路由继承明细路由的AS_Path属性。一旦明细路由来自不同的AS则会用大括号{}括起来,选路会视为一跳EBGP防环分开看

注意
  • BGP在IBGP对等体关系建立建议使用环回路由建立。因为BGP建立对等体时,源地址默认是递归路由表产生,所以可能导致建立对等体的对象身份不统一,所以必须在环回建邻时,手工修改更新源地址

  • BGP也可以在EBGP对等体关系建立时使用环回建邻。

  • 运行BGP的设备路由表中存在的路由条目信息都可以发布。

  • BGP的路由信息优先级为255,因为AS间路由不可靠,这样设置可以防止路由崩溃

  • BGP不能发布建邻网段,解决方案就是直接换个网段发布

对等体关系表

  • Peer:该设备建邻对等体的对象

  • V:版本。

  • AS:建邻对等体所处的AS号

  • MsgRcvd:从建邻对等体处收到BGP报文数量

  • MsgSent发送给建邻对等体的BGP报文数量

  • QUTQ消息队列剩余还未发送完的BGP路由数量。

  • UP/DOWN:和建邻对等体建立对等体的时间/和建邻对等体断开对等体连接的时间。

  • STATE:当前状态,Established代表建邻成功,Idle代表建邻失败。

  • PrefRcv:从建邻对等体处学习到的BGP路由数量。

配置1

首先进行基础IP和环回配置。在拓扑图中得知,R1和R2、R4和R5互为EBGP对等体,R2、R3和R4均为IBGP对等体。

 # 环回路由
 [R1-LoopBack0]ip address 1.1.1.1 24
 [R2-LoopBack0]ip address 2.2.2.2 24
 [R3-LoopBack0]ip address 3.3.3.3 24
 [R4-LoopBack0]ip address 4.4.4.4 24
 [R5-LoopBack0]ip address 5.5.5.5 24
 ​
 # OSPF配置
 [R2]ospf 1 router-id 2.2.2.2
 [R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
 [R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
 [R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
 [R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
 [R3-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
 [R4-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
 # 检查路由表
 [R2]display ip routing-table protocol ospf
建立对等体
 ### 启动BGP进程,规定AS号
 [R1]bgp 1
 [R2]bgp 2
 ​
 ### 直连建邻建立EBG对等体(R1、R2)
 [R1-bgp]peer 12.0.0.2 as-number 2
 # 建邻必须互相指定
 [R2-bgp]peer 12.0.0.1 as-number 1
 # 查看对等体关系表,Established代表建邻成功
 [R2-bgp]display bgp peer
 ​
 ### 采用环回IP建立IBGP对等体(R2、R3、R4)
 [R3]bgp 2
 [R4]bgp 2
 [R3-bgp]router-id 3.3.3.3
 [R3-bgp]peer 2.2.2.2 as-number 2
 [R2-bgp]peer 3.3.3.3 as-number 2
 [R4-bgp]peer 3.3.3.3 as-number 2
 [R3-bgp]peer 4.4.4.4 as-number 2
 ​
 ### 环回建邻后必须手工修改更新源地址
 [R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
 [R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
 [R4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
 [R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
 ​
 ### 采用环回建立EBGP对等体(R4、R5)
 [R5]bgp 3
 [R4-bgp]peer 5.5.5.5 as-number 3
 [R5-bgp]peer 4.4.4.4 as-number 2
 ​
 # 查看对等体表,发现显示Idle并非Established,代表建邻失败。因为到R5的环回路由并未连通
 [R4-bgp]display bgp peer
 ​
 ## 写一条静态连通对端的环回路由
 [R4]ip route-static 5.5.5.0 24 45.0.0.2
 [R5]ip route-static 4.4.4.0 24 45.0.0.1
 ​
 # 环回建邻后手工修改源地址
 [R4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
 [R5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
 ​
 ### 修改TTL值使数据包能够发出,默认为1,修改到大于1即可,不规定值默认修改为最大值255
 [R4-bgp]peer 5.5.5.5 ebgp-max-hop 2
 [R5-bgp]peer 4.4.4.4 ebgp-max-hop
 # 查看关系表发现成功建邻(BGP建邻需要一定时间)
 [R4]display bgp peer
发布路由
宣告发布
 ### 宣告网段
 [R1-bgp]network 1.1.1.0 24
 ​
 # 查看BGP表,发现R2的下一跳可用且优(*>)
 [R2]display bgp routing-table
 # 此时查看R3 BGP表发现不可用。因为R3和R2在同一AS中,BGP将同一AS视为整体,下一跳相同均为R2的。
 ​
 ### 让设备传递路由时修改下一跳属性
 [R2-bgp]peer 3.3.3.3 next-hop-local
 # 此时发现R3可用且优,但是R4却没有信息,因为IBGP对等体的水平分割问题。
 [R3]display bgp routing-table
 ​
 ### 构建全连BGP网络,两两之间建立IBGP对等体
 # R2和R4环回建邻,必须要进行源地址更新
 [R2-bgp]peer 4.4.4.4 as-number 2
 [R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
 [R4-bgp]peer 2.2.2.2 as-number 2
 [R4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
 # 查看是否建立好对等体关系
 [R2-bgp]display bgp peer 
 ​
 # 查看R4 BGP表后发现不可用,继续修改下一跳属性
 [R2-bgp]peer 4.4.4.4 next-hop-local

接下来我们将整个BGP网络做通。注意我们只将R1的信息传递到R5,但是无法传递信息回来,所以要反方向再次进行配置。

 # 宣告用户网段来传递路由
 [R5-bgp]network 5.5.5.0 24
 # 查表发现不可用,因为BGP不能发布建邻网段
 [R4-bgp]display bgp routing-table
 ​
 ### 解决方法:新建网段发布
 [R5-LoopBack10]ip address 10.0.0.1 24
 [R5-bgp]network 10.0.0.0 24
 ​
 ### 此时查表发现可用且优,但是仍旧无法连通R1。查表发现R2和R3中10.0网段不可用,在R4中修改下一跳属性,使路由可用。
 [R4-bgp]peer 2.2.2.2 next-hop-local
 [R4-bgp]peer 3.3.3.3 next-hop-local
 ​
 # 此时成功ping通,做通BGP网络
 [R5]ping -a 10.0.0.1 1.1.1.1
重发布批量宣告
 ### 重发布批量宣告,但是这样只能全都发布,查表发现一大堆路由信息。可以结合路由策略批量发布想宣告的网段。
 [R1-bgp]import-route direct
 ​
 # 重新创建三个环回路由使用
 [R1-LoopBack1]ip address 192.168.1.1 24
 [R1-LoopBack2]ip address 192.168.2.1 24
 [R1-LoopBack3]ip address 192.168.3.1 24
 ​
 ### 路由策略
 # 创建前缀列表aaa抓取网段流量
 [R1]ip ip-prefix aaa permit 192.168.1.0 24
 [R1]ip ip-prefix aaa permit 192.168.2.0 24
 [R1]ip ip-prefix aaa permit 192.168.3.0 24
 # 也可以用正则表达式限制只抓取24网段,16表示从0.0网段开始,即后16位为0
 [R1]ip ip-prefix aaa permit 192.168.0.0 16 greater-equal 24 less-equal 24
 ​
 # 创建路由策略aaa,编号为10
 [R1]route-policy aaa permit node 10
 # 匹配前缀列表aaa
 [R1-route-policy]if-match ip-prefix aaa
 ​
 ### 重发布直连网段,并调用路由策略
 [R1-bgp]import-route direct route-policy aaa
 ​
 # 查表发现发布网段均可用且优,且起源码为?
 [R1]display bgp routing-table
路由聚合
自动聚合

系统默认是关闭自动聚合功能,且只能针对重发布进行聚合。

 # 创建3条指向空接口的静态路由
 [R5]ip route-static 172.16.1.0 24 NULL 0
 [R5]ip route-static 172.16.2.0 24 NULL 0
 [R5]ip route-static 172.16.3.0 24 NULL 0
 ​
 # 聚合前要先进行重发布
 [R5-bgp]import-route static
 ​
 ### 自动聚合(开启该功能) 
 [R5-bgp]summary automatic
 # 查BGP表检查
 [R5]display bgp routing-table
 # 查看路由表发现生成了一条指向空接口的防环路由
 [R5]display ip routing-table

BGP为了避免缺省和聚合相遇会出现环路,会自动在配置了聚合的路由器上自动生成一条指向空接口防环路由

手工聚合

BGP有时候并不想将所有明细路由给抑制,可以使用利用抑制策略来抑制不需要的明细路由。这里我们选择将1.0和2.0网段给抑制,只放通3.0网段。

 ### 手工聚合静态为22网段
 [R1-bgp]aggregate 192.168.0.0 22 detail-suppressed
 # 汇总后查表发现汇总网段成功创建,但是1.0~3.0网段仍然存在,因为明细也是可用且优,也会传递。
 ​
 ### 明细抑制(抑制全部)
 [R1-bgp]aggregate 192.168.0.0 22 detail-suppressed
 ​
 ### 使用抑制策略来抑制不需要的明细路由
 # 创建前缀列表bbb抓取想要抑制的流量
 # 这里选择抑制1.0和2.0
 [R1]ip ip-prefix bbb permit 192.168.1.0 24
 [R1]ip ip-prefix bbb permit 192.168.2.0 24
 # 路由策略
 [R1]route-policy bbb permit node 10
 [R1-route-policy]if-match ip-prefix bbb
 ​
 ### 调用抑制策略,名称必须和路由策略名相同
 [R1-bgp]aggregate 192.168.0.0 22 suppress-policy bbb
 ​
 # 查表检验
 [R1]display bgp routing-table
属性保留

重新使用该拓扑图,进行基础IP和OSPF配置,以及基础BGP配置。

 # 新建两条指向空接口的静态路由并重发布
 [R1]ip route-static 172.16.0.0 24 NULL 0
 [R1]ip route-static 172.16.1.0 24 NULL 0
 [R1-bgp]import-route static
 ​
 # 让设备传递路由时修改下一跳属性
 [R2-bgp]peer 3.3.3.3 next-hop-local
 [R2-bgp]peer 4.4.4.4 next-hop-local
 ​
 # 手工聚合
 [R1-bgp]aggregate 172.16.0.0 22
 ​
 # 查表发现聚合成功,但是明细路由仍然存在
 [R2-bgp]display bgp routing-table

新建一个R6与R2相连接,R6的AS号为4,并新建两个环回用于汇总。

 # 静态、BGP配置以及重发布
 [R6]ip route-static 172.16.2.0 24 NULL 0
 [R6]ip route-static 172.16.3.0 24 NULL 0
 [R6-bgp]peer 26.0.0.2 as-number 2
 [R6-bgp]import-route static
 [R6-GigabitEthernet0/0/0]ip address 26.0.0.1 24
 [R2-GigabitEthernet0/0/2]ip address 26.0.0.2 24
 [R2-bgp]peer 26.0.0.1 as-number 4
 ​
 # 对创建的静态进行手工聚合
 [R2-bgp]aggregate 172.16.0.0 22
 # 此时查表发现聚合后ASpath属性缺失
 [R2]display bgp routing-table
 ​
 ### 设置as-set关键字让聚合路由继承明细路由的AS_Path属性
 [R2-bgp]aggregate 172.16.0.0 22 as-set detail-suppressed
配置2
路由反射器

继续使用属性保留的拓扑图。首先把全连的IBGP网络中R2和R4的对等体关系删除。

 # 删除R2和R4对等体关系
 [R2-bgp]undo peer 4.4.4.4
 [R4-bgp]undo peer 2.2.2.2
 ​
 ### 指定客户并将R3配置为路由反射器RR
 [R3-bgp]peer 4.4.4.4 reflect-client
 ​
 # 查表发现非客户R2把聚合过后的路由信息反射给了R4,并且可用且优
 [R4]display bgp routing-table
联邦技术

首先进行基础IP和环回IP配置。

 # OSPF配置,注意R2、R5不宣告公网网段
 [R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
 [R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
 [R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
 [R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255  
 [R3-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
 [R4-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
 [R4-ospf-1-area-0.0.0.0]network 45.0.0.0 0.0.0.255
 [R5-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0
 [R5-ospf-1-area-0.0.0.0]network 45.0.0.0 0.0.0.255
联邦配置
 # BGP配置
 [R1-bgp]peer 12.0.0.2 as-number 2
 ​
 ### 启动协议使用联邦AS号(私有AS号)
 [R2]bgp 64512
 ### 声明所属的公有AS号
 [R2-bgp]confederation id 2
 ​
 # 正常建立
 [R2-bgp]peer 12.0.0.1 as-number 1
 ​
 ### 联邦内部IBGP对等体关系建立使用私有AS号
 [R2-bgp]peer 3.3.3.3 as-number 64512
 # 环回建邻需要修改更新源地址
 [R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
 ​
 # R3同理
 [R3]bgp 64512
 [R3-bgp]confederation id 2
 [R3-bgp]peer 2.2.2.2 as-number 64512
 [R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
 [R3-bgp]peer 4.4.4.4 as-number 64513
 [R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
 ​
 ### 联邦内部EBGP对等体关系建立要声明对端建邻对等体私有AS号
 [R3-bgp]confederation peer-as 64513
 ​
 # R4同理
 [R4]bgp 64513
 [R4-bgp]confederation id 2
 # 注意声明顺序必须在建邻之前,否则会报错
 [R4-bgp]confederation peer-as 64512
 [R4-bgp]peer 3.3.3.3 as-number 64512
 [R4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
 [R4-bgp]peer 5.5.5.5 as-number 64513
 [R4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
 ​
 # 查表发现R3和R4还未建邻成功,因为EBGP数据包默认TTL为1,无法传达距离不够的原因
 [R3]display bgp peer
 ​
 ### 修改数据包TTL值
 [R3-bgp]peer 4.4.4.4 ebgp-max-hop
 [R4-bgp]peer 3.3.3.3 ebgp-max-hop
 ​
 # R5同理
 [R5]bgp 64513
 [R5-bgp]confederation id 2
 [R5-bgp]peer 4.4.4.4 as-number 64513
 [R5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
 [R5-bgp]peer 56.0.0.2 as-number 3
 # R6配置
 [R6]bgp 3
 [R6-bgp]peer 56.0.0.1 as-number 2
 # 查表检验
 [R5-bgp]display bgp peer
公网连通
 # R1发布路由信息,宣告网段
 [R1-bgp]network 1.1.1.0 24
 ​
 ### 修改下一跳属性,使路由到R3可用且优
 [R2-bgp]peer 3.3.3.3 next-hop-local
 ​
 # 查看路由表发现设备均能收到R1发出的路由信息
 [R6]display bgp routing-table
 ​
 # 此时无法回包所以网络不能ping通,在R6宣告网段
 [R6-bgp]network 6.6.6.0 24
 # 回包时同理修改R5下一跳属性使R4收到路由可用且优
 [R5-bgp]peer 4.4.4.4 next-hop-local
 ​
 # 查看R1发现成功接收R6路由信息
 [R1]display bgp routing-table
 ​
 # 连通测试,公网成功连通
 [R1]ping -a 1.1.1.1 6.6.6.6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/877710
推荐阅读
相关标签
  

闽ICP备14008679号