网络安全-骨干网与WLAN2
骨干网与WLAN
BGP通告原则
BGP通告原则
BGP传递给路由时需要遵循以下原则
- 第一条原则:只发布最优且有效(即下一跳地址可达)的路由
- 第二条原则:从EBGP邻居获取的路由,会发布给所有邻居
- 第三条原则:从IBGP邻居获取的路由,不会再发送给其他IBGP邻居(IBGP水平分割)
IBGP水平分割
IBGP水平分割
BGP通告原则三
- 从IBGP邻居学习到的BGP路由,不会再发送给其他IBGP邻居
- 该条原则也被称为”IBGP水平分割”
- IBGP水平分割的作用:防止AS内部路由环路
IBGP水平分割的不足
- 导致域间路由无法传递
如何突破IBGP水平分割的限制
- 静态路由
- 在OSPF中引入BGP
- IBGP全互联
- 路由反射器
路由反射器
IBGP水平分割
IBGP水平分割
- 作用:用于防止AS内部出现环路
- 存在问题:BGP路由在AS内部无法传递
- 解决方案:IBGP邻居全互联,路由反射器
IBGP全互联的不足
邻居数量多:一个AS内有n台设备,需建立的邻居数为n(n-1)/2
当设备数目很多时,设备配置十分复杂、路由维护十分复杂
当设备数目很多时,网络资源和设备资源的消耗都非常大
路由反射器
反射器角色
- 路由反射器:RR(Route Reflector)
- 客户机
- 非客户机
反射器原理
- 客户机只需与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量
- RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联,路由器反射器突破了IBGP水平分割限制
- 反射器通过命令指定自己的客户机,客户机不知道谁是反射器,只有反射器知道谁是客户机,没有指定为客户机的路由器,就是非客户机
反射规则
反射规则
- RR从非客户机收到的路由会反射给客户机,会发布给EBGP邻居
- RR从非客户机收到的路由不会反射给非客户机
- RR从客户机收到的路由会反射给客户机和非客户机,会发布给EBGP邻居
- RR从EBGP邻居收到的路由,会反射给所有的客户机、非客户机
注意此处反射和发送的区别。发送指的是传统情况下(相当于RR不存在的场景下)的BGP路由传递行为,而反射指的是遵循路由反射规则的情况下,RR执行的路由传递动作,被反射出去的路由会被RR插入特殊的路径属性
配置命令
1 | [R2]bgp 200 |
路由反射器防止环路
路由反射器突破水平分割限制可能导致环路发生
- RR的设定使得IBGP水平分割原则失效,这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路
- Originator_ID:始发者ID属性,属性用于防止集群内产生路由环路
- Cluster_List:簇列表属性,属性用于防止集群间产生路由环路
- Originator_ID、Cluster_List属性都属于可选非过渡类型
Originator ID属性
- RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID
- 若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR所更改。
- 当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它不会学习该路由
路由反射簇(Cluster)
路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇(如下图)。
每一个簇都有唯一的簇ID(Cluster_ID,默认为RR的BGP Router ID )。
当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。
当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新
环回口建立IBGP邻居
BGP的稳定性
IBGP:
- 一般使用环回口建立IBGP邻居,从而提高稳定性
- 指定建立IBGP邻居的源地址为loopback地址
Loopback接口:
- 用loopback接口建立邻居更加稳定和可靠
- 使用物理接口的IP地址建立邻居,当物理接口和物理链路发送故障,BGP邻居就会down掉
- 而使用loopback接口IP地址建立邻居,假设两台设备之间有3条物理链路,即便坏掉其中2条物理链路,即便只有1条物理链路互通,就可以保证BGP邻居的正常
配置命令
1 | [R2]bgp 200 |
更新源检测机制
更新源检测机制
TCP连接源地址
- 缺省情况下,BGP使用报文出接口作为TCP连接的本地接口
- 在部署IBGP对等体关系时,建议使用LoopBack地址作为更新源地址
- Loopback接口非常稳定,可以借助AS内的冗余链路来保证可靠性
- 在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题
EBGP之间为何不能使用Loopback接口建立对等体
- BGP有直连检测机制
- BGP要求,凡是建立EBGP邻居的路由器,必须使用直连网段,使用物理接口的IP地址,建立邻居
- 原因:因为EBGP要求稳定性和可靠性, 使用直连网段,使用物理接口建立邻居,BGP路由器能够感知到链路故障, 能够及时作出调整,如果用非直连网段建立EBGP邻居,路由器无法实时且有效的感知到网络故障
- 原理:EBGP报文中TTL值为1,
- 当经过一台路由器转发的时候,TTL值减去1,当TTL值为0的时候,报文被丢弃,所以无法建立BGP邻居关系
- 解决方法:突破直连检测机制
配置命令
1 | peer 10.10.1.1 ebgp-max-hop 100 //修改bgp报文最大TTL为100 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Nicopilot!