BGP

  • BGP 邻居类型
  • BGP 5种包
  • BGP 6种邻居状态
  • BGP 邻居建立
  • BGP 路由的生成方式
  • BGP 通告原则与路由处理
  • BGP 认证
  • BGP 对等体之间的交互原则
  • BGP 邻居学习next-hop-local补充
  • BGP 常用属性
  • BGP 防环
  • BGP 选路规则
  • BGP 路由聚合


BGP知识点:

BGP基础配置,BGP 5种报文,6种邻居状态,4大类细分10种属性,IBGP EBGP(环回口 物理接口)建立邻居,BGP认证,fake-as,路由传递原则,IBGP防环,EBGP防环,RR防环,BGP路由自动聚合,手工聚合(detail-suppressed,supress-policy,attribute-policy,origin-policy),BGP 5种 community属性,BGP选录,BGP联盟,路由反射器,BGP路由过滤,引入,下放默认路由

EBGP最大跳数 ebgp多跳_bgp

边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS之间的路由可达,并选择最佳路由的 高级路径矢量路由协议

  • AS,自治系统是指同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。
  • AS的内部使用IGP来计算和发现路由,同一个AS内部的路由器之间是相互信任的,因此IGP的路由计算和信息泛洪完全处于开放状态,人工干预很少。
  • 不同AS之间的连接需求推动了外部网关协议的发展,BGP作为一种外部网关协议,用于在AS之间进行路由控制和优选。
  • 总结:AS内部使用IGP来计算和发现路由;AS之间使用BGP来传递和控制路由

BGP不支持多进程,因为整台路由器只能属于一个AS
BGP特点:非直连建立邻居关系 (BGP可以跨越多跳路由器建立邻居关系)
这种特点会产生 BGP路由黑洞 (双方路由表都看得到,但是ping不通,中间被吸走了)

TCP的三次握手。先启动BGP的一端先发起TCP连接。如图所示,RTB先启动BGP协议,RTB随机端口号向RTA的179端口发起TCP连接

EBGP最大跳数 ebgp多跳_网络协议_02

BGP 邻居类型

EBGP(External BGP)、IBGP(Internal BGP)

EBGP最大跳数 ebgp多跳_网络协议_03

通过AS number比较

运行在不同AS之间的BGP路由器建立的邻居关系为EBGP邻居关系

运行在相同AS内的BGP路由器建立的邻居关系为IBGP邻居关系

OSPF的network有两个作用:①建立邻居 ②宣告网段
OSPF的Hello包:①建立邻居 ②维护邻居
对于BGP是细化了,邻居归邻居,路由归路由
BGP建立邻居是peer,宣告是network
BGP建立邻居报文是open,BGP维护报文是keepalive

BGP 5种包

BGP 共有 Open、Update、Notification、Keepalive 和 Route-refresh 等 5种报文类型。
Open 报文:是 TCP 连接建立后发送的第一个报文,用于建立 BGP 邻居之间的连接关系。

BGP 邻居在接收到 Open 报文并协商成功后,将发送 Keepalive 报文确认并保持连接的有效性。确认后,BGP 邻居间可以进行 Update、Notification、Keepalive 和 Route-refresh 报文的交换

1、Open 报文:
用于建立 BGP 对等体连接,创建时或重置时能看到, reset bgp all all
2、Update 报文:
用于在对等体之间交换路由信息。需要在BGP中network才会有Update报文
3、Notification(通告)报文:
用于中断 BGP 连接。
4、Keepalive 报文:
用于保持 BGP 连接。 周期性发送。
5、Route-refresh(刷新)报文:
用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的 BGP 设备会发送和响应此报文。
refresh bgp all import

BGP 6种邻居状态

Idle:初始状态 。reset bgp all才能看到
connection:BGP等待TCP连接的简历
active:TCP连接失败,重新建立TCP连接
opensent:TCP建立成功,发送open报文
openconfirm:收到正确的OPEN报文 。如果收到Keepalive报文,则转至Established状态。如果收到Notification报文,则转至Idle状态。
established:BGP邻居建立成功

Idle状态是BGP初始状态
任何状态中收到Notification(通告)报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态

Connect状态
BGP启动连接重传定时器,等待TCP完成连接
如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
如果TCP连接失败,那么BGP转至Active(活跃)状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态。

