BGP基础(二)--BGP路由生成

一、BGP邻居建立

  1. BGP特征
  2. BGP对等体关系(EBGP、IBGP)
  3. TCP连接(TCP三次握手)
  4. BGP报文类型(5种:open、keepalive、update、route-refresh、notification)
  5. BGP状态机(6种:idle、connect、active、opensent、openconfirm、established)
  6. BGP路由表(dis bgp routing-table ipv4-address mask/mask-length)

二、BGP路由生成

不同于IGP协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。

BGP注入路由的方式有两种:

1. network
2. import-route

network

  • BGP协议的network命令不再具备将接口加入BGP进程的逻辑。
  • 该命令是逐条将IP路由表中已经存在的路由引入到BGP路由表中,并通告给邻居。
  • network可以精确控制发布哪些BGP路由。

import-route

  • Network方式注入路由虽然是精确注入,但是只能一条条配置逐条注入IP路由表中的路由,如果注入的路由条目很多,那么配置命令将会非常复杂,为此可以使用import-route方式。
  • 将路由表的路由引入到BGP中,高效快捷。
  • 直连路由、静态路由、OSPF路由、ISIS路由

BGP协议(路由的搬运工,AS管理员让我干啥我干啥)的特点:
• BGP不对路由进行计算
• BGP只是路由的搬运工

IGP与EGP协议区别
IGP协议:一配好,全网就通。
BGP协议:只通管理员让通的,BGP的控制欲很强。

BGP通告原则与路由处理

BGP的update报文

• BGP通过Network和Import两种方式生成BGP路由,BGP路由封装在Update报文中通告给邻居。BGP在邻居关系建立后才开始通告路由信息。
• Update消息主要用来公布**可用路由**和**撤销路由**,Update中包含以下信息:
	○ 网络层可达信息(NLRI):用来公布IP前缀和前缀长度。
	○ 路径属性:为BGP提供环路检测,控制路由优选。
	○ 撤销路由:用来描述无法到达且从业务中撤销的路由前缀和前缀长度。
• 在通告BGP路由时,由于各种因素的影响,为了避免路由通告过程中出现问题,BGP路由通告需要遵守一定的规则,下面进行详细介绍。

BGP通告原则

通告原则之一:仅将自己最优的路由发布给邻居
通告原则一
备注,在BGP路由表中同时存在一下以下两个标志的路由为最优且有效路由:
“ > ” 大于号 best 代表最优路由
“ * ” 星号 valid 代表有效的BGP路由,即下一跳可达的路由

通告原则之二:通过EBGP获得的最优路由发布给所有BGP邻居
通告原则

通告原则之三:通过IBGP获得的最优路由不会发布给其他的IBGP邻居,称水平分割,用来防止IBGP邻居互相通告导致产生环路。
BGP通告原则

通告原则之四:BGP同步原则,从IBGP邻居得到的路由同步检测通过后传递给EBGP邻居,适用于AS内部有设备没有运行BGP协议。

知识点:

关于BGP同步原则:
当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用这条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则。

为什么要同步检测?

  • BGP路由传递给EBGP邻居时,下一跳自动修改为向该EBGP邻居发送BGP报文的源地址。
  • 从EBGP邻居传来的路由在传给IBGP邻居时,下一跳默认保持不变(依旧是EBGP邻居传来的源地址),这是导致下一跳不可达的根本原因,也是在EBGP上做同步检测的原因。

如何解决下一跳不可达?

  • 将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址即可。
peer IBGP邻居地址 next-hop-local
# 这条命令只对IBGP邻居生效。

BGP通告原则
如上图,此时,由于RTC没有运行BGP协议,也没有去往100.0.0网段的路由,那么RTE想要去往100.0.0网段,在经过RTD到达RTC时,会出现BGP路由黑洞。

如何解决BGP路由黑洞:

  1. 将BGP路由引入到IGP协议中(即IGP与BGP同步,基本淘汰),比较消耗设备资源,因为BGP路由数量过于庞大,引入到IGP协议增加了IGP协议计算路由的负担。而且BGP路由震荡,IGP路由也会产生震荡。
  2. AS内部所有的路由器均运行BGP协议,并形成IBGP全互连主流架构,此时不再需要同步检测,BGP与IGP同步不同步已经没有意义了,完美。
  3. 使用MPLS标签隧道转发。

总结:

  1. 仅传递最优路由
  2. 从EBGP邻居得到的路由传递给所有邻居
  3. 从IBGP邻居得到的路由不传递给IBGP邻居
  4. 从IBGP邻居得到的路由同步检测通过后传递给EBGP邻居
  5. 如果同步功能关闭,从IBGP邻居得到的路由只要下一跳可达并最优即可传递给EBGP邻居

实验:
BGP实验图

R1配置

<Huawei>system-view
[Huawei]sysname r1
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]ip add 10.1.12.1 24

[r1] bgp 1
[r1-bgp]peer 10.1.12.2 as 234

[r1]int lo 0
[r1-LoopBack0]ip add 1.1.1.1 24

