假设某运营商计算机网络,采用的是iBGP+IS-IS+OSPF模式。
①使用IS-IS协议,承载内部互联地址、设备互联地址,尽量减少路由条目数,使得网络可以更加快速地动态收敛。
②使用iBGP协议,承载缺省路由、用户路由等其他路由。也就是大网内的所有设备均运行iBGP,采用“专用+冗余”的RR设计。
③在城域与大网之间,采用ospf协议。
出于网络安全控制等目的,要求在PE(出口路由器)上以缺省路由方式,引导城域网出局路由;采用汇总发布方式,向大网通告城域汇聚路由信息。下图为简要拓扑示意。
为了描述方便,假设CE与PE之间、CE所连接的用户等全部工作在OSPF的area 0(说清楚OSPF区域,会是另一个文章)。
关于缺省路由的发布,主要有两种方式:
①在出口路由器OSPF进程下配置缺省路由生成命令(带可选参数always)
此模式下,PE作为出口路由器,会直接在OSPF的area 0内生成一条类型为type-5、关于缺省路由信息的LSA。同时再合理设置该LSA所携带的cost数值,即可实现以缺省路由方式引导出局流量的目的。如下图所示:
此模式的好处在于:①并不需要将iBGP路由信息向OSPF进行重分布;②配置简单。
但问题也比较明显,就是PE-1在失去与外界的链接后,依然会向城域网发布缺省路由信息(这就是always的问题),从而导致出局业务的中断。
②在出口路由器OSPF进程下配置缺省路由生成命令(不带可选参数always)
此模式有几个限制/前提条件:①本设备上要有非OSPF协议的、可用的缺省路由;②通常需要发布的area,是OSPF的普通区域(regular area)(也可以是NSSA,但不能是stub,想想为什么?);③通常采取重分布的方式,将该缺省路由引入OSPF。针对这三个条件,通常有两种解决方法。
【解决方法一】
在出口路由器上本地配置目标地址为0.0.0.0,下一跳为Null 0的静态黑洞路由。
再采用BFD方式,将黑洞路由与大网某台设备的可达性绑定。即至该设备可达时路由生效;至该设备不可达时路由不激活。
再将且仅将该条静态路由重分布至OSPF。
这一方法会有两个点需要关注:①跟踪大网哪台设备;②检测间隔、检测次数等判断机制如何设置。
【解决方法二】
在RR路由器上本地配置目标地址为0.0.0.0,下一跳为Null 0的静态黑洞路由。再在BGP中,以network方式发布该条路由信息。
在出口路由器上,将且仅将关于0.0.0.0的iBGP路由重分布至OSPF。
但这一方式可能会面临一个较大的情况:先富压制后富。如图所示:
由于某种原因,RR先将关于0.0.0.0的iBGP路由传递给PE-2,PE-2在PE-1接收到这条iBGP路由信息之前,便完成了向OSPF的重分布动作。
此时在PE-1上会进行比对:关于0.0.0.0,有两个来源,分别为iBGP和OSPF,谁更优?
下表为华为和思科设备路由协议的默认优先级。假设设备都工作在默认状态,未做优先级调整,会出现什么情况?PE-1会认为来自OSPF External的优先级更高,因此会抑制自身将iBGP向OSPF重分布的动作。乍一看好像也没有什么问题,当PE-2失去与外界联接便会停止重分布,对PE-1的抑制也会停止,并不影响通信。但如果考虑到我们的规划(PE-1为优选出入口),就有点网络失去控制的色彩了。
华为设备 |
思科设备 |
|
直连路由 |
0 |
0 |
静态路由 |
60 |
1 |
OSPF路由 |
10 |
110 |
OSPF external路由 |
150 |
110 |
IS-IS路由 |
15 |
115 |
RIP路由 |
100 |
120 |
eBGP路由 |
255 |
20 |
iBGP路由 |
255 |
200 |
【本节小结】
关于缺省路由的发布,两种方法从技术上各有优劣,甚至看起来第一种方式更为简单。
但如果从网络具备更强的管理角度出发,其实第二种方法更为可取。原因主要是:更加集中化的控制。通过调整RR的路由发布,便可轻松实现出局流量的引导,而并不需要对出口路由器配置进行逐个调整。