APP下载

静态路由高级配置研究

2014-11-10左金平王智超

晋中学院学报 2014年3期
关键词:表项路由表网段

左金平,王智超

(晋中学院信息技术与工程学院,山西晋中 030600)

0 引言

企业网中实现网络的连通性时会使用内部网关路由协议如RIP、EIGRP、OSPF、ISIS等.运营商网络中一般会使用到外部网关路由协议如BGP等.相比这些动态路由选择协议,我们研究的静态路由在一些场合会有较好的运用.譬如静态路由可以减少控制层面的流量,同时不易产生环路,具有稳定的性质,而且配置简单,对路由器性能要求较低;同时利用静态路由还可实现冗余备份,以及路由的精确控制.

1 问题分析

1.1 静态路由概述

静态路由是通过手工配置命令,让路由器获悉非直连网段的路由信息.路由器不需自己选路,故静态路由没有度量值,由于是管理员手工配置的不易出现环路所以管理距离的值默认为1(在cisco设备中).

对于静态路由配置现给出一般性建议:在MA网段中多数情况下会包含有多个节点接收者并不固定,配置一个出站接口信息的路由器,通过一个节点直接把报文发送出去,为能找到正确的下一跳地址,将会导致转发数据的路由器只要使用该路由条目转发数据包就会无限地针对目的IP地址做ARP请求,并且在对端路由器开启了代理ARP功能的前提下,对任何MAC地址的请求,都会回复开启代理ARP功能的路由器的接口的MAC地址,这将导致大量ARP在网段中不停地转发,浪费了带宽以及ARP表项.因此在MA网段中,静态路由建议配置下一跳地址.在P2P网段中,只关联下一跳地址的静态路由不能够直接用来转发报文.通常路由器查找路由表使用路由条目转发报文要明确通过哪个接口发送,对于包含的是一个下一跳地址而不是发包接口的静态路由条目,路由器通过查找这条路由条目后只能明确把包发送给这个目的网段时将包发到确定的下一跳地址,但不能明确通过哪个接口将包发给下一跳,通常情况下要做一次路由表查询,查找关于下一跳地址所在网段的路由条目来确定通过哪个接口把报文发给这个地址即进行递归表查询.因此在P2P网段中建议配置出站接口.

1.2 静态路由实现路由控制

如图1所示,讨论一种情况:在初始配置完成后(假设路由器在RipV2的环境中运行),实现RouterA把环回口路由传给RouterB但RouterB不会把RouterA的环回口路由传给RouterC,即实现RouterB把除了RouterA环回口路由外的所有其他IGP路由发给RouterC.

图1 静态路由实现路由控制图

首先对一般情况进行定义,在路由协议A中将一个接口使用宣告语句宣告进协议A后,会实现该接口对于该协议报文的收发.这时会接收邻居传递过来的所有路由条目.会发送该路由器所有被配置进协议A的接口的路由.以及通过这些接口获悉的该路由器邻居传递过来的被加入路由表属于该协议的路由.即在距离矢量中(RIP、EIGRP)使用静态路由可以实现路由过滤.

其次对上述拓扑进行定义,RouterB把s1/1配置进RIP进程,不把RouterB的s1/1配置进RIP那么RouterA路由和12.1.1.0网段路由都会去掉.即只要在RouterB中创建一条静态路由即可实现需求.

RouterB(config)#ip route 1.1.1.0255.255.255.0 s1/112.1.1.1

更进一步研究发现,若初始环境配置为OSPF,由于在链路状态协议(OSPF)中,路由器传递拓扑信息LSA,并不传递路由条目,而每台路由器关于一个区域的所有路由条目是由本地计算得到的,故此时,在初始环为OSPF情况下,RouterB上配置静态路由会覆盖OSPF路由,但却不会影响LSA的传递.故此时静态路由无法实现路由过滤.

1.3 静态路由永久特性

静态路由在路由表中存放原则为,该条目关联的发包接口必须为up/up状态.当接口故障后,静态路由会从路由表中删除.这种情况下静态路不会在路由表中永久存在.

