BGP总结

边界网关协议 (英文:Border Gateway Protocol,BGP)

  BGP是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或前缀表来实现自治系统(AS)之间的可达性,属于矢量路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。BGP构建在 EGP 的经验之上,其系统的主要功能是和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。

AS划分更新:https://www.cidr-report.org

结构和功能

由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)。

由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP (External/Exterior BGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edge router)。在互联网操作系统(Cisco IOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。

BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。

BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;

AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路

IGP协议追求:

1,无环(选路佳)

2,收敛快  

3,占用资源少

EGP协议的追求:

1,可控性强(管理员可以方便进行策略干涉选路)

2,可靠性

3,AS-BY-AS  以一个AS为一跳

EBGP邻居关系 ----  外部BGP邻居关系,建邻的两台设备处于不同的AS中

IBGP邻居关系  ---- 内部BGP邻居关系,建邻的两台设备处于相同的AS中

BGP特点

  1. 无类别路径矢量 -----距离矢量的升级版---AS--BY--AS
  2. 使用单播更新来发送所有信息;基于TCP 179端口工作
  3. 增量更新--仅触发无周期
  4. 具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
  5. 可以在进项和出项对流量实施强大的策略--可控性
  6. 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
  7. BGP支持认证和聚合(汇总)

BGP数据包

 基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障;

首先通过TCP的三次握手来寻找到邻居;

Open 

仅负责邻居关系的建立,正常进收发一次即可;携带route-id;

Keeplive

 保活 (周期1min查询邻居关系是否存在;实际保活TCP会话;hold time 默认3min)

Update 

 携带路由条目     (目标网络号+各种属性)

Notification

出现错误数据时收发

BGP的工作过程

1、配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话;之后所有的BGP协议数据包基于该会话进行传输;会话建立后,邻居间正常收发一次open报文建立BGP的邻居关系,生成邻居表;BGP协议的open报文中将携带本地的RID—生成方式和OSPF一致;仅需要本地及本地所有邻居唯一即可;邻居关系建立后,默认每1min,使用keeplive周期保活邻居关系(周期保活TCP会话)

2、邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议中进行宣告;使用updata数据包进行邻居间路由共享;之后生成BGP;--- 装载本地发出及接收到的所有路由条目;默认将最优路径加载于路由表中(最优-仅仅基于BGP的选路规则,不一定为最佳路径;BGP默认不支持负载均衡)

3、收敛完成,仅keeplive周期保活即可;

4、若出现错误信息,邻居间将使用Notification报文进行报错操作

BGP的防环机制 –水平分割

1-》EBGP水平分割—解决EBGP环路;

2-》IBGP水平分割—解决IBGP环路由中的一种机制

BGP的路由黑洞问题

  1. 物理、逻辑拓扑全连 --  物理链路直连、或者vpn
  2. 邻居关系全连 – 网络中所有设备运行BGP
  3. BGP重发布到IGP(LAB)MPLS 多协议标签交换--- 推荐做法

配置

建邻

[r1]bgp 1   启动时需要定义AS号,没有多进程概念;一台设备只能在一个AS中工作
[r1-bgp]router-id 1.1.1.1  建议配置RID;RID的生成规则同OSPF;

 

单链路的EBGP邻居关系
[r1-bgp]peer 12.1.1.2 as-number 2
           对端接口ip地址    对端所在的AS号
多链路的EBGP邻居关系
建议使用环回作为源、目标接口
1)IP可达问题—一般使用静态
[r4]ip route-static  5.5.5.0 24 45.1.1.2
[r4]ip route-static 5.5.5.0 24 54.1.1.2
2)建立EBGP邻居关系
[r4]bgp 2 
[r4-bgp]peer  5.5.5.5 as-number 3 
[r4-bgp]peer  5.5.5.5 connect-interface LoopBack 0
3)TTL问题,默认IBGP邻居间的数据包TTL值为255,EBGP邻居间TTL值为1;
  因此若使用环回来建立EBGP邻居关系,TTL不够;故,必须修改
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2

display  tcp status    显示TCP状态

display  bgp peer     查看BGP邻居表

宣告路由

[r1]bgp 1 
[r1-bgp]network 1.1.1.0 24
切记:宣告时,所宣告的网络号必须和本地路由表中的记录完全一致;

