HCIP----第六章:BGP---边界网关协议

第六章:BGP—边界网关协议

自治系统----AS

定义:有一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合

AS的来源:

  • 整个网络规模过大,会导致路由信息收敛速度过慢,设备对相同目标认知不同。
  • AS之间可能是不同的机构或企业,相互之间无法完全信任,使用IGP协议会存在暴露网络信息的风险。

AS号,16bit和32bit。-----> IANA组织进行分配

  • 取值范围:1-65534(0和65535做保留)
    • 1-64511---------公有AS号
    • 64512-65534---------私有AS号

BGP基础

在这里插入图片描述

运行了BGP协议的路由器,其所维护的路由表,是包含了整个互联网的所有路由信息。

BGP特点

  • BGP是基于TCP协议进行数据传输,必须先建立TCP连接,再建立BGP会话连接。
  • 仅具备触发更新,而不再进行周期更新。
  • BGP协议只传递路由信息,不会暴露AS内部的拓扑信息。
  • 通常BG篇被称为无类别的路径矢量协议
    • 无类别----传递时携带掩码信息
    • 矢量----方向性:谁传递给我的路由信息,谁就是我的下一跳。
    • 路径矢量----将一个AS看作一个整体,从而计算下一跳(开销值)

BGP与IGP协议有本质上的区别,IGP协议主要的任务是将AS内部的未知网段信息计算获取到路由信息,而BGP则主要是将通过IGP协议计算出的路由信息进行搬运,并不会计算路由信息

BGP特征

  • 可控性
    • BGP使用大量的路径属性,取代了IGP协议中的Cost值,来对路由信息进行管控。
  • 可靠性
    • 依靠TCP完成可靠性建设。TCP端口号179
    • 两台运行BGP协议的设备,需要网络管理员手工配置邻居的IP地址,从而实现数据通讯。
  • AS-BY-AS
    • 在BGP的视角当中,会将一个AS看作为一个整体
    • 因为BGP是将一个AS看作一个整体,但是在该整体内部数据传输时,并不相同,故BGP默认不支持负载均衡功能

BGP的对等体关系

​ BGP因为传输层使用的是TCP协议,所以,只要在TCP协议可以正常建立会话的基础上就可以完成BGP会话的建立工作------BGP支持非直连建立邻居。-----前提:网络可达。---->BGP协议的搭建是建立在ICP协议之上

  • EBGP

    • 位于不同自治系统的BGP路由器之间的BGP对等体关系。
    • EBGP对等体一般使用直连方式建立邻居关系,故而,TTL数值被设定为1。
    • 两台路由器之间要建立EBGP对等体关系,需要满足以下条件:
      • 两台路由器所属的AS不同---->判别方式:本地设备通过网络管理员知晓对端的AS,从而判断是否处于相同的AS。
      • 配置EBGP时,peer命令所指定的邻居IP地址必须为网络可达,保证TCP链接可以正常建立。
  • IBGP

    • 位于相同自治系统的BGP路由器之间的BGP对等体关系。
  • IBGP对等体一般使用非直连方式建立邻居关系,故而,TTL数值被设定为255。

    缺省情况下,BGP协议使用报文出接口作为TCP连接的本地接口IP,但是在某些情况下,我们可以指定BGP对等体之间的会话IP地址;例如,在IBGP对等体关系中,常使用环回接口地址作为通讯的源地址。原因是因为loopback接口非常稳定,而且可以借助AS内的IGP协议实现冗余来保证可靠性。

总结:

  • BGP是无类别路径矢量协议
  • BGP使用单播更新来发送数据,基于TCP实现通讯。
  • 增量更新
  • 具有丰富的路径属性来取代IGP中的度量值参数,从而控制选路
  • 可以在控制层流量的出入口通过路由策略实现可控性
  • 默认不被用于负载均衡----会通过各种选路规则选择出一条最优路由信息。
  • BGP支持认证以及路由聚合。

BGP数据包

在这里插入图片描述

BGP数据报文

在这里插入图片描述

Router-refresh----路由刷新包

作用:用来要求对等体重新发送指定地址族的路由信息

​ 一般为本端修改了相关路由策略之后让对方重新发送update报文,本端执行新的路由策略重新计算BGP路由。-----前提提交为双方均支持路由刷新功能。

open包

​ 是TCP建立之后发送的第一个BGP报文,用于建立BGP对等体之间的连接关系。该过程无非就是进行参数协商的过程。

在这里插入图片描述

  • AS号
    • 不管接收到的open报文中的AS号是否与本地AS号相同,都不会影响到BGP对等体关系的建立。
    • 但是,如果open报文中的AS号,与本地建立邻居时由网络管理员编写的AS号不同,则邻居关系无法建立
      • BGP对等体在建立邻居时,会配置对等体所在的AS号,如果对端发送的open报文中所包含的AS号与本地配置不同,才会导致建立邻居失败。
  • RID
    • 如果两端RID相同,则对等体关系建立失败。
  • 认证字段----TCP的可选项位置
    • 如果认证方式或者认证数据不通,则导致建邻失败。
    • 该字段永远以MD5形式,存储在TCP的选项字段中。
  • Hold Time----保活时间
    • BGP在建立对等体关系时,两端需要协商该参数,并保持一致。但是该参数并不会影响BGP对等体关系的建立
    • 如果两端的保活时间不同,则按照较小的一端数值来执行。
    • 如果在该时间内未收到对端发送来的保文信息,则认为BGP连接断开。该时间默认为180s,报文的周期发送时间为保活时间的三分之一,即60s。
    • 该参数可以设置为0,此时代表不发送keepalive报文周期保活。
    • 因为BGP会话是基于TCP会话建立,只要TCP判断连接断开,则BGP会话断开,故保活机制对于BGP而言并不那么重要,而设定保活机制原因仅仅是因为TCP判断会话断开所需要的时间过长,为了加快收敛速度,添加保活机制。
  • 路由刷新功能