实验室中的测试拓扑会经常变更路径,一种情况是静态路由关联一条按需链路(Circuiton Demand).例如基于VC工作帧中继环境中,使用链路时会自动建立,发包结束后将链路拆除.在基于SVC的帧中继环境中将主接口建立成若干点到点子接口,某些点到点子接口关联SVC.当SVC被拆除后,子接口将会断掉,此时若通过配置静态路由实现连通性,则静态路由就会消失.要保证在按需链路的情况下静态路由能实时地存在于路由表中,在配置静态路由时就应加上permanent参数.例如对于CISCO较低的IOS,若配置了按需链路,同时用静态路由完成连通性.当没有流量通过时按需链路断开,但当拓扑变更按需链路建立好时,静态路由还不能及时回到路由表中,此时按需链路即便接通也因没有路由而无法转发报文.这种情况下就应加上permanent参数,即便链路断了静态路由也不会删除.但当使用clear ip route*命令后,包括配置了permanent参数的静态路由表项在内的全部路由表项都将被刷新.

1.4 静态路由的浮动特性

图2 静态路由的浮动特性图

如图2所示,讨论一种情况:两家企业既通过串口连接又使用ISDN连接.现将两企业抽象为两个网段.172网段和10网段.通过串口连接的主链路带宽较好.为满足HA高可用性需求.通过配置实现在主链路正常时使用主链路发送报文,当主链路故障时使用ISDN提供的备份链路来实现低速率的连通.

根据上述需求可通过静态路由和某种IGP共同实现.调整静态路由的管理距离来实现备份链路的冗余备份即静态路由的浮动特性.使得网络10不可达时会影响RouterA的路由表.例如RouterA、RouterB之间运行RIP当10网段正常时RouterB会把这个网段路由以RIP路由的形式发给RouterA,10网段故障时,此时RouterA有一条静态路由,此静态路由的管理距离应比RIP的管理距离高,那么这条静态路由就会出现在路由表中.RouterA(config)#ip route1.1.1.0255.255.255.0 fastEthernet0/012.12.12.1121

1.5 静态路由递归表查询

如图3所示,讨论一种情况:RouterC上配置ip route1.1.1.0255.255.255.0 fa0/012.1.1.2此时Router C没有去往12.1.1.0网段的路由条目,对于Router C而言这条路由条目的作用是,若发包给1.1.1.0网段则会将包转发给12.1.1.2这个地址,此时Router C没有去往这个地址所在网段的路由条目.Router C只会通过S1/1把包发出去,但并不明确发给哪个路由器.故若配置一条静态路由,其下一跳和本地非直连且本地路由表中不存在去往下一跳所在网段路由条目,则此静态路由不能使用.

图3 静态路由递归表查询图

如图4所示,讨论一种情况:假定在Router3上连接了若干子网段.Router0想要访问这些子网段并且通过静态路由来部署.此时下一跳可设置为Router1、Router2.假设下一跳都关联在Router1的f0/1.可以通过Router1访问这些子网段.当Router1故障时,拓扑发生变更,可将四条静态路由删掉,重新配置关联到Router2上的路由.Router1恢复正常.此时希望通过Router1转发,则需重新改写.在连接有大量网段的真实环境中此方案无法实施.静态路由在这样的环境中如果直接关联一个直连接口为下一跳,会极为不灵活.

图4 利用递归路由影响路由查询图

首先对一般情况进行定义,一条路由的下一跳通常直连的是数据层面的下游邻居接收数据报文接口的IP地址,可描述为一般情况下对于路由器而言不管什么路由条目基本下一跳都和本地直连,但特殊情况下并不是所有路由条目下一条都一定会和设备直连.对于静态路由通常下一跳和本地直连使得即便第一条路由发不了包,使用递归表查询下一条直连路由便可转发报文.更一般性的概述为静态路由下一跳地址可以为去往目的网段下游任何一台设备的任何一个接口的IP地址.

其次对图4拓扑进行描述,让Router0配置静态路由时既不关联Router1,也不关联Router2,直接把静态路由的下一跳关联到Router3 f0/0,此时Router0发包给这些子网段只用把报文发给Router3即可.但当Router0配置完静态路由后没有200.2.2.0网段路由,故路由条目不可用.路由器会发送ARP请求,请求关于200.2.2.4的ARP信息.在Router0、Router1、Router2上开启debug arp在Router0上ping 10.1.1.4.通过debug发现Router0要发包给10.1.1.4目的节点时要发包给200.2.2.4下一跳地址.而此时Router0没有关于200.2.2.4的ARP表项,所以发送ARP请求.