Active状态
BGP总是在试图建立TCP连接
如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。
如果TCP连接失败,那么BGP停留在Acitive状态
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。

OpenSnet状态
如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态

OpenConfirm状态
BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态

Established状态
BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接
如果收到错误的Update或Keepalive报文,那么BGP就发送Notification报文通知对端,并转至Idle状态。

邻居关系配置的优化
物理口和环回口配置
IBGP 常规用环回口建立
EBGP 常规用物理接口建立

环回口建立 IBGP邻居
环回口 要加 connect-interface loo0 才能发送
[R1]bgp 100
[R1-bgp]peer 2.2.2.2 as-n 100 先要有邻居
[R1-bgp]peer 2.2.2.2 connect-interface loo0 再 指定更新源

环回口建立 EBGP邻居
[R2-bgp]peer 3.3.3.3 connect-interface loo0
[R2-bgp]peer 3.3.3.3 ebgp-max-hop 120 让传播的足够远。 如果是物理接口 1跳就足够了。
但环回口1跳是不够的, 要修改环回口 ebgp-max-hop。 即修改TTL值

[R3-bgp]peer 2.2.2.2 ebgp-max-hop
 

通过非直连(逻辑接口)建立IBGP邻居要指定更新源
更新源:BGP通告默认是以出接口发送更新
因为BGP默认情况下,邻居建立是通过本地设备的出接口向对端发起TCP连接。指定更新源,实际就是指定发出oepn包的源地址,也就是tcp连接的本端地址。因此当使用非直连建立IBGP/EBGP 邻居时需要指定更新源

 

BGP 邻居建立

  • 建立邻居的前提条件:建立邻居的地址必须是可达的
  • IBGP邻居建立
    1.通过直连接口建立IBGP邻居
    2.通过非直连(逻辑接口)建立IBGP邻居
      1.非直连地址必须可达
      2.指定更新源
    更新源:BGP默认使用设备出接口发送报文和更新路由

因为BGP默认情况下,邻居建立是通过本地设备的出接口向对端发起TCP连接,对端收到TCP报文会检查源目地址,不匹配则建立失败,指定更新源,实际就是指定发出oepn包的源地址,也就是tcp连接的本段地址。因此当使用非直连建立IBGP/EBGP 邻居时需要指定更新源

  • EBGP邻居建立
    1 通过直连接口建立IBGP邻居
    2.非直连建立EBGP
      1.地址可达
      2.指定更新源
      3.指定最大跳数:使非直连能建立EBGP邻居  命令:peer 10.1.2.2 ebgp-max-hop
bgp 100		进入BGP进程,每台只能配置一个进程号
router-id 1.1.1.1		配置router  ID
peer 2.2.2.2 as-number 100		指定10.1.12.2为对等体 AS是对端的AS号
peer 2.2.2.2 connect-interface LoopBack 0
peer 2.2.2.2 ebgp-max-hop 255
peer 192.168.12.2 as-number 100

如果没有配置 Router ID,BGP 路由器会按一定规则自动选举 Router ID,选举
规则如下:
路由器在它的所有 LoopBack 接口上选择数值最高的 IP 地址;
如果没有 LoopBack 接口,路由器会在它的所有物理接口上选择数值最高的 IP
地址。

EBGP最大跳数 ebgp多跳_网络协议_04

1、基本配置
R1:
sys
sysname R1
int loop 0
ip add 10.0.1.1 32
int g0/0/0
ip add 10.0.12.1 24
int g0/0/1
ip add 10.0.21.1 24
q

R2:
sys 
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/0
ip add 10.0.12.2 24
int g0/0/2
ip add 10.0.21.2 24
int g0/0/1
ip add 10.0.23.2 24
int g0/0/3
ip add 10.0.32.2 24
q

R3:
sys
sysname R3
int loop 0
ip add 10.0.3.3 32
int g0/0/0
ip add 10.0.23.3 24
int g0/0/1
ip add 10.0.32.3 24
q


2、配置IBGP邻居
先保证IBGP内互通:
R1:
ip route-static 10.0.2.2 32 10.0.12.2
ip route-static 10.0.2.2 32 10.0.21.2
R2:
ip route-static 10.0.1.1 32 10.0.12.1
ip route-static 10.0.1.1 32 10.0.21.1

