一章细说BGP

BGP基本概念

BGP:边界网关协议

BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的距离矢量路由协议

BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号是由IANA(互联网数字分配机构)分发

BGP按照运行方式分为EBGP和IBGP
EBGP是运行于不同AS之间的BGP
IBGP是运行于同一AS内部的BGP

BGP路由协议的特点

1.BGP能够承载大批量的路由信息,能够支撑大规模网络
2.BGP使用TCP作为其传输层协议(监听179端口),提高了协议的可靠性
3.BGP是外部路由协议,用来在AS之间传递数据,对稳定性要求非常高。因此TCP协议的高可靠性来保证BGP协议的稳定性
4.BGP的对等体(邻居)之间必须逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意
5.BGP对等体和IGP对等体不同,BGP对等体是指用TCP建立连接的两端,而非与IGP同概念的直连邻居,只要TCP能够建立连接,并不一定需要直连
6.BGP本身只负责控制路由,数据转发依然靠静态或IGP路由
7.BGP本身支持无类别域间路由CIDR
8.路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,更适用于Internet上传播大量的路由信息
9.BGP是一种增强的距离矢量路由协议,从设计上避免了环路的发生
10.AS之间的BGP通过携带AS-Path信息标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路
11.AS内部的BGP在AS内学到的路由不会再通告给AS内的BGP邻居,避免了AS内产生环路
12.BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择
13.BGP提供了防止路由振荡的机制(路由衰减),有效提高了Internet网络的稳定性
14.BGP易于扩展,能够适应网络新的发展。通过TLV进行扩展

BGP工作原理

5种报文,6种状态,9个原则

BGP的报文

1.Open报文:用于协商BGP对等体的各项参数,主要包括BGP版本、AS号等信息,建立BGP对等体连接(Open报文是TCP连接建立后发送的第一个报文)

2.Update报文:用于在对等体之间交换路由信息(连接建立后,有路由需要发送或路由变化时,发送Update通告对端可达或撤销路由信息及路径属性)

3.Notification报文:用于中断BGP连接(当BGP在运行中发现错误时,发送Notification报文通告BGP对端,随后与之相关的邻居关系被关闭)

4.Keepalive报文:用于保持BGP连接,也用于响应收到正确的Open报文(保活,定时发送Keepalive报文以保持BGP对等体关系的有效性)

5.Route-refresh报文:用于在改变路由策略后软复位BGP路由表,请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文

BGP状态机

空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(Open sent)、Open报文已确认(Open confirm)、连接已建立(Established);常见的为:Idle、Active、Established
1.Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送连接请求。只有收到本设备的Star事件后,BGP才开始尝试和其他BGP对等体进行TCP连接,并转至Connect状态

2.在Connect状态下,BGP启动连接重传定时器(Connect Retry)等待TCP完成连接
如果TCP连接成功,那么BGP向对等体发送Open报文,并转至Open sent状态;
如果TCP连接失败,那么BGP转至Active状态,反复尝试连接;
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态;

3.在Active状态下,BGP总是在试图建立TCP连接
如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至Open sent状态;
如果TCP连接失败,那么BGP停留在Active状态;
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP装置Connect状态;

4.在Open sent状态下,BGP等待对等体的Open报文,并收到Open报文中的AS号、版本号、认证码等进行检查
如果收到Open报文正确,那么BGP发送Keepalive报文,并转至Open confirm状态;
如果收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态;

5.在Open confirm状态下,BGP等待Keepalive或Notification报文
如果收到Keepalive报文,则转至Established状态;
如果收到Notification报文,则转至Idle状态;

6.在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refreash、Notification报文
如果收到正确Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接;
如果收到错误的Update或Keepalive报文,那么BGP久发送Notifaication报文通知对端,并转至Idle状态;
如果收到Notification报文,那么BGP转至Idle状态;
如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态
Route-refresh报文不会改变BGP状态

在这里插入图片描述

BGP对等体之间的交互原则

1.从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体
2.从EBGP对等体获得的BGP路由,BGP设备发布给它所有的EBGP和IBGP对等体
3.当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体
4.路由更新时,BGP设备只发送更新的BGP路由
5.所有对等体发送的路由,BGP设备都会接收
6.所有EBGP对等体在传递过程中下一跳改变
7.所有IBGP对等体在传递过程中下一跳不变
8.默认EBGP传递时TTL为1
9.默认IBGP传递时TTL为255