*Mar100:10:18.679:IPARP:creating incompleteentry for IPaddress:200.2.2.4

interface FastEthernet0/1

*Mar100:10:18.679:IPARP:sent req src 100.1.1.1 c004.0f9c.0001,

dst200.2.2.40000.0000.0000 FastEthernet0/1

ARP为广播发送,对PC而言若该设备收到路由器传递的Proxy ARPRelay,则该PC会无条件信任该Relay,且将其加入到ARP表.对路由器,若该设备收到Proxy ARPRelay,则该路由器(启用了基于IPV4的路由选择)会优先判断该Relay中应答者IP地址所在网段是否可达,若可达则接收,反之丢弃.所以Router0发送的ARP请求Router1和Router2都能收到.此时Router1和Router2接收到ARP的接口默认情况下开启代理ARP,当接口收到了ARP请求后,判断请求者Router0和被请求者Router3不在同一广播域,且Router1和Router2既拥有去往源100.1.1.0网段又拥有去往目的200.2.2.0网段的路由条目.所以Router1和Router2都把接收到ARP请求的接口的MAC地址作为应答返还给Router0.Router0收到ARP的应答会被过滤.故只要保证当Router0收到了这些ARPRelay时信任,并且加表即可.故需在Router0上配置Router0(config)#ip route 200.2.2.0255.255.255.0 fastEthernet0/1100.1.1.2,当Router0收到ARPRelay后,就会在ARP表中添加200.2.2.4对Router1的映射,再使用该路由条目发包时,会直接通过ARP表项封装数据从f0/1发送出去,交换机收到此报文后只会将此报文发送给Router1.此时Router0便可使用Router1这条路经访问Router3.在Router0上S 200.2.2.0/24[1/0]via 100.1.1.2,fastethernet0/1路由的用途只是告知路由器发包给这些子网段静态路由的下一跳IP地址.递归路由对Router0而言,仅为让Router0收到了关于200.2.2.0网段下一跳地址的ARPRelay时能判断其为法.对于递归路由的下一跳地址100.1.1.2无意义.

更进一步研究发现,JeffDoyle在TCP/IP路由技术(第一卷)的描述认为:Router0指四条静态路由条目去往目的网段,若去往这些目的网段通过Router1路径,对于这条递归路由,可直接把下一跳写为Router1直连接口的IP地址,当Router1故障时只需要将这条递归路由删掉,重新写一条下一跳指向Router2的直连接口地址,便可实现路径切换.通过Jeff Doyle描述,可认为递归表路由的下一跳是会影响发包接口去往目的网段的路径选择,这个下一跳直接影响了会使用哪条路径来发包给下一跳地址.为此讨论递归路由的下一跳是否会影响发包.若递归路由的下一跳确有意义,则发包给10.0.1.0网段,先发包给200.2.2.4,而发包给200.2.2.4则发包给100.1.1.2.即Router0收到的去往10.0.1.0网段的包在做ARP请求时,请求的是100.1.1.2节点的MAC地址.但实验发现事实请求的为200.2.2.0网段.由此可知递归路由对下一条没有任何影响.能影响选路的是ARP表中所解析到的关于主路由的下一跳地址所对应的ARP表项.如果解析到的是关于Router1的,便会通过Router1所在链路转发数据,如果解析到的是关于Router2的,便会通过Router2所在链路转发数据.通过多次实验测试发现Router0发送ARP请求时,Router1和Router2都会应答,Router0会将最后到达的ARPRelay加表.而递归表路由的下一跳不会影响路径.影响路径的仅仅是代理ARP应答.