第一种方式:物理口建立IBGP邻居
R1:
bgp 100
router-id 10.0.1.1
peer 10.0.12.2 as-number 100
peer 10.0.21.2 as-number 100
q

R2:
bgp 100
router-id 10.0.2.2
peer 10.0.12.1 as-number 100
peer 10.0.21.1 as-number 100
q

R2:
dis bgp peer  查看邻居状态
dis bgp routing-table  

————————————————————————————————————————————————————————————
第二种方式:环回口建立IBGP邻居
环回口 要加 connect-interface loo0 才能发送
R1:
undo peer 10.0.12.2 
undo peer 10.0.21.2
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface loop 0
q

R2:
ip route-static 10.0.1.1 32 10.0.12.1
ip route-static 10.0.1.1 32 10.0.21.1
bgp 100
undo peer 10.0.12.1
undo peer 10.0.21.1
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface loop 0
q

R2:
dis bgp peer  查看邻居状态
dis ip routing-table  查看路由表

3.配置EBGP邻居
第一种方式:环回接口建立BGP
R2:
bgp 100
peer 10.0.23.3 as-number 200
peer 10.0.32.3 as-number 200
peer 10.0.3.3 as-number 200
peer 10.0.3.3 connect-interface loop 0
peer 10.0.3.3 ebgp-max-hop 2
q
ip route-static 10.0.3.3 32 10.0.23.3
ip route-static 10.0.3.3 32 10.0.32.3

R3:
bgp 200
router-id 10.0.3.3
peer 10.0.23.2 as-number 100
peer 10.0.32.2 as-number 100
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface loop 0
peer 10.0.2.2 ebgp-max-hop 2
q
ip route-static 10.0.2.2 32 10.0.23.2
ip route-static 10.0.2.2 32 10.0.32.2

❤这里重点掌握怎么配置BGP邻居就行。
4.传递路由(后面补充,暂时不理)
R1:
bgp 100
 network 10.0.1.0 255.255.255.0  宣告网段,企图想让BGP路由学习到。
这个通过静态学习到,又通过BGP学习到,静态优先级比较高。dis bgp routing-table 会发觉这个不是最优的。 因此传递不过去给R3
[R1]int LoopBack 1
[R1-LoopBack1]ip add 6.6.6.6 24
[R1-LoopBack1]bgp 100
[R1-bgp]network 6.6.6.0 24
然后在R2 和 R3 dis bgp routing-table,发现学习到了 
R2:
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  6.6.6.0/24         10.0.1.1        0          100        0      i
 R3:
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   6.6.6.0/24         10.0.2.2                              0      100i


在R3上,创建looback2接口,宣告出去, 看看R1和R2的路由表
[R3]int loo2
[R3-LoopBack2]ip add 9.9.9.9 24
[R3-LoopBack2]bgp 200
[R3-bgp]net 9.9.9.0
R1:
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   6.6.6.0/24         0.0.0.0         0                     0      i
   i  9.9.9.0/24         10.0.3.3        0          100        0      200i

不是可用的,最优的路由条目。这种情况怎么解决?在R2上,设置next-hop-local 这个后面会讲到
[R2]bgp 100
[R2-bgp]peer 10.0.3.3 next-hop-local

peer 关键字后面是对端邻居的接口 IP 地址,也可以是环回口地址
as-number 后面是邻居路由器所在的 AS 号,
建立 EBGP 邻居关系时,一般使用直连接口的 IP 地址;建立 IBGP 邻居关系时,一般使用 Loopback 接口的 IP 地址。

 

BGP 路由的生成方式

BGP路由的生成方式 - Network(1)

Network命令是逐跳将IP路由表中已经存在的路由引入到BGP路由表中,宣告出去,其他BGP路由器才能学到,不可以network一个不存在的路由条目

EBGP最大跳数 ebgp多跳_bgp_05

BGP路由的生成方式 - Import(1)

Import: 根据运行的路由协议(RIP,OSPF,ISIS等)将路由引入到BGP路由表中,同时import命令还可以引入直连和静态路由。

但不建议EBGP的路由 引入到IBGP。 承载不了

