内容来自网络:
路由协议分为两类:
IGP(Interior Gateway Protocol,内部网关协议),IGP 并不是一个协议,而是一类协议的统称,包括 RIP(Routing Information Protocol,路由信息协议), ISIS(Intermediate system to intermediate system,中间系统到中间系统), OSPF(Open Shortest Path First,开放式最短路径优先) 等等
EGP(Exterior Gateway Protocol,外部网关协议)并不是一个协议,也是一类协议的统称,包括 EGP(这个时候,它是一个协议的名称。这个协议现在已经被淘汰,不再使用)和 BGP(Border Gateway Protocol,边界网关协议)。
EBGP邻居关系:处于不同的AS间的BGP设备建立的邻居关系,通过这种邻居关系学习到的路由条目,其管理距离为20;
IBGP邻居关系:处于同一AS内部的BGP设备建立的邻居关系,通过这种邻居关系学习到的路由条目,其管理距离为200;
对等体(peers):在BGP中因为可以非直连建邻;故邻居也被称为对等体;
IGP和EGP协议的区别
IGP协议在工作时:
- 收敛快
- 占用资源少
- 选路佳
EGP协议在工作时:
- 可靠性:控制更新量,仅做增量更新—仅触发、无周期
- 可控性:不是简单的依赖度量值,而是大量可被人为修改的属性来进行选路
- AS-BY-AS:以一个AS为一跳
BGP特点
无类别路径矢量:距离矢量的升级版,AS-BY—AS,共享路由表
使用单播更新来发送所有信息;基于TCP 179端口工作
触发、增量更新,仅触发,无周期
具有丰富的属性来取代IGP中度量进行选路
可以在进项和出项对流量实施强大的策略
默认不被用于负载均衡,通过各种选路规则仅仅产生一条最佳路径
BGP支持认证和聚合(汇总)
BGP的数据包
BGP所有的数据均基于TCP会话传递,由TCP来进行邻居的发现及所有数据包的ACK;
Open :邻居关系的建立,正常仅收发一次,携带RID,生成方式同OSPF一致;hold time;
Keepalive:保活,周期保活BGP邻居关系,实际保活TCP会话;hello time 60s,hold time 180s;
Update:更新 携带路由条目=目标网络号+属性(各种参数)
Notification:报错 用于故障报错
Refresh:路由刷新,不是所有厂商都有
BGP的工作过程
IP可达:BGP承载于IGP之上
建立TCP会话:基于179端口,目标端口必须为179;
使用open报文建立BGP的邻居关系,生成邻居表
邻居关系建立后使用update共享路由信息,装载BGP表中,本地发出及接收到的所有路由信息
根据选路规则将BGP表中最优路径加载于路由表;
邻居建立后,一直使用keepalive周期保活TCP会话
若出现拓扑结构变化,直接使用update触发更新即可
若出现错误的配置产生故障参数时,将使用notification进行报错
结构突变
新增:最先学习到新增网段的BGP设备,使用update包共享条目即可
断开:最先知道断开网段的BGP设备,使用update包共享信息即可
无法通讯:hold time到时时,断开邻居关系和TCP会话;然后删除所有从该邻居学习到的信息
注:所有的BGP信息均基于TCP会话传输,可靠保障;
BGP的路由黑洞问题
产生条件
BGP路由基于TCP会话单播传递,传递过程中可以正常经过未运行BGP的设备;
BGP由于基于IGP运行,故路由正常均需要递归查询;
BGP仅生成唯一路径,但若递归到IGP上,实际可延多条路径传输;
当BGP协议单播传递路由时,穿越了中未运行BGP的设备时,出现控制层面可达,但数据层面在未运行BGP的设备上不可达,最终导致路由黑洞;
解决方案
物理链路全连:所有BGP设备间直连,不能非直连建邻;
邻居关系全连:所有设备运行BGP;
将BGP路由条目重发布到IGP;(只能在实验中完成,现实中由于BGP的路由条目数量远大于IGP,故将BGP发布到IGP的话会导致IGP路由器卡死)
最佳方案:MPLS多协议标签交换;
BGP的破环机制:水平分割
EBGP水平分割:针对EBGP环路
AS-PASH:BGP的一种属性,BGP的路由条目在传递过程中将记录所有经过的AS号,若接收到的路由条目中存在本地的AS号,将拒绝接收该条目;
IBGP水平分割:针对IBGP环路
一台设备若从一个IBGP邻居处学习到了路由条目,不得传递给下一个IBGP邻居;
该机制可以限制IBGP环路的出现,但同时也导致全网所有BGP设备间均需要建立邻居关系,配置量极大
路由反射器、联邦可以有条件打破IBGP水平分割
BGP的宣告问题
BGP协议在宣告路由时,将携带本地路由表中到达目标的度量值及下一跳;
度量值:可以让本地EBGP邻居,判定那台EBGP设备离目标最近;
当本地从一台IBGP邻居处学习到的路由,需要传递给本地的EBGP邻居时,度量值清除;
注:为保障路径的优秀,建议所有存在EBGP邻居的BGP路由器均需要本AS的路由;
下一跳:接收到的路由条目中,若下一跳地址为本地,那么条件不优;
该条件必须在打破水平分割、没有修改下一跳为本地时才能有意义;
意义在于迫使管理员让所有存在EBGP邻居的BGP路由器均宣告本地AS路由;
BGP的自动汇总
自动汇总的命令不针对普通的BGP路由;仅针对从IGP重发布到BGP的路由;
在BGP协议中的逐条宣告,可以理解为逐条将其他协议产生的路由重发布到BGP协议中;
在BGP协议中进行重发布,可以理解为批量的将其他协议产生的路由宣告到BGP协议中;
携带原有的度量和原有的下一跳地址其规则、目的同上面的宣告问题一致;
总结:无论在BGP协议中是宣告,还是重发布都应该在所有存在EBGP邻居关系的BGP路由器均进行配置;
注:重发布进入BGP的路由和宣告进入BGP的路由其属性中,起源属性不同;
BGP的聚合(汇总)
1. 利用了BGP的宣告特点:
本地路由表中任何形式产生的路由均可宣告
先在本地配置一条到达汇总地址的空接口防环路由,然后再在BGP协议中宣告这种汇总路由
为精确的选路,AS间常常在发送了聚合路由条目后,还需要酌情发送部分的明细路由,来保障选路;
在这种聚合配置下,只要需要再逐一的宣告有需求的明细路由即可;
BGP的标准聚合
先逐条宣告明细路由,然后再在更新源上进行聚合配置
标准的聚合配置将自动产生空接口防环路由;
精确选路
为精确的选路,AS间常常在发送了聚合路由条目后,还需要酌情发送部分的明细路由,来保障选路;
抑制列表
必须在进行标准聚合配置才能使用
```
r5(config)#ip prefix-list ss permit 5.5.5.0/24
注:这种做法是route-map 中允许的流量反而被抑制;
Route-map
分发列表
前缀列表直接作为分发列表
未完待续