BGP基本概念
BGP最新的版本是BGP第4版本(BGP4),边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达, 属于无类别的路径矢量协议
BGP有两种运行方式,当BGP运行于同一AS内部时,被称为IBGP(Internel BGP,内部边界网关协议);当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)。
每个AS都有唯一的自治系统编号,这个编号是由IANA分配的。编号范围是1~65535(其中1到64511是注册的因特网编号,64512到65535是私有网络编号。)
为方便管理规模不断扩大的网络,网络被分成了不同的自治系统。BGP协议被用于实现在AS之间动态交换路由信息、进行路由优选、避免路由环路、更高效率地传递路由和维护大量的路由信息
BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目,BGP的水平分割,IBGP在一个AS内部学到的路由不再通告给AS内的IBGP的其他邻居
BGP特点
- 无类别路径矢量 ,AS–BY–AS,路径矢量(一个AS为一跳)— 距离矢量(一个路由器为一跳)
- 使用单播更新来发送所有信息;基于TCP 179端口工作
- 增量更新–仅触发无周期
- 具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
- 可以在进项和出项对流量实施强大的策略–可控性
- 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
- BGP支持认证和聚合(汇总)
BGP数据包
基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障;先通过TCP的三次握手来寻找到邻居;
- open:用来建立最初的BGP连接。(包含hold-time,router-id)
- Keepalive:)保活 周期1min查询邻居关系是否存在;实际保活TCP会话
- Update:对等体之间使用这些消息来交换网络层可达性信息。携带路由条目 目标网络号+各种属性
- Notification:这些消息用来通知出错信息。
BGP的路由黑洞问题
非直连建邻到达控制层面路由条目可传递,递归计算路由可达;
而实际数据层面流量在经过没有运行BGP协议的路由器时无法通过,最终有去无回
- 物理、逻辑拓扑全连 – 物理链路直连、或者vpn
- 邻居关系全连 – 网络中所有设备运行BGP
- BGP重发布到IGP(LAB)
- MPLS 多协议标签交换— 推荐做法
IBGP水平分割
本地从一个IBGP邻居处学习到的路由条目,不得传递给本地的其他IBGP邻居;
AS-BY-AS在一个AS内部条目传递的过程中,默认不会修改任何的属性
解决方法
路由反射器 角色:RR反射器 客户端 非客户端
无论客户端还是非客户端都必须是RR的IBGP邻居; 由RR作为中心点与多个客户端、非客户端构成一个簇(组);在一个簇内存在一台RR和至少一台客户端;也可以一台RR和多个客户端、多个非客户端;或者一个RR与多个客户端,没有非客户端;
反射规则:不优路由不能被传递,自然也不能被反射;
- 从一个EBGP邻居处学习到的路由,可以传输给客户端、非客户端,已经本地的其他EBGP邻居;
- RR从一个客户端学习到的路由,可以传递给本地其他的客户端、非客户端、其他的EBGP邻居;
- RR从一个非客户端学习到的路由,可以传递给本地的其他客户端、EBGP邻居;不能传递给其他的非客户端;
联邦-将一个AS,逻辑的分为多个小AS;对外依然遵循大AS号传递规则;
但小AS间为联邦内的EBGP邻居关系,可以像EBGP关系一样传递路由,但默认不对属性进行修改;
- 所有操作基于小AS号进行;
- AS内所有设备需要定义自己所在的大AS号
- 小AS间的BGP设备需要告知对端的小AS号
可以将联邦和反射器结合使用
BGP属性
1.PrefVal(优先级)
传播范围 默认值 大/小 优
不传播 0-65535 大
该属性为私有属性(华为)
负载分担:访问不同目标时,让路由器选择不同的路径;起到所有路径被使用效果;
路由策略来实现—在BGP路由控制层面传递的过程中,抓取路由修改属性
2、LocPrf 本地优先级
传播范围 默认值 大/小 优
整个AS内部-IBGP邻居间 100(0-255) 大
用于干涉IBGP邻居关系下选路最常用属性;
3、优先本地下一跳
本地在bgp协议中宣告本地路由表中的IGP路由时,在本地的BGP表中下一跳地址为0.0.0.0;
而通过BGP从其他邻居处学习到的路由,下一跳地址正常不为0.0.0.0;本地优选0.0.0.0的路由传递给本地的其他BGP邻居;
4、AS-PATH – 记录条目经过的所有AS编号
注意AS号的添加,一定是在EBGP邻居间进行的;
优选经过的AS号数量最少的路径;同时该属性用于EBGP水平分割,接收到路由条目中若存在本地的AS号将拒绝接收;
可以人为的在EBGP邻居关系间,增加AS号的数量来干涉选路;修改A路径,优选B路径;
因为人为操作只能添加,不能减少;
可以干涉到EBGP关系/IBGP关系选路,但只能在EBGP关系设备间配置;
解决方案:重复添加实际已经经过的AS编号来增加数量
5、起源属性 – 该条目的来源—通过什么方法进入到BGP协议的
BGP宣告本地路由表中路由 i
将本地路由表中IGP路由重发布到BGP协议 ?
将本地路由表中EGP路由重发布到BGP协议 e
规则 i优于e优于?
控制层面流量的入或出接口调用均可;
6、MED -多出口鉴别属性
BGP协议默认没有度量值,没有cost;所谓的MED就是人为的在路由条目中编写一个cost数值,干涉选路;
可用于干涉EBGP/IBGP关系下的选路;最常用于干涉EBGP关系选路;
常常用于AS1干涉AS2对AS1的选路;
BGP选路规则
二、BGP选路规则
比较前提,多条BGP路由目标相同,且均可优(下一跳可达、同步关闭),具有相同的优先级(管理距离)
- 优选Preference_Value值最高的路由(私有属性,仅本地有效)。
不传递 权限最高属性 可以干涉EBGP/IBGP选路 - 优选本地优先级(Local_Preference)最高的路由。
IBGP邻居关系间传递 只能,最常干涉IBGP关系的选路 - 优选手动聚合>自动聚合>network>import>从对等体学到的。
- 优选AS_Path短的路由。
EBGP/IBGP关系均可被干涉,但只能在EBGP邻居间修改 - 起源类型IGP>EGP>Incomplete。
起源属性 i优于e优于?; 可在控制层面任意接口修改 - 对于来自同一AS的路由,优选MED值小的。
默认为0,宣告或重发布(关闭自动汇总)路由时携带本地到达目标的cost
最常用于干涉EBGP选路的属性 - 优选从EBGP学来的路由(EBGP>IBGP)
- 优选AS内部IGP的Metric最小的路由。
- 优选Cluster_List最短的路由。
- 优选Orginator_ID最小的路由。
- 优选Router_ID最小的路由器发布的路由。
- 优选具有较小IP地址的邻居学来的路由。