EBGP最大跳数 ebgp多跳_EBGP最大跳数_06

dis bgp routing-table 查看是否学习到BGP路由条目

 

BGP 通告原则与路由处理

EBGP最大跳数 ebgp多跳_TCP_07


BGP通告原则之一:仅将自己最优的路由发布给邻居

EBGP最大跳数 ebgp多跳_TCP_08


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

EBGP最大跳数 ebgp多跳_bgp_09


BGP通告原则之三:通过IBGP获得的最优路由不会发布给其他的IBGP邻居(防环)

EBGP最大跳数 ebgp多跳_网络协议_10


BGP通告原则之四:BGP与IGP同步

 

配置案例

EBGP最大跳数 ebgp多跳_网络协议_11


BGP路由信息处理

bgp路由表,会提交到本地IP路由表。 路由转发的时候看的就是本地IP路由表

EBGP最大跳数 ebgp多跳_TCP_12

BGP 认证

认证是指路由器对路由信息来源的可靠性及路由信息本身的完整性进行检测的机制。

修改计时器

默认 BGP 的 keepalive 时间为 60s, holdtime 为 180s

如果 BGP 对待体两端的时间不同,以时间小的为准

修改hold time和keepalive 可以更快验证实验

[R2-bgp]timer keepalive 20 hold 60 整个BGP进程

EBGP最大跳数 ebgp多跳_TCP_13


简单认证 方式

[R1-bgp]peer 192.168.12.2 password simple huawei

[R2-bgp]peer 192.168.12.1 password simple huawei

密钥链 方式
[R2]keychain key mode periodic daily
[R2-keychain]key-id 1
[R2-keychain-keyid-1]key-string huawei
[R2-keychain-keyid-1]algorithm md5
[R2-keychain-keyid-1]send daily 09:00 to 17:00
[R2-keychain-keyid-1]receive-time daily 09:00 to 17:00
[R2-keychain-keyid-1]bgp 100
[R2-bgp]peer 192.168.23.3 keychain key
 
了解:fake-as —— 特殊场景
概念:使用fake-as可以将本地真实的AS编号隐藏,其他AS内的对等体在指定本段对锻体所在的AS编号时,应该设置成这个伪AS编号。
某台A设备升级了,然后AS号改了,等于 邻居指了不存在的AS号,然后邻居又不愿意改。
这就有个 fake-as 伪装。 把某台A设备真实的AS伪装,欺骗。
[R2]bgp 2000
[R2-bgp]peer 192.168.12.1 fake-as 200

 

BGP 对等体之间的交互原则

BGP 设备将最优路由加入 BGP 路由表,形成 BGP 路由。BGP 设备与对等体建立邻居关系后,采取以下交互原则:
1、从 IBGP 对等体获得的 BGP 路由,BGP 设备只发布给它的 EBGP 对等体。
2、从 EBGP 对等体获得的 BGP 路由,BGP 设备发布给它所有 EBGP 和 IBGP 对 9
等体。
3、当存在多条到达同一目的地址的有效路由时,BGP 设备只将最优路由发布给
对等体。
4、路由更新时,BGP 设备只发送更新的 BGP 路由。
5、所有对等体发送的路由,BGP 设备都会接收。
 

BGP 邻居学习next-hop-local补充

BGP无效路由的原因:下一跳不可达
下一跳地址为0.0.0.0表示本地产生的BGP路由。

EBGP最大跳数 ebgp多跳_网络协议_14


这台路由器既连接外部又连接内部,当路由器由外部路由发送到内部路由的时,改变下一跳为自己

[R3-bgp]peer 1.1.1.1 next-hop-local

[R3-bgp]peer 2.2.2.2 next-hop-local 告诉R2路由器,你去往一台路由器的时候,找我R3就行。

从EBGP邻居收到的路由,发给IBGP邻居的时候,改变下一跳
但从IBGP邻居收到的路由,发给EBGP邻居的时候,不需要使用

具体配置:

1.基本配置
R1:
interface GigabitEthernet0/0/0
 ip address 192.168.12.1 255.255.255.0 
interface LoopBack0
 ip address 1.1.1.1 255.255.255.0 

R2:
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
interface LoopBack0
 ip address 2.2.2.2 255.255.255.0 