display  bgp routing-table    查看BGP路由表

[r2]bgp 2 
[r2-bgp]peer  3.3.3.3 next-hop-local   R2将路由传输给3.3.3.3时,修改下一跳地址为R2;
  • BGP的宣告问题:若通过BGP协议传递的路由条目与本地通过其他协议学习到的条目目标一致,将出现:
  1. 该路由同时作为与其他BGP邻居建立邻居关系时的底层路由,那么这条BGP路由将不优,不能传递也不能加表
  2. 该路由不作为建立其他BGP邻居的路由,将在本地不加表,但可以传递,属于优的路由;
  • 重发布    :BGP协议宣告的路由,基本是本地通过IGP学习到的本as路由;数量较大,若逐条宣告,配置量很大,但可控性强; 也可以在同时运行BGP和igp的设备,将IGP协议重发布到BGP协议中,来实现批量的路由宣告效果;宣告相当于逐条的重发布,重发布相当于批量的宣告;两者产生的路由条目,起源属性不同,其他属性默认完全一致
  • 自动汇总  ( 默认cisco和华为设备均关闭了自动汇总):自动汇总对于BGP正常通过network宣告产生的路由没有影响;仅针对从IGP重发布到BGP的路由条目产生影响;--- 路由条目以主类长度发送,不携带cost值;
[r1]bgp 1 
[r1-bgp]summary automatic  开启自动汇总,建议维持默认关闭状态
  • 手工汇总—聚合:1.利用了BGP的宣告的特点,本地路由表中任意路由,不关注来源均可以宣告的BGP中;不用逐一宣告明细路由,先本地手工静态一条指向汇总网段的空接口防环路由,然后再将其宣告到BGP协议中来;从IGP表中宣告到BGP协议中的条目,仅携带目标网络号和度量值;聚合的缺点是将多个网络号合成一个,导致访问整个聚合网段时,仅存在唯一的路径;若在多路径建邻的前提下,将无法精确的选路;故在大型的多链路的网络中为了更好控制选路,必然在传递聚合条目的同时,再在最佳路径处传递部分的明细路由;若需要在传递聚合条目的同时,传递部分明细路由,只需要在宣告的空接口路由后,逐一宣告需要的明细路由即可;以上做法的缺点是不能携带原有明细路由的cost值,因为宣告的是本地路由表中人为添加那条静态空接口路由;2)标准的BGP路由聚合—先逐一手工宣告明细,或批量重发布路由;   再进行聚合配置;默认在本地生成空接口防环路由;
[r2-bgp]aggregate 3.3.0.0 21     聚合和所有明细路由均发送
[r2-bgp]aggregate 3.3.0.0 21 detail-suppressed  抑制所有的明细路由,仅发送聚合条目;
  • 有条件的打破IBGP水平分割:1.路由反射器  --   RR(反射器)、客户端、非客户端;2.联邦,将一个大as逻辑为多个小as;小AS使用私有AS号

路由反射 

 客户端、非客户端必须分别为RR的IBGP邻居关系;三种角色构建为一个簇(组);一个簇内可以存在多台设备,但至少一个簇内存在一个RR和一个客户端;

规则:

