BGP简介
BGP是一种高级距离矢量型协议,用于解决AS间路由信息的传输,和eigrp一样初始化的时候BGP邻居传输的是整张路由表,以后只传输网络变化的部分-增量更新(更新比较慢)。采用TCP连接传输,端口179,BGP没有另外设置可靠传 输机制,TCP本身就是可靠的。BGP的AS号范围是1-65535,其中公有1-64511,私有54512-65534。IGP的路由协议侧重点主要是路由的自动发现和计算,而BGP是在于路由的控制和选择上。
IBGP不中转路由:
1 BGP协议主要研究AS间路由,所以IBGP传输有问题
2 根本原因:
①BGP没有在IBGP邻居间设置算法,有风险,会出环
②要实现没有算法还不出环的做法就是不中转路由,不修改下一跳
3 后果:
①域外路由下一跳不可达现象,解决方法:手动更改下一
②全互联建邻居问题,解决方法:
反射(主要方案,本质:中专路由,不修改下一跳) 联盟
BGP属性
Path-attribute 一共10中属性(cisco11条)属性,weight ,origin ,as_path ,next_hop ,local_pref ,atomic_aggregate ,Aggregator ,community ,MED,originator_id ,cluster_list,绝大多数都可以携带在数据包中,11种属性可以分为4类:
1.公认必尊:所有BGP路由器必须识别遵守的有origin,as_path,next_hop
2.公认可尊:所有路由器都能识别但是不一定要遵守local_pref,atomic_aggregate
3.可选传递:不是所有的BGP路由器都能识别,但是所有的BGP都能传递(例如mpls种rt值,只有配置了mpls_才能识别rt)aggregator,community
4.可选非传递:不是所有的路由器都能被识别,不能识别的BGP路由器就丢弃它,MED(metirc),originator_id,cluster_id,weight
Weihgt
Cisco 私有属性,对于离开AS的路由在路由器选择那一条最优,本台路由器产生为32768,学习的为0,不能传递给所有邻居,用于选路:适用于一台路由去往别的AS有两个以上出口时,选择weight值高的一条路。
(范围0-65535,选大)(传播范围:只在本地有效)只用于选路
Origin
起源属性,0表示宣告(i),1表示EGP学到(E),3表示其他手段得到(重发布?)越低越好
多重功能:① 本质上识别路由来源
② 用于选路(很少使用)i > E > ?
AS path
作用:① 本质路径记录一条路由在传输过程中经历了那些AS(不算自己,每经过一个AS将AS号放在最右)
② 可用来防环
③ 用于选路(AS path越长开销越大)Nei X.X.X.X allowas-in 允许和具有自己相同的AS的路由进入本ASNei x.x.x.x as-override 把具有和其他AS相同AS号的路由放入这个AS
Next_hop
到达路由的下一跳路由器IP地址,EBGP修改 IBGP不修改
通告路由器和接受路由器不在一个AS,next_hop为通告路由器的更新地址
通告路由器和接受路由器在一个AS内,next_hop为通告邻居的更新地址
通告路由器和接受路由器在一个AS内且为邻居关系,则更新地址为不同AS,为外部更新地址
Local_pref (专职选路)
最佳实施场景:用于本AS选择离开且本地出口在多个路由器上
1.AS的出口路由器默认为100值越高越优
2.范围:AS内部即IBGP之间,不能传输到其他AS
3.router-map 针对特定流量修改,实现分流互备
MED
用于选择流入AS的入口路由器,可以在俩个AS之间传递,越低越好默认0
1.MED影响别人选路
2.若需影响自己,则将MED方向指向自己,即入方向
3.与local pref联用,用于去回一致场景传递范围:仅限于AS间传递
只有同一AS间传递的MED才有可比性开启MED对比
Atomic_aggregate
用来警告下游路由器路由聚合后产生的路由路径丢失。BGP支持向BGP邻居传递重叠路由可以选择多种方式:
1.明细和粗略的都公布
2.只公布明细
3.只公布没有重叠的
4.聚合后公布聚合后的路由
5.明细和粗略都不公布BGP汇总后明细和汇总都存在,解决方法:使用summary only as-set命令
Aggregator
用来通告汇总路由的汇聚路由器 BGP_ID(cisco)
Community(路由标记)
1.internet 默认属性,可以给任何BGP发送
2.no_export 只能在一个AS内传递,可以在联盟内传递。
3.no_advertise 不在IBGP邻居间传递
4.local-as 不向任何EBGP邻居发送包括联盟的EBGP邻居查看community属性
状态机
BGP事件有以下几种:1.BGP开始 2.BGP结束 3.BGP传输连接打开4.BGP传输连接终止 5.BGP传输连接打开失败6.BGP传输致命差错 7.重试连接计 时器超时8.持续事件终止 9.keeplive计时器终止 10.收到open消息 11.收到keeplive消息12.收到update消息 13.收到notification 消息
Idle state配置了neighbor 或重置了邻居,BGP初始化所有资源打开connect Retry 计时器,初始化邻居的TCP连接,监听来自邻居初始化消息并将它的状态转connect状态。
为了防止差错的持续出现造成BGP邻居的摆动,connect Retry计时器会呈现级数级的增加第一次60s,下一次的为前一 次的2倍120s,再下次240s
Connect state
BGP等到TCP连接完成以后再决定后续的动作
1.如果TCP同步成功,BGP将connect Retry 清零,完成初始化并发送一个open消息给邻居并把状态置为open
2.如果失败,BGP继续监听邻居发出的连接,重置connect Retry计时器并转移到active状态
3.如果connect Retry时间超时,计时器重新开始,在试图与邻居建立TCP连接,BGP保持connect状态,出现其他事件转 入idle状态。
Active state
BGP试图与邻居建立一个TCP的连接
1.如果TCP连接成功,BGP将connect Retry计时器清零,完成初始化,给邻居发送Open消息并将状态置为open,hold时 间置为4mins
2.如果在active状态,connect Retry计时器超时回connect状态并重置connect Retry计时器3
.如果试图与一个未知IP建立TCP会话,同时connect Retry计时器重置,连接拒绝并保持active状态
4.任何一个事件都会导致重回idle
Open send state
在此状态,已经发送了open消息,BGP等待邻居发送的open消息
1.收到open消息,如果发现差错,将给邻居发送一个notification消息并置为idle
2.如果收到open消息没错,将发送keeplive给邻居,并建立IBGP或者EBGP状态置为open confire state
3.如果收到TCP断开消息则断开BGP连接重置connect Retry计时器,状态置为active
Open confire state
在此状态下BGP会等待一个keeplive消息或notification消息
1.如果后搜到一个keeplive消息状态置为establish
2.如果收到notification消息状态置为idle断开TCP连接
3.如果hold计时器超时,检测到一个差错或者stop事件BGP将给邻居发送一个notification并断开连接,状态置为idle
Establish state
此状态,BGP对等体间的连接已经完全建立,可以交换update, keeplive和notification消息,收到notification状态置为idle 中断连接。
BGP 消息数据包
1.open
用于标示自己,规定BGP运行的参数BGP version(2,3,4会协商最低的), AS number,Hold time (默认180,不一 样以短的为准),BGP router-id (标识BGP路由器产生和ospf一样),optional parameters(可选支持,如多协议,认 证等)
2.keeplive
维护BGP peer 关系 默认60.open协商成功就会发送
3.update
用于更新、通告路由;撤销路由通告,选路属性在path attributes属性
4.notification
BGP出错报文,用于通告BGP错误
BGP 特点:
1.BGP 版本 V1 V2 V3 V4 V4±–MP-BGP(支持多种协议)
2.BGP一般被用于大型网络的一种路径矢量型路由协议
3.BGP更新方式:触发更新
4.BGP更新地址:单播更新
5.BGP存在大量的属性,基于策略(属性)选路
6.BGP使用open报文建立邻居,使用keepalive 报文维持邻居关系
7.keepalive 周期间隔60s hold 时间为180s
8.BGP支持路由认证9.BGP支持路由聚合(汇总),支持VLSM和CIDR10.BGP非常消耗路由器资源(一个路由器只能运行1个BGP进程)
BGP AS号、邻居关系
AS号 :1-65535,公有AS—1-64511,私有AS—64512-65535
IBGP:内部BGP邻居关系,同一个AS之内建立BGP邻居
EBGP:外部BGP邻居关系,在不同AS之间建立BGP邻居
IBGP:邻居学习到路由的AD:200
EBGP:邻居学习到路由的AD:20
Local BGP 路由:本地BGP路由值 200
BGP选路原则
BGP防环机制
IBGP:IBGP水平分割,通过一个IBGP 邻居学习的路由不能传递给其他的IBGP邻居 (IBGP只传一跳原则)Originator_id,Cluster_list属性防止由反射产生的环路
EBGP:AS-Path 防环,当一条路由传递出某个AS时,在AS-Path属性中 在增加自身所属AS号,所有路由器默认不接收AS-Path包含自身AS 号的路由信息
BGP汇总
BGP的汇总,默认汇总会丢失as_path属性
As-set 汇总后依然继承汇总前明细的as-path属性Attribute-map 改变汇总路由的origin属性
Advertise-map 与as-set联用选择性的继承as-path的属性
Summary-only 汇总后只通告汇总的路由
Suppress-map 抑制部分明细路由
BGP中宣告其他BGP传来的路由,metric将增加至特别大
BGP默认路由
1.精确下发默认路由给特定的邻居
2.粗放式的下发,没有具体的邻居,发给所有邻居。
3.三个条件:
①全局得有下发默认这条命令
②路由表有默认
③network或者重发布静态
BGP过滤
1.neighbor x.x.x.x route-map x in/out //可 以根据前缀、属性、更新地进行路由过滤或者更改路由属性2.distribute-list x in/out //全局路由表。根据前缀更新地址过滤路由,不关注邻居,只关注路由
3.neighbor 1.1.1.1 prefix-list XX in/out 1/ 根据邻居过滤某条路由,精确度高