R3:
interface GigabitEthernet0/0/0
 ip address 192.168.34.3 255.255.255.0 
interface GigabitEthernet0/0/1
 ip address 192.168.23.3 255.255.255.0 
interface LoopBack0
 ip address 3.3.3.3 255.255.255.0 

R4:
interface GigabitEthernet0/0/0
 ip address 192.168.34.4 255.255.255.0 
interface LoopBack0
 ip address 4.4.4.4 255.255.255.0 


2.内部OSPF配置
R1:
 area 0.0.0.0 
  network 1.1.1.1 0.0.0.0 
  network 192.168.12.1 0.0.0.0 

R2:
 area 0.0.0.0 
  network 2.2.2.2 0.0.0.0 
  network 192.168.12.2 0.0.0.0 
  network 192.168.23.2 0.0.0.0 

R3:
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 192.168.23.3 0.0.0.0 

3.环回口建立IBGP邻居  
R1:
[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 2.2.2.2 as-n 100
[R1-bgp]peer 2.2.2.2 con loo0
[R1-bgp]peer 3.3.3.3 as-n 100
[R1-bgp]peer 3.3.3.3 con loo0
[R1-bgp]net 1.1.1.0 24

R2:
[R2]bgp 100
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 1.1.1.1 as-n 100
[R2-bgp]peer 1.1.1.1 con loo0
[R2-bgp]peer 3.3.3.3 as-n 100
[R2-bgp]peer 3.3.3.3 con loo0
[R2-bgp]net 2.2.2.0 24

R3:
[R3]bgp 100
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 2.2.2.2 as-n 100
[R3-bgp]peer 2.2.2.2 con loo0
[R3-bgp]peer 1.1.1.1 as-n 100
[R3-bgp]peer 1.1.1.1 con loo0
[R3-bgp]net 3.3.3.0 24

4.物理口建立EBGP邻居
R3:
[R3]bgp 100
[R3-bgp]peer 192.168.34.4 as-n 200

R4:
[R4]bgp 200
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.34.3 as-n 100
[R4-bgp]net 4.4.4.0 24
不需要改变邻接接口,也不需要多跳。因为是物理接口

5.测试验证,发现问题,解决next-hop-local
[R2]dis bgp routing-table 发觉   
4.4.4.0 不是最优的,可用的,不会放到自己的路由表(ip routing-table),原因是下一跳不可达。 直接跨了网段的下一跳是不OK的。
Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  1.1.1.0/24         1.1.1.1         0          100        0      i
 *>   2.2.2.0/24         0.0.0.0         0                     0      i
 *>i  3.3.3.0/24         3.3.3.3         0          100        0      i
   i  4.4.4.0/24         192.168.34.4    0          100        0      200i

解决:next-hop-local
[R3]bgp 100
[R3-bgp]peer 2.2.2.2 next-hop-local
[R3-bgp]peer 1.1.1.1 next-hop-local   
内部两个都要配next-hop-local,告诉R2,R1 路由器,你去的时候找我就行了

再次验证:
[R2]dis bgp routing-table
 Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  1.1.1.0/24         1.1.1.1         0          100        0      i
 *>   2.2.2.0/24         0.0.0.0         0                     0      i
 *>i  3.3.3.0/24         3.3.3.3         0          100        0      i
 *>i  4.4.4.0/24         3.3.3.3         0          100        0      200i

<R1>ping -a 1.1.1.1 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=50 ms

 

BGP 常用属性

4大类细分10种属性
4大分类:公认必遵、公认任意、可选过渡、可选非过渡

公认必遵(所有路由器,只要运行BGP都可以识别到,Update报文发送路由条目的时候必须携带这三个):Origin(起源)、AS_Path(AS路径)、Next_hop(下一跳)

公认任意:Local_pref、Atomic_aggregate原子聚合(它相当于一种预警标识,并不承载任何信息。当路由器收到一条BGP路由更新中发现该条路由携带Atomic_aggregate属性时,它就知道这条路由可能出现了路径属性的丢失。)

可选过渡(可有可无,不知道就传递给下一个对等体):Aggregator聚合者(用于标记路由汇总行为发生在哪个AS及哪台BGP路由器上)、Community(多个路由条目放一起)

可选非过渡(可有可无,不知道就丢弃):MED、ORIGINATOR_ID、CLUSTER_LIST

BGP属性 —— Origin
Origin属性定义路径信息的来源,标记一条路由是怎么成为BGP路由的
IGP(network)>EGP>Incomplete(import)
i - IGP, e - EGP, ? - incomplete

BGP属性 —— AS_Path
AS-Path 是 记录经过的AS-hop 。 默认会选AS-Path短

BGP属性 —— Next_hop
什么时候要加 next-hop-local
从EBGP邻居收到的路由,发给IBGP邻居的时候,改变下一跳
但从IBGP邻居收到的路由,发给EBGP邻居的时候,不需要使用

BGP属性 —— Local_Preference
Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。默认为100,值越大越优

BGP属性 —— MED
MED属性仅在相连两个AS(在EBGP传递)之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由。默认为0,越小越优

BGP属性 —— Community
·限定路由的传播范围
·打标机,便于对符合相同条件的路由进行统一处理

BGP 防环

IBGP的防环:水平分割,路由器从它的一个BGP对等体那里接收到的路由条目不会将该路由器再传递给其他IBGP对等体。

EBGP的防环:当路由器从EBGP邻居收到BGP路由时,如果该路由的AS_Path中包含了自己的AS编号,则该路由将会直接丢弃

EBGP最大跳数 ebgp多跳_bgp_15


R2从EBGP邻居R1 收到R1的路由条目,会发送给R3。
如果R3后还有R4,观察点要转移到R3,R3是通过IBGP邻居R2收到的路由条目,是不会发给R4的

如果R4想接收到,R2和R4要建立一个BGP连接,虽然没有物理上的直连,但可以建立逻辑相连 —— TCP可达

路由反射器的防环:Originator_id,Cluster_list

 

BGP 选路规则

BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
·该路由是到达目的地唯一路由,直接优选。
·对到达同一目的地的多条路由,优选优先级最高的。
·对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。

一般来说,BGP计算路由优先级的规则: 要记住这8条及顺序
当到达同一目的地存在多条路由且下一跳可达

1.优选协议首选值(Preference_Value)最高的路由。(私有属性,仅本地有效)
2.优选本地优先级(Local_Preference)最高的路由。 (100,IBGP,越大越优)
3.优选本地生成的路由。手动聚合>自动聚合>network>import>从对等体学到的。
4.优选 AS_Path 短的路由。
5.比较 Origin 属性,起源类型 IGP>EGP>Incomplete。 i>e>?
6.优选 MED(Multi Exit Discriminator)值最低的路由。 (0,EBGP,越小越优)
7.优选从 EBGP 学来的路由(EBGP>IBGP)。
8.优选 AS 内部 IGP 的 Metric 最小的路由。
bgp 100
max load-balancing 2
9.优选 Cluster_List 最短的路由。 (有做路由反射器RR才考虑)
10.优选 Router_ID 最小的路由器发布的路由。
11.优选具有较小 IP 地址的邻居学来的路由。

如果配置了负载分担,当前8个规则相同,且存在多条AS_Path完全相同的外部路由,则根据配置的路由条数选择多条路由进行负载分担
 

BGP 路由聚合

BGP在AS之间传递路由信息,随着AS数量的增多,单个AS规模的扩大,BGP路由表将变得十分庞大,因此带来如下两类问题:
·存储路由表将占用大量的内存资源,传输和处理路由信息需要消耗大量的带宽资源;
·如果传输的路由条目出现频繁的更新和撤销,对网络的稳定性会造成影响

BGP路由聚合的必要性,AS内的路由器比较低端,处理能力较低,希望访问,又不希望接收过多的路由条目

聚合方法 —— 静态

EBGP最大跳数 ebgp多跳_TCP_16

null 0 表示不存在的接口,起到防环作用

聚合方法 —— 自动聚合

undo synchronization 关闭同步

自动聚合是针对 引入来的路由有效,对network无效

EBGP最大跳数 ebgp多跳_TCP_17

聚合方法 —— 手动聚合 (静态和aggravate)

BGP路由聚合 会有明细和聚合后的。 因此要通过路由聚合屏蔽明细路由,只将一条聚合后的路由发出去 detail-suppressed

EBGP最大跳数 ebgp多跳_bgp_18