keepalive包

作用:主要用于周期保活,临时充当确认报文

​ keepalive报文发送事件默认为保活时间的三分之一。

​ **keepalive报文的确认实际上是针对open报文的参数信息进行确认,而非open报文本身。**TCP协议进行确认的目的是为了保障数据传输的可靠性,而keepalive报文确认的目的是为了告知对端本地认可你的参数内容。

当收到的open报文中的参数通过验证,则回复keepalive报文;如果未通过验证,则回复Notification报文。

Update包----更新包

作用:用于在对等体之间传递路由信息,可以用于发布和撤销路由

在这里插入图片描述

  • 撤销路由字段长度-----Unfeasible routes length(2Byte)
  • 撤销路由列表-----Withdrawn routes(NByte)
    • length---->待撤销路由的掩码信息
    • perfix---->传输的IP地址前缀信息
  • 路径属性字段长度-----Total path attribute length (2Byte)
  • 路径属性列表-----Path attributes (NByte)
  • NLRI (NByte)----->网络层可达信息
    • 内容和撤销路由列表相同

BGP状态机

​ OSPF的状态机是在描述整个协议的完整工作过程,而BGP的状态机仅描述的是对等体关系建立过程中的状态变化。-----因为BGP将邻居建立过程以及BGP路由手法过程完全隔离

​ IGP协议在启动后,需要通过network命令激活接口,从而使接口具备处理IGP协议报文的能力。且network命令另一重含义就是发布路由,所以IGP协议无法将邻居建立过程以及路由收发过程隔离。

​ 但是BGP协议在启动后,每一个接口都具备处理BGP报文的能力,不需要其他任何操作,所以可以将邻居建立过程以及路由收发过程进行分割。

在这里插入图片描述

  • Idle-----空闲状态
    • 等待网络管理员手工指定邻居信息、IP地址以及AS号
    • 当指定邻居信息后,会进入一个检查环节,需要检查手工指定的IP地址在本地路由表中是否可达,只有可达,才可以正常建立TCP会话,如果不可达,则邻居关系建立失败,停留在Idle状态。
  • Connect-----连接状态
    • 该状态会开启一个连接重传定时器----32秒
      • 当该计时器时间超时,则本端重新发送一次TCP连接请求报文。在该时间段内没有收到任何一个回复报文。
    • 如果此时本地判断TCP状态进入到establish状态,则认为TCP连接建立成功,进入到opensent状态。
    • 如果此时本地收到的是拒绝报文,则认为TCP连接建立失败,进入到Active状态。
    • 如果BGP在连接重传定时器时间内,没有收到对等体的响应,那么BGP会继续尝试与对等体建立TCP会话,并一直处于该状态
  • Active-----尝试状态
    • 第一次TCP会话建立失败,则进入该状态。
    • 如果建立成功,则进入opensent状态;如果建立失败,则停留在active状态。
    • 使用在connect状态开启的连接重传定时器来发送连接建立请求报文,当建立成功后,该计时器才会被关闭。
  • opensent状态
    • 本地发送出open报文,同时也将收到对端发送的open报文,并予以回复。
    • 如果收到的open报文中的参数本端认可,则回复keepalive报文;否则回复notification报文。
    • 如果回复keepalive报文,则进入openconfirm状态;如果回复notification报文,则进入idle状态。
  • openconfirm状态
    • 等待对等体对于本地发出的open报文参数的回复。
    • 如果收到的是keepalive报文,则认为BGP会话建立成功,进入到establish状态。
    • 如果收到的是notification报文,则认为BGP会话建立失败,断开TCP连接,回到idle状态。
  • Establish-----建立状态
    • BGP会话建立的标志
    • 在该状态可以发送除了open报文以外的所有BGP数据报文。

在这里插入图片描述

BGP的工作过程

1、基于IGP、静态、直连路由协议实现IP可达----->前置要求,不是BGP工作过程

2、启动BGP协议,并指定邻居关系:

  1. 邻居之间使用单播进行数据传输,通过三次握手,建立TCP会话通道。
  2. 之后所有的数据通讯均基于TCP会话通道来传输,并由TCP协议来提供传输的可靠性机制。

3、使用open报文和keepalive报文进行邻居之间参数的协商,以及对等体关系的建立。

  1. open报文用来携带参数信息
  2. keepalive报文用来进行参数确认
  3. 最终生成BGP邻居表

4、使用Update报文来传输BGP路由信息,该信息中将携带前缀信息、前缀长度以及路径属性。

  1. 设备会将自己发送的以及收到的所有BGP路由信息记录在BGP路由表中。
  2. 设备会对比不同路由表单,将其中最优的路由信息加载到全局路由表中。

5、此时路由收敛完成,BGP对等体之间使用keepalive报文进行周期保活(可选),默认为180s,可以设置为0,关闭周期保活性质。

6、如果出现出错误,使用notification报文告警;如果出现结构突变,使用update报文进行增量更新。

BGP的防环

EBGP的水平分割机制

​ 专门为了解决EBGP对等体之间的路由环路问题

​ 通过AS_Path属性进行防环,该属性会记录下该路由信息所经过的所有AS的AS号。当设备收到一条路由信息时,会查看该属性内容,如果其中存在有与本地AS号相同的信息,则不接受该路由信息。

IBGP的水平分割机制

在这里插入图片描述

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

解决思路:

  1. 将原本的IBGP对等体关系替换为EBGP对等体关系-----在同一个AS下-----联邦
  2. 手工设定让某台路由器将从IBGP学习到的路由信息传递给某个IBGP对等体-----路由反射器
  3. 构建全互联的IBGP对等体关系。-----暂时常用

BGP的路由黑洞

在这里插入图片描述