#BGP发布路由的逻辑,你想别人能够访问你,那么你就得把这条路由发布出去
[r1]bgp 1
[r1-bgp]network 1.1.1.0 24

R2配置

<Huawei>system-view
[Huawei]sysname R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 10.1.12.2 24
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 10.1.23.2 24
[R2]int lo 0
[R2-LoopBack0]ip add 2.2.2.2 32

# ISIS协议
[R2]isis
[R2-isis-1]is-level level-2
[R2-isis-1]network-entity 49.0002.0000.0000.0002.00
[R2-isis-1]int lo 0
[R2-LoopBack0]isis enable
[R2-LoopBack0]int g0/0/1
[R2-GigabitEthernet0/0/1]isis enable

#AS之间互联的链路是不会加入到IGP协议中的
[R2]bgp 234
[R2-bgp]peer 10.1.12.1 as 1

[R2-bgp]peer 4.4.4.4 as 234
[R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0

[R2]isis
[R2-isis1]import-route bgp

R3配置

<Huawei>system-view
[Huawei]sysname R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 10.1.23.3 24
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 10.1.34.3 24
[R3]int lo 0
[R3-LoopBack0]ip add 3.3.3.3 32

# ISIS协议
[R3]isis
[R3-isis-1]is-level level-2
[R3-isis-1]network-entity 49.0003.0000.0000.0003.00
[R3-isis-1]int lo 0
[R3-LoopBack0]isis enable
[R3-LoopBack0]int g0/0/0
[R3-GigabitEthernet0/0/0]isis enable
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]isis enable

R4配置

<Huawei>system-view
[Huawei]sysname R4
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip add 10.1.34.4 24
[R4]int g0/0/1
[R4-GigabitEthernet0/0/1]ip add 10.1.45.4 24
[R4]int lo 0
[R4-LoopBack0]ip add 4.4.4.4 32

# ISIS协议
[R4]isis
[R4-isis-1]is-level level-2
[R4-isis-1]network-entity 49.0004.0000.0000.0004.00
[R4-isis-1]int lo 0
[R4-LoopBack0]isis enable
[R4-LoopBack0]int g0/0/0
[R4-GigabitEthernet0/0/0]isis enable

[R4]bgp 234
[R4-bgp]peer 10.1.45.5 as 5

[R4-bgp]peer 2.2.2.2 as 234
[R4-bgp]peer 2.2.2.2 connect-interface LoopBack 0

[R4]isis
[R4-isis1]import-route bgp

R5配置

<Huawei>system-view
[Huawei]sysname R5
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip add 10.1.45.5 24

[R5] bgp 5
[R5-bgp]peer 10.1.45.4 as 234

遇到问题:

  • 从EBGP邻居传来的路由传给IBGP邻居时,下一跳默认保持不变(依旧是R1的出接口地址,实际应该是R2到R4的地址),这是导致(R4到R2不通)下一跳不可达的根本原因。
  • 此时,在路由器R4上,dis bgp routing-table 查询1.1.1.0网段路由不可达。

解决方法:

  1. 在R4上添加静态路由也可以解决,但是,当面对大量路由时,这不是一个好办法(不采取)。
  2. 将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址。
# peer IBGP邻居地址 next-hop-local
# 这条命令只对IBGP邻居生效。

[R2]bgp 234
[R2-bgp]peer 4.4.4.4 next-hop-local

三板斧
bgp 234
	peer 4.4.4.4 as-number 234
	peer 4.4.4.4 connect-interface loopback 0
	peer 4.4.4.4 next-hop-local

关闭同步功能:
undo synchronization
华为是默认关闭的,也无法开启。

R5补充配置

[R5]int lo 0
[R5-LoopBack0]ip ddd 5.5.5.5 24
[R5-LoopBack0]q
[R5]bgp 5
[R5-bgp]network 5.5.5.0 24 

# 此时,在R2上查看,也是显示路由不可达,怎么办:
[R4]bgp 234
[R4-bgp]peer 2.2.2.2 next-hop-local
三板斧

# 记得向所有BGP邻居手动触发路由更新
refresh bgp all export

回顾实验结果
R1上面,dis bgp routing-table 查询结果里面nexthop是0.0.0.0,表示路由器自己产生的路由。
路由信息
当然,也可以查看路由的详细信息,dis bgp routing-table 1.1.1.0
路由信息
产生下面问题的原因:从EBGP邻居传来的路由传给IBGP邻居时,下一跳默认保持不变。使得在路由器R4上,去往1.1.1.0网段的路由下一跳不可达。
路由信息
此时,在R4上添加静态路由,去往1.1.1.0网段的路由信息变成*有效路由,>最优路由,i。
路由信息
完成同步,路由可达,R5有去往1.1.1.0网段路由。
路由信息
总结,查看一条路由是否可达,首先查看BGP路由中的下一跳dis bgp routing-table,然后在dis ip routing-table nexthop 查看下一跳是否可达,如果不可达,添加静态路由即可,但是此方法太过于笨重,面对很多条不可达路由时,就无能为力了,最好是使用next-hop-local。
路由信息
配置完成,R3上面dis ip routing-table 显示有去往1.1.1.0和5.5.5.0网段的路由
路由信息
并且,在R5上面带源pingR1,可以通。
路由信息
再次回到,BGP路由黑洞