1)RR从一台EBGP邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;2)RR从一台客户端邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;3)RR从一台非客户端邻居处学习到的路由可以共享给本地的其他客户端、EBGP;不能共享给其他的非客户端;(非非不传

注:被反射路由,在反射过程中,其属性不发生任何变化;若RR接收的条目不优,不具备传递性,将不被反射;

 联邦

  1. 所有的启动,建邻、管理均基于小AS号进行
  2. 联邦内所有设备需要声明自己所在的大AS号
  3. 小AS间的ebgp邻居需要互指对端的小as号
[r3-bgp]peer 2.2.2.2 reflect-client    ibgp邻居2.2.2.2成为本地的客户端,同时本地成为RR;
[r3]bgp 64512
 [r3-bgp]router-id 3.3.3.3
 [r3-bgp]confederation id  2   声明本地的大AS号
 [r3-bgp]confederation peer-as 64513   对端小AS号
 [r3-bgp]pe 2.2.2.2 as-number 64512
 [r3-bgp]pe 2.2.2.2 connect-interface LoopBack 0
 [r3-bgp]pe 4.4.4.4 as-number 64513
 [r3-bgp]pe 4.4.4.4 connect-interface  LoopBack 0
     [r3-bgp]pe 4.4.4.4 ebgp-max-hop 2

BGP的选路

比较前提,多条BGP路由目标相同,且均可优(下一跳可达、同步关闭),具有相同的优先级(管理距离)

 

属性:华为和cisco均存在6种基本属性   第一种均为私有属性

属性传播范围默认值大优/小优

Preference_Value

 不传播   

 0    

 大

 

 

  • [r3-bgp]pe 2.2.2.2   preferred-value   1      本地从邻居2.2.2.2处学习到的所有路由优先值修改为1;

本地优先级

IBGP邻居关系间

 100

[r2]bgp 2 
[r2-bgp]pe 3.3.3.3 route-policy p export  调用时在控制层面的出或入向均可,但必须为IBGP邻居关系;

as-path

 优选经过AS数量较少路径;该属性的自动添加是在EBGP邻居关系间进行

 [r4]bgp 2 
 [r4-bgp]pe 14.1.1.1 route-policy as import  注:可以在控制层面的入或出方向调用,但只能在ebgp邻居间操作;可干涉ebgp、ibgp关系选路;

起源属性   条目的产生方式   

network  宣告本地路由表中的任意路由  

import   将本地通过其他协议学习的路由重发布到BGP协议中  

egp     早期的ebg协议学习的路由重发布到BGP协议中      

[r4]bgp 2  
[r4-bgp]pe 3.3.3.3 route-policy o export

MED 多出口的鉴别属性

BGP协议默认不存在cost;MED就是人为的利用路由器优选路径的规则—先比较管理距离(华为为优先级),若一直再比较度量值(华为为cost)

 BGP协议在特定条件下携带本地到达目标的cost值;本地宣告(重发布)自己路由表中的路由后,将其传递给本地的ebgp邻居,将携带cost值;对于其他AS的设备学习到从同一个as传递过来的路由,优选MED最小的路径;

管理员可以在控制层面传递路由的过程中,手工修改MDE;最常用于干涉ebgp选路;
常常用于AS1干涉AS2对AS1的选路;
[r1]ip ip-prefix med permit 1.1.1.0 24
 [r1]route-policy med permit node 10
[r1-route-policy]if-match ip-prefix med
[r1-route-policy]apply cost 10
[r1-route-policy]q
r1]route-policy med permit node  20
[r1-route-policy]q
[r1]bgp 1 
[r1-bgp]pe 14.1.1.2 route-policy med export

由于实际工程中,管理员只能在一个AS中配置,故无法通过查看BGP表来判断选路结果,可以通过扩展ping来解决

[r1]ping -r  -a 1.1.1.1 3.3.3.3

BGP的社团属性 –BGP的扩展属性

[r1]bgp 1

[r1-bgp]peer 12.1.1.2 route-policy com export

默认华为设备也不传递社团属性,故使用社团属性时,必须定义传递性  

[r1-bgp]peer 12.1.1.2 advertise-community   逐跳行为,每台设备均需开启传递性

no-advertise  接收到的条目中若存在该社团属性,将不再传递该路由

no-export   接收到的条目若存在该社团属性,将不传递给下一个AS

no-export-subconfed  接收到的条目若存在该社团属性,将不传递给下一个小AS

若网络没有小AS,仅存在大AS时no-export和no-export-subconfed作用一致

[r1]route-policy com permit node 10

[r1-route-policy]apply community no-advertise  针对所有的流量修改属性

关于BGP协议的MA网络中下一跳问题

在一个MA网段中运行BGP协议;若该网段存在EBGP邻居关系;那么只要使用该网段内的物理接口ip地址,作为邻居建立地址,那么ICMP重定向将为我们定义最佳下一跳地址,作为BGP路由中的下一跳地址;

[r1]display  bgp routing-table  peer 123.1.1.2 advertised-routes  查看本地向该邻居发送的BGP路由

[r1]display  bgp routing-table  peer  123.1.1.2 received-routes  查看本地从该邻居处学习到的路由

BGP的认证

[r3-bgp]peer  34.1.1.2 password cipher 123456 
双方密码需要一致,密码默认基于MD5计算后转发 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值