进入R0,enable回车,回conf t回车,hostname r0回车,进入f0/1这个接口配置答IP,interface f0/1回车,ip address 192.168.1.1 255.255.255.0回车,no shutdown, exit , 以同样的方法进入f0/0配置IP192.168.2.1,配置静态路由,ip route 192.168.3.0 255.255.255.0 192.168.2.2,exit,
R1的IP配置就不说了,同上,主要是静态路由,其他步骤一样,ip route 192.168.1.0 255.255.255.0 192.168.2.1这是R1的,最后配置好PC1的IP及网关,就通了。
比如说有计算机A,路由器BCDEA想知道 xxx.com所对应的IP是多少?
A就去问B,这时候A是请求者,B是被请求者;
但是B也不知道xxx.com的IP,那么它就去问C,这时个B变成了请求者,C是被请求者
如此递归
到E时,假设E知道xxx.com知道返回了xxx.com的IP给D,然后D再告诉C,C再告诉B,B再告诉了A,这样就完成了查询。。。这样的方式就叫递归。。。
另外还有一种叫迭代。。。
比如说A想知道xxx.com,去请求B,B这时候告诉A说,“C可能xxx.com,你去问它吧”,
这时候A再去请求C,C这时候告诉A说,“D可能xxx.com,你去问它吧”,
。。。
直到A去请求E,这时候E就告诉了A,xxx.com的IP地址是xx.xxx.xx.xx
2011年
什么是路由? 所谓路由的过程就是从入站接口接收到数据包,经过CPU的处理(查找路由表,重构二层帧),把“新”包放入到相应的接口的过程。这个过程实际上可以 转化成下面的一个模型:一辆汽车(数据包)走到了一个十字路口,注意,此时它是有目的地的(目的IP地址),比如这辆汽车想去往北京,到了这个十字路口, 看到了有几个牌子上面写着“北京,石家庄,唐山”,那么这个时候驾驶员(CPU)就应该来选择那个去往北京的路口(出站接口),这样也就完成了路由功能。更进一步,微观上的路由查询是怎么进行的。这里所说的微观,并不去讨论路由转发的各种算法,而是去讨论路由器如何去查找路由表。我们先来看一个简单的拓扑有四个路由器,分别是POOH,TIGGER,PIDET,RABBIT,在这个拓扑下面显示的是POOH的路由表,可以看到,现在已经可以从POOH上查询到了五个网段,也就是说现在达到了全网互通。
举 例来说,如果想达到网段10.1.10.0,CPU开始查找路由表,发现了一个路由条目是到达10.1.10.0的,通过192.168.1.194,而 这个地址就是piglet路由器最左边的那个端口,那么这个192.168.1.194又是怎么到达呢?再一次查找路由表,找到了一个网段 192.168.1.192,这里面就包含了192.168.1.194这个地址,而到达它是通过192.168.1.66来实现的。那么 192.168.1.66又是应该怎么到达?还得继续查找路由表。192.168.1.194
这个过程在周而复始的进行,形成一个递归的过程,知道路由器找到直连网段位置,按照上面的那个实例来说就是当找到192.168.1.64这个条目。
好了,这就是路由器递归查询的过程。
但是,这样的查询方法有什么用途呢?你是否考虑过呢?
先让我们回到一个比较本质的问题上去,路由器和交换机的作用是什么?其实无非是两个作用,一是考虑如何把数据包正确的送到目的地址,二是如何更快的送到。 至于其他的各种安全技术,QoS等等都是为这两个终极目标服务的。由于本篇不涉及到交换机的内容所以在此略过不提,单说路由器,工程师们为了让路由器更好的完成这两个任务做出了不懈的努力,其中一个就是不断改进的包交换方法以达到快速的转发包的目的。
先让我们从历史的角度看一下
最早诞生的是“进程交换”
这种交换很传统,路由器每收到一个包就会通过CPU查找路由表然后送到出站端口,每过来一个包就会这样做一次。这种方法是没有问题的,但是却很慢,明显的效率不高。
为了解决这个问题,“快速交换”诞生了
这 里面有一个前提,也是能开发出“快速交换”的一个先提条件,那就是我们的数据一般都是以流的形式传播的,流,这个词十分形象,就是一串数据包都去往同一个 地方。当工程师发现了这个规律之后,“快速交换”的想法诞生了,所谓快速交换就是,先分析每个流的第一个包,按照进程交换的方式进行查询,然后出站同时把 这个查询的结果保存在一个独立的缓存中。当这个流中剩下的包进站时,路由器不是去查路由表而是去查缓存,这样就能节省CPU的资源,直接把包转发出去。这 样不但提高了包转发的速度,实际上也提高了CPU的使用效率。
最后就是CEF
思科的快速交换,CEF有太多的内容需要讲,相对于前两种交换方式有很大的不同,我在这里只取其在交换形式上的差别。进程交换是当一个新数据流来了后路由第一个包,然后把信息记入缓存来对转发进行加速。而CEF的做法更绝!
连第一个包都不用查了,直接进行缓存 *** 作!而且是在包之前就进行了缓存。
也就是大名鼎鼎的FIB表。
当一个数据包入站的时候,直接查询FIB表而不是路由表,这样就能大大增加转发的速度。
也 许你有疑问,我当初就是有疑问的,本来有好好的路由表,现在又建立了一个FIB表,一个数据包到了不还是需要查找吗?这样有什么作用?很显然现在一般的图 书上并没有写明原因,没有给我一个合理的解释。不过对于这个问题,以及对于CEF的专题讨论我会在下周的时候单独写一篇文章来叙述,让你明白CEF!
现在让我们尊重一个事实,CEF更快!
我用了大量的篇幅来写看似与本篇主题无关的“路由器交换”,我想告诉大家的是“加快交换,远离路由表”,CPU路由查询的次数越少转发的效率越高!
那么现在让我们回到本篇文章的主题“递归路由的查询”,强烈的困惑!人家查一次路由表都嫌多,你却使用递归查询查了那么多遍路由表!
确实,这就是递归查询的最大缺点!也是我们在设计网络的时候必须要考虑的一个问题。不过仔细想一下,既然这是一个极为“不成功”的方法,那么为什么还会允许它的存在呢?这又是为了什么?
递归查询的优势!无与伦比的优势!
我们来看一下这个拓扑,注意一下SANDERZ的静态路由的设计。
这就是一个典型的递归路由的使用案例,可以仔细的看一下。
这里我们先设计一个情景,从显示的路由路由信息来看,现在到达右侧网段的所有数据都要从HEFFALUMP路由器通过,这个时候如果HEFFALUMP坏了,那么必须要从WOOZLE进行路由。
这个时候网络管理员只需要调整一条路由就可以了。
Sanderz(config)# ip route 10.87.14.0 255.255.255.0 10.23.5.95
Sanderz(config)# no ip route 10.87.14.0 255.255.255.0 10.23.5.20
这样就完成了任务。
那么如果不使用递归路由呢?那么图中的每一个路由都要重新设置,如果按照上图的案例来说,我们需要重新写26条路由条目。如果你觉得这样的数量还能忍受, 那么如果有100个,400个网段呢?你要重写200条,800条路由!这个工作量就大了吧,你还能忍受吗?同样是400个网段,使用递归路由还是上面的 两条命令。
借用并改造算法中时间复杂度的概念:不使用递归路由的时间复杂度为O(n),而使用了递归路由的时间复杂度为O(1)!
这也就是递归路由最大的优点!
面对递归路由的优点与缺点,确实是很难办,是需要斟酌的。(这是《ROUTING TCP/IP VOL.1 》的说法)
不过我想其实并不是那么“难办”
从实际的网络应用来讲,现在能够使用静态路由的网络拓扑不会很大,相对于路由器CPU的处理能力来讲不是很大的负担,也就不会很影响速度,所以为了管理的方便我们是可以放心的使用递归路由的。
但是,我这种说法并不包含 两个大的园区网之间用静态路由的情况(教育网),这样的情况还是使用最普通的路有方式吧。
具体情况具体分析,相必大家对与递归路由的优势和缺点也是很熟悉了,能够在其间取舍。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)