目标:
1、首先为所有路由器配置接口ip和环回
r1:
[r1]int lo0
[r1-LoopBack0]ip add 1.1.1.1 24
[r1-LoopBack0]int gi 0/0/0
[r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24
r2:
[r2]int lo0
[r2-LoopBack0]ip add 2.2.2.2 24
[r2-LoopBack0]int gi 0/0/0
[r2-GigabitEthernet0/0/0]ip add 12.1.1.2 24
[r2-GigabitEthernet0/0/0]int gi 0/0/1
[r2-GigabitEthernet0/0/1]ip add 23.1.1.1 24
r3:
[r3]int lo0
[r3-LoopBack0]ip add 3.3.3.3 24
[r3-LoopBack0]int gi 0/0/0
[r3-GigabitEthernet0/0/0]ip add 23.1.1.2 24
[r3-GigabitEthernet0/0/0]int gi 0/0/1
[r3-GigabitEthernet0/0/1]ip add 34.1.1.1 24
r4:
[r4]int lo0
[r4-LoopBack0]ip add 4.4.4.4 24
[r4-LoopBack0]int gi 0/0/0
[r4-GigabitEthernet0/0/0]ip add 34.1.1.2 24
[r4-GigabitEthernet0/0/0]int gi0/0/1
[r4-GigabitEthernet0/0/1]ip add 45.1.1.1 24
[r4]int gi 0/0/2
[r4-GigabitEthernet0/0/2]ip add 54.1.1.1 24
r5:
[r5]int lo0
[r5-LoopBack0]ip add 5.5.5.5 24
[r5-LoopBack0]int gi0/0/0
[r5-GigabitEthernet0/0/0]ip add 45.1.1.2 24
[r5]int gi 0/0/2
[r5-GigabitEthernet0/0/2]ip add 54.1.1.2 24
[r5-LoopBack1]ip add 6.6.6.6 24
2、下面在r2、r3、r4之间使用OSPF创造一个IGP环境
r2:
[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
r3:
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 34.1.1.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
r4:
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 34.1.1.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
这时r2和r1,r3之间已经使用OSPF共享路由了
3、现在在AS1 与AS2之间使用BGP进行连接,AS2与AS3之间使用BGp进行连接建立两个EBGP,并且在AS2中在两个边界路由器之间使用BGP建立一个IBGP
r1-r2
r1:
[r1]bgp 1 AS号
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 12.1.1.2 as-number 2 声明邻居的ip 和AS号
r2:
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 12.1.1.1 as-number 1
因为BGP使用TCP进行传输的所以在r1上查看TCP的信息
r2-r4
这里注意:在建立IBGP时建议使用建立路由器的环回进行bgp的建立
r2:
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 4.4.4.4 as-number 2 声明邻居的ip 和AS号
[r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0 这里是在声明在给4.4.4.4 发包时将源ip是本地的环回 0
r4:
[r4]bgp 2
[r4-bgp]router-id 4.4.4.4
[r4-bgp]peer 2.2.2.2 as-number 2
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0 这里是在声明在给2.2.2.2 发包时将源ip是本地的环回 0
这时r2与r4的IBGP就建立成功了
r4-r5
这时有一个问题在r4、r5之间使用环回建立bgp时互相不知道对方的环回,这里的解决方法使用静态路由让他们连接:
r4:
[r4]ip route-static 5.5.5.5 24 45.1.1.2
[r4]ip route-static 5.5.5.5 24 54.1.1.2
r5:
[r5]ip route-static 4.4.4.0 24 45.1.1.1
[r5]ip route-static 4.4.4.0 24 54.1.1.1
这样r4的环回就和r5的环回连接了
下面建立bgp:
[r4]bgp 2
[r4-bgp]router-id 4.4.4.4
[r4-bgp]peer 5.5.5.5 as-number 3
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[r5]bgp 3
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 4.4.4.4 as-number 2
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
这时又有问题了因为r4-r5的ttl值大于1无法建立邻居,这里修改r4-r5之间的ttl值
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2
这时三条BGP都已经建立成功了
4、进行路由宣告实现全网的环回除了r5的环回都可以互相可达
r1:
[r1]bgp 1
[r1-bgp]network 1.1.1.0 24
查看BGP表
这里r4也会从r2哪里学习到r1的环回但是并不 优 因为BGP的AS-by-AS机制规定在一个AS中属性不会变化所以r4不认识去1.1.1.1的下一跳12.1.1.1所以无法到达r1
解决:这里在r2上修改给r4分享去r1的路由信息时把去r1路由的下一跳信息改为本地(即r2)
[r2-bgp]peer 4.4.4.4 next-hop-local 给邻居4.4.4.4路由时将下一跳修改为本地
r4会给r5去r1的路由信息它的路由会直接优因为AS-by-AS只在IBGP之间有效r4-r5时EBGP
下面将r5的环回6.6.6.6 24 传入左边的各个路由器:
这时r2上有了和刚在r4一样的情况
解决:
[r4-bgp]peer 2.2.2.2 next-hop-local
路由黑洞产生的原因:BGP条目在BGP中单播进行正常传播,可以跳过没有运行BGp协议的路由器;显示可达,但是数据层面无法跳过没有运行BGP洗衣的路由器无法传播
这个时候需要解决一个问题因为BGP的路由黑洞因为r3上没有进行BGP配置,控制层面:当r2把路由共享给r3和r4 但是r3无法看BGP的信息只有转发给r4,r4再给r5, 所以当r2的环回需要ping 数据层面:r5的环回时到r3时 无法传输到r4所以无法到达
解决方案:在r3上运行BGP
r3:
[r3]bgp 2
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 2
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
r2:
[r2]bgp 2
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[r2-bgp]peer 3.3.3.3 next-hop-local
这时r2应该将自己的6.6.6.6分享给r3但是并没有分享,这是因为BGP上的防环机制--IBGP水平分割:从IBGP学习到的路由不能传到下一个IBGP中去,所以r5传给r4属于EBGP->IBGP r4传给r2属于IBGP->IBGP可以传递但是r2->r3也是IBGP->IBGP禁止传递;
解决方案:在r3-r4之间建立BGP让r4直接将r5的环回给r3
r3:
[r3]bgp 2
[r3-bgp]peer 4.4.4.4 as-number 2
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
r4:
[r4]bgp 2
[r4-bgp]peer 3.3.3.3 as-number 2
[r4-bgp]peer 3.3.3.3 connect-interface lo0
[r4-bgp]peer 3.3.3.3 next-hop-local
现在r3可以正常学习到了r5的环回并且选路优
5、现在将r2、r3、r4的环回通过BGP宣告给r1和r5
[r2-bgp]network 2.2.2.0 24
[r3-bgp]network 3.3.3.0 24
[r4-bgp]network 4.4.4.0 24
查看r1、r5的BGP表
测试: