静态路由是手动配置的特殊路由,比动态路由使用更少的带宽,不占用CPU资源来计算和分析路由更新。不会自动收敛。
一、静态路由的组成
静态路由包括5个主要参数:目的IP地址和子网掩码、出接口和下一跳IP地址、优先级。
1、目的IP地址/子网掩码
目的IP地址就是路由要到达的目的主机或目的网络的IP地址,子网掩码就是目的地址所对应的子网掩码。当目的地址和子网掩码都为零时,表示静态缺省路由。(当目的地址是主机时,就是主机路由,是网络地址时就是网关路由???)
2、出接口和下一跳IP地址
根据不同的出接口类型,在配置静态路由时,可指定出接口,也可指定下一跳IP地址,还可以同时指定出接口和下一跳IP地址。
①对于点到点类型的接口(如PPP链接接口),只需指定出接口。当然也可同时指定下一跳IP地址,但这时已没有意义了。因为在点对点网络中,对端是唯一的,指定了发送接口即隐含指定了下一跳IP地址,这时认为与该接口相连的对端接口地址就是路由器的下一跳IP地址。
②对于NBMA(Non Broadcast Multiple Access,非广播多路访问)类型的接口(如FR、ATM接口),只需要配置下一跳IP地址。当然,也可同时指定出接口,但这时已没有意义,因为除了配置IP路由外,这类接口还需在链路层建立IP地址到链路层地址的映射,相当于指定了出接口。
③对于广播类型的接口(如以太网接口)和VT(Virtual-Template)接口,必须指定下一跳IP地址,有些情况下还需要同时指定出接口。因为以太网接口是广播类型的接口,而VT接口下可以关联多个虚拟访问接口(Virtual Access Interface),这都会导致出现多个下一跳,无法唯一确定下一跳。而在广播型网络中,还可能有多个出接口到达同一个下一跳IP地址,此时就必须同时指定出接口。
3、静态路由优先级
配置到达相同目的地的多条静态路由,如果指定相同优先级,则可实现负载分担;如果指定不同优先级,则可实现路由备份。
二、静态路由的主要特点
1、手动配置
2、路由路径相对固定:网络拓扑变动也不会修改,除非管理员修改
3、不可通告性:静态路由信息在缺省情况下是私有的,不会主动通告给其他路由器,但管理员可以在本地设备的动态路由中引入静态路由,然后以对应动态协议路由进行通告,使得网络中其他路由器也可获此静态路由。
4、单向性:静态路由具有单向性,它仅为数据提供沿着下一跳的方向进行路由,不提供反向路由。所以如果想要使源节点与目标节点或网络进行双向通信,必须同时配置回程静态路由。
5、接力性
如果某条静态路由中间经过的跳数大于1(即整条路由路径经历了3个或3个以上路由器节点),则必须在除最后一个路由器外的其他路由器上依次配置到达相同目标节点或目标网络的静态路由,这就是静态路由的“接力”特性。
路由器各端口上直接连接的各个网络都是直接互通的,因为他们之间缺省就有直连路由,无需另外配置其他路由,即连接在同一路由器的各网络之间的跳数为0。所以不需要配置从R2到R3路由器以及从R2到R1路由器的静态路由。
6、迭代性
一个错误认识:认为静态路由的“下一跳”必须是与本地路由器直接连接的下一个路由器接口,这是错误的!!!静态路由没有建立邻接关系的Hello包,静态路由也不会被通告邻居路由器,所以他的下一跳纯粹是由配置的“下一跳IP地址”直接指定的,或通过配置“出接口”间接指定。理论上说,静态路由的下一跳可以是路径中其他路由器中的任意一个接口,只是能保证到达下一跳就行了。这就是静态路由的“迭代性”。
静态路由主要特性及应用
IPv4静态路由的主要特性有静态缺省路由、静态路由与BFD联动、静态路由与NQA联动、静态路由优先级和静态路由永久发布。
一、静态缺省路由
缺省路由是另外一种特殊的路由,分静态缺省路由和动态缺省路由两类。缺省路由是没有在路由表中找到匹配的路由表项时才使用的候补路由。如果路由器中没有配置缺省路由,且报文的目的地址不在路由表中,那么该报文将被丢弃,并向源端返回一个ICMP报文,报告该目的地址或网络不可达。
在路由表中,缺省路由以到网络0.0.0.0(掩码也为0.0.0.0)的路由形式出现。可通过display ip routing-table查看。
如上图,如果不配置静态缺省路由,则需要在RouterA上配置到网络3、4、5的静态路由,在RouterB上配置到网络1、5的静态路由,在RouterC上配置到网络1、2、3的静态路由才能实现网络的互通。如果配置缺省静态路由,因为RouterA发往3、4、5网络的报文下一跳都是RouterB,所以在RouterA上只需要配置一条缺省路由,即可代替上例中通往3、4、5网络的3条静态路由。同理,RouterC也只需配置一条到RouterB的缺省路由,即可代替通往1、2、3网络的3条静态路由。
二、静态路由与BFD联动
静态路由自身没有检测和网络收敛机制,可通过静态路由与BFD联动特性进行绑定,利用BFD会话来快速的检测静态路由所在链路的状态,实现毫秒级快速主备切换。
1、当某条静态路由上的BFD会话检测到链路故障时,BFD会将故障上报系统,促使该路由失效,使该路由在IP路由表中不可见。
2、当某条静态路由上的BFD会话检测到故障的链路重新建立成功时,BFD会上报系统,重新激活该条路由,使该路由重新出现在IP路由表中。
三、静态路由与NQA联动
在一些不支持BFD的链路环境中,可以通过把静态路由与NQA特性进行绑定来实现链路故障检测和快速的主备链路切换,且只要求互通设备的其中一端支持NQA即可,不受二层设备的限制。
1、如果NQA检测例检测到链路故障,路由器将这条静态路由设置为“非激活”状态(从IP路由表中删除)
2、如果NQA检测例检测到链路恢复,路由器将这条静态路由设置为“激活”状态(路由可用,并添加到IP路由表中)
静态路由与NQA联动时仅采用ICMP测试例来检测源端到目的端的路由是否可达,且每条静态路由只可以绑定一个NQA测试例。
四、静态路由优先级
通过为多条到达同一目的地址的静态路由配置相同或不同的优先级,可分别实现多条相同目的地址的静态路由的负载分担和路由备份。
1、负载分担
如果到达相同目的地址的多条静态路由指定相同优先级,则可实现负载分担。
2、路由备份
如果到达相同目的地址的多条静态路由指定不同优先级,则可实现路由备份。
10-8图是负载分担,从RouterA到RouterC有两条优先级相同的静态路由,此两条路由均在IP路由表中存在,同时承担数据转发。
10-9是路由备份,从RA到RC有两条优先级不同的静态路由。下一跳是RB的静态路由B的优先级较高,该路由所在链路作为主链路。下一跳是RD的静态路由D优先级较低,作为备份路由。正常情况下,静态路由B被激活,主链路承担数据转发,静态路由D不在路由表中体现。
(1)主链路故障,静态路由B在路由表中被删除,静态路由D作为备份路由被激活,备份链路承担数据转发。
(2)主链路恢复后,静态路由B重新被激活,主链路承担数据转发。静态路由D在路由表中删除。这条备份路由也叫浮动静态路由。
五、静态路由永久发布
链路有效性直接影响网络的稳定性和可用性,链路状态的检测对网络维护有重要意义。BFD并不适合所有场景。静态路由永久发布为客户提供一种低成本、部署简单的链路检测机制,在客户希望确定业务流量的转发路径,不希望流量从其他路径穿越时,静态路由永久发布可以通过Ping静态路由目的地址的方式来测试链路的有效性而达到业务监控的目的。配置永久发布属性后,之前无法发布的静态路由仍然被优选并添加到IP路由表中。具体分两种情况:
(1)静态路由配置了出接口,且出接口的IP地址存在时,无论出接口的状态是Up还是Down,只要配置了永久发布属性,则该静态路由都会被优选并添加到IP路由表。
(2)静态路由没有配置出接口时,无论静态路由是否能迭代到出接口,只要配置了永久发布属性,路由都会被优选并添加到IP路由表中。
这样通过控制静态路由的优先级和前缀长度,使Ping报文始终通过静态路由转发,就可以检测出链路的有效性。但是,该特性不判断路由是否可达,而是一直会将静态路由保留在IP路由表中,如果实际路径不可达,静态路由可能形成黑洞路由。
BR1、BR2、BR3分属ISP1、ISP2、ISP3。从BR1到BR2有两条链路(LinkA和LinkB)可达,但ISP1希望流量都通过LinkA直接转发到ISP2,而不从ISP3穿越。这时可以配置ISP1到ISP2的静态路由为永久发布的。
BR1和BR2之间建立直连单跳EBGP邻居,同时为了进行业务状态监控,在BR1上配置到对端(BR2)BGP邻居地址(10.1.1.2/24)的静态路由(出接口为与BR2直连的本地接口),并使能路由永久发布。网络监控系统周期性的Ping 10.1.1.2,可通过Ping结果来判断LinkA的状态,进而间接的监控BGP业务状态。
当LinkA正常时,Ping数据包都通过LinkA进行转发。如LinkA故障,即使能通过LinkB到达BR2,但由于静态路由使能了静态路由永久发布,所以Ping数据包还是通过LinkA转发,此时不通。对于BGP数据包也是相同的情况,故障会导致BGP邻居断开,监控系统可以通过Ping结果间接地检测到业务问题,并通知维护人员。
个人理解:静态路由永久发布就是所配置的静态路由一直在本地核心路由表中存在,即使对应的链路状态已经为Down,这样,在PING目的地址时,一直使用这个路由表项进行指导转发,其他的路由表项不会生效,这样链路故障时,PING就是不通的,即使有其他的链路是通的,也应为无相应路由表项而不能被用于转发,这时PING的结果就会被监控系统使用。
静态路由配置管理
静态路由的主要配置步骤:
①创建静态路由
②(可选)配置静态路由的缺省优先级
③(可选)使能静态路由按递归深度优先选择
④(可选)配置静态路由永久发布
⑤(可选)静态路由与静态BFD联动
⑥(可选)静态路由与静态NQA联动
一、配置静态路由基本功能
静态路由基本功能包括以下配置任务
(1)创建静态路由
在创建静态路由时,可以同时指定出接口和下一跳。对不同出接口类型,可以只指定出接口或只指定下一跳。
①对于点对点接口,只需指定出接口(可同时指定下一跳)
②对于NBMA接口,只需指定下一跳(可同时指定出接口)
③对于以太网接口和VT接口,必须指定下一跳(有时需同时指定出接口)
(2)(可选)配置静态路由的缺省优先级
缺省优先级值(60),也可改变缺省优先级,以影响路由的选路顺序。
(3)(可选)使能静态路由按递归深度优先选择
路由迭代是通过路由的下一跳信息来找到直连出接口的过程。迭代深度指路由迭代中查找路由的次数,次数越少迭代深度越小。当系统中存在若干条同一前缀,迭代深度不同的静态路由时,迭代深度较小的路由稳定性较高。配置了基于迭代深度的优选之后,系统会选择迭代深度较小的静态路由作为活跃路由,并下发FIB。
(4)(可选)配置静态路由永久发布
静态路由永久发布就是通过Ping静态路由目的地址的方式来检测链路的有效性。配置静态路由永久发布后,静态路由会一直生效,不受路由出接口状态的影响。
创建静态路由时要区分是在公共网络中创建,还是在具体的VPN实例网络中创建,不同类型网络中所允许携带的参数不同。
system-view
ip route-static ip-address {mask | mask-length} {nexthop-address | interface-type interface-number [nexthop-address] | vpn-instance vpn-name nexthop-address} [preference preference | tag tag][description description] 在NBMA或者广播网络中
ip route-static ip-address {mask | mask-length} interface-type interface-number [nexthop-address] [preference preference | tag tag] *ldp-sync [description description] 在点对点网络中
以上是在公网(即非特定VPN实例的网络上)配置静态路由。
ip route-static vpn-instance vpn-source-name destination-address {mask | mask-length} {nexthop-address [public] | interface-type interface-number [nexthop-address] | vpn-instance vpn-destination-name nexthop-address} [preference preference | tag tag]*[description description] 在NBMA或者广播网络中
ip route-static vpn-instance vpn-source-name destination-address {mask | mask-length} interface-type interface-number [nexthop-address] [preference preference | tag tag] *ldp-sync [description description] 在点对点网络中
以上是在VPN实例中配置静态路由。
ip-address或destination-address指定惊天路由的目的IP地址,可以是主机IP地址(创建主机静态路由时),也可以是网络IP地址(创建网络静态路由时);mask|mask-length指定静态路由的目的IP地址所对应的子网掩码或子网掩码长度。如果创建的是主机静态路由,子网掩码为255.255.255.255,对应的子网掩码长度为32,如果目的IP地址和掩码都为0.0.0.0,则配置的为缺省路由;public指定nexthop-address是公网地址,而不是源VPN中的IP地址,在为VPN实例配置静态路由时,下一跳IP地址可以属于VPN实例,也可以属于公网。
ip route-static default-preference preference 设置静态路由的缺省优先级,仅在所有上一步在创建静态路由时没有指定preference参数的静态路由上生效。
ip route-static selection-rule relay-depth 使能静态路由按迭代深度进行优选功能。
ip route-static ip-address {mask | mask-length} {nexthop-address | interface-type interface-number [nexthop-address] | vpn-instance vpn-name nexthop-address} permanent 配置静态路由永久发布。
二、配置静态路由与静态BFD联动
在配置静态路由与静态BFD联动之前,需要配置好对应的静态BFD会话。
与BFD会话绑定仅可在公网(非特定VPN实例网络)静态路由进行配置,配置的方法很简单,在系统视图下执行ip route-static ip-address {mask|mask-length} {nexthop-address |interface-type interface-number [nexthop-address]}[preference preference |tag tag]* track bfd-session cfg-name[description text]命令即可。参数track bfd-session cfg-name就是要指定用来与所指定的公网静态路由绑定的BFD会话名称(所绑定的静态BFD会话要事先配置好)。要确保BFD会话和静态路由在同一链路上。(前面学习BFD时遇到过,这里的cfg-name应该是本地标识符???)
三、配置静态路由与NQA联动
如果互联设备不支持BFD功能,可以配置静态路由与NQA联动,利用NQA测试例对链路状态进行检测,提高网络可靠性。NQA把测试两端称为客户端和目的端(或服务器端),并在客户端发起测试,目的端接收报文后,返回给源端(客户端)相应的回应信息。
下表为配置步骤,2~8步为NQA测试例的创建与配置,第10步为静态路由与NQA测试例联动。
system-view
nqa test-instance admin-name test-name 创建NQA测试例并进入测试例视图
test-type icmp 配置测试例类型为ICMP。
destination-address ipv4 ip-address 配置NQA测试例的目的IP地址,也就是NQA测试例的服务器端IP地址。
frequency interval 配置测试例的自动执行测试的时间间隔。
interval {milliseconds interval | seconds interval} 配置NQA测试例的发送报文的时间间隔。
probe-count number 配置NQA测试例一次测试的探针数目。
start now [end {at [yyyy/mm/dd] hh:mm:ss | delay {seconds second | hh:mm:ss} | lifetime {seconds second | hh:mm:ss}] 立即启动测试例
start at [yyyy/mm/dd] hh:mm:ss [end {at [yyyy/mm/dd] hh:mm:ss | delay {seconds second | hh:mm:ss} | lifetime {seconds second | hh:mm:ss}] 在指定时刻启动测试例
start delay {seconds second | hh:mm:ss} [end {at [yyyy/mm/dd] hh:mm:ss | delay {seconds second | hh:mm:ss} | lifetime {seconds second | hh:mm:ss}] 延迟指定时间后启动测试例。
quit
ip route-static ip-address {mask | mask-length} {nexthop-address | interface-type interface-number [nexthop-address]} [preference preference | tag tag] * track nqa admin-name test-name [description text] 配置静态路由与NQA测试例联动。
静态路由配置示例
上图的网络拓扑,要求通过配置静态路由实现不同网段的任意两台主机之间互通。
1、基本配置思路
静态路由配置主要是5个参数:目的IP/子网掩码、下一跳IP、出接口、优先级。另外在配置静态路由一定要注意单向性,也就是要使双方能互相访问,必须同时配置往返路径的两条静态路由。当然还必须在各主机上配置指向连接三层设备LAN接口IP地址的缺省网关。
配置各接口IP,配置静态路由,RA和RC上可只配置缺省路由
在RouterA和RouterC上采用静态路由效果更好的,到达PC2网段的具体静态路由:
按照适配掩码最长原则,到PC2的报文经过静态路由转发。
IP路由表中的“Flags”是路由标记,可以是R(表示该路由是迭代路由)和D(表示该路由已下发到FIB表)字母,或者是它们的组合。但IP路由表中的所有路由均有D标记,因为它们都下发到FIB中。
静态路由与BFD联动配置示例
RouterA通过配置静态路由,经由RouterB与外部相连,要求在RouterA和RouterB之间实现毫秒级故障感知。
1、基本配置思路
实现毫秒级故障感知,只有通过与BFD会话进行绑定。在RouterA和RouterB上分别创建双向BFD会话,并绑定RouterA到达外部网络的静态路由(这种单一出口网络中可直接使用静态缺省路由)。
通过dis ip routing-table verbose命令,看到默认路由还在,只是其Flags为R,没有D,没有下发到FIB,而不带verbose的命令查询到的都是下发到FIB表的路由项。
对于bfd,他要实现毫秒级的反应,其用于监控的数据包应该需要毫秒级的间隔进行交互吧?这会不会影响链路的带宽?
静态路由与NQA联动配置示例
如上图拓扑,在RouterB和RouterC上都配置了到用户交换机的静态路由,RouterB为主路由器,RouterC为备用路由器。正常情况下,SwitchA上的用户业务用流量走主用链路RouterB——switchA,主用链路故障切换到备用链路RouterC——SwitchA。
1、基本配置思路
①在各路由器上配置IP地址以及OSPF路由协议,并配置不同链路的路由开销值,最终使得RouterB为主用路由器,RouterC为备用路由器。
②在RouterB与SwitchA之间建立ICMP类型的NQA测试例,同时分别配置RouterB和RouterC到SwitchA上连接的用户网络的静态路由,并将在RouterB配置的静态路由与NQA测试例联动。
RB和RC上都配置到用户交换机的静态路由,RB为主路由,RC为备份路由,正常情况下,SA用户流量走主用链路RB——SA,主用链路故障,切换到备用RC——SA。
第一步,配置各设备IP地址
第二步,配置各交换机接口到对应的VLAN,上联路由器的接口配置为hybrid类型,且为untagged,因为路由器三层接口,如果接收待标签的帧,需要配置子接口进行VLAN终结,有些麻烦。
第三步,在RA、RB、RC上配置OSPF,使它们之间三层可达。
第四步,为了保证RA有到达用户网络的路由,需要在RB和RC上配置OSPF动态路由协议引入静态路由,然后通告给RA,为了使RB成为主路由,需要在RB引入静态路由时开销更小。
第五步,在RB上配置RB和SA之间的NQA ICMP测试例。
第六步,在RB和RC上分别配置到达SA静态路由,在RB上配置静态路由要与NQA联动。
查看结果:
关闭SA的G0/0/1端口,则
RA上到7.0的路由
在RC上进行同样设置,RC与SB进行NQA联动,但是没有达到效果、
想实现SA——RB为主,SA——RC为备份,SB——RC为主,SB——RB为备份,如何实现???
想要的结果是到172.16.8.0的主路由应该是走172.16.4.2,这里主要原因,个人认为是在ospf中引入静态路由时的cost设置,所以在RB上的静态路由总比RC上的cost值小,导致上面的结果,这里,静态路由的preference值是对路由协议优先级的设置,对下一站的路由没有影响,所以这里只有OSPF引入静态路由时配置的cost值才是最终的决定值,而这个设置只能批量对所有静态路由,无法在对具体的多个静态路由分配不同的cost值。