最后对图4拓扑进行定义:实验发现,依据Jeff Doyle的描述,正常时递归路由下一跳配置为Router1,当Router1故障时,再把递归表路由下一跳配置为Router2.是无法进行切换的.原因分析为发包给下一跳地址是基于ARP表项的,ARP表项一但录入ARP表中,存活时间为4小时.重新切换一条递归路由路径依然会走原来的故障链路无法切换.事实还发现一台路由器关于一个目标IP地址,在ARP表项中拥有相对应的表项,除非表项消失,否则不管任何情况下该路由器都不会再为这个目的IP地址做ARP请求.为此上述情况中当Router1故障后,不会影响Router0的任何路由信息的改变,静态路由只要出站接口正常路由就会存在,此时主路由和递归路由也都会存在,且ARP表项也存在.即便将递归路由改变.也依然会使用原始的ARP发包,仍旧发给Router1.ARP表项超时后,Router0会删除掉关于200.2.2.4的ARP表项.这时再使用主路由,又会针对下一跳地址发送ARP请求,此次再回复ARP的将为Router2.Router0会将200.2.2.4映射到Router2的接口MAC地址.故发包时目的MAC地址对应Router2接口MAC地址,交换机会把报文转发给Router2.实现路径切换,整个过程需要4小时.故要快速切换只需将ARP的超时时间改短.

Router0(config)#interface fsatEthernet0/1

Router0(config-if)#arp timeout10<0- 214783 Seconds>

1.6 实现非对称路由

如图4所示,讨论另一种情况:使用Router0通过Router1发包给Router3,回包方向为从Router3通过Router2回给Router0.

在初始ARP的时间内,在Router0没有关于下一跳ARP的应答时,通过设置代理ARP的发送情况即先将ARP表项清空,再通过关闭代理ARP功能.使Router0触发第一个报文到达Router3时,将Router2的f0/1代理ARP关闭,把Router1的f0/0代理ARP也关闭.发包时只让Router1发送代理ARP应答.回包时让Router3也使用递归表查询,让Router3只能收到Router2的代理ARP应答.

Router2(config)#interface fastEthernet0/0 Router2(config-if)#no ip proxy-arp

2 结论

综上所述,可做如下结论,考虑到网络中的两种广播域MA(Ethernet、FrameRelay)和P2P(HDLC、PPP),通过分析考虑到两种方式的局限性,建议配置静态路由时既配置出站接口又同时配置下一跳IP地址.这样既不会有递归表查询又不会引起大量的ARP解析,提高路由效率.在DV协议环境中使用静态路由覆盖通过DVIGP获悉的动态路由条目可以实现该路由条目的传递过滤,在LS协议环境中使用静态路由覆盖通过LSIGP获悉的动态路由条目无法实现该路由条目的传递过滤.企业环境中尤其是对于外网的连接,如果使用静态路由实现连通性,应配置permanent参数.静态浮动路由,可使得IGP路由正常时静态路由不会出现在路由表中,当IGP网络环境发生改变影响路由表时IGP路由消失时而静态路由又会浮现在路由表中,实现冗余备份.递归路由可影响选路增加静态路由的灵活性.实现递归路由的使用要配置一条递归路由,此递归路由无论携带任何下一跳地址,此下一跳地址都不会影响选路.

[1]Jeff Doyle,Jennifer Carroll.TCP/IP路由技术:第一卷[M].北京:人民邮电出版社,2007.

[2]W.Richard Stevens.TCP/IP详解卷1:协议[M].北京:机械工业出版社,2000.

[3]David Hucaby,Steve McQuerry,Andrew Whitaker.Cisco路由器配置手册[M].北京:人民邮电出版社,2012.

[4]Diane Teare.CCNPROUTE(640-902)学习指南[M].北京:人民邮电出版社,2011.

[5]谢希仁.计算机网络[M].北京:电子工业出版社,2008.

猜你喜欢

表项路由表网段
一种改进的TCAM路由表项管理算法及实现
基于OSPF特殊区域和LSA的教学设计与实践
基于ARMA模型预测的交换机流表更新算法
单位遭遇蠕虫类病毒攻击
研究路由表的查找过程
网上邻居跨网段访问故障
SDN数据中心网络基于流表项转换的流表调度优化
Onvif双网段开发在视频监控系统中的应用
BGP创始人之一Tony Li:找到更好的途径分配互联网地址
IP 路由技术与RIP 协议探析