BGP的工作过程

1,基于IGP(静态,直连)实现IP可达;

2,指定邻居关系,邻居间需要建立TCP会话通道。BGP之后发送的所 有数据包都是通过TCP会话通道发送,来保证其传输的可靠性的。

3,使用OPEN报文和keeplive报文进行邻居关系的建立;生成邻居 表;

4,使用Update报文共享路由信息,信息中携带目标网络号,掩码信 息及各种属性;将收集和发送的所有路由信息记录在一张表中 --- BGP表。

5,之后,将BGP表中的最优路径加载到路由表中。(到达同一个目标 网段可能收到多条路由信息,BGP仅加载一条(不存在负载均衡)最优路径,最优路径是通过属性来选择的)

6,收敛完成后,将使用keeplive包进行周期保活,默认保活时间为 180S,周期发送时间为60S。 7,若出现错误信息,将使用notification报文进行告警;(这个错 误信息可能出现在对等体建立的时候,也可能出现在之后。)

8,若发生结构突变,则将直接发送UPdate报文进行触发更新

BGP的路由黑洞

重置BGP邻居 bgp邻居建立完成后的状态_重置BGP邻居

 由于BGP协议可以非直连建邻,故可能出现BGP协议跨越未运行BGP协 议的路由器,导致BGP路由传递后,显示控制层面可达,但是,数据层 面,流量经过未运行BGP协议的路由器时,无法通过,形成路由黑洞。

解决方案: 1,让AS内所有设备都运行BGP协议

2,可以在AS内部运行BGP的设备上像AS内部使用的IGP协议中进行重 发布

3,使用MPLS技术解决路由黑洞问题 --- 是当前工程中主要使用的解 决BGP路由黑洞方案。

BGP为了防止BGP路由黑洞的产生,提出了BGP同步机制 --- 即当一台 路由器从自己IBGP对等体学习到一条BGP路由时,他不能将这条路由 通告给自己的EBGP对等体,除非他又从IGP协议中(包含静态路由) 学习到这条路由。也就是要求IBGP路由和IGP路由同步。

华为设备默认关闭BGP的同步规则。

BGP的防环机制

BGP使用的防环机制 ---- 水平分割 在BGP中的水平分割分为两种:

1,EBGP水平分割 --- 专门解决EBGP对等体之间可能出现的环路 问题。

2,IBGP水平分割 --- 专门解决IBGP对等体之间可能出现的环路 问题。

3、MPLS

5,BGP的防环机制

BGP使用的防环机制 ---- 水平分割 在BGP中的水平分割分为两种:

1,EBGP水平分割 --- 专门解决EBGP对等体之间可能出现的环路 问题。

2,IBGP水平分割 --- 专门解决IBGP对等体之间可能出现的环路 问题。

EBGP水平分割: bgp协议在路由条目中记录所经过的AS编号 --- AS_PATH属性 (记载所有经过AS编号的属性,该属性除了可以用来进行EBGP对等体 之间的防环外,还可以在特定情况下进行路由选路)。接收到的BGP 路由条目中的AS_PATH中若包含本地的AS号,则将拒绝接受,避免环 路产出。

IBGP水平分割

重置BGP邻居 bgp邻居建立完成后的状态_IP_02

因为BGP的AS-BY-AS的特性,导致AS内部被认为是一个整体,在默认 情况下,路由的属性是不会发生变化的,所以,无法通过属性来进行防 环。

所以,IBGP水平分割的做法 --- 当一个路由器从一个IBGP对等体出 学习到某一条BGP路由时,他将不再把这条路由信息通告给其他的IBGP对 等体。

 

重置BGP邻居 bgp邻居建立完成后的状态_重置BGP邻居_03

 IBGP水平分割可以有效的解决IBGP对等体之间路由回传造成的环路问 题,但是,也会引发路由信息传递障碍问题。想要避免IBGP水平分割带来 的问题,可以让所有AS内部运行BGP的路由器均建立IBGP对等体关系。

---- 这种建立全连的IBGP对等体的方案并不是最佳解决方案

--- 因 为,当一个AS内运行BGP协议的路由器数量较多时,建立全连的邻居关系,将造成大量的资源浪费,

并且降低网络的可扩展性。

所以,BGP存在两个技术专门用于解决IBGP水平分割带来的问题 ---

