BGP
BGP特性
(1)边界网关协议BGP 是一种自治系统AS之间交换路由信息,
(AS内部运行IGP(OSPF ISIS RIP 静态路由)保证没有环路)并选择最佳路由的
距离矢量路由协议,确保没有环路。
(2)BGP用属性描述路径,也就是AS之间的传播方式,给路由添加非常丰富的属性。
同时BGP的路由通过携带AS的路径信息解决环路问题。IGP(OSPF,ISIS)通过SPF算法防环,
路由每经过一台设备,路径就会带上AS标识
(3)BGP使用TCP179号端口作为传输协议,并通过leeplive报文检验TCP连接。
可以通告IGP或静态路由提供TCP的IP可达性;BGP和IGP的邻居建立是不一样的,IGP设备建立邻居都是直连的
IGPTTL值通常为1 当两台设备直连加入第三台设备无法互通,因为TTL值变为0会丢弃报文。
但是BGP可以实现远距离(非直连)邻居的建立,建立邻居前提是互相可以通信。
(4)BGP拥有自己的邻居表,路由表,IP表
1邻居表 :对等体邻居清单列表 dis bgp peer 查看建立了多少组邻居
2路由表 :BGP路由信息库,保函本地BGP Speaker选择的路由信息 dis bgp Rrouting-table 查看BGP路由信息代表BGP学习到的路由信息
3IP路由表:全局路由信息库,包括所有IP路由信息 dis ip routing-table
(5)为了保证BGP免受攻击 BGP采用以下两种验证
1MD5验证:TCP建立连接进行密码验证
2keychain验证:TCP连接进行密码验证同时也对报文进行验证
3BGP只采用增量更新或者触发更新,只发送更新的路由信息减少带宽
4BGP采用路由聚合和路由衰减减少路由震荡
5BGP易于扩展,能够适用新技术的应用
BGP术语
(1)BGP对等体peer:当两台设备建立基于TCP连接,并互相交互报文,他们之间就成为对等体或者邻居。
若干采用相同策略的对等体称为对等体组
(2)自治系统AS:由同一技术所管理的区域,使用统一选路策略的一些路由器的集合,每个自治系统都有独自的编号
由IANA统一发放,自治系统编号范围为1-65535(注册的因特网号)1-64531为因特网编号,65532-655325私网编号
查看申请的AS号https://dnslytics.com/bgp/cn
(3) BGP邻居类型
1IBGP运行在同一个AS内部的BGP
2EBGP运行在不同AS的BGP
(4)网络层可达性信息NLRI,是BGP更新报文的一部分,用于列出该路径到达目的地的路由集合,由一个或者多个前缀的二元组前缀组成
(5)IBGP水平切割:通告IBGP学习到路由信息不能通告给其他IBGP邻居,主要防止产生环路
1可以传给2,2可以传给3,3不可以传给4 路由反射器可以让2传递给4,或者2和4直接IBGP邻居关系,或者做BGP联盟
(6)BGP五种报文:
1 open报文:负责与对等体建立邻居关系,保持时间180s
2 keepalive报文:在对等体之间周期性发送用于维持邻居关系 发送周期60s
3 Update报文:用于对等体之间传递路由信息,报文包含路由是否可达,撤销路由等
4 Notification:BGP对等体检测到错误,发送给对方
5 routing-refresh:刷新路由 ,报文主要包含地址,单播还是组播,占用带宽,导致业务中断,慎用
1 TCP建立连接后发送OPEN报文
2 建立连接后,路由信息发生变化,发送UPdate报文给对等体告知路由信息
3 稳定后发送keepalive维持对等体关系,保持BGP的有效性
4 路由信息发生错误发送NOtication告知对等体
5 route-refresh告知对等体自己支持刷新路由的功能
(7)BGP的邻居状态,对等体建立过程中,常见的三个状态为
1 idle:请求连接,BGP初始状态
2 alive :尝试TCP连接 BGP的中间状态
3 established,对等体交换Update报文,route-refresh报文,notication,keepalive报文
4 BGP对等体之间都成为estabished状态,才算BGP建立成功
5 loopback口:物理接口down掉 不影响loopback口。
BGP路径属性
(1)BGP属性分类
1 公认必遵:如果路由称为合法的BGP路由 必须携带以下属性:AS-path Origin NExt-hop
2 公认任意:不是必须存在Upadte消息中,
3 可选过渡:不一定所有BGP路由都支持或者识别这个属性,但任然发送给邻居
4 可选非过度:这个属性不能识别,不发送给邻居 MED(cost)
1 origin 起源属性:定义路径的来源,标记路由怎么成为BGP路由,标记为I是network进来的 标记为?是import-router进来的
2 AS-path AS路径信息属性:用于选路,记录经过的AS
AS4-AS2-AS3-AS5-AS4属性信息包含本身的AS号 直接丢弃信息,防止环路
3 local-pre 设置本地路由BGP优先级:判断最佳路径,仅能在IBGP之间作用,不通告给其他AS的路由器
4 MED cost值 开销值:仅在相邻的AS之间传递,收到此属性的AS不通告给第三个路由,用于选路
5 Community 团体属性:限定路由的传播范围,打标记,相同的标记统一管理。
1 公认团体属性:no-export no-adverser 打上这个属性 路由器不传递给其他设备
2 扩展团体属性:nn:xxx 自定义的
6 AGGREGATE原子聚合属性:多个路由聚合成一条路由,下一台路由删除明细路由,更新一条带原子聚合路由信息的路由
BGP路由引入和发布策略
(1)BGP本身不发现路由,因此需要其他路由引入到BGP路由表,实现AS间的路由互通
(2)当一个AS需要将路由发送给其他路由时,可以使用路由策略过滤或者设置路由属性MED进行选路
(3)引入路由有两种方式network和imoport
? 1 import:按协议类型引入,将OSPF和ISIS协议中的路由引入到BGP路由中,还可以直连路由和静态路由
i 2 network:逐条IP路由条目引入,比import更精细,准确性和优先级更高。
(4) BGP路由信息封装在UPdate报文中传递,BGP在邻居关系建立后通告路由。
(5)Update包含以下信息:
1 NLRL 网络层可达信息 用来公布IP前缀和和前缀长度
2 路径属性 防环
3 撤销路由 无法到达的路由的前缀和前缀长度
(6)BGP通告路由规则
1 仅将自己最优的路由发送给邻居。
2 通告EBGP邻居学习到最优路由发送给所有BGP路由
3 通告IBGP学习到的最优路由不发送给其他路由
4 IGB和BGP同步 华为默认关闭,永远不会开启。解决路由黑洞
5 路由黑洞:A由一条路由信息,传递给B,B和D为IBGP邻居传递给D,此时,C没有路由信息。
反之,E建立连接过程中,先找到D,D因为递归查询找到C,此时C没有路由信息会把数据丢掉,导致路由黑洞。
解决方案:C也建立BGP
(7)BGP路由器通告给邻居后,每个BGP邻居会进行路由优选,路由选择有三种情况
1 该路由是到达目的的唯一路由,直接优选
2 对于到达同一目的的多条路由,选择优先级最高的
3 对于到达同一目的多条优先级相同的,必须用更细的策略选择一条最优的。
(8)路由选路原则
1 优选协议首选值(Preval)最高的路由,华为设备特有,在本地无效
2 优选本地优先级(Local-Pre)最高的路由
3 依次优选 ,手动聚合,自动聚合 import引入 network引入
4 优选As-path最短的
5 依次优选起源属性(Origin)为IGP,EGP,incomplte
6 优选MED值低的。
7 依次优选EGP路由 IGP路由
8 优选routerID小的路由
9优选从较小的IP adress对等体学习到的路由。
(9)路由衰减:用来解决路由器不稳定的问题。设置惩罚值,每次路由震荡增加惩罚值,15min增加到一定阈值不使用该路由,15min内路由没有发生震荡惩罚值减半
1 路由器不稳定的主要表现是路由震荡,指某条路由反复出现和消失。
2 发生路由震荡时,BGP对等体会反复发送Update报文确定连接,严重损耗设备CPU和带宽
3 BGP采用路由衰减来减少路由震荡所造成的影响。
(10)路由聚合只能聚合通过Import引入的路由信息,同时聚合路由时,会隐藏明细路由导致路由环路
解决方案:加入一条属性as-set,保留原有的AS-path
(11)BGP反射器:因为水平切割机制,IBGP中的远距离设备无法到达,全互联导致会话过多占用带宽,
1 IBGP种有三种角色:
1 路由反射器 RR:路由反射器和他的客户机做一个集群
2 客户机:不需要建立BGP关系
3 非客户机:非客户机之间需要建立全互联
2 多台RR可能造成环路,此时可设置集群cluster防止环路的产生
(11)BGP联盟:将大的AS分成多个小AS,解决水平切割机制导致的互联问题。这些小AS称为成员AS
成员AS之间需要EBGP连接,他们不需要全互联,但是IBGP同时需要
1 BGP联盟种AS_PATH有四种
1 AS_set:由一系类AS号无序组成
2 AS_sequence:由一系类AS号有序组成
3 AS confed_set :只能在本地联盟传递
4 AS confed_sequence:只能在本地联盟传递
2 联盟采用AS_confed防止环路,联盟内的AS-path无属性变化
1 联盟内的EBGP会话,子AS号会添加到AS confed_sequence前面
2 联盟内的IBGP会话,不修改AS属性
3 外部AS会话,子AS号会在AS_path种删除。大AS号会添加到前面。
3 对于外部对等体来说,联盟内部的结构是不可见的