BGP环路检测功能 bgp产生环路的原因_java

题目1:R2、 R3 、 R4 之间运行 RIP R2 和 R4 之间建立 IBGP R2 和 R1 建立 EBGP R3 上没有运行 BGP R1 上将 1.1.1.0/24 宣告至 BGP ,在 R4 上将 IBGP 引入到 RIP 。

1、该场景当中出现环路,请说明环路的原因及解决方案?

R1通过EBGP把 1.1.1.0/24 传给R2,R2通过IBGP将路由传给R4(需要配置next-hop-local将下一跳改为自己),R4上又将此路由从IBGP引入到RIP(import -route bgp permit-ibgp)。

如果R2、R3、R4之间运行RIPv1,R3通过RIP学到的这条路由为 1.0.0.0/8,R3又通过RIP将路由传给R2,这时R2的全局路由表有一条通过RIP学到的1.0.0.0/8(下一跳指向R3),还有一条通过EBGP学到的1.1.1.0/24(下一跳指向R1),此时R2访问1.1.1.0/24 网段时不会环路,但R3、R4访问1.1.1.0/24网段时会产生环路,因为R3访问该网段的数据包发给下一跳R4,R4查路由表下一跳是R2,经过路由迭代又把数据包传给R3,产生环路。

如果R2、R3、R4之间运行RIPv2,R3通过RIP学到的这条路由为1.1.1.0/24,R3又通过RIP将路由传给R2,这时R2的全局路由表有一条通过RIP学到的1.1.1.0/24(下一跳指向R3,因为RIP的路由优先级比EBGP高),此时R2、R3、R4访问1.1.1.0/24网段时会环路,因为R2访问该网段的数据包发给下一跳R3,R3发给下一跳R4,R4查路由表下一跳是R2,经过路由迭代又把数据包传给R3,产生环路。

解决方案1: 在R2的RIP视图下将BGP引入:import-route bgp,这时在R3上执行ping 1.1.1.1 仍然不通,因为R1上没有到R3的回程路由,可以在R1上配置静态路由或者在R2的BGP视图下引入RIP,此时在R3上执行ping 1.1.1.1 就可以通了。

解决方案2: 在R2和R4之间建立GRE隧道,主要配置如下:

#在R2、R4上配置 Tunnel接口
 interface Tunnel 0/0/1
 ip address <隧道接口IP地址><掩码>
 tunnel-protocol gre #使用GRE封装
 source <源端IP地址>
 destination <目标端IP地址>
 gre key <隧道标识符>
 #在R4上配置静态路由,去往1.1.1.0/24的数据包走GRE隧道
 ip route-static 1.1.1.0 24 tunnet 0/0/1


解决方案3: 在R2、R3、R4之间建立LSP隧道,主要配置如下:

#在R2、R3、R4的系统视图下配置
 mpls lsr-id #配置LSR ID
 mpls #使能全局MPLS
 mpls ldp #使能全局MPLS LDP
 #在R2、R3、R4互联接口下配置
 interface<接口编号>
 mpls #使能接口MPLS
 mpls ldp #使能接口MPLS LDP
 #在R2的AS出接口下配置
 interface <接口编号>
 mpls #使能接口MPLS
 #在R2、R3、R4上检查ldp会话和lsp
 display mpls ldp session
 displaympls lsp
 #在R4上配置非标签公网路由迭代到LSP隧道
 route recursive-lookup tunnel
 dispaly fib 1.1.1.0 #查看去往目的网段的Tunnel ID是否不为0

题目2:假设 R1 和 R2 的 BGP 邻居状态机一直处于 connect 状态,请列举 2 个可能的原因?

BGP环路检测功能 bgp产生环路的原因_BGP环路检测功能_02


BGP邻居状态机初始状态为Idel,经过start事件(BGP配置完或reset bgp all)后,设备向对等体发起TCP连接建立并且开始侦听发起连接的端口,转至connect状态。

在connect状态,BGP启动重传计时器,如果TCP连接成功则向对等体发送open报文并进入opsent状态,如果TCP连接建立失败则进入active状态,如果重传计时器超时仍停在connect状态。

在active状态,BGP会不断试图建立TCP连接,如果TCP连接建立成功则向对等体发送open报文并进入opensent状态,如果TCP连接建立失败仍停在active状态,如果重传计时器超时则转至connect状态。

TCP连接建立需要三步:① 发送SYN置位的数据包向对等体请求建立TCP连接; ② 对等体回复SYN+ACK置位的数据包进行确认 ; ③ 再给对等体回复ACK置位的数据包完成建立;

如果R1、R2一直处于connnect状态,说明不是TCP建立失败(会处于active状态),而是没有收到对等体的回复确认直至重传计时器超时,可能的原因有(这里假设R1、R2的loopback0地址分别为1.1.1.1/32和2.2.2.2/32,互联接口地址分别为10.1.12.1/24 和 10.1.12.2/24):

1)R1和R2使用互联地址建立EBGP,某一端peer命令中的対端地址配置错误,错误配置示例:

R1:
 bgp 100
 peer 10.1.12.3 as-number 200
 R2:
 bgp200
 peer 10.1.12.4 as-number 100

2)R1和R2使用环回口建立EBGP,但去往対端地址的路由配置错误,错误配置示例:

R1:
 bgp 100
 peer 2.2.2.2 as-number 200
 peer 2.2.2.2 ebgp-max-hop 5
 peer 2.2.2.2 connect-interface loopback0
 ip route-static 2.2.2.2 loopback0
 R2:
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 ebgp-max-hop 5
 peer 1.1.1.1 connect-interface loopback0
 ip route-static 1.1.1.1 loopback0

3)R1/R2的接口配置了禁止TCP的179端口:

acl 3000
 rule 5 deny source-port eq bgp
 rule 10 deny destination-port eq bgp
 interface <接口编号>
 traffic-filter inbound acl 3000

4)R1和R2使用直连或环回口建立EBGP,但认证配置不一致,错误配置示例:

R1:
 bgp 100
 peer 10.1.12.2 as-number 200
 peer 10.1.12.2 password cipher 123
 R2:
 bgp 200
 peer 10.1.12.1 as-number 100