BGP同步更新规则----为了避免BGP路由黑洞问题

当一台路由器从自己的IBGP对等体学习到一条IBGP路由时,它将不能使用这条路由或者将这条路由通告给其他设备,除非他又从IGP协议中学习到这条路由信息-------要求IBGP路由与IGP路由同步

华为与思科默认禁止使用该规则,华为不允许打开该规则,思科允许打开该规则。

解决方法:

  1. 让两台运行BGP设备在物理或逻辑上直连
  2. 所有设备运行BGP协议-------暂时最常用
  3. 将BGP路由引入到IGP中。
  4. MPLS------多协议标签交换-------现网环境使用的解决方案

BGP基础配置

在这里插入图片描述

使用直连接口IP地址来建立EBGP对等体关系(R1和R2之间):
1、启动BGP协议
[r1]bgp 100    ----启动BGP协议,并且规定其AS号

2、配置设备的RID数值,一般选择设备的loopback的接口的IP地址
[r1-bgp]router-id 1.1.1.1   

3、配置BGP对等体信息,包含了对等体的IP地址以及对等体所在的AS号
[r1-bgp]peer 12.0.0.2 as-number 200

使用环回接口建立非直连的IBGP对等体关系(R2、3、4之间):
1、启动BGP协议
[r2]bgp 200

2、配置设备的RID数值
[r2-bgp]router-id 2.2.2.2

3、配置BGP对等体信息
[r2-bgp]peer 3.3.3.3 as-number 200

4、修改源数据包中的源IP,对等体双方均需要进行修改
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0


使用环回接口建立EBGP对等体关系(R4和R5之间):
	一般在EBGP对等体设备之间,会使用多条链路进行连接,起到备份的作用,故可以使用环回接口来建立。

