一、BGP概述
二、BGP邻居关系的建立和配置
BGP邻居类型:
BGP邻居关系建立方法:
三、BGP路由产生方式
四、BGP通告原则与路由处理
五、BGP常用属性介绍
六、BGP选路原则
BGP十三条选路原则:
七、BGP路由聚合(汇总)
BGP路由汇总方法:
1、静态汇总:
2、自动汇总:一般不用
3、手动聚合(常用,主流)
学习目标:
一、BGP概述
二、BGP邻居关系建立与配置
三、BGP路由产生方式
四、BGP通告原则与路由处理
五、BGP常用属性介绍
六、BGP选路原则
七、BGP路由聚合
BGP 边界网关路由协议(边界:AS的边界),AS由同一个技术管理机构管理(企业、运营商ISP),使用统一的选路策略的一些路由器集合。
IGP:AS内部网关路由协议,实现AS内部的互联互通。
不同AS之间连接需求推动了外部网关协议的发展,BGP作为一种外部网关协议,用于在AS之间进行路由控制和优选。
BGP:AS互联互通的一种路由协议(数据中心、广域网、超大型企业)。
AS号:区分识别不同的AS,取值范围1-65535,分类两种:
1、1-64511是公有AS号,需要为用户或者企业提供互联网接入服务。
2、64512-65535是私有AS号,用于内部AS规划。
AS号老的长度为2个字节,16bit。
AS号新的长度为4个字节,32bit。
AS内部使用IGP协议计算和发现路由,例如:OSPF、ISIS、RIP、EIGRP等。
AS之间使用BGP来传递和控制路由。
BGP可以跨越多跳路由器建立邻居关系(IGP只能直连建立邻居,连续的建立邻居关系)。
BGP是应用层协议
中国的BGP路由器和俄罗斯BGP路由器建立邻居,只要BGP邻居能建立,就能在邻居直接传递路由信息,中间路由器不需要存放路由器信息(中间路由器只是把BGP路由当做普通数据包进行路由转发)。
为了实现路由按需求进行控制和选路,BGP设计了诸多属性携带在路由中,BGP的路由属性是人为设计的,BGP的路由属性是对BGP路由的进一步描述,作用就是为了实现BGP路由的控制、选路、防环、管理。
BGP邻居发现,BGP是一种基于TCP协议的应用层路由协议,邻居关系不会自动建立,需要手动配置。
BGP是一种单播通信,目的IP要事先知道。
80端口 HTTP
23端口 Telnet
20、21端口 FTP
25端口 SMTP
110端口 POP3
22端口 SSH
先运行BGP的一端发起TCP连接,源端口随机,目的端口179。
BGP建立邻居的地址要保证连通性。
1、B使用源端口号随机,目的端口号为179,向A发起连接。
1、EBGP:运行在不同的AS之间的BGP路由器建立的邻居关系为EBGP(External BGP外部BGP邻居)。
2、IBGP:运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Interna BGP)。
EBGP实验:
1、直连物理接口配置EBGP邻居
在BGP中,一台路由器只能属于一个AS,只能配置一个AS号的进程
[R1]bgp 1
[R1-bgp]peer 192.168.10.2 as-number 2 指定的邻居地址为本端向邻居发送BGP报文的目的地址,同时这个地址应该是对端向本端发送BGP报文的源地址(我向邻居发包的目的地址,就是邻居向我发包的源地址,邻居一定能建立起来)。
私网地址和公网地址不重要,根据实际情况确定,保证地址可达就行。
源地址默认为去往邻居地址路由的出接口IP:
(1)、查去往目的IP的路由表:
找到了出接口
(2)、查出接口对应IP,找到了发包去往目的IP的源IP:
BGP local router ID : 192.168.10.1 自己的Router ID
Local AS number : 1 自己所在AS号
Total number of peers : 1 邻居的数量
Peers in established state : 1 已经正常建立邻居关系数量
Peer | V | AS | MsgRcvd | MsgSent | OutQ | Up/Down | State | PrefRcv |
192.168.10.2 | 4 | 2 | 76 | 76 | 0 | 01:14:33 | Established | 0 |
Peer :邻居是谁。
V:使用BGP版本,目前使用版本4。
AS:邻居所在AS号。
MsgRcvd:从邻居收到的BGP报文数量。
MsgSent :发送给邻居的BGP报文数量。
OutQ:发送BGP出口队列上,有多少个BGP报文在等待传递给邻居,不是0可能是链路拥塞,还可能对端有问题。
Up/Down:邻居建立起来了多久,越长越稳定。
State:邻居状态,Established代表邻居OK。
PrefRcv:前缀接收情况,代表从邻居收到BGP路由的数量。
2、用Loopback接口配置EBGP邻居
使用两个物理口冗余建立BGP邻居,引入一条静态,两条链路会传递两条一样的路由:(增加了协议负担)
Loopback建立EBGP邻居,多链路上保障了冗余,而且不会重复传递路由。
写两条的等价路由:
peer 2.2.2.2 connect-interface LoopBack0
指定向邻居发送BGP报文的源地址为loopback0接口的地址
默认情况下EBGP邻居之间发送BGP报文的TTL=1(默认IBGP邻居TTL为255),既强制要求EBGP邻居直连(收到BGP报文减1,发的时候不减)
[R1-bgp]peer 2.2.2.2 ebgp-max-hop 2 (仅在EBGP邻居上使用)
修改EBGP邻居之间发送BGP报文的TTL值,两边TTL值不需要一样
这个时候引入静态:
不再有重复的:
IBGP邻居:
1、使用loopback口建立IBGP邻居
R4:
R5:
BGP邻居关系建立过程:
1、完成三次握手,三次握手的发起方B,A完成三次握手。
查看TCP发起方:
查看邻居详细信息:
本端是179,代表是对端主动发起的TCP连接
2、TCP握手结束,发起方会主动发open报文,用来进行参数协商。
Open报文:
(1)、邻居参数协商:
1)、自身AS号:和邻居指定的AS号一致,否则邻居无法建立。
2)、BGP Router ID:不能冲突,否则无法建立。
3)、Hold Time:邻居失效时间,默认是180s,如果不一致则协商小的。
4)、BGP Version:默认BGPv4,一般不存在版本不同。
(2)、BGP邻居能力的协商:
1)、协商能够传递何种类型的路由(多协议扩展路由):协商传递什么样的路由,地址族,默认传递IPv4单播地址,地址族协商一致,不一致邻居无法建立,默认IPv4单播地址族。
IPv4单播地址簇
IPv4组播地址簇
VPNv4地址簇
2)、路由刷新能力:即手动触发更新能力(BGP策略发生改变,需要通过手动进行触发更新)。
3)、4字节AS号:需要协商是否支持4字节AS号。
3、为了做确认需要发生keepalive报文,作为协商成功的依据,邻居关系就会到Established,keepalive默认每隔60s周期性发送,180s没收到认为BGP邻居失效,断开TCP连接。
BGP的五种报文:Open、Keepalive、Update、Route-refresh、Notification。
Open:邻居建立和能力参数协商(至少有一个地址簇能力要一致,不支持4字节AS号不影响,不支持路由刷新功能也不影响)。
Keepalive:默认每隔60s周期性发送,180s没收到认为BGP邻居失效,断开TCP连接。
Update:BGP路由传递以及撤销。
Route-refresh:用于手动进行BGP路由的触发更新,或者用于ORF功能。
Notification:通知报文,用于报错,收到这个报文只有一个结果,断开BGP连接(BGP邻居断掉)。
BGP邻居状态机六种:(重要前三种)
1、Idle(空闲状态):
ldle是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。路由器在路由表中搜索去往neighbor指定的IP地址的路由,看是否有前往该地址的路由,如果没有明细路由的话,就会卡在这个状态,即使存在默认路由也是不可以的,因此此时不会主动的发起TCP连接,如果出现这样的情况,可以去查看show ip route(华为display ip routing-table) ,然后通过配置“静态路由"或者“通过IGP来通告"neighbor地址的IP来解决这个问题。
(1)、没有去往邻居地址的路由,无法发起TCP三次握手,也无法完成TCP的3次握手。
(2)、邻居发起的TCP握手,被本端拒绝,拒绝的原因是邻居发起TCP报文的源地址,不是本端指定的邻居地址
2、Connect(连接):
在Connect 状态, BGP发起第一个TCP连接, 如果连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP:
(1)、连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active 状态。
(2)、如果搜索到了,则开始建立TCP连接,如果成功的话,邻居状态则进入"connect'状态。
(3)、要分清楚是建立TCP连接的源地址和目标地址是什么,是双方的neighbor
(4)、如果双方指定的IP地址不相同,那肯定就得不到“期望”的TCP连接。
当发起TCP连接路由器,无法收到邻居TCP回应报文时,就会卡在connect状态,并且5秒后重传一次TCP连接请求, 再等待32秒左右,重新再次发起TCP连接请求,通常是由于发起端存在邻居地址的路由,并能主动发送TCP3次握手,但无法从邻居接收第二次握手的报文。通常是由于邻居缺乏到对端的路由,或者是应答报文中途被丢弃。
发起tcp连接的路由器,在5s内,如果没有得到邻居的任何回应报文,重传tcp报文,继续等待25s,还没有收到邻居的任何回应,会在重传tcp报文,在建立不起来重连。
3、Active(活跃):
在Active状态,BGP总是在试图建立TCP连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就继续保持在Active状态, 并继续发起TCP连接,没有收到对open-send报文的确认报文。
当发送TCP连接路由器,能收到相应的邻居应答报文,代表2台路由器能正常交互报文,但是依然无法建立起TCP的3次握手,将会进入到Active。
邻居之间地址可达,但建立BGP邻居的源目地址不匹配导致。本端主动发起TCP连接的源地址和对端指定的邻居地址不匹配,导致本端处于active, 对端处于idle状态。
Idle是我不能发,Connect状态是不知道邻居在不在,得不到任何邻居的反馈(我能发对方不理我),Active邻居有反馈,三次握手无法建立,但是都意味着三次握手无法建立,只是细节不一样(我能发,对方也能回,就是协商谈不好)。
4、OpenSent:发送Open报文所处的状态,已经发送Open报文,并等待接收邻居的Open报文。
5、OpenComfirm:收到了邻居的Open报文,并发送Keepalive报文。
6、Established:收到Keepalive报文。
BGP协议的特点:
1、BGP不会对路由进行计算
2、BGP只是路由的搬运工
BGP路由生成方式:
1、Network:
(1)、BGP协议的Network命令,不再具备将接口加入BGP进程的逻辑。
(2)、逐条将IP路由表中已存在的路由引入到BGP表,并通告给邻居
(3)、network可以精确控制发布。
2、import-route
(1)、将路由表中的路由引入到BGP表中,高效快捷。
BGP做路由过滤实验:
过滤前:
R1引入:
R2的BGP路由表:
使用前缀列表做过滤:
[R1]ip ip-prefix 1 permit 2.2.2.2 32 前缀列表1
[R1]route-policy test permit node 10定义策略
[R1-route-policy]if-match ip-prefix 1满足前缀列表1
R2的BGP表:
BGP通告路由的原理和规则:
1、BGP通过Network和Import两种方式生成BGP路由,BGP路由封装在Update报文中通告给邻居。BGP在邻居关系建立后才开始通告路由信息。
2、Update消息主要用来公布可用路由和撤销路由,Update中包含以下信息:
(1)、网络层可达信息(NLRI,N【网络】、L【层】、R【可达】、I【消息】) :用来公布IP前缀和前缀长度。
(2)、路径属性:为BGP提供环路检测,控制路由优选。
(3)、撤销路由:用来描述无法到达且从业务中撤销的路由前缀和前缀长度。
3、在通告BGP路由时,由于各种因素的影响,为了避免路由通告过程中出现问题,BGP路由通告需要遵守一定的规则,下面进行详细介绍。
BGP通告规则:
1、仅将自己的最优路由发布给邻居,带“>”号的路由。
2、通过EBGP获得的最优路由发布给所有BGP邻居。
3、通过IBGP邻居获得的最优路由不会发布给其他的IBGP邻居(IBGP水平分割,AS内部防环)。
4、BGP与IBGP同步:(从IBGP邻居得到的路由是否传递给EBGP),从IBGP邻居得到的路由同步检测通过后传递给EBGP邻居(IBGP到目的可达后才传递,防止产生路由黑洞)。
5、如果同步功能关闭,从IBGP邻居得到的路由只要下一跳可达并且最优即可传递给EBGP邻居。
路由同步过去是一回事,能不能通是另外一回事。
解决BGP路由黑洞方法:
(1)、把EBGP的路由引入到IBGP协议OSPF中(5类LSA),比较消耗设备资源,BGP路由数量特别庞大(该方法基本被淘汰)。
1)、引入到IGP协议中,增加计算路由的负担,BGP路由振荡,IGP路由也会产生振荡。
(2)、AS内所有路由器均运行BGP协议,IBGP全互联(主流方案)。
总结:只要能解决BGP路由黑洞问题,BGP同步检查功能,开启和关闭就不再重要了。
EBGP路由引入ISIS中实验:
一条路由的下一跳为0.0.0.0,就是自己产生或者始发的路由:
看路由的详细信息,local本地产生,通过network
R4就没有:
i是总IBGP邻居学来:
R4通过IGBP学到路由没有传递给R5:
两种可能性:
1、没同步不能传递R5(烟雾弹)
2、不是最优的路由,不能传R5(根因就是路由下一跳不可达)
R2的ISIS引入BGP路由,同步了1.1.1.0路由
但是依旧R5没有,这个时候就不是同步问题了,是没有打“*”号,valid有效,下一跳可达,传递过程中下一跳不变,导致下一跳不可达
R4写一条去往这条路由的静态路由:(很低效)
下一跳可达,可以同步R5了:
R5:
下一跳:从EBGP邻居传来的路由,传递IBGP邻居的时候,下一跳默认不变,可能导致下一跳不可达。
解决方法:
[R2-bgp]peer 4.4.4.4 next-hop-local 该命名只对IBGP邻居生效,将从EBGP邻居得到的路由,传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址。
IBGP建立邻居配置的三板斧:
peer 4.4.4.4 as-number 232
peer 4.4.4.4 connect-interface LoopBack0
peer 4.4.4.4 next-hop-local
BGP路由传递给EBGP邻居时,向该EBGP邻居发送BGP报文的源地址。
R4不能把路由传递到R5的根本原因是下一跳不可达,导致路由不是最优的(跟同步无关)。
undo synchronization 关闭功能:(华为没有命令开启同步功能,也开不了同步)
BGP路由同步是BGP路由黑洞检测机制,并不能解决BGP黑洞问题。
IBGP全互联实验:
BGP路由信息处理:
1、当从BGP邻居接收到Update报文时,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径。
2、得出的最佳路径被存储到本地BGP路由表(Local_RIB)中,然后被提交给本地IP路由表(IP_RIB),以用作安装考虑。
3、被选出的有效的最佳路径路由将会被封装在Update报文中,发送给对端的BGP邻居。
(Local_RIB)表就是:本地的路由信息表
(IP_RIB)表就是:路由表
BGP学到不一定就能加路由表,如果通过其他方式学到相同路由,要比优先级,然后加表:
BGP学到路由在路由表中:
静态学到之后,静态优于BGP加表:
BGP常用属性:(BGP路由属性,重点)
问题1:BGP如何控制选路(选路)
问题2:AS之间路由传递环路(防环)
BGP属性分类:具体属性具体学习
1、公认:所有运行BGP的路由都能支持的属性。
(1)、公认必遵(Well-known Mandatory):必须携带
1)、Nexthop下一跳属性:
@默认情况下传给EBGP邻居的BGP路由的下一跳设置为自身向这个EBGP邻居发送BGP报文的源地址。
@默认请况下从EBGP邻居得到的BGP路由再传给IBGP邻居时,此BGP路由的下一跳默认不变。可以使用peer next-hop-local修改下一跳。
R1发R2,EBGP之间传递路由下一跳为BGP报文的源IP,而IBGP之间传递默认下一跳不会,需要命令改动。
@默认情况下凡是自身起源BGP路由在传给任何BGP邻居时,总是把此路由的下一跳设置为向BGP邻居发送BGP报文的源地址。
2)、Origin起源属性:定义了路径信息的来源,标记一条路由是怎么成为BGP路由的。
@起源属性可以被修改,一般起源属性是一种BGP选路属性,可以用于BGP路径的选路,通过修改起源属性可以控制BGP路径。
优先级关系:i > e > ?
network或者import产生BGP路由,“i”来描述起源属性,起源属性有三种:“i”、“?”、“e”
”i“:表明BGP路由是由network命令发布的。
"?":表明BGP路由是由import命令引入的。
“e”:表明BGP路由是从EGP协议(EGP协议目前已经淘汰了)引入的。
3)、AS_Path:当BGP路由传递给EBGP邻居时,会将自己的AS号添加到AS_Path属性的最前面(发送时候打上自己的AS号),当BGP路由传递给IBGP邻居时不会添加自己的AS号(只有AS之间传递才会打上自己的AS号),有两个作用:
@选路,经过AS数量少的路径最优。
@在AS之间实现BGP环路防范(防环),从EBGP邻居得到路由时,AS_Path中存在自身的AS号,则认为从我这边传出去的路由,再回来产生了环路会丢掉这条路由。
AS内部防环是IBGP水平分割,AS之间通过AS_Path防环。
防环检测机制:EBGP邻居之间进行AS_Path检测,IBGP邻居之间不进行AS_Path检测。
这个邻居传递给我的路由不做AS_Path检测
AS_Path可以在IBGP和EBGP邻居之间修改,思科只允许在EBGP邻居之间修改。
[R2]ip ip-prefix 1 permit 1.1.1.0 24
[R2]route-policy local permit node 10
[R2-route-policy]if-match ip-prefix 1
[R2-route-policy]apply local-preference 300 本地优先级修改为300
[R2]route-policy local permit node 20 不做任何修改
[R2-bgp]peer 10.10.1.1 route-policy local import 引用策略
R3没做策略前:
R3策略后:
(2)、公认任意(Well-known Discretionary):根据需要携带
1)、Local_Preference本地优先级:仅在IBGP邻居之间传递,不会传递EBGP邻居,优先级越大越优(控制流量访问外部的出口)。
R2修改本地优先级为200:自身不会有变化
传递给IBGP邻居,本地优先级变为200:
2)、Atomic_aggregate
2、可选:厂家开发的某些满足特殊需求的属性,但并不是所有路由器都支持。
(1)、可选过渡(Optional Transitive):自己不知道用途,但是可以继续传递下去
1)、Aggregator
2)、Community团体属性:早年思科私有属性,想要传递团体属性,必须在BGP之间配置传递的命令,有两种作用:
@限制BGP路由传递范围(公认团体属性)。
@给BGP路由添加标记,方便管理(扩展团体属性)。
@BGP路由可以同事拥有公认团体属性和扩展团体属性。
不同于IGP的tag,tag只能打一个管理有限,不能多维度的标识路由。
BGP路由可以拥有多个团体属性,根据管理需求和业务需求灵活进行路由管理。
团体属性分为:
@公认团体属性:
1、internet:默认属性,所有路由都属于internet,该属性可以通告所有BGP邻居。
2、No_Export:收到此属性的路由后,不将该路由发给其他EBGP邻居。
3、No_Advertise:收到此属性的路由后,不将该路由通告给任何BGP邻居。
4、No_Export_Subconfed:在联盟中使用,仅在成员AS内传递。
当路由存在多个公认属性时,传递范围最小的生效。
@扩展团体属性:用一组4字节为单位的列表来表示,路由器中扩展团体属性格式为aa:nn或团体号(aa取团体号【范围是0-4294967295,在RFC中0-65535,4294901760-4294967295是保留】,nn是管理员定义的团体标识),AA:NN例如1:100(aa和nn取值都0-65535)。
实验:
写路由策略,打上团体属性1:2
[R1]route-policy tt1 permit node 10
[R1-route-policy]apply community 1:2
BGP通告路由时携带
[R1-bgp]network 192.168.2.0 24 route-policy tt1
通告团体属性给邻居:
通告前:
[R1-bgp]peer 10.10.1.2 advertise-community
执行命令通告后:
实验:可选过度属性——团体属性——公认团体属性No_Export
需求:电信的路由打上团体属性,联通打上团体属性,有一种团体属性可以让EBGP邻居路由不互相传递,可以自己做到源进源出,联通、电信不互传。
[R1]ip route-static 172.172.1.0 24 NULL 0
[R1]ip ip-prefix 1 permit 172.172.1.0 24
[R1]route-policy lt permit node 10
[R1-route-policy]if-match ip-prefix 1 只对172添加no-export
[R1-route-policy]apply community 1:11 no-export
[R1]route-policy lt permit node 20
[R1-bgp]network 172.172.1.0 24
[R1-bgp]peer 10.10.1.2 route-policy lt export
[R1-bgp]peer 3.3.3.3 advertise-community 通告邻居携带团体属性
[R1-bgp]peer 4.4.4.4 advertise-community
R1本地不会对172添加团体属性:
R2收到后携带团体属性no-export:
不会传递到电信:
(2)、可选非过渡(Optional Non-transitive):自己不知道用途,就会忽略,不会继续传递下去
1)、MED:早年思科私有属性,MED是BGP的多出口鉴别器,也叫BGP cost,越小越优,仅在相邻的两个AS之间传递,收到此属性的 AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由(外部访问本地的入口)。
华为设备通告MED属性的规则
1、本地始发的路由MED值传递给所有邻居。
IBGP邻居收到:
EBGP邻居收到:
2、从EBGP邻居得到的路由的MED不会传递给EBGP邻居,影响邻居AS的选路(只影响邻居,不会影响第三方)。
1改了MED,会影响AS 1中的3,但路由传递到AS 2中不会影响4
3、从EBGP邻居得到的路由的MED可以传递给IBGP邻居。
EBGP:
传递到IBGP:
4、从IBGP邻居得到的路由传递给EBGP邻居不携带MED(AS 100到AS 111携带MED,AS 111到AS 222不会携带EMD)。
5、从联盟EBGP邻居或联盟内始发的的路由的MED值在整个联盟保持传递。
MED属性在IBGP和EBGP邻居(包括成员EBGP) in和out方向都可以修改。
BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
1、该路由是到达目的地的唯一路由,直接优选。
2、对于到达同一目的地的多条路由,优选优先级最高的。
3、对于到达同一日的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。
一般来说,BGP计算路由优先级的规则如下:(2、3、5、6、7是对BGP控制的主要手段)
1、丢弃下一跳不可达的路由(丢弃代表不传递邻居),“*”代表下一跳可达。
2、优选Preference Value值(协议首选值)最高的路由(华为私有属性,仅本地有效,影响某一台路由器)。
3、优选本地优先级(Local_Preference)最高的路出(影响整个AS内所有路由器)。
4、优选手动聚合>自动聚合>network> import>从对等体学到的。
5、优选AS_Path短的路由。
6、起源类型IGP>EGP>Incomplete。
7、对于来自同一AS的路由,优选MED值小的。
8、优选从EBGP学来的路由(EBGP>IBGP)。
9、优选AS内部IGP的Metric最小的路由。
10、优选Cluster_List最短的路出(路由反射器才比)。
11、优选Orginator_ID最小的路山(路由反射器才比)。
12、优选Router_ID最小的路由器发布的路由。
13、优选具有较小IP地址的邻居学来的路由(邻居地址传来最小的路由)。
Router_ID相同场景:
Preference Value(协议首选值)对选路的影响:
Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference Value越大优先(和本地优先级作用一样,但是影响范围不一样,Preference_Value只影响AS内某台路由器,本地优先级影响整个AS内所有路由器)。
1995年OSPF、1994年ISIS
聚合方式对选路的影响:
手动汇总>自动汇总
Aggregaled route手动汇总:
[R2-bgp]aggregate 192.192.0.0 16
Summary automatic route自动汇总
EBGP邻居的路由优于IBGP邻居的路由:
AS内部GP Metric对BGP选路的影响:
Router-ID与IP地址对BGP选路的影响:
BGP路由聚合:
BGP在AS之间传递路由信息,路由信息很庞大,BGP网络面临的两个问题:
1、路由数量庞大,占用内存,消耗带宽。
2、如果路由条目出现频繁的更新和撤销,对网络的稳定会造成影响。
为了解决这两个问题,使用路由聚合做优化。
client AS(客户AS):就是二级ISP(例如长城宽带等等,网络设备性能不太好)。
联通、移动将明细路由发给电信,电信做一个路由汇总发给长城宽带。
明细失效,汇总不会失效,弊端是明细全部故障,会产生路由黑洞。
利用静态路由执行BGP汇总:
(1)、并不是真正意义上BGP路由汇总,只是利用BGP发布路由的特点来实现汇总的效果。
(2)、明细路由并不会被抑制,还是会正常的通告给邻居,需要做明细路由的过滤。
(3)、会丢弃明细路由的某些BGP路由属性,存在路由环路的风险。
(4)、明细路由是否存在和汇总路由之间不存在依赖关系,导致汇总路由不能真实反应网络现状。
1、先把明细通过静态汇总起来
2、然后通过network发布出去,明细汇总都发,无用功
3、做过滤
过滤前R4:
过滤后R4:
R4上环回口模拟二级ISP后的一个客户:
去ping移动和联通:
转发原理
BGP路由表:
静态路由表:
二级ISP的客户,根据汇总路由发包到R3,R3收到后数据包后,路由表中EBGP路由和静态汇总都能命中这条路由,虽然静态汇总指向的接口是一个NULL 0接口,但是根据转发路由的最长匹配原则,使用掩码长度最长的去转发,这个时候会使用EBGP的明细路由去转发(明细路由精确匹配)。
(1)、仅对自身通过import-route命令发布的路由生效。
(2)、只能汇总成主类网络号。
(3)、明细路由会被抑制。
汇总前:
R4:
汇总后:
明细被抑制,不会传递:“s”
自动汇总问题:地址规划重要性
(1)、不管路由是自己产生还是邻居学到都能进行汇总。
(2)、可以实现精确汇总,支持CIDR(超网)。
(3)、可以对汇总路由的属性做编辑。
(4)、可以继承明细路由的相关属性,防止环路。
(5)、明细路由全部失效,汇总路由才会失效。
手动汇总:
丢失了AS_Path属性,明细路由没有抑制:
正确手工汇总:
抑制明细路由、继承AS号.
R4效果:
R1效果:只收其他区域的,自己区域产生的汇总不收
AS-Path:表明路由传递的AS的次序,有序的。
AS-Path{ }:无序的AS-Path,防环用,不是标识路由传递的次序。“{ }”中的AS号,只能算是一个AS长度。
“{ }”:继承方式是取全集
问题:汇总完的路由,R3和R4都能访问R1和R2的192.168.0.0/21,而R1和R2之间192.168网段不能通,汇总路由发R1和R2因为AS-Path不会接收。
解决方法一:开启R2开启allow-as-loop,接收含义192.168.含有自己AS号的路由,然后做路由过滤掉传来172的路由。
解决方法二:
[R3]ip ip-prefix 1 permit 192.168.0.0 21
[R3]route-policy as1 permit node 10
[R3-route-policy]if-match ip-prefix 1
[R3-route-policy]apply as-path 1 overwrite传递给R2的时候AS-Path改为1
[R3]route-policy as1 permit node 20
[R3]ip ip-prefix 1 permit 192.168.0.0 21
[R3]route-policy as2 permit node 10
[R3-route-policy]if-match ip-prefix 1
[R3-route-policy]apply as-path 2 overwrite传递给R1的时候AS-Path改为2
[R3]route-policy as2 permit node 20