目录
简介
BGP是一种高级距离矢量型协议,用于解决AS间路由信息的传输,和eigrp一样初始化的时候BGP邻居传输的是整张路 由表,以后只传输网络变化的部分-增量更新(更新比较慢)。采用TCP连接传输,端口179,BGP没有另外设置可靠传 输机制,TCP本身就是可靠的。
Igp中的路由协议的重点在路由的发现和计算
Bgp主要在路由的控制和选择
BGP的AS号
2字节:1-65535 公有1-64511 私有64512-65534
4字节:65536-4294967295 (扩充)
Bgp版本有四个,高往低兼容
Bgp报文
邻居状态机
没有自动发现机制,只能手动neighbor BGP-peer-IP
Idle state
配置了neighbor 或重置了邻居,BGP初始化所有资源打开connectRetry 计时器,初始化邻居的TCP连接,接听来自邻居 初始化消息并将它的状态转到connect状态
为了防止差错的持续出现造成BGP邻居的摆动,connectRetry计时器会呈现级数级的增加第一次60s,下一次的为前一 次的2倍120s,再下次240s。
Connect state
BGP等到TCP连接完成以后再决定后续的动作
1.如果tcp同步成功,BGP将connectRetry 清零,完成初始化并发送一个open消息给邻居并把状态置为open
2.如果失败,BGP继续监听邻居发出的连接,重置connectRetry计时器并转移到active状态
3.如果connectRetry时间超时,计时器重新开始,在试图与邻居建立TCP连接,bgp保持connect状态,出现其他事件转 入idle状态。
Active state
BGP试图与邻居建立一个TCP的连接
1.如果TCP连接成功,BGP将connectRetry计时器清零,完成初始化,给邻居发送Open消息并将状态置为open,hold时 间置为4mins
2.如果在active状态,connectRetry计时器超时回到connect状态并重置connectRetry计时器
3.如果试图与一个未知IP建立TCP会话,同时connectRetry计时器重置,连接拒绝并保持active状态
4.任何一个事件都会导致重回idle
Open send state
在此状态,已经发送了open消息,BGP等待邻居发送的open消息
1.收到open消息,如果发现差错,将给邻居发送一个notification消息并置为idle
2.如果收到open消息没错,将发送keeplive给邻居,并建立IBGP或者EBGP状态置为open confire state
3.如果收到TCP断开消息则断开BGP连接重置connectRetry计时器,状态置为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 中断连接。
Ibgp邻居关系与ebgp有何不同
Ibgp邻居关系不能中转路由,不改路由下一跳
ebgp邻居关系能中转路由,改路由下一跳
用上图分析邻居关系
R1宣告的路由R2,R3有,R4,R5没有。 R3宣告的路由每个路由器都有
Ibgp邻居关系不能中转路由的原因?
Bgp主要研究域间的路由传输, bgp没有为ibgp设置算法,防环的终极方案是不中转,不该下一跳
Ibgp邻居关系不能中转路由的后果?
1、会遇到域外路由下一跳不可达, 方案:手工更改下一跳
2、全互联建邻, 方案:反射(主要)(本质是中转路由,肯定有强力的防环机制)、联盟
bgp属性
路由11条属性(cisco 其他的没有weight)
weight ,origin ,as_path ,next_hop ,local_pref ,atomic_aggregate ,
Aggregator ,community ,MED,originator_id ,cluster_list
分为4类
- 公认必遵
所有BGP路由器必须识别遵守的原则有origin,as_path ,next_hop
- 公认可遵
所有路由器都能识别但是不一定要遵守,local_pref,atomic_aggregate
- 可选传递
不是所有BGP路由器都能识别,但是所有BGP都能传递,aggregator和community
- 可选非传递
不是所有路由器都被识别,不能识别的BGP路由器就丢弃它,MED,originator_id和cluster_id,weight
Weihgt
cisco私有属性,对于离开AS的路由在路由器选择那一条最优,本台路由器产生为32768,
学习的为0 别的路由器传的路由在本路由器的weihgt为0. 不能传递(只在本路由器有用),
适用于一台路由去往别的AS有多个出口,越大越优,。
Origin(本质识别路由来源,可以用来选路(不多用))
起源,0表示宣告(i),1表示EGP学到(E),3表示其他手段得到(重发布?),越低越好 i>E>?
AS path(路径记录)
一条路由在传输过程中经历了那些AS(不算自己),可用来放环。越短越好
关掉水平分割的方法:
Nei X.X.X.X allowas-in 允许和具有自己相同的AS的路由进入本AS
Nei x.x.x.x as-override 把具有和其他AS相同AS号的路由放入这个AS
Next_hop
到达路由的下一跳路由器IP地址
通告路由器和接受路由器不在一个AS,next_hop为通告路由器的更新地址
通告路由器和接受路由器在一个AS内,next_hop为通告邻居的更新地址
通告路由器和接受路由器在一个AS内且为邻居关系更新地址为不同AS,则为外部更新地址
Local_pref(只有选路功能,只能在ibgp之间传)
不能传输到其他AS,值越高越优,用于本AS选择离开AS的出口路由器默认为100(适合于本地出口在多个路由器上)
MED
用于选择流入AS的入口路由器,可以在俩个AS之间传递,不能传递跟第三个as,越低越好默认0,就是度量值
Med同一个as才能比较med
解决办法:
Atomic_aggregate summary-only把明细干掉 as-set 继承as-path属性
用来警告下游路由器路由聚合后产生的路由路径丢失。
BGP支持向BGP邻居传递重叠路由可以选择多种方式
1.明细和粗略的都公布 //aggregate-address 10.0.0.0 255.0.0.0
2.只公布明细 //aggregate-address 10.0.0.0 255.0.0.0 suppress-map
3.只公布没有重叠的 //aggregate-address 10.0.0.0 255.0.0.0 summary-only as-set
4.聚合后公布聚合后的路由 //aggregate-address 10.0.0.0 255.0.0.0 summary-only
5.明细和粗略都不公布
Aggregator
用来通告汇总路由的汇聚路由器 BGP_ID(cisco)
Community(重要)(是个路由标记)唯一一个拥有子属性的
1.internet 默认属性,可以给任何bgp发送
2.no_export 只能在一个AS内传递,可以在联盟内传递。
3.no_advertise (不通告)不在IBGP邻居间传递
4.local-as 不向任何EBGP邻居发送(包括联盟的EBGP邻居)
分为标准和扩展community
标准是普通路由可以设置的团体公有和私有
扩展是mpls中的vrf路由传递定义的
设置团体属性
匹配已经设置的团体属性使用 ip community-list 从而可以进一步在route-map中用这个community-list去设置策略。
Show ip bgp community 显示团体属性
Originator_id
路由反射使用,是路由发起者产生的一个32比特的值,该值是本地路由发起者的RID,如果路由发起者从属性上看到 自己的RID,说明有环路就忽略
R3的路由A会通过RR反射器R1,R2再返回R3 ,形成环路 使用Originator_id防环
Cluster_list
路由反射器使用,是路由进过反射器簇ID的一个序号。如果反射器在属性里看到自己的簇ID就说明有环路,忽略
R3的路由A会 RR反射器R1,R4,R3中来回传递 使用Cluster_list
BGP选路原则
- 首先比较weight 大优--不传递 ,Cisco私有 EBGP/IBGP
- 比较本地优先级,默认100;仅IBGP邻居传递,大优 IBGP
- 优选本地下一跳
- 比较as-pash,经过的AS数量少优,EBGP邻居可增添 EBGP/IBGP
- 起源码最小 i-igp=0 e-egp=1 ?-incomplete=2 EBGP/IBGP
- MED值最小 EBGP/IBGP
- 普通的EBGP邻居优于联邦内EBGP邻居优于IBGP邻居
- 优选最近的IGP邻居(IGP度量小)
- 优选最先建立EBGP邻居
- 最小BGP邻居的RID
- 最小邻居的ip地址
如果比到第八条之后 如果最大负载均衡数大于1(默认为1)就比到第八条,第九条不比
BGP路由汇总
默认汇总会丢失as_path属性
As-set 汇总后依然继承汇总前明细的as-path属性
Attribute-map 改变汇总路由的origin属性
Advertise-map 与as-set联用选择性的继承as-path的属性
Summary-only 汇总后只通告汇总的路由
Suppress-map 抑制部分明细路由
BGP默认路由
1、精确下发默认路由给特定的邻居
2、粗放式的下发,没有具体的邻居,发给所有邻居
必须先创建一条静态的默认路由,并且重分布/宣告静态至BGP中,才会产生默认路由,并通告给其它的BGP邻居
Bgp路由过滤
针对下一跳来过滤路由使用route-map 匹配
其他
AS欺骗 (如下 邻居2.2.2.2 认为R1 属于as10,实际上属于100)
反射器只有非客户端之间不传递路由
如果bgp宣告了宣告了bgp学习到的路由,这条路由metric 变的非常大