BGP路径属性

分类

公认属性
公认必遵:所有BGP实现都必须都能识别,且在Update报文中必须携带;Origin、AS-Path、Nexthop
公认自决:所有的BGP实现都必须能够识别,但不要求必须包含在Update报文中;Local-Preference、Atomic-aggregate

可选属性
可选传递:设备可以不支持该属性,但即使不支持,也应当接收包含该属性的路由并传递给其他对等体;Community、Aggregator
可选非传递:设备可以不支持该属性,不识别的BGP进程忽略包含这个属性的路由更新,并且不传递给其他BGP对等体;Med、Originator-ID、Cluster-list

选路原则

1.如果此路由的下一跳不可达,忽略此路由
2.Preferred-Value值越高越优秀,华为私有属性,仅本地有意义
3.Local-Preference值最高的路由优先
4.聚合路由优先于非聚合路由
5.本地手动聚合路由的优先级高于自动聚合的路由
6.本地通过Network命令引入的路由优先级高于本地通过import-route命令引入的路由
7.As-path的长度最短的路径优先
8.比较Origin属性,IGP优于EGP优于Incomplete
9.选择Med较小的路由
10.EBGP路由优于IBGP路由
11.EGP优先选择到BGP下一跳的IGP度量值最低的路径
当以上全部相同,则为等价路由,可以负载分担(当负载分担时,以下3条无效)
12.比较Cluster-list长度,短者优先
13.比较Originator-ID,选择数值较小的路径
14.比较对等体的IP地址,选择IP地址数值最小的路径

BGP路由优选规则(常用3种)

1.优先具有最大Preferred-Value的路由
2.优先具有最大Local-Preference的路由
3.优选起源于本地的路由
4.优选AS-path最短的路由
5.Origin(IGP>EGP>Incomplete)
6.优选Med最小的路由
7.优选EBGP对等体所通告的路由
8.优选到Next-hop的IGP度量值最小的路由
9.BGP路由负载分担
10.优选Cluster-list最短的路由
11.优选Router-ID最小的BGP对等体发来的路由
12.优选Peer-IP地址最小的对等体发来的路由

根据Local-Preference控制选路(越大越优)

Local-Preference为公认自由属性,用于告诉AS种的路由器,哪条路径是离开AS的首选路径
Local-Preference属性只能在IBGP对等体间传递,不能再EBGP对等体间船体,如果在EBGP对等体间收到的路由的路径属性中携带了Local-Preference,则会触发Notifacation报文,造成会话终端
但是可以在AS边界路由器上使用Import方向的策略来修改Local-Preference属性值,也就是在收到路由之后,本地路由赋予Local-Preference

使用AS-path属性控制选路(越少越优)

公认必遵属性,是前往目标网络的路由经过的AS号列表
作用:确保路由在EBGP对等体之间传递无环,也作为路由优选的衡量标准之一
原理:路由在被通告给EBGP对等体时,路由器会在该路由的AS-path中追加本地的AS号,路由被通告给IBGP对等体时,AS-path不变

通过Med属性控制选路(越小越优)

为可选非传递属性。Med也是一种度量值
一般情况下,BGP设备只比较来自同一AS的Med属性值。可以通过配置命令允许BGP比较来自不同AS的路由的Med属性值。执行compare-different-as-ned命令后,系统将比较来自不同AS对等体的路由的Med属性值

Origin属性控制选路

Origin属于公有必遵,定义路径信息的来源。多网段情况下只匹配某一网段进行选路
作用:标记一条路由是怎么成为BGP路由的,在EBGP邻居之间起作用。共有三种属性,IGP(i)优先级最高,EBGP(e)优先级次之,Incomplete(?)优先级最低

BGP路由反射器简述

在AS内部,为保住IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。当IBGP对等体数量很多时,建立全连开销很大,使用路由反射器(RR)则可以解决这问题
集群ID用于防止集群内多个路由反射器和集群间的路由环路。当一个集群内有多个RR时,必须为同一集群内的RR配置相同的集群ID

RR规则
1.从非客户端学到的路由,发布给所有客户端
2.从客户端学到的路由,发布给所有非客户端和客户端(发起此路由的客户端除外)
3.从EBGP对等体学到的路由,发布给所有的非客户端和客户端

猜你喜欢

转载自blog.csdn.net/TaKe___Easy/article/details/112725441
今日推荐