BGP学习笔记(一)

一、IGP和EGP的比较

二、BGP协议特点

三、BGP的数据包类型

1.open包

2.keepalive包

3.update包

4.notification包

四、BGP的工作过程

结构突变

五、BGP邻居关系

六、BGP的路由黑洞

解决BGP路由黑洞

七、BGP的防环机制(水平分割)

八、BGP的配置

1.建立BGP邻居关系

九、BGP协议的MA网络中下一跳问题


BGP:边界网关路由协议,无类别路径矢量路由协议,属于EGP协议,作用于AS于AS之间。用于AS与AS之间交互路由协议。

AS:自治系统。编号0-65535。公有1-64511,私有64512-65535

一、IGP和EGP的比较

  IGP需要:hop-by-hop收敛速度快,选择路径佳(防环),占用资源少

  EGP协议需要

  • 具有非常高的可控性,将IGP协议产生的路由转发到其他AS,不能精确选路,必须由管理员来干涉选路;
  • 具有非常高的可靠性,更新量庞大,但又只能做增量更新,基于TCP工作
  • AS-BY-AS:一个AS为一跳

BGP协议不生产路由,只是路由的搬运工。

TCP的特点:单播,非直连通信

路径矢量和距离矢量均选择共享路由表来收敛,但距离矢量基于一台路由器为一条,路径矢量基于一个AS为一跳

二、BGP协议特点

  • 无类别路径矢量(AS-BY-AS):距离矢量的升级版
  • 使用单播更新来发送所有信息,基于TCP179端口工作
  • 增量更新:仅触发无周期
  • 具有丰富的属性来取代IGP中度量进行选路
  • 可以在进项和出项对流量实施强大的策略
  • 默认不被用于负载均衡,通过各种选路规则仅仅产生一条最佳路径
  • BGP支持认证和聚合(汇总),一般是超网性汇总

三、BGP的数据包类型

所有的数据包均基于TCP工作,建立TCP会话(也可以非直连建邻)的前提是IP可达

EGP协议承载与IGP之上:

非直连建邻时,需要设备间IP可达,需要IGP协议来完成;

BGP实际传递的是IGP计算所得路由

1.open

用于邻居关系的建立,携带Root ID。邻居发现由TCP的三次握手来完成。

2.keepalive

周期保活(实际保活TCP的会话),默认1min

3.update

路由信息==目标网络号+属性

4.notification

报错包

四、BGP的工作过程

1.启动配置完成后,邻居间使用TCP三次握手来进行TCP的会话;会话建立后,使用open包建立邻居关系,生成邻居表;--正常情况下,open报文仅收发一次

2.建立邻居关系的设备间,使用update包来共享路由信息,BGP设备将所有本地发出及接收到的路由信息全部状态于本地的BGP表;默认选择接收到的最优路径,放置于路由表中;收敛完成,每隔1min,keepalive包保活一次TCP会话。

结构突变

1.新增网段:使用update包告知

2.断开网段:使用update包告知

3.无法沟通:hold time超时,断开邻居关系和TCP会话;

注:BGP路由协议基本传递聚合路由。若明细路由发生新增或断开,不影响聚合条目。

五、BGP邻居关系

BGP协议中邻居可以非直连,故把邻居称为peer(对等体)

EBGP邻居关系:不同AS间设备建立的邻居关系。通过EBGP邻居学习的路由管理距离为20(EBGP)

IBGP邻居关系:同一AS内设备建立的邻居关系。通过IBGP邻居学习的路由管理距离为200(IBGP)

六、BGP的路由黑洞

考虑到成本和适用性,正常在一个AS内部不是所有的设备均运行BGP协议,故将出现路由可达,但实际数据在传输时,经过中间未运行BGP的路由器时,将会被丢弃,导致路由黑洞。

路由黑洞:控制层面可达,数据层面不可达。

1.BGP协议是基于TCP单播沟通,可以穿越中间设备(中间设备不会去看这个包,和中间设备是否运行BGP协议无关)来传递路由。

2.BGP的路由正常功能均需要递归多次到直连路由,运行BGP协议的路由基本都可以完成递归查表,认为是可达的,不关注下一跳设备是否由有路由,只要本地能到下一跳就行

3.BGP生成的路径是唯一的,但递归后流量可能可以多路径传输

解决BGP路由黑洞

1.物理链路全连

2.邻居关系全连:所有设备均运行BGP

3.将BGP重发布到IGP(LAB环境下使用)

4.MPLS:多协议标签交换(最佳解法)

七、BGP的防环机制(水平分割)

EBGP水平分割:防止EBGP邻居关系下的环路

路由条目在BGP协议中传递时,存在一个叫AS path属性;该属性是记录经过的每一个AS编号;BGP协议拒绝接收存在本地AS编号的路由

