作者:清默网络-于康

BGP 边界网关协议
 AS:由一个组织管理,运行同一种路由协议,以及相同的路由控制方法。
 BGP负责在AS之间传递路由信息。
 AS号组成2B-4B
 internet使用as号必须向IANA组织申请公网AS号
 私有网络使用as号 64512-65535

为什么不使用IGP代替BGP
 -IGP算法复杂
 -简化、方便管理

BGP的使用环境: (不使用NAT)
 1、单链路单宿主
  用户使用缺省路由,并将自己的路由信息传递到ISP。
  成本低,配置简单,但是稳定性差

 2、双链路单宿主
  用户发布缺省路由到内网,并将自己的路由信息传递到ISP。
  配置简单,稳定性较高,可以实现负载均衡

以上都没有使用BGP的必要

 3、单链路双宿主 (E:电信、网通)  (可能需要使用BGP)
    用户需要运行动态路由协议,去学习必要的网段,并且将自己的路由信息传递到各ISP。
    入业务量和出业务量的控制。

  4、双链路双宿主(需要使用BGP)
   用户需要运行动态路由协议去学习必要的网段,并且将自己的路由信息传递到各ISP。
   入业务量和出业务量的控制。
————结合用户的使用————以上
————ISP之间互联——————
   5、ISP之间互联(必须使用BGP)
    不同as之间传递并控制路由信息。

 需要使用BGP
  -用户需要学习公网路由
  -当as是一个传输as
  -用户需要更多的路由控制功能

 BGP概述:
  通过TCP传递更新建立对等体
  单播建立邻居及传递更新
  支持VLSM、CIDR,手工汇总
  以一个as为一个单位的路径矢量路由协议
  拥有丰富的路径属性和简单的选路算法
  遵循AS间的水平分割
 
 BGP工作:
BGP消息类型
 OPEN
  -标记位 16B 全1
  -长度
  -类型 1
  -BGP版本 (目前全部使用bgp v4,如相邻设备之间版本不同,无法建立邻居)
  -自治系统号(相同-IBGP 不同EBGP)
  -hold time邻居存活时间默认180s,如果两个对等体hold time不同标准,协议以小的 为标准,同时hold time的三分之一时间作为后面keepalive报文的发送周期
  -路由器标识

 UPDATA
   -公共头部
   -网络层不可达信息的长度
   -网络层不可达信息的内容
   -路径属性长度
   -路径属性
   -NLRI网络层可达信息
一个updata报文只会传递一套属性,当网络层可达信息的属性唯一时,一个updata报文只传递一个可达前缀,除非多个前缀所携属性相同。
一个updata报文可以携带多个网络层不可达信息。

  notification
   -公有头部
   -错误报告类型及代码
   -一旦BGP对等体收到该报文,则邻居关系立即回到最初idle状态

  keepalive
   -公有头部
  维持BGP邻居关系处于激活状态的消息报文,默认以60s为周期发送。在hold time时间内未收到该报文,则认为邻居断开。

 BGP状态机
idle->connect->open sent->open confirm->estabished

TCP三次握手正常进入connect状态 - 发送open报文进入open sent状态 -收到回复open报文进入open confirm状态,接收keepalive报文进入established状态
建立连接失败进入active状态

idle
 -单播建立邻居的目标地址在路由表中不存在
established
 -邻居关系建立完整状态,之后发送updata报文和周期性的keepalive报文
active
  -指定对等体的自治系统不匹配
 BGP对等体建立的地址不对称
 对端未激活BGP或其他原因TCP建立连接失败

 BGP数据库
  -邻居表
   记录与本路由器建立IBGP对等体或ebgp对等体的路由器地址等
  -BGP表
   从所有邻居路由器收到updata报文中的NLRI
   从上述内容中挑出可用,最优的路径标记位自己使用的BGP
   对应每个条目都记录着BGP属性
  -路由表
   将BGP表中标记为可用最优的路由条目放入路由表

BGP基本配置
 1、激活BGP路由协议
  router bgp
 2、手工建立单播邻居
  neighbor x.x.x.x remote-as
   需要建立邻居关系的对等体地址,以及对等体路由器所属的自治系统号
   邻居地址不需要直连,但必须路由可达,可以是物理接口地址也可以是虚拟接口的地址
 3、查看BGP邻居表
    show ip bgp summary
 4、宣告网段
   network x.x.x.x 宣告主类网段
   network x.x.x.x mask x.x.x.x 宣告子网网段
   被宣告的前缀和掩码,必须在路由表中存在相同的路由条目,并且这个路由条目可以直连的也可以是非直连的。
 5、查看BGP表
  show ip bgp
  6、另一种在BGP发布路由方式
   引入 redistribute <>
 
 IBGP对等体:
 
  

 

