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:
[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都已经建立成功了
这里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路由时将下一跳修改为本地
路由黑洞产生的原因:BGP条目在BGP中单播进行正常传播,可以跳过没有运行BGp协议的路由器;显示可达,但是数据层面无法跳过没有运行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
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