1、CCNP试验手册BGP单人版路由协议,AS(自治系统)角度来区分成:1.IGP 内部网关路由协议RIP(路由信息协议) - udp 520端口EIGRP(增强型内部网关路由协议)OSPF(开放式最短路径优先路由协议)ISIS(中间系统到中间系统路由协议)2.EGP 外部网关路由协议BGP(边界网关路由协议)-tcp/ip 卷2(人邮)特点:1.稳定性强 1)使用tcp协议传输,端口号179。2)基于TLV(类型,长度,字符串)开发。3)定期有keepalive来保持连接状态。4)Bgp都是通过单播手动方式建立邻居关系。2.选路比较精准13条选路原则3.路由的控制能力很强丰富的命令和工具来实现路
2、由的控制4.维护的路由条目数量最多,internet(30万条)Bgp的应用领域1.运营商之间的核心设备的路由传递2.企业和企业之间也可能采用bgp,为了实现稳定和控制3.多宿主的企业要实现专线的负载均衡BGP的前身叫EGP,EGP被BGP所取代的原因在于不能防环。BGP选路也是可以看跳数(一个AS),它也是距离矢量,又叫路径向量。在计算跳数是,路由里传递时会携带所经过的as的as号,并且详细标注是哪些as,此属性我们叫AS-path属性,此属性既可以计算跳数,又可以用来防环。当路由器收到bgp路由里边as-path属性中,包含了自身的as号,就可以判断为环路路由,置为无效路由。AS1-R3(
3、config)#router bgp 1 建立bgp进程,后边指定AS号,一个路由器只能配置一个bgp进程。AS1-R1(config-router)#neighbor remote-as 2 手动指定对方地址和as号AS2-r3(config-router)#do show ip bgp neighbor看establishedAS1-R1(config-router)#do show ip bgp summaryBGP router identifier , local AS number 1BGP table version is 1, main routing table versio
4、n 1Neighbor V版本 AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 4 2 4 4 1 0 0 00:00:36 0 (表示从邻居那学到了几条路由,0表示没学到任何路由,但邻居正常)不同AS的路由器的邻居关系叫EBGP相同AS的路由器的邻居关系叫IBGP1难点:路由黑洞:由于中间路由器没有运行BGP,所以导致数据无法传递。1).把bgp路由重分布到IGP路由,但用的不多,因为只能重分布少量路由。2).全部运行BGP3).内部运行MPLS(多协议标签交换)邻居关系最好基于loopback接口建立,在具备多条物理线路可以实
5、现冗余备份。AS1-R1(config-router)#neighbor remote-as 1 建立IBGP邻居关系AS1-R1(config-router)#neighbor update-source loopback 0 指定R1使用自己的lo 0和对方建立邻居关系,指定和某个邻居的更新源接口AS1-R2(config-router)#bgp router-id 配置bgp的router-idAS1-R2(config)#int lo 1AS1-R2(config-if)#ip add AS1-R2(config-if)#router bgp 1AS1-R2(config-router
6、)#network mask 通告路由,它会准确的匹配路由表里的相应路由,然后通过bgp邻居宣告;可以宣告非自身的路由。Bgp会有三张表邻居表:存储所有的邻居Show ip bgp neighborShow ip bgp summaryBgp拓扑表:存储所有的路径Show ip bgp路由表:最佳路径放置到路由表,又叫转发表Show ip route bgpAS1-R2(config-router)#do show ip bgpBGP table version is 2, local router ID is Status codes: s suppressed, d damped, h h
7、istory, * valid, best, i - internal, r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path* 0 32768 i* 0 100 0 2 i* i 0 100 0 2 i2难点:bgp路由的下一条不可达1.通过IGP通告边界网段2.修改路由的下一跳为自身,改成可达的下一跳。AS1-R1(config-router)#router bgp 1 AS1-R1(config-router)#nei
8、next-hop-self 修改传递路由的下一跳自身AS1-R3(config)#router bgp 1AS1-R3(config-router)#nei next-hop-self 修改传递路由的下一跳自身3难点:bgp的水平分割,bgp的路由器不会把从ibgp邻居学到的路由再传递给另外一个ibgp邻居。1.full-mesh(全互联)的ibgp邻居关系2.路由反射器,可以把hub路由器作为一个反射器,把从ibgp邻居学到的最好的路由反射给另外一个ibgp邻居。AS1-R2(config-router)#nei route-reflector-clientAS1-R2(config-rou
9、ter)#nei route-reflector-client3.联盟Show ip bgp Network Next Hop Metric LocPrf Weight Path* 0 32768 i* 0 100 0 2 i(起源属性)* i 0 100 0 2 iAs path属性后边的表示起源属性,表示此路由怎么出现的,可以是bgp 通告i,也可以是egp通告e,也可以其他路由协议重分布到bgp ?。ie?EBGP 管理距离20IBGP 管理距离 200MED多出口离开属性:可以影响自身AS和邻居AS(对比前提需要多条路径通过的as是一致的,否则不会对比此属性)。Local PRF本地优
10、先权:可以影响本AS。Weight权重:只能影响自身。Permit 850任何包含850的字符串(850,6850,)的as-pathPermit _850$起源于850的路由as-pathPermit 850$只能包含唯一的850字符串的as-pathPermit $一个空的as-path,表示只能通告本as始发的bgp路由Permit .*表示任何字符串, permit anyRouter(config)#ip as-path access-list 10 permit _65020$Router(config)#route-map from65020 permit 1Router(con
11、fig-route-map)#match as-path 10Router(config-route-map)#set weight 10Router(config-route-map)#exitRouter(config)#route-map from65020 permit 2 Router(config-route-map)#router bgp 1Router(config-router)#nei route-map from65020 in第一步:初始配置Router(config)#hostname AS1-r1(根据路由器适当调整)AS1-r1(config)#no ip dom
12、ain-lookup AS1-r1(config)#line con 0AS1-r1(config-line)#no exec-timeoutAS1-r1(config-line)#logg sy第二步:地址配置AS1-r1(config)#int lo 0AS1-r1(config-if)#ip add AS1-r1(config-if)#ip ospf network point-to-pointAS1-r1(config-if)#int s1/1AS1-r1(config-if)#ip add AS1-r1(config-if)#no shuAS1-r1(config-if)#int f
13、0/0AS1-r1(config-if)#ip add AS1-r1(config-if)#no shuAS1-r2(config)#int lo 0AS1-r2(config-if)#ip add AS1-r2(config-if)#ip ospf network point-to-pointAS1-r2(config-if)#int s1/0AS1-r2(config-if)#ip add AS1-r2(config-if)#no shuAS1-r2(config-if)#int s1/1AS1-r2(config-if)#ip add AS1-r2(config-if)#no shuAS
14、1-r3(config)#int lo 0AS1-r3(config-if)#ip add AS1-r3(config-if)#ip ospf network point-to-pointAS1-r3(config-if)#int s1/0AS1-r3(config-if)#ip add AS1-r3(config-if)#no shuAS1-r3(config-if)#int f0/0AS1-r3(config-if)#ip add AS1-r3(config-if)#no shuAS2-r1(config)#int lo 0AS2-r1(config-if)#ip add AS2-r1(c
15、onfig-if)#ip ospf network point-to-pointAS2-r1(config-if)#int s1/1AS2-r1(config-if)#ip add AS2-r1(config-if)#no shuAS2-r1(config-if)#int f0/0AS2-r1(config-if)#ip add AS2-r1(config-if)#no shuAS2-r2(config)#int lo 0AS2-r2(config-if)#ip add AS2-r2(config-if)#ip ospf network point-to-pointAS2-r2(config-
16、if)#int s1/0AS2-r2(config-if)#ip add AS2-r2(config-if)#no shuAS2-r2(config-if)#int s1/1AS2-r2(config-if)#ip add AS2-r2(config-if)#no shuAS2-r3(config)#int lo 0AS2-r3(config-if)#ip add AS2-r3(config-if)#ip ospf network point-to-pointAS2-r3(config-if)#int s1/0AS2-r3(config-if)#ip add AS2-r3(config-if)
17、#no shuAS2-r3(config-if)#int f0/0AS2-r3(config-if)#ip add AS2-r3(config-if)#no shu第三步:配置IGP -OSPFAS1-r1(config)#router ospf 1AS1-r1(config-router)#net area 0AS1-r1(config-router)#net area 0AS1-r2(config-if)#router ospf 1AS1-r2(config-router)#net area 0AS1-r2(config-router)#net area 0AS1-r3(config-if
18、)#router ospf 1AS1-r3(config-router)#net area 0AS1-r3(config-router)#net area 0AS2-r1(config-if)#router ospf 1AS2-r1(config-router)#net area 0AS2-r1(config-router)#net area 0AS2-r2(config-if)#router ospf 1AS2-r2(config-router)#net area 0AS2-r2(config-router)#net area 0AS2-r3(config-if)#router ospf 1
19、AS2-r3(config-router)#net area 0AS2-r3(config-router)#net area 0第三步:配置BGP3.1建立BGP邻居建立EBGP邻居AS1-r1(config)#router bgp 1AS1-r1(config-router)#neighbor remote-as 2AS2-r1(config-router)#router bgp 2AS2-r1(config-router)#nei remote-as 1AS2-r3(config-router)#router bgp 2AS2-r3(config-router)#neighbor remo
20、te-as 1AS1-r3(config-router)#router bgp 1AS1-r3(config-router)#neighbor remote-as 2察看邻居关系*Apr 22 20:38:54.155: %BGP-5-ADJCHANGE: neighbor UpAS2-r1(config-router)#do sh ip bgp summaryBGP router identifier , local AS number 2BGP table version is 1, main routing table version 1Neighbor V AS MsgRcvd Msg
21、Sent TblVer InQ OutQ Up/Down State/PfxRcd 4 1 4 4 1 0 0 00:00:58 0AS2-r1(config-router)#do sh ip bgp neiBGP neighbor is , remote AS 1, external link BGP version 4, remote router ID BGP state = Established, up for 00:02:15建立IBGP邻居AS1-r3(config-router)#router bgp 1AS1-r3(config-router)#neighbor remote
22、-as 2AS2-r3(config-router)#router bgp 2AS2-r3(config-router)#neighbor remote-as 1AS1-r2(config-router)#router bgp 1AS1-r1(config-router)#neighbor remote-as 1AS1-r1(config-router)#neighbor update-source loopback 0AS1-r2(config-router)#router bgp 1AS1-r2(config-router)#neighbor remote-as 1 AS1-r2(conf
23、ig-router)#neighbor update-source loopback 0AS1-r2(config-router)#neighbor remote-as 1AS1-r2(config-router)#neighbor update-source loopback 0AS1-r3(config)#router bgp 1AS1-r3(config-router)#neighbor remote-as 1AS1-r3(config-router)#neighbor update-source loopback 0AS2-r1(config)#router bgp 2AS2-r1(c
24、onfig-router)#neighbor remote-as 2AS2-r1(config-router)#neighbor update-source loopback 0AS2-r2(config)#router bgp 2AS2-r2(config-router)#neighbor remote-as 2AS2-r2(config-router)#neighbor update-source loopback 0AS2-r2(config-router)#neighbor remote-as 2 AS2-r2(config-router)#neighbor update-source
25、 loopback 0AS2-r3(config-router)#router bgp 2AS2-r3(config-router)#nei remote-as 2 AS2-r3(config-router)#nei update-source loopback 0第四步:通告路由AS1-r2(config)#int lo 1AS1-r2(config-if)#ip add AS1-r2(config-if)#router bgp 1AS1-r2(config-router)#network mask AS2-r2(config)#int lo 1AS2-r2(config-if)#ip ad
26、d AS2-r2(config)#router bgp 2AS2-r2(config-router)#net mask 在r2上发现路由下一跳不可达问题AS1-r2#sh ip bgpBGP table version is 2, local router ID is Status codes: s suppressed, d damped, h history, * valid, best, i - internal, r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop M
27、etric LocPrf Weight Path* 0 32768 i* 0 100 0 2 i* i 0 100 0 2 i解决方案一:重分布边界网络AS1-r3(config)#router ospf 1AS1-r3(config-router)#redistribute connected subnetsAS2-r3(config)#router ospf 1AS2-r3(config-router)#redistribute connected subnets AS1-r2#sh ip bgpBGP table version is 3, local router ID is Stat
28、us codes: s suppressed, d damped, h history, * valid, best, i - internal, r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path* 0 32768 i* 0 100 0 2 i* i 0 100 0 2 i解决方案2:修改下一跳为自身AS1-r1(config)#router bgp 1AS1-r1(config-router)#neighbor next
29、-hop-selfAS2-r1(config)#router bgp 2AS2-r1(config-router)#neighbor next-hop-selfAS1-r2# sh ip bgpBGP table version is 3, local router ID is Status codes: s suppressed, d damped, h history, * valid, best, i - internal, r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incomplete Network Next
30、Hop Metric LocPrf Weight Path* 0 32768 i* 0 100 0 2 i* i 0 100 0 2 i但是在R1和R3上还是只能看到,由于BGP路由在AS内部传递的时候不会修改AS-path属性,所以无法防止环路,那么BGP路由器水平分割就是不会把从IBGP对等体学习到的路由传递给另外一个IBGP对等体.AS1-r1#sh ip bgpBGP table version is 7, local router ID is Status codes: s suppressed, d damped, h history, * valid, best, i - internal, r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path* 0 100 0 i* 0 2 iAS1-r1#sh ip bgpBGP table version is 7, local router ID is Status codes: s suppressed, d damped, h history, * valid, best, i - internal, r RIB-failur