BGP协议详解

介绍

BGP是一种解决大型网络的EGP协议,本身并不产生路由,只是传递路由信息,因为基于TCP传输,故不需要物理直连。

  • BGP是基于TCP建立和维护连接(179端口)
  • 增量更新(通过clear ip bgp * soft手动清表更新)
通信原则
  • 默认只通过最有的一条路径传输路由信息,可通过设置maximum-paths n增大路径条数,实现负载均衡
  • BGP只将消息发送给邻居
BGP邻居建立消息
  • open(code 1)建立连接
  • keep-alive(code 4)周期性发送用于维护连接
  • update(code 2)通告路由更新消息
  • notification(code 3)网络中出现错误,检测后断开连接
BGP建立会话过程
  • 1)Idel:BGP对资源初始化,复位一个连接计时器,并发起一个连接
  • 2)Connect:完成tcp三次握手,完成则转到Opensent,未完成则转到active状态
  • 3)OpenSent:发送开始通信消息,等待对方打开消息,如果出错则退回空闲状态,否则发送keepAlive消息,并复位keepAlive计时器
  • 4)OpenConfirm:收到KeepAlive消息,BGP进入estabulish阶段,邻居关系协商完成;收到更新消息,则重启保持计时器;收到Notification消息,退回到空闲状态
  • 5)Established:会话建立,开始传输数据包
BGP三张表

邻居表,BGP转发表,路由表
这里简单说一下EGP,IGP,IBGP,EBGP,BGP区别
简单来说就是BGP包含EBGP和IBGP,而BGP属于EGP(边界网关协议),而IGP包含常见的EIGP,RIP,OSPF,IS-IS协议

路由环路问题
  • EBGP采用AS_PATH防环
  • IBGP采用水平分割防环
BGP同步

为了避免路由不可达,当前设备的BGP和IGP同时学习相同的路由

路由黑洞和黑洞路由

路由黑洞:路由汇总时不包含某一网段,单又设置了一条默认路由导致出现环路
黑洞路由:ip route ____ ____ null0
将匹配的路由丢弃

BGP的更新属性

1.公认属性(必选可被处理):

  • next-hop-address:更新源,若为0.0.0.0则为本地
  • as-path:as经过的路由as号
  • originate-code:描述路由进入BGP方式

2.公认可选(可选可被处理):

  • LP(local preference):本地优先,只在IBGP传递
  • atomic-aggregate:原子聚合(BGP边界汇总时才会出现)

3.任选可传递(不可被处理,可被传输):

  • aggregate
  • communicate

4.人选非可传递(不可被传递)

  • MED处的出口距离(路由更新时才会出现MED,默认为0,越小优先级越高)
  • originate-ID:路由消息的标识ID,路由反射时会带上这一属性
  • cluster-ID:设置反射群的ID
BGP下一跳的判定


通告者

是否可达

下一跳

as外部

IBGP peer


null

as外部

EBGP peer


EBGP peer

as内部

IBGP peer


IBGP peer

BGP选路规则
  • 1)路由权重(weight,cisco私有),权重越大越优先级越高
  • 2)路由的LP(local preference),in/out方向只在IBGP传递,越大越优,默认为100
  • 3)originated,优先选择本地发出的路由
  • 4)as-path,(3,2,1则是依次通过1,2,3)选择最短路径
  • 5)originate-code(i>e>?)
  • 6)路径MED(小优,一般在EBGP出口方向做)
  • 7)EBGP > 联邦 > IBGP
  • 8)优先选取IGP最小的度量值的路径
  • 9)如果配置了maximum-apths [ibgp|ebgp] n(n在2-6之间,负载均衡,如果没有可选参数ibgp,则仅用于ebgp,当不激活属性时,默认为1)
  • 10)优先选取老的路径
  • 11)选取Router-ID最小的路径
  • 12)选取最短的cluster-id对应的路由路径
  • 13)选取最小的邻居地址
认证

neighbor xxxx password x(默认为md5)
service password-encryption

其它
  • 防止DDOS攻击
    ip route xxxx xxxx null0
  • 路由汇总
    aggregate-address xxxx xxxx [summary-only] [as-set]
    summary-only : 只宣告汇聚路由,不宣告具体路由
    as-set : 记录as-path,防环
  • 路由反射器(cluster-id)
    路由反射器不改变收到的路由属性
    一个cluster-id标识一个放射群
    cluster客户端只与一个cluster peer连接
  • RR防环
    通过originate_id(包含router-id),因此不会将路由发送给源,如果收到包含自己router-id的路由也不会处理