BGP全部的数据均基于TCP会话传递,由TCP来进行邻居的发现及全部数据包的ACK;前端
注:全部的BGP信息均基于TCP会话传输,可靠保障;web
当BGP协议单播传递路由时,穿越了中未运行BGP的设备时,出现控制层面可达,但数据层面在未运行BGP的设备上不可达,最终致使路由黑洞;
正则表达式
EBGP水平分割:针对EBGP环路
AS-PASH:BGP的一种属性,BGP的路由条目在传递过程当中将记录全部通过的AS号,若接收到的路由条目中存在本地的AS号,将拒绝接收该条目;redis
IBGP水平分割:针对IBGP环路
一台设备若从一个IBGP邻居处学习到了路由条目,不得传递给下一个IBGP邻居;
该机制能够限制IBGP环路的出现,但同时也致使全网全部BGP设备间均须要创建邻居关系,配置量极大
路由反射器、联邦能够有条件打破IBGP水平分割网络
r1(config)#router bgp 1 启动时须要定义真实的AS号;无多进程概念; r1(config-router)#bgp router-id 1.1.1.1 配置RID;
在BGP协议中,邻居关系的创建和路由条目的宣告是分开配置的;负载均衡
创建邻居关系tcp
r1(config-router)#neighbor 12.1.1.2 remote-as 2 对端的IP地址及所在AS号
r2(config)#router bgp 2 r2(config-router)#neighbor 3.3.3.3 remote-as 2 r2(config-router)#neighbor 3.3.3.3 update-source loopback 0
切记:使用环回创建邻居关系时,必须同时更新源地址;
r4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2 r4(config)#ip route 5.5.5.0 255.255.255.0 54.1.1.2
r4(config)#router bgp 2 r4(config-router)#neighbor 5.5.5.5 remote-as 3 r4(config-router)#neighbor 5.5.5.5 update-source loopback 0
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ? <1-255> maximum hop count <cr> 255建邻配置完成后,邻居间开始创建TCP的会话
r1#show tcp brief TCB Local Address Foreign Address (state) 64280044 12.1.1.1.179 12.1.1.2.13413 ESTAB当TCP会话创建,BGP协议使用open包和对端创建BGP的邻居关系,生成邻居表:
r1#show ip bgp neighbors 查看邻居表---该表过大不易查看 r1#show ip bgp summary 查看简表 BGP router identifier 1.1.1.1, local AS number 1 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 12.1.1.2 4 2 7 7 1 0 0 00:03:13 0
状态处的数字标示该邻居处学习到的路由条目数量;该处为数字也标示了已经和该设备创建邻居关系;ide
r1(config)#router bgp 1 r1(config-router)#network 1.1.1.0 mask 255.255.255.0
宣告时,条目的内容必须和路由表的记录彻底一致 ;
切记:BGP协议只能逐条宣告本地路由表中的内容(不关注条目的产生方式);
宣告时必须和表中的记录彻底一致;svg
当宣告配置完成后,路由器将发出和接收到update,学习路由条目,加载本地BGP表中;
该表用于记录全部本地发出及接收的条目;oop
r1#show ip bgp 查看BGP表; BGP table version is 2, 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 *> 1.1.1.0/24 0.0.0.0 0 32768 i 状态 目标 属性
优的条件:
r3(config)#router bgp 2 r3(config-router)#no synchronization
IOS 版本12.2(8)T以上默认关闭
r2(config)#router bgp 2 r2(config-router)#neighbor 3.3.3.3 next-hop-self
在将路由条目传递给3.3.3.3该邻居时,将下一跳修改成本地地址;
使用字母i标识经过IBGP邻居学习的路由;
总结:
*和>均存在时才能够加表;
仅>存在便可传递,除出现s时;
条目必须即优也可用才能加表;
仅优便可传递,前提为不能被S抑制;
在MA网段中,ICMP重定向将帮助BGP学习到最佳的下一跳;
R1#debug ip bgp updates 动态查看BGP更新包 R1#clear ip bgp * 硬重启 重启本地全部邻居间的TCP会话 R1#clear ip bgp * soft 软重启 仅和本地全部邻居间从新收发路由,不断开任何关系
R1#clear ip bgp 3.3.3.3 仅和3.3.3.3邻居进行硬重启 R1#clear ip bgp 3.3.3.3 soft 仅和3.3.3.3邻居进行软重启 R1#clear ip bgp 3.3.3.3 soft ? 软重启 in Soft reconfig inbound update 收路由 out Soft reconfig outbound update 发路由
R1#show ip bgp neighbors 123.1.1.2 advertised-routes 仅查看本地发送给邻居123.1.1.2的路由信息 R1#show ip bgp neighbors 123.1.1.2 received-routes % Inbound soft reconfiguration not enabled on 123.1.1.2 仅查看本地从123.1.1.2 的接收到的路由,默认没有专用的存储空间来装载 R1(config-router)#neighbor 123.1.1.2 soft-reconfiguration inbound 配置存储空间,建议查看完后删除该空间
BGP协议在宣告路由时,将携带本地路由表中到达目标的度量值及下一跳;
度量值:可让本地EBGP邻居,断定那台EBGP设备离目标最近;
当本地从一台IBGP邻居处学习到的路由,须要传递给本地的EBGP邻居时,度量值清除;
注:为保障路径的优秀,建议全部存在EBGP邻居的BGP路由器均须要本AS的路由;
下一跳:接收到的路由条目中,若下一跳地址为本地,那么条件不优;
该条件必须在打破水平分割、没有修改下一跳为本地时才能有意义;
意义在于迫使管理员让全部存在EBGP邻居的BGP路由器均宣告本地AS路由;
自动汇总的命令不针对普通的BGP路由;仅针对从IGP重发布到BGP的路由;
r2(config-router)#redistribute ospf 1 auto-summary 不携带原有的掩码、度量值、下一跳 no auto-summary 携带原有的掩码、度量值、下一跳
在BGP协议中的逐条宣告,能够理解为逐条将其余协议产生的路由重发布到BGP协议中;
在BGP协议中进行重发布,能够理解为批量的将其余协议产生的路由宣告到BGP协议中;
携带原有的度量和原有的下一跳地址其规则、目的同上面的宣告问题一致;
总结:不管在BGP协议中是宣告,仍是重发布都应该在全部存在EBGP邻居关系的BGP路由器均进行配置;
注:重发布进入BGP的路由和宣告进入BGP的路由其属性中,起源属性不一样;
本地路由表中任何形式产生的路由都可宣告
先在本地配置一条到达汇总地址的空接口防环路由,而后再在BGP协议中宣告这种汇总路由
r5(config)#ip route 5.5.4.0 255.255.252.0 null 0 r5(config)#router bgp 3 r5(config-router)#network 5.5.4.0 mask 255.255.252.0
为精确的选路,AS间经常在发送了聚合路由条目后,还须要酌情发送部分的明细路由,来保障选路;
在这种聚合配置下,只要须要再逐一的宣告有需求的明细路由便可;
先逐条宣告明细路由,而后再在更新源上进行聚合配置
r5(config)#router bgp 3 r5(config-router)#network 5.5.5.0 mask 255.255.255.0 r5(config-router)#network 5.5.6.0 mask 255.255.255.0 r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 默认全部的明细和聚合条目同时发送 r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only 仅发送汇总路由,全部的明细路由被S-抑制传输;
标准的聚合配置将自动产生空接口防环路由;
为精确的选路,AS间经常在发送了聚合路由条目后,还须要酌情发送部分的明细路由,来保障选路;
必须在进行标准聚合配置才能使用
```
r5(config)#ip prefix-list ss permit 5.5.5.0/24
r5(config)#route-map ss permit 10 r5(config-route-map)#match ip address prefix-list ss r5(config)#router bgp 3 r5(config-router)#aggregate-address 5.5.4.0 255.255.252.0 suppress-map ss r5(config-router)#end r5#clear ip bgp * soft ```
注:这种作法是route-map 中容许的流量反而被抑制;
``` r5(config)#ip prefix-list xx permit 5.5.5.0/24 r5(config)#route-map xx deny 10 r5(config-route-map)#match ip address prefix-list xx r5(config-route-map)#exit r5(config)#route-map xx permit 20 r5(config-route-map)#exit r5(config)#router bgp 3 r5(config-router)#neighbor 4.4.4.4 route-map xx out 控制层面方向 r5(config-router)#end r5#clear ip bgp * soft ```
r5(config)#access-list 1 deny 5.5.5.0 r5(config)#access-list 1 permit any r5(config)#router bgp 3 r5(config-router)#neighbor 4.4.4.4 distribute-list 1 out r5(config-router)#end r5#clear ip bgp * soft
``` r5(config)#ip prefix-list qq deny 5.5.5.0/24 r5(config)#ip prefix-list qq permit 0.0.0.0/0 le 32 r5(config)#router bgp 3 r5(config-router)#neighbor 4.4.4.4 prefix-list qq out r5(config-router)#end r5#clear ip bgp * soft ```
汇总地址不处于更新源AS时,默认聚合条件将回流到更新源AS,致使黑洞路由流量必须到汇总的AS来丢弃;
利用EBGP水平分割:路由条目在传递时将记录全部通过的AS编号,接收到的条目中若存在本地的AS号将拒绝接收;
解决方法:将明细路由上的AS-pash属性附着于汇总条目上
r4(config)#router bgp 2 r4(config-router)#aggregate-address 5.5.4.0 255.255.252.0 summary-only as-set
为避免IBGP环路,存在IBGP水平分割机制,在该机制下为实现全网的路由正常传递,必须全连的邻居关系(本AS内全部的BGP路由间均须要存在IBGP邻居关系),建邻数量成几何上升;
所谓有条件的打破,是指在打破水平分割机制时,必须保证无环;
存在客户端、非客户端、RR(反射器)三种角色;
构成一个簇(组);
客户端、非客户端在一个组内数量不限制客户端必须至少一台,全部的客户端、非客户端与RR间必须为IBGP邻居关系;
r3(config)#router bgp 2 r3(config-router)#neighbor 2.2.2.2 route-reflector-client 2.2.2.2成为本地的客户端,同时本地成为RR;
切记:反射器仅反射优的路径,由于只有优的路径存在传递性;
若在真机上,一台设备成为RR或者客户端,那么在这个设备配置修改下一跳为本地后无效;模拟器上均生效;
r2(config-router)#neighbor 3.3.3.3 next-hop-self
能够在真机上使用route-map来替代:
r2(config)#route-map nex permit 10 r2(config-route-map)#set ip next-hop peer-address r2(config-route-map)#exit r2(config)#router bgp 2 r2(config-router)#neighbor 3.3.3.3 route-map nex out r2(config-router)#end r2#clear ip bgp * soft
在一个真实的AS中,逻辑的划分出多个小AS;
小AS间为联邦内的EBGP邻居关系,这种关系能够向EBGP关系同样传递路由,当不能修改属性;
r2(config)#router bgp 64512 r2(config-router)#bgp confederation identifier 2
r3(config)#router bgp 64512 r3(config-router)#bgp confederation peers 64513
总结:实际工程中,以上两种技术将被结合使用;
各类参数,存在排序;修改属性能够直接干涉BGP的选路;
Weight | 传播范围 | 默认数值 | 大优或小优 |
---|---|---|---|
Cisco私有属性 | 不传播 | 本地32768,邻居0( 0-65535) | 大 |
r4(config)#router bgp 2 r4(config-router)#neighbor 3.3.3.3 weight 1 r4(config-router)#end r4#clear ip bgp * soft 本地全部从3.3.3.3学习的路由,权重值修改成1;
基于不一样的目标选择不一样的最佳路径;
r4(config)#ip prefix-list w permit 2.2.2.0/24 r4(config)#route-map w permit 10 r4(config-route-map)#match ip address prefix-list w r4(config-route-map)#set weight 1 r4(config-route-map)#exit r4(config)#route-map w permit 20 r4(config-route-map)#exit r4(config)#router bgp 2 r4(config-router)#neighbor 3.3.3.3 route-map w in r4(config-router)#end r4#clear ip bgp * soft 注:调用时只能在本地的控制层面入向,由于该属性不传播;
route-map优于filter-list优于neighbot weight
Local-preference | 传播范围 | 默认数值 | 大优或小优 |
---|---|---|---|
公有属性 | IBGP邻居关系间 | 100(0-255) | 大 |
最经常使用于干涉IBGP邻居关系选路;本地出口在多个路由器上的场景
r3(config-router)#bgp default local-preference 101 r3(config-router)#end r3#clear ip bgp * soft 本地发送给全部IBGP邻居的路由,优先级均修改成101;
基于部分的路由进行修改,能够在控制层面流量的入或出接口上修改;
必须为IBGP邻居关系;
r4(config)#ip prefix-list l permit 2.2.2.0/24 r4(config)#route-map l permit 10 r4(config-route-map)#match ip address prefix-list l r4(config-route-map)#set local-preference 101 r4(config-route-map)#exit r4(config)#route-map l permit 20 r4(config-route-map)#exit r4(config)#router bgp 2 r4(config-router)#neighbor 3.3.3.3 route-map l in r4(config-router)#end r4#clear ip bgp * soft
即便在EBGP邻居使用route-map 配置了在出方向也是没用的,由于发给EBGP对等体的update根本不会携带这个属性,因此这样配置没有意义
Network Next Hop Metric LocPrf Weight Path *> 2.2.2.0/24 0.0.0.0 0 100 0 1 i * i 1.1.1.1 0 100 0 1 i
条目在传递过程当中记录通过的AS编号;优选通过数量最少的路径;
AS的增长只能在EBGP邻居关系间进行;
管理员能够策略在EBGP邻居关系间增长AS的数量,不能减小;
虽然只能在EBGP邻居关系间修改,当依然能够干涉到IBGP关系下的选路;
由只能增长,故修改A路径,优选B路径;
r1(config)#ip prefix-list as permit 2.2.2.0/24 r1(config)#route-map as permit 10 r1(config-route-map)#match ip address prefix-list as r1(config-route-map)#set as-path prepend 3 4 5 r1(config-route-map)#exit r1(config)#route-map as permit 20 r1(config-route-map)#exit r1(config)#router bgp 2 r1(config-router)#neighbor 12.1.1.2 route-map as in r1(config-router)#end r1#clear ip bgp * soft
注:只能在EBGP邻居间的控制层面干涉选路;
入向调用—3 4 5 x,X为真实通过过的编号
出向调用—X 3 4 5 ; 最前端AS为最新通过的编号;
注:AS-pash属性还用于EBGP水平分割,若人为添加的AS号,在网络的后方真实存在,那么这些路由将没法进入这些AS;能够重复添加已经通过的AS号;或者添加私有的AS号;
r1(config)#route-map as permit 10 r1(config-route-map)#set as-path prepend 1 1 1
在as4上的水平分割会干扰选路
解决方法:
nei X.X.X.X allowas-in 容许和具备本身相同的AS的路由进入本AS (接收者) nei x.x.x.xas-override 把具备普和其余AS相同AS号的路由放入这个AS (发送者)
Origin codes: i - IGP, e - EGP, ? - incomplete
所谓起源属性,及条目是经过什么方式进入到BGP协议来的;
使用i标识network --管理员宣告条目
使用e标识经过早期的EGP协议学习后,重发布到BGP来的
使用?标识经过IGP学习,重发布到BGP协议
规则:i优于e优于?
r1(config)#ip prefix-list o permit 2.2.2.0/24 r1(config)#route-map o permit 10 r1(config-route-map)#match ip address prefix-list o r1(config-route-map)#set origin egp 2 修改成e,数字为对端邻居所在AS编号 r1(config-route-map)#exit r1(config)#route-map o permit 20 r1(config-route-map)#exit r1(config)#router bgp 2 r1(config-router)#neighbor 4.4.4.4 route-map o out r1(config-router)#end r1#clear ip bgp * soft
度量值
BGP协议不存在度量值,当管理员能够人为去赋值,来干涉选路;
可用于干涉EBGP/IBGP邻居下的选路,当最经常使用于干涉EBGP邻居间的选路;
它被典型的用在AS间的链路上,以区分到达相同的邻居AS的多个出口点
若是到同一个目的地的两条路由来自不一样的AS,此时BGP路由选路时不进行比较MED,MED只对单一的AS有意义
咱们能够强制让它们比较bgp always-compare-med
MED | 传播范围 | 默认数值 | 大优或小优 |
---|---|---|---|
公有属性 | 相邻AS之间 | 0 | 小 |
例:AS1干涉AS2对AS1的选路
r2(config)#ip prefix-list med permit 2.2.2.0/24 r2(config)#route-map med permit 10 r2(config-route-map)#match ip address prefix-list med r2(config-route-map)#set metric 1 r2(config-route-map)#exit r2(config)#route-map med permit 20 r2(config-route-map)#exit r2(config)#router bgp 1 r2(config-router)#neighbor 12.1.1.1 route-map med out r2(config-router)#end r2#clear ip bgp * soft
使用扩展ping来进行检测: r2#ping Protocol [ip]: Target IP address: 4.4.4.4 Repeat count [5]: Datagram size [100]: Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 2.2.2.2 Type of service [0]: Set DF bit in IP header? [no]: Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: r
GP协议除了基本属性外,还存在大量的扩展属性;
但默认各家厂商的BGP协议不识别、不传递该属性;
Internet 全部属于这个社团属性的路由都有一个缺省值,能够自由地公布属于这个团体的路由,换句话说这个社团的前缀通告没有任何限制 local-AS 接收到的条目中携带该属性,不得将该条目再传递给其余小AS no-advertise 接收到的条目中携带该属性,不得将该条目再传递给其余邻居 no-export 接收到的条目中携带该属性,不得将该条目再传递给其余大AS 若没有小AS,local-AS和no-export做用一致;
有网络管理员本身定义的社团属性,它的主要目的是为前缀附加管理标记,以便制定合适的策略。
例:关于条目传播范围的几种社团属性
r1(config)#route-map com permit 10 r1(config-route-map)#set community no-advertise r1(config-route-map)#exit r1(config)#router bgp 1 r1(config-router)#neighbor 12.1.1.2 route-map com out r1(config-router)#end r1#clear ip bgp * soft 注:由于默认的不传播社团属性,故添加社团数据后,必须开启传递性; r1(config)#router bgp 1 r1(config-router)#neighbor 12.1.1.2 send-community
用来警告下游路由器路由聚合后产生的路由路径丢失。
BGP支持向BGP邻居传递重叠路由,能够选择多种方式:
aggregate-address 10.0.0.0 255.0.0.0
aggregate-address 10.0.0.0 255.0.0.0 suppress-map
aggregate-address 10.0.0.0 255.0.0.0 sunnary-only as-set
aggregate-address 10.0.0.0 255.0.0.0 sunnary-only
用来通告汇总路由的汇聚路由器BGP_ID(Cisco)和聚合路由的路由器的AS号。
路由反射器使用该属性,不接收与本身相同的起源者ID的路由,防止环路。
路由反射器:反射非客户端间不能传递路由
出环
路由反射器使用该属性,不接收与本身相同的簇列表的路由,防止环路。
比较前提:同步被关闭、下一跳可达;都可优
r2(config)#router bgp 1 r2(config-router)#maximum-paths 2
r1(config)#router bgp 1 r1(config-router)#bgp router-id 1.1.1.1 r1(config-router)#neighbor xxx peer-group 建立名为xxx的peer-group r1(config-router)#neighbor xxx remote-as 2 定制内容 r1(config-router)#neighbor xxx update-source loopback 0 r1(config-router)#neighbor xxx ebgp-multihop r1(config-router)#neighbor 2.2.2.2 peer-group xxx r1(config-router)#neighbor 3.3.3.3 peer-group xxx r1(config-router)#neighbor 4.4.4.4 peer-group xxx
注:一旦和某个邻居调用了peer-group,那么以后与该邻居的大部分命令就是必须在peer-group中完成;
r1(config-router)#neighbor 2.2.2.2 password cisco
注:邻居的密码是以MD5值发送的;
由于使用passwrod字符,故在running-config中可使用密码加密服务来加密显示
r1(config)#service password-encryption
修改本身路由器的对外通告AS
改变本地AS号
对外欺骗仍是原来的AS
这样原来相连的AS就不用改变
启动翻动路由的惩罚机制(默认不启动)
R4(config-router)#bgp dampening
缺省状况,每次翻动会分配惩罚值1000,若是累计超过2000,路由会被抑制直到下降至750。
减小的速率是按照每15分钟减小一半的速率(半衰期)。
为了防止惩罚值太大被一直抑制,有一个最大的抑制时间,一般为半衰期的4倍,默认半衰期是15分钟,那么最大抑制时间为60分钟。
这些默认值能够进行修改
R4(config-router)#bgp dampening 15 750 2000 60
15:半衰期时间,单位分钟
750:重用阀值,没有单位
2000:抑制阀值,没有单位
60:最大抑制时间,单位分钟
若是被抑制,BGP路由前面会打d ,若是是打h,表明曾经发生过翻动,但未达到惩罚值。
R4#show ip bgp dampening flap-statistics
能够查看打d和h的路由
R4#show ip bgp dampening dampened-paths
能够查看正被抑制的路由
假如翻动的路由已经被修复,可使用如下命令进行当即解封
R4#clear ip bgp dampening
当即清除已经被抑制的路由,使它们恢复可用
R4#clear ip bgp flap-statistics
不单可清除被抑制的路由,还能够清除全部惩罚值
后面还能够跟正则表达式来指定相应的路由
例如:R4#clear ip bgp flap-statistics regexp _30_
能够清楚全部包含AS 30的翻动的路由的惩罚值。
也能够跟filter-list
精确下发默认路由给特定的邻居
R4(config)#router bgp 100 R4(config-router)#neighbor 45.1.1.2 default-originate
没有具体的邻居,发给全部的邻居
R4(config)#router bgp 100 R4(config-router)#default-information originate
建立静态默认路由
将静态默认路由重分发进bgp进程
设置BGP命令default-information originate