第四章路由器的操作第一节路由器原理路由器是最复杂的网络设备,具有最高的智能水平。路由器根据路由表里储存的路由信息(主要是目的网段与路由器端口的对应关系),以逻辑IP地址转发数据包,并定期地或者根据网络拓扑结构的变化及时地更新路由表里的路由信息.路由器的各个端口分别处于不同的冲突域和不同的广播域,因此可以起到划分网段的作用,路由器还可以把不同的数据帧格式相互转换,如:FDDI和以太网,因此适合异种网络互联,可以连接不同的局域网和广域网网段.路由器基本功能、作用路由器---互连网络的枢纽•路由器工作在最低三层协议中,其中最高层为网络层,如TCP/IP的IP层或SPX/IPX的IPX层。关键地位是因为它处于网络层,•路由器具有很强的异种网互联能力,互联的两个物理网络其最低二层协议可互不相同,通过路由器第三层得到统一•CISCO路由器均是多协议路由器,能同时支持多种不同的网络层协议(IP、IPX、APPLETALK),并可以“使能”或“禁止”某些特定协议。••功能一路由器的一个基本功能是连接多个独立的网络或子网•功能二路由器的另一个基本功把数据(IP报文)传送到正确的网络,细分则包括:•IP数据报的转发,包括数据报的寻径和传送。•子网隔离,抑制广播风暴。•维护路由表,并与其它路由器交换路由信息,这是IP报文转发的基础。•IP数据报的差错处理及简单的拥塞控制。•实现对IP数据报表的过滤、记帐•功能三对于不同规模网络,路由器作用的侧重点有所不同•主干网:路由选择,主干网上的路由器必须知道到达所有下层网络的路径,这需要维护庞大的路由表,并对连接状态变化作出尽可能迅速的反应•地区网:路由器主要作用是网络连接和路由选择,即连接下层各个基层网络单位-园区网,同时负责下层网络之间的数据转发。•园区网:路由器主要作用是分隔子网,各个子网在逻辑上独立,而路由器是唯一能够分隔它们的设备,它负责子网之间报文转发和广播隔离,同时在边界上的路由器与上层网络连接第二节路由原理及协议路由器主要工作之一是判定到给定目的地最佳路径,建立路由表转发数据包.1.路由器上配置的三种路由1)静态路由2)动态路由3)缺省路由1.1静态路由配置在全局设置模式下iproute目地子网地址子网掩码相邻路由器相邻端口地址或者本地物理端口号1.2缺省路由配置在全局设置模式下iproute0.0.00.0.0.0相邻路由器的相邻端口地址或本地物理端口号1.路由选择协议算法分类:1)距离矢量路由选择协议2)链路状态路由选择协议3)混合型路由选择协议2.路由协议2.1路由信息协议RIP2.1.1RIP的特征•一种距离向量协议.•跳数作为路由选择协议•跳数最大为16条•每30秒广播一次报文2.1.2RIP的启动•Routerrip•network2.1.3监测IP包2.1.4显示IP路由表2.2运行最短路径优先OSPF2.2.1什么是OSPF•快速收敛•支持VLSM•基于带宽选择路径•协议信息使用多播2.2.2数据包格式*DatabaseDescription-用于描述整个数据库,该数据包仅在OSPF初始化时发送。*Linkstaterequest-用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。*Linkstateupdate-这是对linkstate请求数据包的响应,即通常所说的LSA数据包。*Linkstateacknowledgment-是对LSA数据包的响应。*Packetlength-定义整个数据包的长度。*RouterID-用于描述数据包的源地址,以IP地址来表示。*AreaID-用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的OSPF区域。*Checksum-校验位,用于标记数据包在传递时有无误码。*Authenticationtype-定义OSPF验证类型。*Authentication-包含OSPF验证信息,长为8个字节。2.3OSPF基本算法SPF算法及最短路径树SPF算法是OSPF路由协议的基础。SPF算法有时也被称为Dijkstra算法,这是因为最短路径优先算法SPF是Dijkstra发明的。即OSPF路由器至每一个目的地路由器的距离,称为OSPF的Cost,其算法为:Cost=100×106/链路带宽在这里,链路带宽以bps来表示。也就是说,OSPF的Cost与链路的带宽成反比,带宽越高,Cost越小,表示OSPF到目的地的距离越近。举例来说,FDDI或快速以太网的Cost为1,2M串行链路的Cost为48,10M以太网的Cost为10等。链路状态算法作为一种典型的链路状态的路由协议,OSPF还得遵循链路状态路由协议的统一算法。链路状态的算法非常简单,在这里将链路状态算法概括为以下四个步骤:1、当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)时,路由器会产生链路状态广播数据包LSA(Link-StateAdvertisement),该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。2、所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。Flooding是指路由器将其LSA数据包传送给所有与其相邻的OSPF路由器,相邻路由器根据其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻的路由器,直至稳定的一个过程。3、当网络重新稳定下来,也可以说OSPF路由协议收敛下来时,所有的路由器会根据其各自的链路状态信息数据库计算出各自的路由表。该路由表中包含路由器到每一个可到达目的地的Cost以及到达该目的地所要转发的下一个路由器(next-hop)。4、第4个步骤实际上是指OSPF路由协议的一个特性。当网络状态比较稳定时,网络中传递的链路状态信息是比较少的,或者可以说,当网络稳定时,网络中是比较安静的。这也正是链路状态路由协议区别与距离矢量路由协议的一大特点。2.4OSPF路由协议的基本特征前文已经说明了OSPF路由协议是一种链路状态的路由协议,为了更好地说明OSPF路由协议的基本特征,我们将OSPF路由协议与距离矢量路由协议之一的RIP(RoutingInformationProtocol)作一比较,归纳为如下几点:*RIP路由协议中用于表示目的网络远近的唯一参数为跳(HOP),也即到达目的网络所要经过的路由器个数。在RIP路由协议中,该参数被限制为最大15,也就是说RIP路由信息最多能传递至第16个路由器;对于OSPF路由协议,路由表中表示目的网络的参数为Cost,该参数为一虚拟值,与网络中链路的带宽等相关,也就是说OSPF路由信息不受物理跳数的限制。并且,OSPF路由协议还支持TOS(TypeofService)路由,因此,OSPF比较适合应用于大型网络中。*RIP路由协议不支持变长子网屏蔽码(VLSM),这被认为是RIP路由协议不适用于大型网络的又一重要原因。采用变长子网屏蔽码可以在最大限度上节约IP地址。OSPF路由协议对VLSM有良好的支持性。*RIP路由协议路由收敛较慢。RIP路由协议周期性地将整个路由表作为路由信息广播至网络中,该广播周期为30秒。在一个较为大型的网络中,RIP协议会产生很大的广播信息,占用较多的网络带宽资源;并且由于RIP协议30秒的广播周期,影响了RIP路由协议的收敛,甚至出现不收敛的现象。而OSPF是一种链路状态的路由协议,当网络比较稳定时,网络中的路由信息是比较少的,并且其广播也不是周期性的,因此OSPF路由协议即使是在大型网络中也能够较快地收敛。*在RIP协议中,网络是一个平面的概念,并无区域及边界等的定义。随着无级路由CIDR概念的出现,RIP协议就明显落伍了。在OSPF路由协议中,一个网络,或者说是一个路由域可以划分为很多个区域area,每一个区域通过OSPF边界路由器相连,区域间可以通过路由总结(Summary)来减少路由信息,减小路由表,提高路由器的运算速度。一个典型的OSPF网络结构可以参见附图二附图2:OSPF典型结构*OSPF路由协议支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信息。并且OSPF可以对不同的区域定义不同的验证方式,提高网络的安全性。*OSPF路由协议对负载分担的支持性能较好。OSPF路由协议支持多条Cost相同的链路上的负载分担,目前一些厂家的路由器支持6条链路的负载分担。区域及域间路由前文已经提到过,在OSPF路由协议的定义中,可以将一个路由域或者一个自治系统AS划分为几个区域。在OSPF中,由按照一定的OSPF路由法则组合在一起的一组网络或路由器的集合称为区域(AREA)。在OSPF路由协议中,每一个区域中的路由器都按照该区域中定义的链路状态算法来计算网络拓扑结构,这意味着每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。这意味着OSPF路由域中的网络链路状态数据广播被区域的边界挡住了,这样做有利于减少网络中链路状态数据包在全网范围内的广播,也是OSPF将其路由域或一个AS划分成很多个区域的重要原因。随着区域概念的引入,意味着不再是在同一个AS内的所有路由器都有一个相同的链路状态数据库,而是路由器具有与其相连的每一个区域的链路状态信息,即该区域的结构数据库,当一个路由器与多个区域相连时,我们称之为区域边界路由器。一个区域边界路由器有自身相连的所有区域的网络结构数据。在同一个区域中的两个路由器有着对该区域相同的结构数据库。我们可以根据IP数据包的目的地地址及源地址将OSPF路由域中的路由分成两类,当目的地与源地址处于同一个区域中时,称为区域内路由,当目的地与源地址处于不同的区域甚至处于不同的AS时,我们称之为域间路由。OSPF的骨干区域及虚拟链路(Virtual-link)在OSPF路由协议中存在一个骨干区域(Backbone),该区域包括属于这个区域的网络及相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨干区域一般为区域0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传递至区域0(骨干区域),再由区域0将该路由信息向其余区域作广播。骨干区域与其余区域的关系可以以附图三来说明。附图3:骨干区域及域间路由在实际网络中,可能会存在backbone不连续的或者某一个区域与骨干区域物理不相连的情况,在这两种情况下,系统管理员可以通过设置虚拟链路的方法来解决。虚拟链路是设置在两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域相连。虚拟链路被认为是属于骨干区域的,在OSPF路由协议看来,虚拟链路两端的两个路由器被一个点对点的链路连在一起。在OSPF路由协议中,通过虚拟链路的路由信息是作为域内路由来看待的。下面我们分两种情况来说明虚拟链路在OSPF路由协议中的作用。1.当一个区域与area0没有物理链路相连时前文已经提到,一个骨干区域Area0必须位于所有区域的中心,其余所有区域必须与骨干区域直接相连。但是,也存在一个区域无法与骨干区域建立物理链路的可能性,在这种情况下,我们可以采用虚拟链路。虚拟链路使该区域与骨干区域间建立一个逻辑联接点,该虚拟链路必须建立在两个区域边界路由器之间,并且其中一个区域边界路由器必须属于骨干区域。这种虚拟链路可以以下图来说明。附图4:虚拟链路(1)在上图所示的例子中,区域1与区域0并无物理相连链路,我们可以在路由器A及路由器B之间建立虚拟链路,这样,将区域2作为一个穿透网络(Transit-network),路由器B作为接入点,区域1就与区域0建立了逻辑联接。2.当骨干区域不连续时OSPF路由协议要求骨干区域area0必须是连续的,但是,骨干区域也会出现不连续的情况,例如,当我们想把两个OSPF路由域混合到一起,并且想要使用一个骨干区域时,或者当某些路由器出现故