一、BGP的宣告问题;
BGP协议在进行宣告时,可以在运行了BGP协议的直连设备上宣告,也可以在运行了BGP协议的路由器上宣告通过其他协议学习的路由条目;----本地路由表任何条目均可以被BGP宣告;
重点:BGP协议在宣告本地路由表中条目时,将携带路由表中的下一跳及度量值;
下一跳地址正常会被EBGP邻居关系规则及next-hop-self修改成本地;
度量值将正常传递到所有IBGP邻居处,---只有本地宣告的路由在传递给本地的EBGP邻居时才携带自己度量值,若其设备宣告的路由通过本地传递给本地的EBGP邻居,将被归0;------建议所有存在EBGP邻居的路由器均宣告内网路由,来方便其他AS对本AS的选路;
二、关闭自动汇总
自动汇总功能与普通的BGP协议路由没有关系;
针对从IGP重发布到BGP的路由产生规则;
在BGP协议中逐条宣告本地路由表中的信息------类似于逐条的将本地路由表中信息重发布到BGP协议;
直接将IGP重发布BGP协议---类似一次性将本地路由表中信息宣告到BGP协议中;
自动汇总 --------------不携带掩码、度量、下一跳
关闭自动汇总-----------携带掩码、度量、下一跳
总结:若仅重发布,建议关闭自动汇总;且所有存在EBGP邻居关系的BGP路由均需要进行重发布,来携带本地达到内部的度量,方便其他的AS对本AS的选路;
三、认证
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 password cisco123
和邻居12.1.1.2进行认证,密码为Cisco123;该密码直接密文发送;
为在running-config中不清楚的显示密码,建议开启密码加密服务
r1(config)#service password-encryption
四、聚合---汇总
【1】利用了BGP的宣告特点
先在更新源路由器上不宣告明细路由,而是配置一条到达汇总地址的空接口防环路由,然后再在BGP协议中宣告该空接口路由即可;
【2】BGP的聚合
先逐条宣告明细路由,然后再聚合配置
r1(config)#router bgp 1
r1(config-router)#aggregate-address 1.1.0.0 255.255.252.0
注:此时明细与聚合条目同时传输
r1(config-router)#aggregate-address 1.1.0.0 255.255.252.0 summary-only
仅发送聚合路由
注:聚合后,均自动产生空接口防环路由;
【3】在BGP协议中常常会出现,因为需要控制选路,而在发送聚合条目的同时,让某个BGP路由携带部分明细路由;
1、若使用第一种聚合方式,在宣告了空接口路由后,再直接逐一宣告需要的明细路由
2、若使用第二种聚合方式;先将明细和聚合条目均发出,然后进行策略
1)抑制列表---一张用于抑制条目的列表,该列表中被关注的流量将被抑制发送
r1(config)#ip prefix-list a permit 1.1.1.0/24
r1(config)#route-map a permit 10
r1(config-route-map)#match ip address prefix-list a
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#aggregate-address 1.1.0.0 255.255.252.0 suppress-map a
2)分发列表
r1(config)#ip prefix-list a deny 1.1.1.0/24
r1(config)#ip prefix-list a permit 0.0.0.0/0 le 32
r1(config)#router bgp 1
r1(config-router)#distribute-list prefix a out serial 1/1
3)Route-map
r1(config)#ip prefix-list b permit 1.1.1.0/24
r1(config)#route-map xx deny 10
r1(config-route-map)#match ip address prefix-list b
r1(config-route-map)#exit
r1(config)#route-map xx permit 20
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 route-map xx out 方向为控制层面方向
r1#clear ip bgp * soft
4)前缀列表
r1(config)#ip prefix-list qq deny 1.1.1.0/24
r1(config)#ip prefix-list qq permit 0.0.0.0/0 le 32
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 prefix-list qq out 控制层面方向
r1(config-router)#end
r1#clear ip bgp * soft
五、有条件的打破IBGP水平分割
在IBGP水平分割环境下,所有存在EBGP邻居关系的路由器间均需要两两间建立IBGP邻居关系----邻居的数据成指数增长;
所为有条件的打破IBGP水平分割--是指在关闭了水平分割环境后,网络依然没有环路;-------依赖了AS-BY-AS---整个AS内所有设备学习到X路由时,下一跳均指向第一个将X导入
的路由器;
在未打破IBGP水平分割之前,理论不需要运行BGP协议但不存在EBGP关系的设备;而打破之后若需要更稳定的BGP工作环境,就需要部分的运行BGP但没有EBGP关系设备来备份邻居关系;
【1】路由器反射器---三个角色--RR(路由反射器)、客户端、非客户端
三个角色均为IBGP邻居关系,构建一个簇;
RR与客户端、非客户端必须是IBGP邻居关系;
规则:
1、若RR从一个EBGP邻居处(其他AS)学习到了路由,可以转发给本地客户端、非客户端,其他EBGP邻居;
2、若RR从一个客户端学习到的了路由,可以转发给本地客户端、非客户端、EBGP邻居;
3、若RR从一个非客户端学习到了路由,可以转发给本地客户端、EBGP邻居,但不能转发本地其他非客户端;
r3(config)#router bgp 2
r3(config-router)#neighbor 2.2.2.2 route-reflector-client
让2.2.2.2成为本地的客户端,同时本地成为反射器;
切记:真机上运行BGP时,若使用反射器技术,那么被定义反射器和客户端的设备,上next-hop-self命令将失效;使用route-map来取代;
r2(config)#route-map ww permit 10
r2(config-route-map)#set ip next-hop peer-address
r2(config-route-map)#exit
r2(config)#router bgp 64512
r2(config-router)#neighbor 3.3.3.3 route-map ww out 控制层面方向
r2(config-router)#end
r2#clear ip bgp * soft
【2】联邦
1、启动及所有建邻配置均基于小AS号进行
2、联邦内所有路由器告知所在的大AS号;
r2(config)#router bgp 64512
r2(config-router)#bgp confederation identifier 2
3、小AS间互指peer;
r3(config-router)#bgp confederation peers 64513
对端的AS号;仅在联邦内的EBGP邻居关系间设备上配置
注:实际中解决IBGP水平分割时,是将反射器和联邦同时应用;
六、属性----BGP选路时依赖路由信息中属性;
传播范围 默认值 大优或小优
1、Weight 权重 不传播 0-65535,本地32768 大
Cisco私有 邻居0;
全局下修改权重值;
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 weight 1 从3.3.3.3接收的所有路由权重为1;
r4#clear ip bgp * soft
负载分担:将原来到达不同目标相同路径的路由,修改为不同路径;
r4(config)#ip prefix-list w permit 2.2.3.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
注:必须在控制层面方向调用,且只能在入向调用,因为权重值不传播的;
传播范围 默认值 大优或小优
2、本地优先级 IBGP邻居间 100 大
用于干涉IBGP邻居
间选路最常的属性
R3(config)#router bgp 2
r3(config-router)#bgp default local-preference 101 本地发出的所有路由优先级修改为101;
r3(config-router)#end
r3#clear ip bgp * soft
负载分担:
r3(config)#ip prefix-list l permit 2.2.3.0/24
r3(config)#route-map l permit 10
r3(config-route-map)#match ip address prefix-list l
r3(config-route-map)#set local-preference 101
r3(config-route-map)#exit
r3(config)#route-map l permit 20
r3(config-route-map)#exit
r3(config)#router bgp 2
r3(config-router)#neighbor 4.4.4.4 route-map l out
r3#clear ip bgp * soft
注:在控制层的接口上调用,必须为IBGP邻居关系;
3、优选本地的下一跳
Network Next Hop Metric LocPrf Weight Path
*> 2.2.2.0/24 0.0.0.0 0 100 0 1 i
* i 3.3.3.3 0 100 0 1 i
4、AS-pash 条目在传递的过程中记录所有经过的AS编号;优选经过数量最少的路径;
可以通过增添路由信息中的AS号,来干涉选路;可以干涉IBGP/EBGP关系的选路,但只能EBGP邻居间进行操作;修改A路径,优选B路径;
r1(config)#ip prefix-list as permit 2.2.3.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标示已经实际经过的AS号;
出向调用为X 3 4 5 ;
5、起源属性
标示该条目通过何种方式进入的BGP协议中来的;
i标示该条目是在BGP协议中network产生的;
e标示该条目是通过EGP学习后重发布到BGP来的;
?标示该条目是通过IGP学习后重发布到BGP来的;
规则: i>e>?
r4(config)#ip prefix-list o permit 2.2.3.0/24
r4(config)#route-map o permit 10
r4(config-route-map)#match ip address prefix-list o
r4(config-route-map)#set origin egp 2 若修改为e,必须定义对端邻居的AS号;
r4(config-route-map)#exit
r4(config)#route-map o permit 20
r4(config-route-map)#exit
r4(config)#router bgp 2
r4(config-router)#neighbor 3.3.3.3 route-map o in
r4(config-router)#end
r4#clear ip bgp * soft
注:控制层面方向调用;
6、MED-多出口的鉴别属性 用于干涉EBGP选路最多;
常用于AS1干涉AS2对AS1的选路;
因为BGP协议本身没有度量,故管理员可以在路由信息中编写一个度量值来干
涉选路;
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
使用扩展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
七、BGP的选路
比较前提--同步被关闭、下一跳可达;均可优
1、首先比较weight 大优--不传递 EBGP/IBGP
2、比较本地优先级,默认100;仅IBGP邻居传递,大优 IBGP
3、优选本地下一跳
4、比较as-pash,经过的AS数量少优,EBGP邻居可增添 EBGP/IBGP
5、起源码最小 i-igp=0 e-egp=1 ?-incomplete=2 EBGP/IBGP
6、MED值最小 EBGP/IBGP
7、普通的EBGP邻居优于联邦内EBGP邻居优于IBGP邻居
8、优选最近的IGP邻居(IGP度量小)
9、优选最先建立EBGP邻居
10、最小BGP邻居的RID
11、优选最小的RR list 列表
12、若收到到达同一目的地两条均可优的EBGP路由,可以人为实现负载均衡
r2(config)#router bgp 1
r2(config-router)#maximum-paths 2
八、BGP的社团属性---BGP协议的扩展属性,管理员后期添加的属性;正常情况下大多数厂商的产品均不在默认情况下去识别和传递这些属性;故在使用社团属性时最重要的配置在传递性上;
例:关于BGP条目传播范围的社团属性
r1(config)#ip prefix-list xx permit 10.1.1.0/24
r1(config)#route-map xx permit 10
r1(config-route-map)#match ip address prefix-list xx
r1(config-route-map)#set community no-advertise 添加社团属性
r1(config-route-map)#exit
r1(config)#route-map xx permit 20
r1(config-route-map)#exit
r1(config)#router bgp 1
r1(config-router)#neighbor 12.1.1.2 route-map xx out
r1(config-router)#end
r1#clear ip bgp * soft
切记:即便策略向条目中压入了社团属性,但设备一般不传递这些属性,故需要开启传递性;
r1(config)#router b 1
r1(config-router)#neighbor 12.1.1.2 send-community 本地将社团属性传递给该邻居
r1#clear ip bgp * soft
关于条目传播范围的社团属性:
no-advertise 接收到的条目中若存在该属性,将不再传递该条目
no-export 条目中携带该属性,将不能传递出本大AS;
local-AS 条目中携带该属性,将不能传递出本小AS;在没有小AS的情况下,local-as作
用同no-export一致;
九、peer-group
r8(config)#router bgp 3
r8(config-router)#neighbor xxx peer-group 创建名为xxx的peer-group
定制内容
r8(config-router)#neighbor xxx remote-as 10
r8(config-router)#neighbor xxx update-source loopback 0
r8(config-router)#neighbor xxx next-hop-self
调用
r8(config-router)#neighbor 1.1.1.1 peer-group xxx
r8(config-router)#neighbor 2.2.2.2 peer-group xxx
r8(config-router)#neighbor 3.3.3.3 peer-group xxx
注:若需要和某个邻居执行单独的策略,必须和该邻居不进行peer-group