BGP的通告原则:
 1、BGP选择最优可达的路径给自己使用
 2、BGP只会将自己使用的路由表传递给邻居路由器
 3、从ebgp对等体传递过来的路由信息,bgp可以传递到所有的其他对等体中
 4、从ibgp对等体传递来的路由信息:
    -不会传递到其他的IBGP对等体
    -是否传递到其他EBGP对等体需要根据同步原则决定:
      1)如果同步开启,要求该网段在IGP路由表中也存在。(即该条目在IGP和BGP表中同时存在)
      2)关闭同步功能,只要该路由条目在BGP表中最优就可以传递到其他ebgp对等体中。

 解决:
  1、bgp对等体全互联
    -可以关闭同步
  2、将BGP引入到IGP中
    -开启同步
解决下一跳不可达问题
 1、将连接其他自治系统的接口宣告到本自治系统中(不建议使用)
 2、更改路由器传递下一跳
  neighbor x.x.x.x next-hop-self

BGP扩展配置:
 1、使用loopback口建立邻居
   -修改建立邻居的更新源
   neighbor x.x.x.x updata-source <接口名称>
   -修改EBGP多跳(more情况下EBGP对等体建立邻居时,发送报文的TTL为1)
    neighbor x.x.x.x ebgp-multihop #
 2、建立BGP对等体组
   -创建对等体组
    neighbor peer-group
   -配置对等体组邻居as-num
    neighbor remote-as ##
   -配置对等体组策略
    neighbor upda-source
   ebgp-mulitihop 
   route-map
  …………
   -将邻居地址划分到对等体组中
    neighbor x.x.x.x peer-group

BGP属性:
 -公认必遵
  所有运行BGP的路由器必须能够识别,并且发送更新的NLRI必须携带的属性
 -公认可选
  所有运行BGP的路由器必须能够识别,但并不是每一个更新的NLRI都要携带
 -可选传递
  运行BGP的路由器并不一定识别,但是如果收到NLRI携带这种属性,可将保留并传递给其他对等体
  -可选非传递
  运行BGP的路由器并不一定识别,但是如果收到NLRI携带这种属性,他会忽略该属性,而且不会把该属性传递给其他对等体。

 BGP属性
1、权重 - cisco私有属性
  本地发布的bgp路由条目为32768
  从其他对等体学习的路由条目为0
  在选择路径的过程越大越优
2、起源属性        \
3、as-path           |—公认必遵
4、next-hop       /
5、local-pre
6、原子聚合
7、聚合站
8、MED    \___可选不传递
9、团体     /

 起源origin
  i—>通过network发布到BGP中的路由条目
  e—>从EGP协议中引入到BGP协议中的路由条目
  ?—>通过引入
在路径选择时,i优于e优于?

 as-path属性
  防环:路由条目在传递的过程中,每经过一个as,则将该自治系统号添加到as-path中,当一个as的路由器收到的路由条目as-path属性中包含了本路由器的as,则忽略该路由条目。(水平分割)
  选路:as-path路径长度越短越优
  过滤:使用as-path的内容顾虑路由条目

 next-hop属性
  从ebgp对等体传递过来的条目              
   传递到其他ebgp对等体                        改变
   传递到ibgp对等体                              不改变
  从igbp对等体传递过来的条目
    本自治系统的路由
     传递到其他ibgp对等体                       不改变
     传递到ebgp对等体                             改变
    其他自治系统的路由
      传递到ibgp对等体                             不改变
      传递到ebgp对等体                             改变
 
 如果是本路由器自己发布的路由条目下一跳地址为0.0.0.0
 
特例:

 

 local-pre:
   默认为100
   优先级越高,路由越优先选择
   一般用于控制出业务量
   本地优先级只在as内部传递。
 
 med:
  直接发布直连的默认为0
  如果发布IGP的路由或者引入IGP的路由,则直接使用IGP的metric值
  越小越优
  用于进业务量
  bgp只会比较从同一个as传递过来的路由条目的med值,如需要比较不同as传来路由的med,则需要添加命令 bgp always-compare-med

BGP的选路原则:
 1、首先比较比较路由条目的权值 越大越优
 2、如果权值相同,则比较本地优先级,越大越优
 3、如果本地优先级也相同,则优先选择本地路由器发布的路由(下一跳地址为0.0.0.0)
 4、再比较as-path,越短越优
 5、如果as-path相同则比较起源属性,i
 6、如果起源属性也相同,则比较med,med越小越优
 7、如果med也相同,ebgp对等体的路径优于igbp对等体
 8、如果仍然相同,则比较路径的邻居地址在IGP路由表中的度量值,越小越优
 9、如果igp度量值仍然相同,则选择在bgp表中存在时间较久的作为路由条目
 10、如果时间也相同,则比较邻居路由器的router-id,越小越优
 11、再比较建立邻居的两个地址
 