关于同步功能,只是用来检测有没有黑洞,它解决不了黑洞,那么,只要通过其他方法解决了黑洞问题,同步可开可不开。

解决:
采用IBGP全部互联,可解决BGP路由黑洞问题,此时同步功能开不开都是一样的,所以华为默认不开

# R2的isis配置
[R2]isis
[R2-isis-1]dis this
[V200R003C00]
#
isis 1
 is-level level-2
 network-entity 49.0002.0000.0000.0002.00
 import-route bgp
#
return

#关闭路由引入
[R2-isis-1]undo import-route bgp

# R4的isis配置
[R4]isis
[R4-isis-1]dis this
[V200R003C00]
#
isis 1
 is-level level-2
 network-entity 49.0004.0000.0000.0004.00
 import-route bgp
#
return

#关闭路由引入
[R4-isis-1]undo import-route bgp

开始建立IBGP全互连


[R2]bgp 234
[R2-bgp]peer 3.3.3.3 as 234
[R2-bgp]peer 3.3.3.3 connect-interface loopBack 0
[R2-bgp]peer 3.3.3.3 next-hop-local

[R4]bgp 234
[R4-bgp]peer 3.3.3.3 as 234
[R4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[R4-bgp]peer 3.3.3.3 next-hop-local

<r3>systen-view
[r3]bgp 234
[r3-bgp]peer 2.2.2.2 as 234
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[r3-bgp]peer 2.2.2.2 next-hop-local

[r3-bgp]peer 4.4.4.4 as 234
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer 4.4.4.4 next-hop-local

建立IBGP全互联后,从5.5.5.5可以ping通 1.1.1.1
ping路由

BGP路由处理

BGP路由信息处理

  1. 当从BGP邻居接收到Update报文时,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径
  2. 得出的最佳路径被存储到本地BGP路由表(Local_RIB)中,然后被提交给本地IP路由表(IP_RIB),以用作安装考虑。
  3. 被选出的有效的最佳路径路由将会被封装在Update报文中,发送给对端的BGP邻居。

IP路由表(IP_RIB):全局路由信息库,包括所有的IP路由信息。
BGP路由表(Local_RIB):BGP路由信息库,包括本地BGP路由器选择的路由信息,邻居表,邻居清单列表。
收到BGP邻居发来的Update报文,路由器会执行算法进行路径选择,确定每一条前缀的最佳路径,并将计算出的最佳路径存储到本地BGP路由表(Local_RIB)中。
如果启用了多路径特性,最佳路径和所有等值路径都被提交给IP_RIB,考虑是否安装。除了从BGP邻居接收的最佳路径外,Local_RIB也包含当前路由器注入的路由(被称为本地发起的路由)。
在Local_RIB中,只有被选为最优的前缀才会被封装到Update报文中通告给自己的BGP邻居。

扩展

黑洞路由解决方案:

方案一:将BGP引入到IGP(已淘汰)
将BGP路由引入到IGP协议中(即IGP与BGP同步,基本淘汰),比较消耗设备资源,因为BGP路由数量过于庞大,引入到IGP协议增加了IGP协议计算路由的负担。而且BGP路由震荡,IGP路由也会产生震荡。

方案二:IBGP全互联
AS 234内的R2、R3和R4相互之间建立IBGP邻居关系,R2会将R1的路由直接通告给R3和R4,同理R4也会将R5的路由传递给R2和R3。

方案三:使用路由反射器RR

  • 路由反射器两种角色:RR(Route Reflector,路由反射器)、Client(客户端)
  • RR会将学习到的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。
  • 将一台BGP路由器指定为RR,同时,还需要指定其Client,但是Client本身无需做任何配置,因为它并不知道该网络中存在RR。
  • 路由反射器和联邦是两种专门针对IBGP水平分割设计的解决方案。

在AS 234的每台路由器上配置BGP进程,然后配置R3为RR,R2、R4为RR客户端,客户端设备都和RR建立IGBP邻居。RR会将客户端传递过来的路由发射给该客户外的所有客户,以及所有非客户,这样所有的BGP路由都存在到达R1和R5的路由。数据转发时直接查找BGP路由表,就可以实现数据的转发。

方案四:MPLS隧道
在R2、R3、R4上开启MPLS协议,R2和R4之间建立MPLS LSP隧道,使用route recursive-lookup tunnel实现将R1和R5的路由迭代到LSP隧道。
route recursive-lookup tunnel 应用在MPLS网络的边界设备上。

方案五:GRE隧道
在R2和R4设备上建立GRE隧道,然后通过GRE隧道的IP地址建立IBGP邻居关系传递业务路由。

  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值