环境拓扑
一、预配:
R2:
inteface s1/0
ip address 12.1.1.2 255.255.255.0
no shut
interface lo0
ip address 2.2.2.2 255.255.255.0
no shut
R1:
inteface s1/0
ip address 12.1.1.1 255.255.255.0
no shut
interface f0/0
ip address 134.1.1.1 255.255.255.0
no shut
interface lo0
ip address 1.1.1.1 255.255.255.0
no shut
R3:
inteface f0/0
ip address 134.1.1.3 255.255.255.0
no shut
interface lo0
ip address 3.3.3.3 255.255.255.0
no shut
R4:
inteface f0/0
ip address 134.1.1.4 255.255.255.0
no shut
interface lo0
ip address 4.4.4.4 255.255.255.0
no shut
二、测试彼此之间的连通性
R1:ping 12.1.1.2
ping 134.1.1.3
ping 134.1.1.4
三、建立BGP的邻居
R2:
router bgp 2
bgp router-id 2.2.2.2
neighbor 12.1.1.1 remote-as 1
R1:
router bgp 1
bgp router-id 1.1.1.1
neighbor 12.1.1.2 remote-as 2
neighbor 3.3.3.3 remote-as 1(该条命令不能生效,因为3.3.3.3这个IP地址不可达)
neighbor 3.3.3.3 update-source lo0指定更新源IP地址是lo0的IP地址
show ip route 无3.3.3.0/24的路由信息,所以我们需要在R1和R3上启用一个IGP,获取彼此
环回口的路由
router rip
version 2
no auto-summary
network 1.0.0.0
network 134.1.0.0
R3:
router rip
version 2
no auto-summary
network 3.0.0.0
network 134.1.0.0
router bgp 1
bgp router-id 3.3.3.3
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 update-source lo0
neighbor 134.1.1.4 remote-as 4
R4:
router bgp 4
bgp router-id 4.4.4.4
neighbor 134.1.1.3 remote-as 1
四、在R2上通告环回口的路由
R2:
router bgp 2
先看路由表是否有该条路由
do show ip route
network 2.2.2.0 mask 255.255.255.0
show ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 0.0.0.0 0 32768 i
Next Hop 是0.0.0.0说明是自己本身产生的一条路由更新
R1:show ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 12.1.1.2 0 0 2 i
*是可用的路由条目 >是最优的路由条目
R3:show ip bgp
Network Next Hop Metric LocPrf Weight Path
* i2.2.2.0/24 12.1.1.2 0 100 0 2 i
我们看到该路由条目到这个设备上后,不是最优的路由条目了,为什么呢?Next Hop是12.1.1.2
而这个12.1.1.2,对这个设备来说是不可达的路由,不是同步问题,已经关闭同步了
就只剩下这个下一跳问题了。怎么解决呢?用next-hop-self,该命令在R1上启用
代表的意思就是发送更新的时候,更改Next Hop是自己就可以了
R1:
router bgp 1
neighbor 3.3.3.3 next-hop-self
再在R3上show ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i2.2.2.0/24 1.1.1.1 0 100 0 2 i
呵呵,最优了吧
哦,对啦,在R1上的neighbor 3.3.3.3 next-hop-self等会再打上去
我想验证不是最优路由的2.2.2.0/24能否传递到R4上?
R1:
router bgp 1
no neighbor 3.3.3.3 next-hop-self
R4:
show ip bgp 为空,无任何路由更新传送过来
说明不是最优路由的更新时不会传送过来的
让它变得正常吧,neighbor 3.3.3.3 next-hop-self
show ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 134.1.1.1 0 1 2 i
我们会有点疑问,为什么Next Hop是134.1.1.1而不是134.1.1.3呢?
这就是我们要讨论的ICMP 重定向 功能
在R3上show ip interface f0/0
ICMP redirects are always sent
讲述下工作原理吧:
当R3接受R1发过来的关于2.2.2.0/24的路由更新的接口是F0/0
当R3发送该2.2.2.0/24的更新给R4的时候,也是通过F0/0接口发送的
这个时候,设备R3就会利用ICMP 重定向功能,将该更新的Next Hop的地址从
自己的F0/0 IP地址重定向为R1上的F0/0接口IP地址
更官方的说法:
第一,首先我们要搞清楚这个下一跳是谁改变的,是R3还是R4呢?
我们在R3上开启debug ip bgp update查看更新报文的具体内容
因为BGP是触发更新的,所以需要clear ip bgp * 这是硬清除 会断TCP连接
为了速度快呢,我们需要软清除,也就是clear ip bpg * soft
*Mar 1 02:55:59.895: BGP(0): 134.1.1.4 NEXT_HOP part 3 net 2.2.2.0/24, next 134.1.1.1
*Mar 1 02:55:59.899: BGP(0): 134.1.1.4 send UPDATE (format) 2.2.2.0/24, next 134.1.1.1, metric 0, path 2...duplicate ignored
它是怎么知道改为134.1.1.1的呢?是因为R1上的next-hop-self吗?如果是的话,应该是1.1.1.1的啊?而且next-hop-self是应用在IBGP中的,不在EBGP中使用
官方解释如下:
当R3接受到2.2.2.0/24的更新的时候,通过递归查询
show ip route
1.0.0.0/24 is subnetted, 1 subnets
R 1.1.1.0 [120/1] via 134.1.1.1, 00:00:10, FastEthernet0/0
2.0.0.0/24 is subnetted, 1 subnets
B 2.2.2.0 [200/0] via 1.1.1.1, 00:31:45
3.0.0.0/24 is subnetted, 1 subnets
C 3.3.3.0 is directly connected, Loopback0
134.1.0.0/24 is subnetted, 1 subnets
C 134.1.1.0 is directly connected, FastEthernet0/0
如果要到2.2.2.0/24需要通过134.1.1.1
而当R3要将该更新发送给R4的时候,发现目的IP是134.1.1.4和接受到更新的134.1.1.1是同一MA网段
由于ICMP重定向功能将我接受更新的下一跳作为发给R4更新的下一跳
而1.1.1.1怎么到达呢?通过show ip route,我们发现这个下一跳地址就是134.1.1.1
BGP的状态机:
1、IDLE:
路由器正查找邻居的路由可达性
2、Connect:
完成TCP的三次握手过程
3、Open sent:
用来建立邻居
4、Open confirm:
参数协商好后的状态
5、Established
邻居建立
IDLE出现问题的原因:
1、邻居路由不可达
2、对端AS号输入错误
active:
1、发送的Open报文无回应
2、AS号配错
BGP的认证:
neighbor IP_address password string 使用MD5的认证方式
show ip bgp rib-failure
r 当路由即从IGP学到,也从BGP学到,且IGP路由AD比BGP小,BGP路由就是打r
一般发生在IBGP中
r的路由条目不能放进路由表,可以传递给BGP邻居
show ip bgp 12.1.1.1 adertised-routes 查看发送的路由更新
show ip bgp 12.1.1.1 received-routes 查看接受的路由更新,该命令起作用的前提是
开启neighbor 12.1.1.1 soft-reconfiguration inbound
no auto-summary
在IGP中起在主类边界汇总主类路由
在BGP中是在把别的协议重分发进BGP中的时候起作用
在R1
router bpg 1
auto-summary
redistributed rip
在R2
show ip route
就可以看到效果
auto-summary:
不携带原有的下一跳和metric值,并且汇总
no auto-summary:
携带原有的下一跳和metric值
必打命令:
bgp router-id
no auto-summary
no synchronzaiton
聚合:
有两种方法:
1、ip route 聚合网络地址 null0
在进程中进行network
2、aggregate-address
先将明细路由通告出来
在R2
router bgp 2
network 192.168.8.0 mask 255.255.255.0
network 192.168.9.0 mask 255.255.255.0
network 192.168.10.0
network 192.168.11.0
aggregate-address 192.168.8.0 255.255.252.0
这样的话,明细和汇总都会发出来的
需要加 summary-only参数,这样明细路由就会被抑制
R2(config-router)#do show ip b
BGP table version is 11, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 0.0.0.0 0 32768 i
s> 192.168.8.0 0.0.0.0 0 32768 i
*> 192.168.8.0/22 0.0.0.0 32768 i
s> 192.168.9.0 0.0.0.0 0 32768 i
s> 192.168.10.0 0.0.0.0 0 32768 i
s> 192.168.11.0 0.0.0.0 0 32768 i
打s的是被抑制的路由,不会向其邻居传递,也不会放进路由表
可以选择抑制哪些明细,将192.168.8.0和192.168.9.0抑制掉
ip prefix-list 1 permit 192.168.8.0/23 ge 24 le 24
route-map sup permit 10
match ip address prefix 1
router bgp 2
aggregate-address 192.168.8.0 255.255.252.0 suppress-map sup
在R1上聚合192.168.8.0/22
R1(config-router)#do show ip bg
BGP table version is 43, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 12.1.1.2 0 0 2 i
s> 192.168.8.0 12.1.1.2 0 0 2 i
*> 192.168.8.0/22 0.0.0.0 32768 i
s> 192.168.9.0 12.1.1.2 0 0 2 i
s> 192.168.10.0 12.1.1.2 0 0 2 i
s> 192.168.11.0 12.1.1.2 0 0 2 i
红色的会回传会R2,因为没有打R2的AS号
所以聚合命令做如下更改:
router bgp 1
aggregate-address 192.168.8.0 255.255.252.0 summary-only as-set
这样就不会回传给R2了。这个是基于EBGP的水平分割原则
BGP的Attributes
1、公认的 、可选的
2、强制的 、*的
3、可传递的、不可传递的
4、添加的
1、AS path *公认强制的
2、Next-hop *
3、Origin * 起源属性
i、通过network通告的
E、将EGP重分发进BGP
?、将IGP或者静态路由重发布进BGP
怎样见到打E的起源属性?
access-list 1 permit 2.2.2.0 0.0.0.255
route-map test permit 10
match ip address 1
set origin egp 2
route-map test permit 20
让其他的路由进来
neighbor 1.1.1.1 route-map test in
BGP选路原则:
前提:为了确保多条路径都是优的,所以必须确保每条路径关闭同步和next-hop-self
划红线的以上是越大越好,下面的是越小越好