第2章TCP/IP协议孤础 由器岀∫敔障时并不影响自治域内其他区路由器的正常工作,这也给刚络的管理维护带 来方便 (3)边界网关协议(BGP) BGP协议是为TCP/IP互联网设计的外部网关协议,用于多个自治域之间、它既不 是基于纯粹的逹路状态算法,也不是基于纯粹的距离向量算法:它的主费功能是与其他 自治城的BGP协议交换网络可达信息。各个自治域可以运行不同的内部网关协议。 BGP协议史新信息包括网络号/自治域路径的成对信息。自治域路径包括到达某个特定 网络须经过的自治城串,这些更新信息通过TCP协议传送出去,以保证传输的可靠性 为了满 inlernet益扩k的需要,BGP协议还在不断地发展。在最新的BGP4协 议中,还可以将相似路由合并为一条路由。 4)路巾表项的优先问题 在个路由器屮,可同时配胃静态路由和一种或多种动态路由。它们各自维护的路 由表都提供给转发程序,但这些路由表的表项间可能会发生冲突。这种冲突可通过配置 各路由表的优先级来解决。通常静态路由具有默认的最高优先级,当其他路出表表项与 它矛予盾吋,均按静态路由转发。 4)路由箅法 路由算法在路由协议中起着至关重要的作用,采用何种算法往往决定了最终的寻径 结果,因此选择路由算法一定要仔细。通常需要综合考虑以下几个设计目标: (1)最优化:指路由算法选择最佳路径的能力。 (2)简洁性:算法设计简清利用最少的软件和开销提供最有效的功能。 (3)坚固性:路由算法处于非正常或不可预料的环境时,如硬件故障、负载过高或操 作失误时,都能正确运行。由于路由器分布在网络联接点上,所以在它们出故障时会产生 严重后果。最好的路由器算法通常能经受时间的考验,并在各种网络环境下被证实是可 靠的。 (4)快速收敛:收敛是在最路径的判断上所有路由器达到一致的过程。当某个网 络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络 引发重新计算最住路径、最终达到所有路由器一致公认的最佳路径。收歙慢的路由算法 会造成路径循环或网络中断。 (5)灵活性:路由算法叮以快速、准确地适应各种网络环境。例如,某个网段发生故 障,路由算法要能很快发现故障,并为使用该网段的所有路由选择另一条最佳路径。 路由算法按照种类可分为以下几种:静态和动态、单路和多路、平等和分级、源路由和 透明路由、域内和域间、链路状态和距离向量。前面儿种的特点与字面意思基本一致,下 面着重介绍链路状态和距离向量算法。 链路状态算法(也称最短路径算法)发送路由信息到互联网上所有的结点,然而对于 每个路山器,仪发送它的路出表中描述了其自身链路状态的那一部分。距离向量算法(也 称为 Bellman-Ford算法)则要求每个路由器发送其路由表全部或部分信息,但仅发送到邻 近结点上。从本质上来说,链路状态算法将少量更新信息发送至网络各处,而距离向量算 法发送大量更新信息至邻接路由器。 由于链路状态算法收敛更快,因此它在一定程度上比距离向量算法更不易产生路由
网络安全技术教程 循环。但另·方面,链路状态算法要求比距离向量算法有更强的CPU能力和更多的內存 空间,因此链路状态算法将会在实现时显得更昂贵一些。除了这些区别,两种算法在大多 数环境下都能很好地运行 最后ⅷ要指出的是,路由算法使用了许多种不同的度量标准去决定最佳路径。复杂 的路由算法可能采用多种度量*选择路由,通过一定的加权运算,将它们合并为单个的复 合度量、冉填入路由表中,作为寻径的标准。通常所使用的度量有:路径长度、可靠性、时 延、带宽、负载、通信成本等 5)新-代路由器 由于多媒体等应用在网络屮的发展,以及ATM、快速以太网等新技术的不断采用,网 络的带宽与速率飞速提高,传统的路由器已不能满足人们对路由器的性能要求因为传 统路由器的分组转发的设计与实现均基于软件,在转发过程中对分组的处理要经过许多 环节,转发过程复杂,使得分组转发的速率较慢。另外,由于路由器是网络互联的关键设 备,是网络与其他网络进行通信的个“关口”,对其安全性有很高的要求,因此路由器中 各种附加的安全措施增加了CPU的负担,这样就使得路由器成为整个互联网上的“瓶 传统的路由器在转发每个分组时,都要进行一系列的复杂操作,包括路由赍找、访 闰控制長匹配、地址解析、优先级管理以及其他的附加操作。这一系列的操作大大影响了 路由器的性能与效率降低了分组转发速率和转发的吞吐量,增加了CPU的负担。而经 过路由器的前后分组间的相关性很大,具有相同目的地址和源地址的分组往往连续到达, 这为分组的快速转发提供了实现的可能与依据。新…代路由器,如 IP Switch、 Tag Switch 等,就是采用这设计思想用硬件来实现快速转发,大大提高了路由器的性能与效率 新一代路由器使用转发缓存来简化分组的转发操作。在快速转发过程中,只需对一 组具有相同目的地址和源地址的分组的前几个分组进行传统的路由转发处理,并把成功 转发的分组的目的地址、源地址和下一网关地址(下·路由器地址)放人转发缓存中。当 其后的分组要进行转发时,应先查看转发缓存,如果该分组的目的地址和源地址与转发缓 存中的匹配,则直接根据转发缓存中的下一网关地址进行转发,而无须经过传统的复杂操 作,大大减轻了路由器的负捐,达到了提高路由器吞叶量的目标。 2.路由信息协议(RIP) 1)背景 路由信息协议(RIP)是以跳数作为 metric F距离向量协议sRIP协议广泛用于全球 因特网的路由是一种内部网关协议( Interior Gateway Protoco),即在自治系统内部执行 路由功能。外部网关路由协议( Exterior Gatew ay protocol),如边缘网关协议(BP),在不 同的自治系统间进行路由:RIP协议的前身是 Xerox gWinfo协议,后来的版本 Routed 封装在982年伯克利标准发布Umix(即BSD中)。RIP协议本身发展成因特网络由协 议,有些协议族使用了RP协议的变种,例如: Apple talk路出表维护协议(RTMP)和 Banyan VINES路由表协议(RP)就是基于IP协议的RIP协议的。RP协议最新的增强 版是RIP2,它允许RIP分组中包含更多的信息并提供了简单的认证机制。 PRP协议在两个文档中正式定义:RFC1058和1723RFC1058(1988)描述了 协议的第一版实现RFC1723(1994)是它的更新,允许RIP分组携带更多的信息和
草2章 TCP/F协议基 安仝特性 2)路史新 HIP协议以规则的时间间隔及在网络拓扑改变时发送路由更新信息。当路由器收到 包含某表项的更新的路由更新信息时,就更新其路由表:该路径的 metrIc值加上1,发送 者记为下一跳:RIP路由器只维护到∏的的最佳路径(具有最小 metric值的路径)。更新 了自己的路由表后,路由器立刻发送路由更新把变化通知给其他路由器,这种更新是与周 期件发送的更新信息无关的 3)RIP路由 metric RP协议使用单路由 metric(跳数)来衡量源网络到目的网络的距离。从源到吊的 的路径中屮每一跳被赋以一个跳数值,此值通常为1,当路H器收到包含新的或改变的∏ 的网络表项的路由更新信息,就把; metric值加l然后存人路由表,发送者的IP地址就 仵为卜跳地止。 RP协议通过对从源到目的的最大跳数加以限制来防止路由环,最大值为15,如果 路由器收到了含冇新的或改变的表项的路由更新信息,且把 metric值加1后成为无穷大 (即16),就认为该目的网络不可到达 4)RIP协议的稳定性 为了适应快速的网络拓扑变化,RIP协议规定了一些与其他路由协议柑同的稳定特 性,例如RIP协议实规了 Split-horizon和Hold-down机制来防止路由信息的错误传播 此外,RIP的跳数限制也防止了无限增长而产生路由环 5)RIP计时器 RIP协议使用了些计时器以控制其性能,包括路由更新计时器、路由超吋和路由清 全的计时器。路出更新计时器记录周期性吏新的时间间隔,通常为30s,每当该计时器重 置吋增加小的随机秒数以防止冲突。每个路由長项都有相关的路由超时计时器,当路由 超时计时器过期时,该路径就标记为失效的,但仍保存在路由表中,直到路出清空计时器 过期才被清掉。 6)RIP分组格式 下面描述HPRP协议和IPRP2协议的分组格式。 (1)RIP分组格式 命令——表示该分组是请求还是响应。请求分绢要求路由器发送其路由表的全部或 部分。响应分组可以是主动提供的周期性路由更新或对请求的响应。大的路由表可以使 用多个RIP分组来传递信息 版本号—指明使用的RIP协议版本,此城可以通知不同版本的不兼容。 0未使用 地址族标志(AFI)——指明使用的地址族。RP协议设计用于携带多种不同协议的 路由信息。每个项都有地址族标忐来表明使用的地址类型,IP协议的AF是2c 地址——指明该项的IP地址 Metric—表示到目的的过程屮经过了多少跳数(路出器数)有效路径的值在1和 5之间,16表示不可达路径。 在个IPRP分组中最多可有25个AFI、地址和 Metric域,即一个RIP分组中
网络安全技术教程 最多可含有25个地址项。 (2)RIP2协议分组格式 RIP2规范(RFC1723)允许RIP分组包含更多的信息,并提供了简单的认证机制,如 命令—表示该分组是请求还是响应。请求分组要求路由器发送其路由表的全部或 部分。响应分组可以是主动提供的周期性路由更新或对请求的响应。大的路由表可以使 用多个RP分组来传递信息 版本——指明使用的RP协议版本,在实现P2协议或进行认讦的RP分组中,此 值为2。 0—未使用。 地址族标忐(AF)—指明使用的地址族。RIP协议设计用于携带多种不同协议的 路由信息。每个项都有地址族标志来表明使用的地址类型,IP的AFⅠ是2。如果第一项 的AFI为0xFFF,该项剩下的部分就是认证信息。目前,唯的认证类型就是简单的口 令 路由标记——提供区分内部路由(由RP学得)和外部路由(由其他协议学得)的方 IP地址—指明该项的IP地址。 ∫网掩码——包含该项的子网掩码。如果此域为0,则该项不指定子网掩码 下-跳——指明下一跳的IP地址。 trIC—表示到目的的过程中经过了多少跳数(路由器数):有效路径的值在 15之间,16表示不可达路径 注:在一个PRIP分组中最多可有25个AF地址和 metric域,即一个RP分组中 最多叮含有25个地址项。如果AFI指明为认证信息,则只能有24个路由表 3.开放式最短路径优先协议(OSPF 1)背景 OsPF协议是由IETF的IGP协议工作组为IP网开发的路出协议:该工作组成立于 1998年,专门设计用于因特网的基于最短路径优先(sPF)算法的IGP协议。与IGRP协 议类似,OSPF协议创建的原因是到了20世纪80年代中期,RP协议不能服务于大型 构网络的缺陷突出显现出来了 OsPE协议是由多个研究结果发展而来的,包括1978年为 ARPANET开发的Bot Beranek Newman(BBN)的SPF算法,r. Radia Perlman对路由信息容错性广播的研究 (1988),BBN在区域路由的工作(1986)和OSI的IS1S路由协议的早期版本 OSPF协议有两个主要的特性。首先该协议是开放的,即其规范是公开的,公布的 OSPF规范是RFC]247。另一个基本的特性是OSPF协议基于SPF算法,该算法也称为 Dijkstra算法,即以创建该算法的人来命名 OSPF协议是个链接状态路由协议,在间一层的区域内与其他所有路由器交换链接 状态公告(LSA)信息。OSPF协议的LSA中包含连接的接口、使用的 metric及其他的变 量信息。OSFF路由器积累链接状态信息,并使刑SPF算法来计算到各节点的最短路径 作为链接状态路由协议,OSPF协议与RP和GRP这些距离向量路由协议是不同
葉2章TeP/P协议慕础 的a使用距离向量算法的路出器的工作模式是在路由更新信息中把路由表全部或部分发 送给其相邻的路出器 2)路由层次 与RJP协议不同,OSPF协议的L作是有层次的,其层次中最大的实体是自治系统 (AS),即遵循共冋的路由策略统管理卜的网络群。虽然OSPF协议可以与其他AS中 的路由器交换路由信息,但它们是一种AS内部(内部网关)路由协议。 一个AS可以分为多个区间,即一组连续的网络和相连的主机。拥有多个接口的路 由器可以加入多个区间,这些路由器称为区间边缘路由器,分别为每个区间保存其拓扑数 据库。拓扑数据库实际上是与路由器有关联的网络的总图,包含从同区间所有路由器 收到的LSA的集合。因为同一区问内的路由器共享相同的信息,所以它们具有相同的拓 扑数据库。(术语域( donain)有时川于描述含有相同拓扑数据库的路由器组成的网络,通 常与AS可互换) 区间的划分产生了两种不同类型的OSPF路由,区别在于源和目的是在相同的还是 不同的区问,分别为区间内路由和跨区问路由。 OSPF协议王干负责在区间之间分发路出信息,包含所有的区间边缘路由器、非全部 属丁某区问的网络及其相连的路由器 主于本身也是个OSPF区间,所以所有的主十路由器与其他区间路由器一样,使用相 同的过程和算法米维护主十内的路由信息,主T拓扑对所有的跨区间路由器都是可见的。 可以以非连续主十的形式来定义区间,这时,主十的连接必须通过虚拟链接来保持 虚拟链接可以配置在仟意共亨非丰干区间链接的路由器对之间,就像它们有直接链接 样工作 运行osP的AS迦缘路由器通过外部网关协议,如EGP或BGP协议,或通过配置 信息来学习外部路H。 3)SPF算法 最短路径优先路由箅法是OSPF协议的基础。当SPF路由器加点后,它就初始化路 由协议数据结构,然后等待下层协议关于接口已叮用的通知信息。当路由器确认接口已 准备好,就用 OSPF Hello协议*获取邻居信息,即具有在共同的网络上接口的路由器。 路由器向邻居发送Hlo包并接收它们的Hel包。除了帮助学习邻居外,Hlo包也有 keep- alive的功能。 在多重访问网络(攴持多J两个路出器的网络)中,Helo协议选出一个“指派路由器” 和·个备份指派路由器。指派路由器负责为整个多重访问网络生成LSA,它可以减少网 络通信量和拓扑数据库的大小 当两个相邻路由器的链接状态数据库同步后,就称为“邻接”。在多重访问网络中,指 派路由器决定哪些路由器应该相邻接,拓扑数据库在邻接路由器对间进行同步。邻接控 制路由协议分组的分发,只在邻接点间交换 钶个路由器周期性地发送LSA,提供其邻接点的信息或当其状态改变吋通知其他路 由器。通过对已建业的邻接关系和链接状态进行比较,失效的路山器叮以很快被检测出 来,网络拓扑相应地更动。从LSA生成的拓扑数据库中,每个路出器计算最短路径树,以 臼已为根。这个最短路径树就生成了路由表