[r4]ip route-static 5.5.5.5 32 45.0.0.5
[r4]bgp 200	
[r4-bgp]peer 5.5.5.5 as-number 300
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r5]bgp 300
[r5-bgp]router-id 5.5.5.5	
[r5-bgp]peer 4.4.4.4 as-number 200
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack0

	问题:此时TCP会话会正常建立,转而建立BGP会话。但是,对设备而言,此时的对端IP检查会发现是通过静态路由或IGP路由才可实现网络可达。那么也就意味着此时需要通过多跳才能到达目的地,而数据包中的TTL=1,发现错误,故两端均会发送notification报文进行告警,并断开BGP和TCP会话。
	
	修改TTL数值:两边均需要修改
	[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2   ---修改TTL=2,如果不加参数,则修改为255
使用直连接口IP地址来建立EBGP对等体关系,除R1以外的配置:
[r2]bgp 200
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 12.0.0.1 as-number 100

使用 display bgp peer 命令查看BGP邻居表

在这里插入图片描述

PeerVASMsgRcvdMsgSentOutup/downstateprefRcv
对等体IP地址版本号对等体所在AS号已经收到的数据包数量发送的数据包数量出战对列BGP协议的启动时间状态机表示收到的路由信息数量

使用 display tcp status 命令查看

在这里插入图片描述

手工建立邻居关系时,所指定的建邻的IP地址必须和收到的数据包中的源IP地址相同才可以正常建立邻居关系。否则,邻居关系将建立失败。---->修改发送方数据包中的源IP地址。

BGP的路由发布

通过network命令发布路由信息

​ 在BGP中,network命令只能用来发布路由信息。对于BGP而言,只要是路由表中存在的路由信息,都可以通过network命令发布,并且发布的路由必须时本地可用的路由信息。

[r1-bgp]network 1.1.1.1 32   ------发布1.1.1.1/32的路由信息

发布路由时,网络号和掩码信息必须与全局路由表中的信息一致。

[r1]dis bgp routing-table    -----查看BGP路由表

在这里插入图片描述

NextHop:谁发送的路由信息,下一跳就为谁。如果是本地始发,则该字段为0.0.0.0。

状态码-----路由条目最前面的符号

在这里插入图片描述

*
	代表可用:设备收到路由条日后,会根据下一跳属性参数来査询本地路由表,查看该地址是否可达,如果可达,则认为这条路由条目可以使用,如果不可达,则这条路由条目不能使用。
>
	代表优选:当设备收集到多条到达相同网段的路由信息时,将依据路径属性进行路由优选,从而选择出最优的一条路由信息,该路由信息可以被路由器加载到全局路由表中,并且向下一跳BGP路由器进行传递。
i
	代表这条路由信息时从IBGP对等体学习到的。
s
	代表该路由信息被抑制************************

如果一条BGP路由信息不可用,则这条路由信息不会参与到路由优选过程。BGP协议在传递BGP路由信息时,只会传递可用且优的路由条目,即*>的状态码。

在这里插入图片描述

	该条路由信息传递到R3后,因为AS-BY-AS规则,认为此时是在一个整体中进行数据传递,那么路由信息的内容不会发生改变,所有路径属性相同。
	这就会导致R3认为传递这条路由信息的人是R1,其下一跳属性为12.0.0.1。而R3设备验算失败,这条路由不可用,即没有*,也没有>。

解决思路:

[r2-bgp]peer 3.3.3.3 next-hop-local   ------R2在给3.3.3.3传递路由信息时,将下一跳属性修改为本地

BGP在全局路由表中的下一跳是跟着BGP路由表中的下一跳一致

使用 display fib 命令查看fib递归表

在这里插入图片描述

总结:

  1. 完成所有路由器的IGP配置
  2. 使用直连接口建立EBGP对等体关系
  3. 使用环回接口建立IBGP对等体关系
  4. 使用connect-interface命令修改IBGP的源IP地址
  5. 使用next-hop-local命令修改路由传递的下一跳属性
  6. (可选)如果存在使用环回接口建立EBGP对等体,需要使用ebgp-max-hop命令修改TTL数值

通过重发布的方式发布路由

[r2-bgp]import-route ospf 1    ------将通过OSPF进程1学习到的路由信息重发布到BGP中。

Ogn------起源码属性

标识这条路由信息的起源。
i	:
	代表这条路由信息时起源于AS内部使用network命令通告的路由信息。
e	:
	代表这条路由信息起源于EGP协议---现在几乎看不到。
?	:
	除了以上两种方式获取到的路由信息。

在BGP协议中,不在乎这条路由信息到底属不属于本地的直连,只在乎这条路由信息在本地全局路由表中是否可用。只要可用就可以通过BGP进行通告

作业
在这里插入图片描述

具体内容参照:BGP基础配置实验:http://t.csdnimg.cn/YGHpI

BGP的路由聚合

自动聚合

​ 不常用。------>只能针对重发布的路由信息生效

​ 华为设备默认关闭自动汇总功能。

在这里插入图片描述

将172.16.1.0/24、172.16.2.0/24网段发布到BGP中:
	分别抓取流量:
    [r1]ip ip-prefix aa permit 172.16.1.0 24
    [r1]ip ip-prefix aa permit 172.16.2.0 24

    整体抓取流量:
    [r1]ip ip-prefix qq permit 172.16.0.0 22 greater-equal 24 less-equal 24

    [r1]route-policy aa permit node 10	
    [r1-route-policy]if-match ip-prefix aa
    [r1-bgp]import-route direct route-policy aa

[r1-bgp]summary automatic -----开启自动聚合功能

自动汇总仅支持将子网路由汇总到主类,而主类之间的路由信息无法进行汇总。

​ 通过自动汇总功能,发布的聚合路由信息,该路由的下一跳在始发路由器显示为127.0.0.1。

因为自动聚合是进行主类网段的聚合方式,会造成大范围的路由黑洞,为了防止因为路由黑洞所产生的环路问题,所以,BGP设备会自动产生一条指向NulI接口的汇总路由信息,进行防环,该路由信息的来源为IBGP

手工聚合

关键字参数缺陷优势
aggregate/无法抑制明细路由,导致聚合操作并没有减少路由条目数量,反而增加;
汇总路由丢失了明细路由的路径属性,可能会造成一些环路隐患。
可以灵活指定汇总路由的目的网络掩码长度,且不受网络地址类型的限制。
可以在非直连设备上进行汇总,前提条件是非直连设备上的明细路由可用且优。
detail-suppressed在某些情况下,可能还需要部分明细路由进行传输,而该命令会抑制所有明细路由可以抑制所有明细路由
suppress-policy抓取流量时,需要选择permit操作,因为抑制策略时取反操作。可以灵活性的选择明细路由的发送。
as-set仅继承AS_Path属性可以继承路径属性
attribute-policy可以添加其他路径属性内容

在这里插入图片描述

将172.16.0.0/24--172.16.14.0/24网段进行手工聚合:
	汇总网段为:172.16.0.0/20
[r3-bgp]aggregate 172.16.0.0 20     ------手工聚合

当配置该命令后,设备会做如下操作:
1、检测本地BGP路由表中是否有聚合路由的可用子网路由信息。
2、若有则在本地BGP路由表中发布一条指向空接口的防环路由信息。若无,则该命令无效。
3、将这条汇总路由发布到BGP当中。

BGP的手工聚合可以在非直连设备上进行,只要本地BGP路由表中存在这些明细路由信息,且明细路由信息可用且优,就可以进行路由聚合操作。

[r1-bgp]aggregate 172.16.0.0 20 detail-suppressed     ------在发布汇总路由的前提下,抑制所有明细路由
需求:只发送聚合路由172.16.1.0/24路由,其他路由信息被抑制。
1、抓流量
[r1]ip ip-prefix aa deny 172.16.1.0 24
[r1]ip ip-prefix aa deny 172.16.0.0 20 greater-equal 24 less-equal 24

2、做策略
[r1]route-policy aa permit node 10
[r1-route-policy]if-match ip-prefix aa

3、调用
[r1]bgp 100
[r1-bgp]aggregate 172.16.0.0 20 suppress-policy aa

suppress-policy 参数译为“抑制策略”,因为该参数所指定的route-policy中,被允许的路由信息会被抑制。

[r1-bgp]aggregate 172.16.0.0 20 detail-suppressed as-set 
as-set--->该参数会让聚合路由继承明细路由的As-path属性

在这里插入图片描述

​ as-set属性会继承所有明细路由信息的AS-Path属性值。如果设备的明细路由来源比较杂乱,那么会将所有的明细路由属性均继承到聚合路由中。但是这样会导致聚合路由的AS_Path属性过程,不利于进行路由优选。故聚合路由在继承多个明细路由属性时,会将多个属性使用{}括起来

AS_Path属性有两个用途

  • 1.用于EBGP之间防环
  • 2.用于路由优选规则,其中该属性包含的内容越少,这条路由越优

在聚合路由中,如果用于防环,则每一个数值都会读取。而如果用于选路,则会将(}中的内容当做是一个整体来看待

[r1]route-policy bb permit node 10
[r1-route-policy]apply local-preference 10
[r1-route-policy]apply cost 200
[r1-route-policy]apply preferred-value 20
[r1-route-policy]apply as-path 1 2 3 additive 

[r1-bgp]aggregate 172.16.0.0 20 detail-suppressed attribute-policy bb
需求:在某些场景中,我们可能希望汇总路由的产生,只以某条或某些特定的明细路由作为触发条件。
	例如:只有172.16.1.0/24路由在本地可用且优时,才会通告汇总路由信息。
	
[r1]ip ip-prefix cc permit 172.16.1.0 24
[r1]route-policy cc permit node 10
[r1-route-policy]if-match ip-prefix cc

[r1-bgp]aggregate 172.16.0.0 20 origin-policy cc   -------将172.16.1.0/24与172.16.0.0/20进行强关联。

origin-policy 参数是设定某种明细路由与汇总路由的强关联性,在默认情况下,所有的明细路由与聚合路由都是强关联的。而设定后,在去添加某些参数效果时,也只会对强关联的明细路由产生影响,而其他明细路由不关注。

​ BGP的汇总路由在产生时,默认情况下会存在属性丢失的问题,所以BGP在设计时,专门为聚合路由添加了两个独立的路径属性。用来警示路由环路的问题。

使用命令:dis bgp routing-table 172.16.0.0 20 查看路由信息详情:

在这里插入图片描述

  • Aggregator------聚合者
    • 携带汇总路由的始发路由器所在的AS号以及RID。
    • 功能:用于标记聚合行为发生的位置
  • Atomic-aggregate
    • 预警属性,不携带任何信息,该属性是提供给网路管理员查看的。
    • 只有这条路由信息的所有强关联的明细路由均被抑制时,才会携带。

路由反射器

BGP路由在AS内部只能传递一跳。

在这里插入图片描述

引入角色

  • RR-----路由反射器

    • RR就好比是一面镜子,可以将自己收到的BGP路由信息反射给气态BGP对等体
  • Client-----RR客户端

    • 所有设备都可以是RR的客户端,但是这件事情需要由RR来指定。
    • 只用RR的IBG篇对等体才可以称为其的客户

    我们将RR与其的客户端所构成的系统称为路由反射簇,每一个路由反射簇都将使用RR的RID作为簇ID,来标识不同的发射簇

路由反射器的反射规则:

  • 如果RR从自己的非客户端收到一条IBGP路由信息,则可以转发给自己的客户端;
  • 如果RR从自己的客户端收到一条IBGP路由信息,则可以转发给自己的所有非客户和除了路由发来的客户
  • 如果RR从自己的EBGP对等体学习到一条路由信息,则可以转发给所有人
  • RR只能将自己身上可用且优的路由信息进行反射。

在这里插入图片描述

[r3-bgp]peer 2.2.2.2 reflect-client     -------将R2指定为本地的RR客户

路由反射器的出现,解决了IBGP路由传输的问题,打破了IBGP水平分割原理。而IBGP水平分割原理是为了防止BGP出现环路所设计的,打破会存在环路隐患。

路由反射器场景下的防环

在这里插入图片描述

起源者ID

​ 规则:当一条BGP路由被RR反射给其他路由器时,如果这条路由已经携带了起源者ID属性,则保留该属性,否则由RR设备为这条路由信息添加起源者ID属性,并且将该属性的数值设定为本地AS内的始发路由器的RID。

在这里插入图片描述

​ 防环逻辑:路由器从IBGP对等体收到一条IBGP路由,并且该路由所携带的起源者ID属性与本地的BGP RID相同时,则会意识到该路由信息是从本地始发的信息,将忽略这条路由信息的更新。从而避免环路

​ 该属性参数,只会在AS内部进行传递,不会传递出AS。

簇列表

在这里插入图片描述

​ 规则:当一条BGP路由被路由反射器执行反射时,如果这条路由已经存在簇列表属性,那么路由反射器将本地的簇ID附加到路由的簇列表属性之前。而如果这条路由并不存在簇列表属性,那么RR会为这条路由信息创建一个簇列表属性并将本地的簇ID添加到簇列表中

​ 防环逻辑:当一台路由反射器收到BGP路由时,若发现该路由携带簇列表,并且簇列表中包含自己本地的簇ID,则忽略这条路由信息的更新。------防环效果类似于AS_Path属性。

注意

  • 当RR从EBGP学习一条路由,并传递给自己的IBGP对等体时,不会创建起源者ID和簇列表属性,因为者本质上不是路由反射行为。
  • 这两个属性只会在AS内传递,传出AS时,这两个属性会被删除。
  • 当路由反射器执行路由反射时,除了这两个属性,其他路径属性都不会修改。
反射器组网方案

备份RR组网

在这里插入图片描述

	当客户端1从EBGP对等体收到一条BGP路由时,它将通过IBGP向RR1和RR2通告这条路由。
	RR1和RR2在收到该更新路由后,将本地的簇ID添加到簇列表当中,然后向其他客户端反射,同时RR1和RR2相互反射。
	RR1和RR2收到相互反射路由时,检查列表,发现与自己的簇ID相同。故忽略对端的路由更新,避免坏路问题。

如果要构建备份RR组网,所有的RR设备必须使用相同的簇ID

[r2-bgp]reflector cluster-id 2.2.2.2    -----在RR上配置,配置后,会覆盖原有的簇ID,使用2.2.2.2为新的簇ID数值。

多集群路由反射器组网

​ 让反射簇的RR之间建立IBGP对等体关系。

联邦

在这里插入图片描述

真实的AS 3456被称为联邦AS号,而联邦AS内部所细化的小的AS号,被称为成员AS号。成员AS号必须是私有AS号。------->私有AS号:64512-65534

​ 成员AS之间的EBGP对等体关系是一种特殊的EBGP对等体,被称为联邦EBGP邻居关系。

  • 联邦的EBGP对等体之间仅遵循EBGP对等体的路由传递原则
  • 联邦的EBGP对等体关系在传递路由信息时,不能像正常的EBGP邻居关系一样修改路径属性参数

联邦AS内部的成员AS对于联邦外部而言是不可见的

EBGP水平分割机制是依靠AS-Path属性完成,其记录了路由所经过的所有AS,而对于联邦AS而言,在联邦AS内部传递时,正常携带成员AS号用于防环,在传出联邦AS时,将成员AS号移除,正常添加联邦AS号

联邦基础配置

在这里插入图片描述

[r1]bgp 100
[r1-bgp]router-id 1.1.1.1 
[r1-bgp]peer 10.1.13.3 as-number 3456     -----使用联邦AS号建立BGP对等体,原因在于对于R1而言,并不知道成员AS的内容。

[r3]bgp 64512    ---联邦成员设备启动时,使用成员AS号启动
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation id 3456   -----定义联邦AS号
[r3-bgp]peer 10.1.13.1 as-number 100  ----与R1建立EBGP对等体
[r3-bgp]peer 4.4.4.4 as-number 64512   -----联邦成员之间建立IBGP对等体关系时,使用成员AS号
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer 4.4.4.4 next-hop-local

[r4]bgp 64512
[r4-bgp]router-id 4.4.4.4
[r4-bgp]confederation id 3456
[r4-bgp]peer 3.3.3.3 as-number 64512
[r4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[r4-bgp]confederation peer-as 64513   -----在联邦EBGP对等体关系的设备上进行指定,告知设备与自己建邻的
[r4-bgp]peer 5.5.5.5 as-number 64513
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[r4-bgp]peer 5.5.5.5 ebgp-max-hop   -----修改TTL值为最大值,因为在一个AS内部,无法确定建邻需要经过的跳数。

[r5]bgp 64513
[r5-bgp]router-id 5.5.5.5
[r5-bgp]confederation id 3456
[r5-bgp]confederation peer-as 64512
[r5-bgp]peer 4.4.4.4 as-number 64512
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 
[r5-bgp]peer 4.4.4.4 next-hop-local
[r5-bgp]peer 6.6.6.6 as-number 64513
[r5-bgp]peer 6.6.6.6 connect-interface LoopBack 0
[r5-bgp]peer 6.6.6.6 next-hop-local
[r5-bgp]peer 10.1.25.2 as-number 200

[r6]bgp 64513
[r6-bgp]router-id 6.6.6.6
[r6-bgp]confederation id 3456
[r6-bgp]peer 5.5.5.5 as-number 64513	
[r6-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r2]bgp 200
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 10.1.25.5 as-number 3456

在大型BGP网络中,路由反射器是作为联邦技术的补充技术共同使用。原因在于:联邦中的成员AS若为单线连接,只能存在两台设备,若单线存在多台设备,又会发生成员AS内部的IBGP水平分割现象。

作业—联邦和反射器实验

在这里插入图片描述

具体内容参照:BGP联邦和发射器实验:http://t.csdnimg.cn/19Vj8

BGP的路径属性和选路规则

路径属性

  • 公认属性-----指所有BGP路由器都要求识别的路径属性
    • 强制属性----在进行路由更新时,必须携带的属性
    • 自由决定属性----在进行路由更新时,可以不携带的属性
  • 可选属性-----指不要求所有BGP路由器都能够识别的路径属性
    • 传递属性----如果路由器无法识别该属性,也应该接收携带该属性的路由信息,并且在路由更新时,携带该属性。
    • 非可传递属性----如果路由器无法识别该属性,那么在进行路由更新时,可以忽略该路径属性的传播。
属性名类型
AS_Path公认强制
Origin公认强制
Aggregator可选传递
Atomic-Aggregate公认自由决定属性
起源ID可选非传递
簇列表可选非传递
Next-hop公认强制
local-preference公认自由决定属性
preferred-value私有属性(华为)
属性名类型
MED可选非传递
社团属性可选传递

BGP路由优选规则

PL LAO MEN-----------漂亮老男人(口诀)
12 345 678(规则)

​ 也被称为最佳路径选择算法。

在这里插入图片描述

1.优选Preferred_Value属性值最大的路由

在这里插入图片描述

任何一条BGP路由在参与优选之前都必须先经过检查。设备会检查BGP路由的下一跳属性是否可达,如果不可达,则BGP路由被视为不可用,该路由将无论如何不能被优选,也不会被设备使用或者通告给其他对等体

​ -------要求路由的优先级相同,默认的前提条件。

属性名传播范围默认值评判标准
PV不传递0越大越优
LPAS内部100越大越优
AS_PathBGP对等体之间空列表越少越优
OGNBGP对等体之间根据起源类型决定i>e>?
MEDBGP对等体之间默认继承全局路由表中的开销值越小越优

PrefVal----PV值是华为的私有属性,默认值为0,可以理解为权重的概念,权重越大,则对应的路由信息的优先度越高。因为PV值是所有选路原则中的第一条规则,所以,该属性是本设备上选路最方便的属性

该属性只能在本地生效,无法传递给任何BGP对等体。

方法一:全局修改
[r4]bgp 400
[r4-bgp]peer 10.1.34.3 preferred-value 6000

在这里插入图片描述

方法二:精细化修改
[r4]ip ip-prefix PV permit 10.10.0.0 16

[r4]route-policy PV permit node 10
[r4-route-policy]if-match ip-prefix PV
[r4-route-policy]apply preferred-value 100	
[r4]route-policy PV permit node 20

[r4-bgp]peer 10.1.34.3 route-policy PV import 
2.优选Local_Preference属性值最大的路由

在这里插入图片描述

LP属性默认为100,该属性只能在IBGP对等体之间传递,而不能在EBGP对等体之间传递,如果路由在传递到本地时不携带LP属性,则BGP在进行路由优选时使用缺省值来计算,数值越大越优。

这条选路规则时AS内部优选路由的最佳选择。

方法一:全局修改
	该属性在IBGP对等体之间存在传递性,故想要影响R4,就必须在R2或者R3上进行修改,后续传递的就是修改后的数值。
[r3]bgp 234
[r3-bgp]default local-preference 200   ---该命令只会影响本地向外发布的路由,而不会影响本地收到的路由

在这里插入图片描述

方法二:精细化修改
[r4]ip ip-prefix LP permit 10.11.0.0 16

[r4]route-policy LP permit node 10
[r4-route-policy]if-match ip-prefix LP
[r4-route-policy]apply local-preference 200	
[r4]route-policy LP permit node 20

[r4-bgp]peer 3.3.3.3 route-policy LP import 
3.本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的

在这里插入图片描述

4.优选AS_Path属性值最短的路由

在这里插入图片描述

AS_Path属性 -------(BGP中非常重要的属性)

一台路由器将BGP路由通告给自己的EBGP对等体时,会将本地的AS号插入到该路由原有AS_Path属性之前

  • 实现EBGP路由的环路避免
  • 用于BGP路由优选决策
    • 该属性越短,该路由越优

在路由被创建时,该属性也会被创建,仅仅为一个空的列表。

  • {}-----在路由聚合时产生
    • 从防环角度---->{}中的每一个AS号都需要查看
    • 从选路角度---->不管{}中存在多少AS号,仅当作一个来计算
  • ()-----联邦
    • 选路----->忽略该括号中的内容
方法一:在R1的出方向修改
[r1]ip ip-prefix AS permit 10.13.0.0 16

[r1]route-policy AS permit node 10
[r1-route-policy]if-match ip-prefix AS
[r1-route-policy]apply as-path 11 22 33 overwrite 
[r1]route-policy AS permit node 20

[r1-bgp]peer 10.1.13.3 route-policy AS export

特殊配置:
apply as-path none overwrite    ----代表将该属性变为空列表

参数说明:

  • additive
    • 在原AS_Path属性的基础上添加配置的AS号
  • overwrite
    • 直接覆盖原有AS_Path属性

该属性是BGP重要的工作组成,EBGP防环依赖于该属性,故一般不建议修改改属性如果一定要修改,则建议添加或覆盖的AS号为曾经出现过的AS号,这样即加长了该属性,同时对网络的影响最小

5.优选0rigin属性最优的路由。0rigin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete

在这里插入图片描述

6.优选MED属性值最小的路由

在这里插入图片描述

MED的数值是由始发路由器继承IGP协议的Cost值而定的。该属性可以被传递给自己的EBGP对等体,也可以被传递给自己的IBGP对等体。

MED属性可以干扰其他人访问本地AS的流量走向。----->MED属性时BGP选路中唯一一个可以影响到其他AS的属性。----->传播范围:本地以及相邻的AS内部。

BGP规定,非本地始发的BGP路由信息,在传递给自己的EBGP对等体时,将MED值修改为0

所有的AS边界设备均需要进行路由信息的发布。

MED总结

  • MED数值默认不为0,而是继承了路由表中该路由条目的开销值,所以,MED参数可以反映到达目标网段在本AS内部的开销大小,通过这个参数,别的AS的流量再进入本AS时可以选择开销较小的入口进入。通过修改该属性,可以影响其他AS的流量流入本AS的路径。
  • 本地通过EBGP或者IBGP邻居学习到MED内容,之后将其传递给自己的EBGP对等体时,不再携带MED参数。因为可能会造成选路不佳。

注意

  • MED值影响的事别的AS的流量通过多个出口进入到本AS内部,如果流入的不是同一个AS,即收到的路由条目中的AS Path属性最左边的AS号不同,则将不比较第六条选路规则,直接比较第七条选路规则。----->如果想通过MED进行干涉选路,需要保证前五条规则内容完全相同(AS_Path属性的长度和内容和顺序也相同)
[r4-bgp]default med 100 ---全局修改方式
	缺陷:只能针对本地聚合路由或者重发布引入的路由信息生效,并且是传递给EBGP对等体时才会携带,不会影响本地MED数值
7.优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)
8.优选到Next_Hop的IGP度量值最小的路由
9.优选Cluster_List最短的路由
10.优选RouterID(OrginatorID)最小的设备通告的路由

在该条优选规则中,有起源者ID,则比较起源者ID;若无,则比较RID

11.优选具有最小IP地址的对等体通告的路由

这条规则是一个保守措施,即使在前面所有的规则都未选中的情况下,该条规则一定能选中。

BGP负载均衡–负载分担

形成负载分担的条件—>BGP路由优选规则的1至8条规则中需要比较的路径属性完全相同

在这里插入图片描述

[r4-bgp]maximum load-balancing ?
  INTEGER<1-8>  Specify maximum equal cost routes
  ebgp          EBGP routes as equal cost route
  ibgp          IBGP routes as equal cost route	
[r4-bgp]maximum load-balancing ebgp 2   -----修改BGP最大负载分担路由条目为2,默认情况下为1。
	如果携带了ebgp或ibgp参数,则代表对某种方式学习到的路由进行负载分担,不携带参数则表示全局执行。

在实现负载均衡后,无论是否配置了next-hop-local命令,本地设备都会向自己的IBGP对等体发布路由时,将下一跳修改为本地地址

注意内容:当满足如下所有条件时,可以形成等价路由,从而形成负载均衡

  • 原始下一跳不同
  • PV、LP相同
  • 都是聚合路由或者都不是聚合路由
  • 起源码相同、MED相同
  • AS内部的IGP开销值相同
  • AS_Path完全相同-----内容相同、顺序相同、长度相同
[r4-bgp]load-balancing as-path-ignore   -----忽略在进行负载均衡配置时的AS_Path属性对比。

BGP的路由过滤

在这里插入图片描述

需求:通过路由策略来完成,不让R2将172.16.1.0/24传递给R3
    1、抓流量
    [r2]ip ip-prefix aa permit 172.16.1.0 24

    2、做策略
    [r2]route-policy aa deny node 10
    [r2-route-policy]if-match ip-prefix aa
    [r2]route-policy aa permit node 20

    3、调用
    [r2-bgp]peer 10.1.23.3 route-policy aa export 

需求:不让R3学习到172.16.2.0/24,使用前缀列表
    1、配置前缀列表
    [r3]ip ip-prefix aa deny 172.16.2.0 24
    [r3]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32

    2、调用
    [r3-bgp]peer 10.1.23.2 ip-prefix aa import

需求:通过filter-policy来完成,不让R2和R3学习172.16.3.0/24路由
	1、配置ACL列表
	[r2]acl 2000
	[r2-acl-basic-2000]rule deny source 172.16.3.0 0
	[r2-acl-basic-2000]rule permit source any 
	
	2、调用
	[r2-bgp]peer 10.1.12.1 filter-policy 2000 import 
		------在BGP中使用过滤策略时,只能调用ACL列表,所以必须使用ACL列表来抓取流量

BGP的社团属性----Community

在这里插入图片描述

​ 类似于路由的“标记”,我们可以针对特定的路由设定特定的社团属性数值,而下游路由器在执行路由策略时,可以通过社团属性来匹配目标路由信息。

​ 社团属性是由32位二进制构成

  • 十进制表示
  • 十六位二进制:十六位二进制

在一条路由条目中,可以用多个团体属性进行标识。

名称取值功能
internet0x00000000代表所有路由信息
NO-advertise0xFFFFFF02不能被通告给任何BGP对等体
no-export0xFFFFFF01不能通告给EBGP对等体,但是可以通告给联邦的EBGP对等体
no-export-sub0xFFFFFF03不能通告给任何EBGP对等体

在这里插入图片描述

1、抓流量
[r1]ip ip-prefix aa permit 1.1.1.1 32

2、做策略
[r1]route-policy aa permit node 10
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]apply community no-advertise

