BGP协议 基本原理

一、自治区系 AS

  自治系统(Autonomous System,AS),指的是在同一个组织管理下、使用相同策略的设备的集合。

  BGP 网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号可分为2个字节AS号和4个字节AS号,其中 2字节AS的取值范围为 1至 65535,其中64512-65535是私有AS号。4字节AS号的取值范转为 1至 4294967295,支持 4字节AS号的设备能与支持 2字节AS号的设备兼容,IANA负责AS号的分发

二、边界网关协议 BGP

  边界网关协议 BGP(Border Gateway Protocol)运行于 TCP 上的一种自治系统的路由协议用于在AS之间实现路由信息的交互。1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络使用的版本是MP-BGP(RFC4760)。

  BGP的特点:

  (1)BGP能够承载大批量的路由信息,能够支撑大规模网络。

  (2)BGP能够支持多协议的扩展(IP v4、IP v6)。

  (3)BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。 

三 、BGP的路径矢量特征

   BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。每条BGP路由都携带着多种路径属性(Path attribute),在各种路径属性中,AS_Path属性是非常关键的一个,AS_Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一个AS号的列表

  BGP路由器不接受AS_Path中包含其自身AS号的路由更新。AS_Path属性值的长短(AS号的个数)会作为一个比较的依据,影响BGP路由选择的决策。

四、BGP协议特证

   (1)BGP使用TCP为传输层协议,TCP端口号179,BGP路由器之间基于TCP建立BGP会话BGP对等体无需直连。

  (2)运行BGP的路由器被称为BGP发言者(BGP Speaker),两台BGP路由器需建立对等体关系(邻居关系)才能交互BGP路由,存在两种类型的BGP对等体关系 EBGP和 IBGP

  (3)在BGP对等体关系建立完成之后,BGP路由器只发增量更新或触发更新(不会发周期性更新)

  (4)目前主要的 BGP版本为 V4和 MP-BGP

五、BGP报文类型

  

六、BGP的状态机制

  

七、BGP对等体 BGP Peer

  (1)运行BGP的路由器被称为BGP发言者,或者BGP路由器。

  (2)BGP对等体也叫BGP邻居,与OSPF、RIP等协议不同,BGP的会话是基于TCP建立的,建立BGP对等体关系的两台路由器并不要求必须直连。

  (3)BGP存在两种对等体关系类型:EBGP及IBGP

  EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP邻接关系,建立EBGP对等体关系,必须满足两个条件:

  (1)两个路由器所属AS不同(也即AS号不同)

  (2)在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立

  IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系,建立IBGP对等体关系,必须满足两个条件:

  (1)两个路由器所属AS需相同(也即AS号相同)

  (2)在配置BGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。

八、AS中的路由黑洞问题

  

  实例:

  (1)在 AS 65101与 AS 65102之间,路由器A、B 运行了 BGP 建立了 EBGP对等体关系,在 AS 65102与 AS 65103之间,路由器E、F 运行了BGP 建立了 EBGP对等体关系, 在AS 65102 中,BCDE四台路由器运行了OSPF,路由器 B与E运行BGP,两者建立IBGP对等体关系,路由器 C与 D并未运行BGP。

  (2)路由器A 将本地路由1.1.1.0/24通告到BGP,最终F能够通过BGP学习到该条路由,路由器C、D由于并未运行BGP,因此无法通过BGP学习到1.1.1.0/24路由,当路由器F 发往1.1.1.0/24网络的数据包在到达路由器C、D 后将被丢弃,在C及D路由器这里,就出现了黑洞。

  AS中黑洞问题的解决办法:

  (1)将 BGP路由引入 IGP

  (2)在AS 65102内,没有运行BGP路由协议的 C、D路由器上运行BGP,实现BGP对等体关系的全互联。

  (3)通过MPLS技术解决黑洞问题实现通信。

九、IBGP水平分割规则

  (1)BGP路由在AS之间的防环依赖于AS_Path路径属性,当路由器收到BGP路由后,发现该路由所携带的AS_Path属性中出现了其自己所处的AS号,则路由器认为出现了路由环路,它将忽略该条路由

  (2)AS_Path属性仅在路由离开AS时才会被更改,而BGP路由在AS内部传递时,路由的AS_Path属性值不会发生改变,如此一来,IBGP路由的防环就无法依赖AS_Path了。

  (3)为了防止BGP路由在AS内部传递时发生环路,BGP要求:“路由器不能将自己从IBGP对等体学习到的路由再传递给其他IBGP对等体”,这就是IBGP水平分割规则。

  (4)由于IBGP水平分割原则的存在,BGP要求AS内须保证IBGP对等体关系的全互联,因为只有这样,才能够确保每一个路由器都能学习到路由。

  (5)然而在AS内的所有BGP路由器之间维护全互联的IBGP对等体关系是需要耗费大量资源的,网络的可扩展性、可维护性也非常差。解决方案:路由反射器,联邦。

十、路由通告规则

  (1)当存在多条路径时,路由器只选取最优(Best)的BGP路由来使用(没有激活负载均衡的情况下)。

  (2)BGP只把自己使用的路由,也就是自己认为最优的路由传递给对等体

  (3)路由器从EBGP对等体获得的路由会传递给它所有的BGP对等体(包括EBGP和IBGP对等体)。

  (4)路由器从IBGP对等体获得的路由不会传递给它的IBGP对等体(存在反射器RR的情况除外)。

  (5)路由器从IBGP对等体获得的路由是否通告给它的EBGP对等体要视IGP和BGP同步的情况来决定

十一、BGP基本配置

  (1)创建BGP,指定BGP Router-ID:  

  [Router] bgp as-num           //as-num参数为设备所处的AS号;
  [Router-bgp] router-id x.x.x.x

  为了增加网络的可靠性,建议将BGP Router-ID手工配置为设备Loopback接口的地址。如果没有配置,则BGP会自动选取系统视图下的Router-ID作为BGP协议的Router-ID。

  (2)配置BGP对等体:  

  [Router-bgp] peer x.x.x.x as-number as-num
  

  Peer关键字后面的x.x.x.x为对等体的IP地址,本设备与该IP地址之间必须路由可达。

  AS号码决定了与对等体建立的是EBGP会话还是IBGP会话。

  (可选)指定用于建立BGP会话(也就是TCP连接)的源接口或源地址:  

[Router-bgp] peer x.x.x.x connect-interface intf[ ipv4-src-address]

  缺省情况下,BGP使用报文出接口的IP地址作为与对等体建立会话的源地址。

  (3)BGP引入IGP路由

  BGP引入路由时支持Import和Network两种方式:

    Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。Import方式还可以引入静态路由和直连路由。

    Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中。

  注:BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置。

  使用network命令将路由通告到BGP:  

  [router-bgp] network ipv4-address[ mask| mask-length]

  使用network命令将路由表中的路由通告到BGP,路由必须存在于路由表中才能够被成功通告到BGP。

  BGP中的network命令与IGP中的network是大不相同的,BGP中的network命令用于将路由通告到BGP,而不是在接口上激活BGP。

  如果上述命令没有指定mask或mask-length参数,则按有类地址处理。指定了mask,则仅当路由选择表中有与该网络完全匹配的条目时才被通告出去。

  在执行上述命令时,可以关联route-policy从而更为灵活的控制所引入的路由。

十二、相关命令

  dis bgp peer                 //查看bgp对等体
  dis bgp routing-table        //查看bgp路由表
  dis ip routing-table         //查看全局路由表
  peer x.x.x.x next-hop-local  //配置对等体下一跳地址为自身

猜你喜欢

转载自www.cnblogs.com/PBDragon/p/13174128.html