BGP默认情况下只能实现迭代负载均衡
 BGP路由条目的下一跳在路由表中负载均衡
BGP默认情况下不支持BGP路由的负载均衡
可以通过命令修改 maximum-paths # (1-16)
如果BGP路由的权值、本地优先级、as-path、med都相同,则BGP就可以负载均衡了

补充:
团体属性 32bit
 **:**
internet -默认
local-AS -只在本地自治系统中传递
no-advertise 不再向其它任何对等体发布
no-export 不传递到任何ebgp邻居 包括联盟EBGP对等体
 
保留团体号
00000000 -0000ffff
 ffff0000- ffffffff

BGP在大型网络中的解决方案
 1、配置对等体组
 2、BGP的路由聚合
   配置BGP路聚合路由
    aggregate-address x.x.x.x x.x.x.x summary-only as-set
 如果不添加summary-only参数,则汇总与明细会同时发布
 当路由条目汇总后,会添加一个原子聚合属性(atomic-aggregate) - 仅仅用来表示该条目被汇总过,由于汇总会导致属性丢失,可能引起黑洞路由
 配置 
  aggregate-address x.x.x.x x.x.x.x summary-only as-set
 添加as-set后,则路由条目会修改as-path属性,将汇总路由中的所有明细路由的as-path属性添加到汇总路由的as-path中。
 此外所有的汇总路由都会添加一个聚合站属性:
  其中包括了发布汇总路由的路由器所在as-num以及发布汇总路由路由器的router-id
 agregated by

 3、IGBP对等体之间不传递路由
  -全互联
   必须关闭同步
   缺点:当BGP对等体数量过多情况下,配置复杂,浪费资源
  -IGP和BGP之间互引
   将BGP条目引入到IGP中,通过IGP协议传递到AS中其他路由器,另一端使用IGP引入到BGP再发布到其他AS。
   缺点:BGP条目引入到IGP时,属性全部丢失
           IGP协议算法复杂度高,不适合计算大型网络中太多的路由条目
  -建立BGP反射(针对IBGP对等体)
   反射服务器端、反射客户端、非客户端
   1、从EBGP对等体传递到反射服务器端的路由条目可以传递到其他所有对等体;
   2、从反射客户端传递过来的路由条目,服务器端可以传递到其他所有对等体,包括客户端和非客户端;
   3、从非客户端传递到反射服务器上的路由条目,服务器端只会将它传递到客户端路由器上;
     配置:neighbor x.x.x.x router-reflectior-client
      指定x.x.x.x路由器为本路由器的客户端,客户端路由器上0配置

 补充BGP属性
  Originator:发射该路由条目的router-id,用于防环-凡是收到路由条目的originator-id与本路由器的router-id相同的路由条目全部忽略
 -用于选路:originator-id越小,路径约优
  cluster list:记录反射簇id的列表,默认情况下反射簇id为反射服务器的router-id,cluster list中记录了每个反射簇的列表
   用于防环 -路由器收到路由条目中cluster list包含本路由器的router-id,则忽略该条目      用于选路 -cluster list越短路径越优

 4、建立BGP联盟
  bgp confederation identifie
   -当BGP与建立EBGP对等体时,使用200自治系统编号,建立IGBP对等体时,仍然使用子AS号;
  bgp confederation peers
   -当BGP建立ebgp对等体时,邻居路由器的as-num为配置peers的as-num则直接诶使用联盟子as-num建立ebgp对等体关系;
 联盟EBGP对等体之间传递路由下一跳不会改变,即bgp下一跳属性的改变仍然保留了IGBP对等体之间的特点;
 为保证BGP联盟内部子as号不传递到其他AS中,需要在每台路由器上都配置identifier和peers

 5、建立×××隧道


 6、BGP路由震荡
  惩罚值:每当bgp中的路由条目up、down一次,该路由条目的惩罚值增加1000
  惩罚门限:当BGP路由条目的惩罚值超过惩罚门限(默认2000),则该条目不会在被更新发布到其他路由器上。
  半衰期:每经过一个半衰期,它的惩罚值降低为原来的一半
  再使用门限:当路由条目的惩罚值经过一次或几次半衰期降低到再使用门限(默认750),重新发布更新使用。
  最大抑制时间:BGP路由条目最长被抑制60分钟,bgp抑制的条目最多在四倍的半衰期内可以重新使用
  最大惩罚值:12000s
  bgp dampening - 激活
  bgp dampening <半衰期> <再使用门限> <抑制门限> <最大抑制时间>

 

 

http://blog.sina.com.cn/ykccie

http://www.qmcisco.com

 

qq:1677151165

                                                                      清默网络--于康