1,路由反射器

2,联邦

3,BGP的基本配置 BGP邻居建立过程 1)EBGP对等体直连建邻

6,启动BGP进程

[r1]bgp 1 --- 1 指的是该路由器所在的AS号,并不是进程。因 为一个路由器只能属于一个AS中,所以,一个路由器只能启动一 个BGP进程 [r1-bgp]

2,配置RID [r1-bgp]router-id 1.1.1.1

3,指定建立邻居关系

[r1-bgp]peer 12.0.0.2 as-number 2 --- 指定建邻的IP地址和 邻居所在的AS的编号(邻居关系指定是双向的)

[r1-bgp]display bgp peer --- 可以查看BGP的邻居表

2)IBGP对等体环回建邻

[r2-bgp]peer 3.3.3.3 as-number 2

[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 --- 指 定给邻居发送数据包的连接接口是环回接口

切记:一旦使用环回地址作为建邻地址,同时需要修改源IP地址 未本地环回地址

3)EBGP对等体环回建邻

因为EBGP对等体之间一般采用直连建邻的方法,所以,我们将EBGP对 等体之间的数据包中的TTL值设置为1,同时,加入了直连检测(检测源目 IP是否在同一个网段); 因为华为设备并没有直接关闭直连检测的方法,但是可以通过修改 TTL值来让EBGP邻居间可以正常非直连建邻,直连检测将会自动失效。

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2  ---将和5.5.5.5建邻的数据包中的TTL值改为2

[r5-bgp]peer 4.4.4.4 ebgp-max-hop --- 后面不加数字,相当于 将TTL值改为最大值,255

总结:再建立EBGP对等体关系时,建议使用第一种方法,EBGP对等体 间直连建邻;IBGP对等体间建议使用环回接口进行建邻,即使用方法二。

BGP的路由发布

1)通过Network命令进行发布 BGP可以将所有路由表中存在的路由条目通过NETWORK命令进行发布。

[r1-bgp]network 1.1.1.0 24

[r1-bgp]display bgp routing-table --- 查看设备的BGP表 Network ---- 目标网段及掩码信息 NextHop ---- 下一跳 ---- 属于BGP的路由属性 ---- 谁通告的,谁 就是下一跳;如果是自己发布的,则下一条属性0.0.0.0

在network前面出现的符号称为这条路由的状态码。

*---- 代表可用 ---- BGP设备每收到一条路由信息,都会检查其下 一跳属性的可达性(通过路由表查询。)如果下一跳的地址是可达 的,则代表该路由可用。不可达则不可用,不可用则该路由信息将不 被接纳,直接不参与选择。

>--- 代表优选 ---- 当收到多条到达相同网段的路由信息时,BGP将 会在其中根据路由属性选择最好的最为优选路由,只有优选的路由才 会被加载到路由表中,并且传递给其他BGP对等体。不优选的则不传 递,不加表。

当一台路由器收到来自EBGP对等体发送的路由信息正常加表后,该路 由的协议类型为:EBGP,优先级:255

I ---- 状态码为I ---- 则代表该路由信息是从IBGP对等体处学来的路由。

因为BGP存在AS-BY-AS的特性,所以,IBGP邻居之间传递路由时,默 认不会修改下一跳属性,可能导致从EBGP邻居处传递的路由信息在 IBGP邻居处不可达。所以,需要执行如下命令进行更改。

[r2-bgp]peer 3.3.3.3 next-hop-local 当一台路由器收到来自IBGP对等体发送的路由信息正常加表后,该路 由的协议类型为:IBGP,优先级:255

当通告的路由数量较大时,使用network逐条发布效率较低,则可以 通过重发布的方法来批量发布路由。

2)通过重发布来批量发布BGP路由

[r2-bgp]import-route ospf 1 ---- 通过重发布将OSPF的路由发布 到BGP中。

OGN --- 起源码

--- 1,通过Network发布的路由 ---- I ---- I代 表该路由起源于IGP协议(包括静态路由和直连路由)。

--- 2,通过EGP协议发布的路由 ---- e ---- 指的 是BGP协议之前的外部网关协议 -- EGP协议,因为目前该协 议基本上不用了,所以,e标记很少见。

--- 3,通过除了以上两种方式发布的路 由 ---- ? ---- 重发布路由的起源码标记就是?