一、简介
静态路由是一种需要管理员手工配置的特殊路由。
静态路由在不同网络环境中有不同的目的:
当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。
在复杂网络环境中,配置静态路由可以改进网络的性能,并可为重要的应用保证带宽。
静态路由可在VPN实例中使用,主要用于VPN路由的管理。
二、原理
一、静态路由基础
路由器根据路由转发数据包,路由可通过手动配置和使用动态路由算法计算产生,其中手动配置产生的路由就是静态路由。
静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。
静态路由有5个主要的参数:目的地址和掩码、出接口和下一跳、优先级。
1、目的地址和掩码
IPv4的目的地址为点分十进制格式,掩码可以用点分十进制表示,也可用掩码长度(即掩码中连续‘1’的位数)表示。当目的地址和掩码都为零时,表示静态缺省路由。
2、出接口和下一跳地址
在配置静态路由时,根据不同的出接口类型,指定出接口和下一跳地址。
1、对于点到点类型的接口,只需指定出接口。
因为指定发送接口即隐含指定了下一跳地址,这时认为与该接口相连的对端接口地址就是路由的下一跳地址。如10GE封装PPP(Point-to-Point Protocol)协议,通过PPP协商获取对端的IP地址,这时可以不指定下一跳地址。
2、对于NBMA(Non Broadcast Multiple Access)类型的接口(如ATM接口),只需配置下一跳。
因为除了配置IP路由外,还需在链路层建立IP地址到链路层地址的映射。
3、对于广播类型的接口(如以太网接口)和VT(Virtual-template)接口,必须指定通过该接口发送时对应的下一跳地址。
因为以太网接口是广播类型的接口,而VT接口下可以关联多个虚拟访问接口(Virtual Access Interface),这都会导致出现多个下一跳,无法唯一确定下一跳。
3、静态路由优先级
对于不同的静态路由,可以为它们配置不同的优先级,优先级数字越小优先级越高。配置到达相同目的地的多条静态路由,如果指定相同优先级,则可实现负载分担;如果指定不同优先级,则可实现路由备份。
4、静态路由的特点
1、手动配置
2、路由路径固定(除非手动修改)
3、不可通告
不会主动通告给其他路由器。但管理员可以在本地设备的动态路由中引入静态路由,然后以对应动态协议路由进行通告。
4、单向性
仅为数据提供沿着下一跳的方向进行路由,不提供反向路由。如果要使源节点域目标网络进行双向通信,必须同时配置回程静态路由
5、接力性
如果某条静态路由中间经过的跳数大于1(路由要经过3个或以上路由节点),则必须在除最后一个路由器外的其他路由器上依次配置到达相同目的节点或目的网络的静态路由。
(路由器各端口上直连的各个网络都是直连互通的,因此之间默认是直连路由,因而无需另外配置路由。)
6、迭代性
理论上来说,静态路由的下一跳可以是路径中其他路由器中的任意一个接口,只要能保证路由到达下一跳就行了。(静态路由没有建立邻居关系hello包,也不会被通告邻居路由,所以他的下一跳纯粹是配置的“下一跳IP地址”直接指定的,或者通过出接口间接指定。不是我们平常理解的必须与路由器直连的下一个设备接口。)
路由迭代
通过路由的下一跳信息来找到直连出接口的过程。
迭代深度
路由迭代中查找路由的次数,次数越少迭代深度越小。
二、静态路由与BFD联动
与动态路由协议不同,静态路由自身没有检测机制,当网络发生故障的时候,需要管理员介入。静态路由与BFD联动可为静态路由绑定BFD会话,利用BFD会话来检测静态路由所在链路的状态,具体过程如下:
当某条静态路由上的BFD会话检测到链路故障时,BFD会将故障上报系统,促使该路由失效,使该路由在IP路由表中不可见。
当某条静态路由上的BFD会话检测到故障的链路重新建立成功时,BFD会上报系统,激活该路由,使该路由重新出现在IP路由表中。
三、静态路由与NQA联动
静态路由本身并没有检测机制,如果非本机直连链路发生了故障,静态路由不会自动改变(不会从IP路由表中自动删除),需要管理员介入,这就无法保证及时进行链路切换,可能造成较长时间的业务中断。
基于以上原因,需要有一种有效的方案来检测静态路由所在的链路。对于静态路由而言,现有的静态路由与BFD联动特性,由于受到互通设备两端都必须支持BFD的限制,在某些应用场景无法实施。而静态路由与NQA(Network Quality Analysis)联动则只要求互通设备的其中一端支持NQA即可。
静态路由与NQA联动特性即为静态路由绑定NQA测试例,利用NQA测试例来检测静态路由所在链路的状态,根据NQA的检测结果,决定静态路由是否活跃,达到避免通信的中断或服务质量降低的目的。静态路由与NQA联动特性的功能如下:
如果NQA测试例检测到链路故障,路由器将这条静态路由设置为“非激活”状态(此条路由不可用,从IP路由表中删除)
如果NQA测试例检测到链路恢复正常,路由器将这条静态路由设置为“激活”状态(此条路由可用,添加到IP路由表)
静态路由与NQA联动时仅采用ICMP测试例来检测源端到目的端的路由是否可达。
每条静态路由只可以绑定一个NQA测试例。
图1 静态路由与NQA联动应用组网图
上图1所示,每台接入交换机下连接10个用户,共100个用户。由于在RouterB和用户之间无法使用动态路由协议,所以在RouterB上配置到用户的静态路由。出于网络稳定性的考虑,在RouterC上进行同样的配置,作为冗余备份。
RouterA、RouterB和RouterC上运行动态路由协议,相互间可以学习路由。其中,RouterB和RouterC配置动态路由协议引入静态路由,并且设置不同的度量值,这样RouterA也能通过动态路由协议从RouterB和RouterC分别学习到用户的路由,RouterA根据两条链路的度量值不同选择一条主用链路,另一条链路做为备份链路。
在RouterB上配置静态路由与NQA联动特性,利用NQA测试例检测主用链路RouterB→SwitchA→SwitchC(SwitchD)的状态,当主用链路发生故障时,撤销静态路由发布,使下行流量经无故障的链路RouterC→SwitchB→SwitchC(SwitchD)转发。在两条链路都正常时,控制下行流量优先选择主用链路。
四、静态路由永久发布
静态路由永久发布可以为客户提供一种低成本、部署简单的链路检测机制,并提高与其他厂商设备的兼容性。在客户希望确定业务流量的转发路径,不希望流量从其它路径穿越时,静态路由永久发布可以通过Ping静态路由目的地址的方式来检测链路的有效性而达到业务监控的目的。
链路有效性直接影响网络的稳定性和可用性,因此链路状态的检测对网络维护具有重要意义。BFD作为一种常用方案,并不适合所有的场景。例如,在不同的ISP之间,客户更希望采用更简单、更自然的方式来达到这一目的。
配置永久发布属性后,之前无法发布的静态路由仍然被优选并添加到路由表中。具体可以分为以下两种情况:
1、静态路由配置出接口且出接口的IP地址存在时,无论接口状态是Up或Down,只要配置了永久发布属性,静态路由都会被优选并添加到路由表。
2、静态路由没有配置出接口时,无论静态路由是否能迭代到出接口,只要配置了永久发布属性,路由都会被优选并添加到路由表中。
这样,通过控制静态路由的优先级和前缀长度,使Ping数据包始终通过静态路由转发,就可以检测出链路的有效性。
该特性不判断路由是否可达,而是一直会将静态路由保留在IP路由表中,如果实际路径不可达,静态路由可能形成黑洞路由。
图1 静态路由永久发布应用组网图
如上图1所示,BR1、BR2和BR3分别属于ISP1、ISP2和ISP3。从BR1到BR2有两条链路(LinkA和LinkB)可达,但ISP1希望业务流量都通过LinkA直接转发到ISP2,而不从ISP3穿越。
在BR1和BR2之间建立直连单跳EBGP邻居,同时为了进行业务状态监控,在BR1上配置到对端(BR2)BGP邻居地址(10.1.1.2/24)的静态路由(出接口为与BR2直连的本地接口),并使能路由永久发布。网络监控系统周期性的Ping 10.1.1.2,可通过Ping结果来判断LinkA的状态。
当LinkA正常时,Ping数据包都是通过LinkA进行转发。如果LinkA发生故障,即使能通过LinkB到达BR2,但由于静态路由使能了静态路由永久发布,所以Ping数据包还是通过LinkA进行转发,但此时转发不通。对于BGP数据包也是相同的情况,故障会导致BGP邻居断开,监控系统可以通过Ping结果间接的检测到业务问题,并通知维护人员及时响应。