3、调用
[r1-bgp]peer 12.0.0.2 route-policy com export 


----------------------------------给路由打上社团属性标记---------------------------------
	目前大部分厂商默认在传递BGP路由信息时不传递社团属性,所以,需要传递社团属性,需要通过命令打开。
[r1-bgp]peer 12.0.0.2 advertise-community---开启社团属性的传播性

社团属性应用场景

在这里插入图片描述

假定:业务A--->100:111     业务B--->100:222

1、设定策略,定义社团属性标记
[r1]route-policy com-1 permit node 10
[r1-route-policy]apply community 100:111

[r1]route-policy com-2 permit node 10
[r1-route-policy]apply community 100:222

2、在发布路由时调用策略
[r1-bgp]network 172.16.1.0 24 route-policy com-1
[r1-bgp]network 172.16.2.0 24 route-policy com-1
[r1-bgp]network 172.16.3.0 24 route-policy com-2
[r1-bgp]network 172.16.4.0 24 route-policy com-2

3、开启社团属性的传播功能
[r1-bgp]peer 10.1.12.2 advertise-community
[r2-bgp]peer 10.1.23.3 advertise-community


需求:对业务A的流量拒绝,对业务B的流量打上no-export属性。配置位置:在AS 200中
4、抓取流量
	通过社团属性过滤器来抓取携带社团属性的路由信息
