路由器原理详解

转自: [url]http://www.linkwan.com/gb/routertech/netbase/routerbase.htm[/url]
 
1.网络互联方式
1.1 网桥互连的网络
——网桥工做在OSI模型中的第二层,即链路层。完成数据帧(frame)的转发,主要目的是在链接的网络间提供透明的通讯。网桥的转发是依据数据帧中的源地址和目的地址来判断一个帧是否应转发和转发到哪一个端口。帧中的地址称为“MAC”地址或“硬件”地址,通常就是网卡所带的地址。
——网桥的做用是把两个或多个网络互连起来,提供透明的通讯。网络上的设备看不到网桥的存在,设备之间的通讯就如同在一个网上同样方便。因为网桥是在数据帧上进行转发的,所以只能链接相同或类似的网络(相同或类似结构的数据帧),如以太网之间、以太网与令牌环(token ring)之间的互连,对于不一样类型的网络(数据帧结构不一样),如以太网与X.25之间,网桥就无能为力了。
——网桥扩大了网络的规模,提升了网络的性能,给网络应用带来了方便,在之前的网络中,网桥的应用较为普遍。但网桥互连也带来了很多问题:一个是广播风暴,网桥不阻挡网络中广播消息,当网络的规模较大时(几个网桥,多个以太网段),有可能引发广播风暴(broadcasting storm),致使整个网络全被广播信息充满,直至彻底瘫痪。第二个问题是,当与外部网络互连时,网桥会把内部和外部网络合二为一,成为一个网,双方都自动向对方彻底开放本身的网络资源。这种互连方式在与外部网络互连时显然是难以接受的。问题的主要根源是网桥只是最大限度地把网络沟通,而无论传送的信息是什么。
1.2 路由器互连网络
——路由器互连与网络的协议有关,咱们讨论限于TCP/IP网络的状况。
——路由器工做在OSI模型中的第三层,即网络层。路由器利用网络层定义的“逻辑”上的网络地址(即IP地址)来区别不一样的网络,实现网络的互连和隔离,保持各个网络的独立性。路由器不转发广播消息,而把广播消息限制在各自的网络内部。发送到其余网络的数据茵先被送到路由器,再由路由器转发出去。
——IP路由器只转发IP分组,把其他的部分挡在网内(包括广播),从而保持各个网络具备相对的独立性,这样能够组成具备许多网络(子网)互连的大型的网络。因为是在网络层的互连,路由器可方便地链接不一样类型的网络,只要网络层运行的是IP协议,经过路由器就可互连起来。
——网络中的设备用它们的网络地址(TCP/IP网络中为IP地址)互相通讯。IP地址是与硬件地址无关的“逻辑”地址。路由器只根据IP地址来转发数据。IP地址的结构有两部分,一部分定义网络号,另外一部分定义网络内的主机号。目前,在Internet网络中采用子网掩码来肯定IP地址中网络地址和主机地址。子网掩码与IP地址同样也是32bit,而且二者是一一对应的,并规定,子网掩码中数字为“1”所对应的IP地址中的部分为网络号,为“0”所对应的则为主机号。网络号和主机号合起来,才构成一个完整的IP地址。同一个网络中的主机IP地址,其网络号必须是相同的,这个网络称为IP子网。
——通讯只能在具备相同网络号的IP地址之间进行,要与其它IP子网的主机进行通讯,则必须通过同一网络上的某个路由器或网关(gateway)出去。不一样网络号的IP地址不能直接通讯,即便它们接在一块儿,也不能通讯。
——路由器有多个端口,用于链接多个IP子网。每一个端口的IP地址的网络号要求与所链接的IP子网的网络号相同。不一样的端口为不一样的网络号,对应不一样的IP子网,这样才能使各子网中的主机经过本身子网的IP地址把要求出去的IP分组送到路由器上。
2 路由原理
——当IP子网中的一台主机发送IP分组给同一IP子网的另外一台主机时,它将直接把IP分组送到网络上,对方就能收到。而要送给不一样IP于网上的主机时,它要选择一个能到达目的子网上的路由器,把IP分组送给该路由器,由路由器负责把IP分组送到目的地。若是没有找到这样的路由器,主机就把IP分组送给一个称为“缺省网关(default gateway)”的路由器上。“缺省网关”是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址。
——路由器转发IP分组时,只根据IP分组目的IP地址的网络号部分,选择合适的端口,把IP分组送出去。同主机同样,路由器也要断定端口所接的是不是目的子网,若是是,就直接把分组经过端口送到网络上,不然,也要选择下一个路由器来传送分组。路由器也有它的缺省网关,用来传送不知道往哪儿送的IP分组。这样,经过路由器把知道如何传送的IP分组正确转发出去,不知道的IP分组送给“缺省网关”路由器,这样一级级地传送,IP分组最终将送到目的地,送不到目的地的IP分组则被网络丢弃了。
——目前TCP/IP网络,所有是经过路由器互连起来的,Internet就是成千上万个IP子网经过路由器互连起来的国际性网络。这种网络称为以路由器为基础的网络(router based network),造成了以路由器为节点的“网间网”。在“网间网”中,路由器不只负责对IP分组的转发,还要负责与别的路由器进行联络,共同肯定“网间网”的路由选择和维护路由表。
——路由动做包括两项基本内容:寻径和转发。寻径即断定到达目的地的最佳路径,由路由选择算法来实现。因为涉及到不一样的路由选择协议和路由选择算法,要相对复杂一些。为了断定最佳路径,路由选择算法必须启动并维护包含路由信息的路由表,其中路由信息依赖于所用的路由选择算法而不尽相同。路由选择算法将收集到的不一样信息填入路由表中,根据路由表可将目的网络与下一站(nexthop)的关系告诉路由器。路由器间互通讯息进行路由更新,更新维护路由表使之正确反映网络的拓扑变化,并由路由器根据量度来决定最佳路径。这就是路由选择协议(routing protocol),例如路由信息协议(RIP)、开放式最短路径优先协议(OSPF)和边界网关协议(BGP)等。
——转发即沿寻径好的最佳路径传送信息分组。路由器首先在路由表中查找,判明是否知道如何将分组发送到下一个站点(路由器或主机),若是路由器不知道如何发送分组,一般将该分组丢弃;不然就根据路由表的相应表项将分组发送到下一个站点,若是目的网络直接与路由器相连,路由器就把分组直接送到相应的端口上。这就是路由转发协议(routed protocol)。
——路由转发协议和路由选择协议是相互配合又相互独立的概念,前者使用后者维护的路由表,同时后者要利用前者提供的功能来发布路由协议数据分组。下文中提到的路由协议,除非特别说明,都是指路由选择协议,这也是广泛的习惯。
3 路由协议
——典型的路由选择方式有两种:静态路由和动态路由。
——静态路由是在路由器中设置的固定的路由表。除非网络管理员干预,不然静态路由不会发生变化。因为静态路由不能对网络的改变做出反映,通常用于网络规模不大、拓扑结构固定的网络中。静态路由的优势是简单、高效、可靠。在全部的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准。
——动态路由是网络中的路由器之间相互通讯,传递路由信息,利用收到的路由信息更新路由器表的过程。它能实时地适应网络结构的变化。若是路由更新信息代表发生了网络变化,路由选择软件就会从新计算路由,并发出新的路由更新信息。这些信息经过各个网络,引发各路由器从新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑变化。动态路由适用于网络规模大、网络拓扑复杂的网络。固然,各类动态路由协议会不一样程度地占用网络带宽和CPU资源。
——静态路由和动态路由有各自的特色和适用范围,所以在网络中动态路由一般做为静态路由的补充。当一个分组在路由器中进行寻径时,路由器首先查找静态路由,若是查到则根据相应的静态路由转发分组;不然再查找动态路由。
——根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。这里的自治域指一个具备统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,经常使用的有RIP、OSPF;外部网关协议主要用于多个自治域之间的路由选择,经常使用的是BGP和BGP-4。下面分别进行简要介绍。
3.1 RIP路由协议
——RIP协议最初是为Xerox网络系统的Xerox parc通用协议而设计的,是Internet中经常使用的路由协议。RIP采用距离向量算法,即路由器根据距离选择路由,因此也称为距离向量协议。路由器收集全部可到达目的地的不一样路径,而且保存有关到达每一个目的地的最少站点数的路径信息,除到达目的地的最佳路径外,任何其它信息均予以丢弃。同时路由器也把所收集的路由信息用RIP协议通知相邻的其它路由器。这样,正确的路由信息逐渐扩散到了全网。
——RIP使用很是普遍,它简单、可靠,便于配置。可是RIP只适用于小型的同构网络,由于它容许的最大站点数为15,任何超过15个站点的目的地均被标记为不可达。并且RIP每隔30s一次的路由信息广播也是形成网络的广播风暴的重要缘由之一。
3.2 OSPF路由协议
——80年代中期,RIP已不能适应大规模异构网络的互连,0SPF随之产生。它是网间工程任务组织(1ETF)的内部网关协议工做组为IP网络而开发的一种路由协议。
——0SPF是一种基于链路状态的路由协议,须要每一个路由器向其同一管理域的全部其它路由器发送链路状态广播信息。在OSPF的链路状态广播中包括全部接口信息、全部的量度和其它一些变量。利用0SPF的路由器首先必须收集有关的链路状态信息,并根据必定的算法计算出到每一个节点的最短路径。而基于距离向量的路由协议仅向其邻接路由器发送有关路由更新信息。
——与RIP不一样,OSPF将一个自治域再划分为区,相应地即有两种类型的路由选择方式:当源和目的地在同一区时,采用区内路由选择;当源和目的地在不一样区时,则采用区间路由选择。这就大大减小了网络开销,并增长了网络的稳定性。当一个区内的路由器出了故障时并不影响自治域内其它区路由器的正常工做,这也给网络的管理、维护带来方便。
3.3 BGP和BGP-4路由协议
——BGP是为TCP/IP互联网设计的外部网关协议,用于多个自治域之间。它既不是基于纯粹的链路状态算法,也不是基于纯粹的距离向量算法。它的主要功能是与其它自治域的BGP交换网络可达信息。各个自治域能够运行不一样的内部网关协议。BGP更新信息包括网络号/自治域路径的成对信息。自治域路径包括到达某个特定网络须通过的自治域串,这些更新信息经过TCP传送出去,以保证传输的可靠性。
——为了知足Internet日益扩大的须要,BGP还在不断地发展。在最新的BGp4中,还能够将类似路由合并为一条路由。
3.4 路由表项的优先问题
——在一个路由器中,可同时配置静态路由和一种或多种动态路由。它们各自维护的路由表都提供给转发程序,但这些路由表的表项间可能会发生冲突。这种冲突可经过配置各路由表的优先级来解决。一般静态路由具备默认的最高优先级,当其它路由表表项与它矛盾时,均按静态路由转发。
4 路由算法
——路由算法在路由协议中起着相当重要的做用,采用何种算法每每决定了最终的寻径结果,所以选择路由算法必定要仔细。一般须要综合考虑如下几个设计目标:
——(1)最优化:指路由算法选择最佳路径的能力。
——(2)简洁性:算法设计简洁,利用最少的软件和开销,提供最有效的功能。
——(3)坚固性:路由算法处于非正常或不可预料的环境时,如硬件故障、负载太高或操做失误时,都能正确运行。因为路由器分布在网络联接点上,因此在它们出故障时会产生严重后果。最好的路由器算法一般能经受时间的考验,并在各类网络环境下被证明是可靠的。
——(4)快速收敛:收敛是在最佳路径的判断上全部路由器达到一致的过程。当某个网络事件引发路由可用或不可用时,路由器就发出更新信息。路由更新信息遍布整个网络,引起从新计算最佳路径,最终达到全部路由器一致公认的最佳路径。收敛慢的路由算法会形成路径循环或网络中断。
——(5)灵活性:路由算法能够快速、准确地适应各类网络环境。例如,某个网段发生故障,路由算法要能很快发现故障,并为使用该网段的全部路由选择另外一条最佳路径。
——路由算法按照种类可分为如下几种:静态和动态、单路和多路、平等和分级、源路由和透明路由、域内和域间、链路状态和距离向量。前面几种的特色与字面意思基本一致,下面着重介绍链路状态和距离向量算法。
——链路状态算法(也称最短路径算法)发送路由信息到互联网上全部的结点,然而对于每一个路由器,仅发送它的路由表中描述了其自身链路状态的那一部分。距离向量算法(也称为Bellman-Ford算法)则要求每一个路由器发送其路由表所有或部分信息,但仅发送到邻近结点上。从本质上来讲,链路状态算法将少许更新信息发送至网络各处,而距离向量算法发送大量更新信息至邻接路由器。
——因为链路状态算法收敛更快,所以它在必定程度上比距离向量算法更不易产生路由循环。但另外一方面,链路状态算法要求比距离向量算法有更强的CPU能力和更多的内存空间,所以链路状态算法将会在实现时显得更昂贵一些。除了这些区别,两种算法在大多数环境下都能很好地运行。
——最后须要指出的是,路由算法使用了许多种不一样的度量标准去决定最佳路径。复杂的路由算法可能采用多种度量来选择路由,经过必定的加权运算,将它们合并为单个的复合度量、再填入路由表中,做为寻径的标准。一般所使用的度量有:路径长度、可靠性、时延、带宽、负载、通讯成本等。
5 新一代路由器
——因为多媒体等应用在网络中的发展,以及ATM、快速以太网等新技术的不断采用,网络的带宽与速率飞速提升,传统的路由器已不能知足人们对路由器的性能要求。由于传统路由器的分组转发的设计与实现均基于软件,在转发过程当中对分组的处理要通过许多环节,转发过程复杂,使得分组转发的速率较慢。另外,因为路由器是网络互连的关键设备,是网络与其它网络进行通讯的一个“关口”,对其安全性有很高的要求,所以路由器中各类附加的安全措施增长了CPU的负担,这样就使得路由器成为整个互联网上的“瓶颈”。
——传统的路由器在转发每个分组时,都要进行一系列的复杂操做,包括路由查找、访问控制表匹配、地址解析、优先级管理以及其它的附加操做。这一系列的操做大大影响了路由器的性能与效率,下降了分组转发速率和转发的吞吐量,增长了CPU的负担。而通过路由器的先后分组间的相关性很大,具备相同目的地址和源地址的分组每每连续到达,这为分组的快速转发提供了实现的可能与依据。新一代路由器,如IP Switch、Tag Switch等,就是采用这一设计思想用硬件来实现快速转发,大大提升了路由器的性能与效率。
——新一代路由器使用转发缓存来简化分组的转发操做。在快速转发过程当中,只需对一组具备相同目的地址和源地址的分组的前几个分组进行传统的路由转发处理,并把成功转发的分组的目的地址、源地址和下一网关地址(下一路由器地址)放人转发缓存中。当其后的分组要进行转发时,茵先查看转发缓存,若是该分组的目的地址和源地址与转发缓存中的匹配,则直接根据转发缓存中的下一网关地址进行转发,而无须通过传统的复杂操做,大大减轻了路由器的负担,达到了提升路由器吞吐量的目标。

0javascript

收藏css

jasmine_han0324

8篇文章,1W+人气,0粉丝

Ctrl+Enter 发布html

发布vue

取消java

推荐专栏更多

CTO成长的道与术

IT人的互联网名企晋升之道

共28章 | CTO训练营

¥51.00 252人订阅
网工2.0晋级攻略 ——零基础入门Python/Ansible

网络工程师2.0进阶指南

共30章 | 姜汁啤酒

¥51.00 2034人订阅

扫一扫,领取大礼包

0

分享
jasmine_han0324
相关文章
相关标签/搜索