IBGP水平分割:防止IBGP邻居关系下的环路

因为AS-BY-AS规则,一条条目在一个AS内部传递时,默认没有任何属性的变化;故很容易在IBGP邻居关系产生环路。

IBGP水平分割从一台IBGP邻居处学习到的路由条目不得传递给下一台IBGP邻居关系。该设计为实现路由的正常传递,必须进行两两建立IBGP邻居关系,配置量几何增长。有条件的打破IBGP水平分割:联邦、路由反射器

八、BGP的配置

BGP学习笔记(一)

1.建立BGP邻居关系

1)建立直连EBGP邻居关系

在BGP协议中邻居关系的建立于路由条目的宣告是分开进行的。双方均需配置

BGP学习笔记(一)

2)建立IBGP邻居关系

正常一个AS内部网络拓扑不会是直线型的,因此IBGP邻居关系间实际存在多条可达路径,建议使用环回接口来作为建立TCP会话的源、目IP地址。存在备份路径,同时基于多条路径通信。使用环回地址作为目标时,也必须将源IP地址改为环回。

BGP学习笔记(一)

3)EBGP邻居间存在多条路径

建议使用环回建立

1>IP可达:建议使用静态

2>建立BGP邻居关系

BGP学习笔记(一)

3>IBGP邻居关系建立的数据包TTL默认为255,EBGP邻居关系间为1;若使用环回建立EBGP邻居关系,必须修改TTL值

BGP学习笔记(一)

建邻配置完成后,邻居间先进行三次握手,建立TCP会话。正常建立2条会话后,自动断开一条

BGP学习笔记(一)

当TCP会话建立后,邻居间发送BGP的open报文,默认open报文仅收发一次,正常收发后,建立邻居关系,生成邻居表

R1#show ip bgp neighbors    #查看邻居表(详细列表),较大不易查看

BGP学习笔记(一)

末端的数字表示从该邻居处学习到的路由条目数量,若为单词不是数字,那么邻居关系还未建立

2.邻居关系建立后,必须手工宣告路由,才能向邻居发送路由信息

可控性:BGP协议可以宣告本地路由表的任意路由。宣告时条目必须和路由表中的内容完全一致;逐条宣告。

当本地进行宣告后,本地的BGP表中将加载该信息,同时该路由通过更新包发送到邻居处,邻居也将其加载到其BGP表中

BGP学习笔记(一)

R1#show ip bgp

BGP table version is 2, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,

              x best-external, a additional-path, c RIB-compressed,

Origin codes: i - IGP, e - EGP, ? - incomplete

RPKI validation codes: V valid, I invalid, N Not found

 

     Network          Next Hop            Metric   LocPrf    Weight Path

 *>  1.1.1.0/24       0.0.0.0                  0             32768              i

状态   目标网络号              下一跳                          度量值   本地优先级      权重      路径

 

路由状态:

*:表示可用,表示可以加到路由表

>:表示,表示可以加到路由表,可以传递,传输给邻居

i:表示该条目通过IBGP邻居学习

在可用和优均成立的情况下,才可以将条目加载到路由表中,仅优即可传递

 

不可用的条件*r取代,r表示不装载,本地路由表中已经存在更好的路由

       *s取代,s表示抑制(管理员手工限制该条目的传输)

 

可用的条件:同步问题:本地路由表中必须先通过IGP学习到该路由(在IOS版本11.2(8)T以上设备直接关闭该限制)

BGP学习笔记(一)

  

  下一跳可达问题:因为AS-BY-AS规则,条目在传递给IBGP邻居时,下一跳属性默认不修改。可以让设备将从EBGP邻居处学习到的路由传递给EBGP时,修改下一跳地址为本地

BGP学习笔记(一)

注:将路由条目传递给其他EBGP邻居时,将修改下一跳属性为本地

九、BGP协议的MA网络中下一跳问题

在BMA网络中,由于ICMP重定向技术,在传递路由时可以找到最佳的下一跳

R1#debug ip bgp updates

R1#clear ip bgp *          #硬重启,重置本地和所有邻居间的TCP会话

R1#clear ip bgp * soft       #软重启,本地和所有邻居间重新收发路由条目,不处理邻居关系

R1#clear ip bgp 12.1.1.2      

R1#show ip bgp neighbors 12.1.1.2 received-routes       #仅查看本地从邻居12.1.1.2处接收到的路由

% Inbound soft reconfiguration not enabled on 12.1.1.2

默认本地没有专门存储接收路由的空间,若需要查看,必须先创建该空间,建议查看完成后删除该空间

BGP学习笔记(一)

 

 

 

BGP学习笔记(一)

 

BGP学习笔记(一)