[r2]ip community-filter 1 permit 100:111
[r2]ip community-filter 2 permit 100:222

5、做策略
[r2]route-policy com deny node 10
[r2-route-policy]if-match community-filter 1

[r2]route-policy com permit node 20
[r2-route-policy]if-match community-filter 2
[r2-route-policy]apply community no-export additive   -----如果没有additive参数则代表直接覆盖
[r2]route-policy com permit node 30

6、调用策略
[r2]bgp 200
[r2-bgp]peer 10.1.12.1 route-policy com import 

AS路径过滤器

在这里插入图片描述

需求:
1、禁止R3将始发于AS 100的路由传递给R5
2、R4将始发于AS 200的路由传递给R5时,修改MED

R3:
    1、抓取流量
    [r3]ip as-path-filter 1 deny _100$
    [r3]ip as-path-filter 1 permit .*   ----- . 代表任意;* 代表重复无数次。这条命令表示匹配所有

    2、调用策略
    [r3-bgp]peer 10.1.35.5 as-path-filter 1 export 

R4:
    1、抓取流量
    [r4]ip as-path-filter 1 permit ^200$

    2、做策略
	[r4]route-policy aa permit node 10
	[r4-route-policy]if-match as-path-filter 1
	[r4-route-policy]apply cost 10000
	[r4]route-policy aa permit node 20
	
    3、调用
	[r4-bgp]peer 10.1.45.5 route-policy aa export 

