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的路由也不会处理