AS路径过滤器末尾隐含拒绝所有条件

正则表达式

​ 目的:检查字符串中符合某个规定的特定子字符串,并且可以捕获这个字符串。

  • 普通字符-------所有的大写和小写字母、数字、标点符号
  • 特殊字符-------具备特殊含义
特殊字符功能举例
^行首^10---->匹配10.10.10.1
$行尾1$
*匹配子正则表达式0次或多次10*
+匹配子正则表达式1次或多次10+
?匹配子正则表达式0次或1次10?
.匹配任意单个字符0.0
()括号内看做一个整体
_下划线匹配任意括号(大中小括号),逗号,空格
\转义字符,将下一个字符转换为普通字符\ * -----> 匹配*
X|Y匹配X或者Y
[XYZ]匹配包含的任意一个字符
[^XYZ]匹配未包含的任意一个字符[^123]----->匹配除了1、2、3以外的任意字符
AS-Path属性:
1 2 3 100 200 300
1 1 1 200 100 200 ----匹配
1 2 1 200 100 200
100 200 300
1 2 3 3 3 100 200 300

匹配‘1 1 1 200 100 200’属性:
	^[1|_]*20 === ^1_1_1_200_100_200$

在这里插入图片描述

作业:BGP选路实验

在这里插入图片描述

具体内容参照:BGP选路实验:http://t.csdnimg.cn/jBrYP

display lldp neighbor brief--------查看设备的邻接接口
  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值