《分布式系统:概念与设计》一3.4.3 IP路由

3.4.3 IP路由

IP层将数据包从源地址路由到目的地址。互联网上的每个路由器都实现了IP层的软件,用以提供一个路由算法。
主干 互联网的拓扑图在概念上被分割成自治系统(Autonomous System,AS),再被细分为区域。大多数大型机构(如大学和大公司)的企业内部网可看做AS,通常它们包含几个区域。在图3-10中,校园网是一个AS,图中显示的部分是一个区域。拓扑图上的每个AS都有一个主干区域。将非主干区域连接到主干区域的路由器集合,以及将这些路由器互连的链路构成了网络的主干。主干中的链路通常带宽很高,并且为保证可靠性,链路都被复制。这样的层次结构仅存在于概念中,主要用于管理资源与维护组件。它并不影响IP数据包的路由。
路由协议 RIP-1作为互联网上使用的第一个路由算法,是3.3.5节中描述的距离——向量算法的一个版本。RIP-2(见RFC 1388[Malkin 1993])由它发展而来,但包含了其他需求,如无类别域间路由、更好的组播路由以及认证RIP数据包以避免路由器受到攻击。
随着互联网规模的扩大,路由器的处理能力也不断增加,不再使用距离——向量算法已成为一个趋势,因为它收敛速度慢,并且具有潜在的不稳定性。现在趋向于使用3.3.5节中提到的链路-状态算法,这个算法被称为开放最短路径优先(Open Shortest Path First,OSPF)。该协议基于Dijkstra[1959]的路径寻找算法,它比RIP算法收敛得更快。
应当注意,在IP路由器中可以渐进地采纳新路由算法。路由算法的变化将导致新版本RIP协议的诞生,而每个RIP数据包会携带一个版本号。当引入一个新的RIP协议时,IP协议并不改变。无论使用哪个版本的RIP协议,IP路由器都会基于一个合理的(未必是最优的)路线,将到达的数据包转发出去。但是对于那些在更新路由表过程中需要合作的路由器,它们必须使用相同的算法。为此,需要使用上面定义的拓扑区域。在每个区域中使用一个路由协议,区域中的路由器在维护路由表时相互合作。只支持RIP-1的路由器依然很常见,它们利用新版本协议具有的向后兼容特性,与支持RIP-2和OSPF的路由器共存。
1993年,实际观测获得的数据[Floyd and Jacobson 1993]表明,RIP路由器的信息交换频率为30s,这会使IP传输性能产生周期性。IP数据包传输的平均延迟每隔30s就会出现一个尖峰。这可以追溯到执行RIP协议的路由器的行为——当接收到一个RIP数据包时,路由器会延迟IP数据包的向前传送,113直到路由表对当前收到的所有RIP数据包的更新过程结束。这会引起路由器一批一批地执行RIP动作。建议路由器采用15~45s范围内的随机值作为RIP的更新周期以进行纠正。
默认路由 到目前为止,我们对路由算法的讨论说明,每个路由器维护了一个完整的路由表,该表显示了到达互联网上每个目的地(子网或直接连接的主机)的路线。就互联网当前的规模而言,这显然不可行(目的地的数目可能已经超过了100万,而且仍在快速地增长)。
该问题有两个可能的解决方案,为缓解互联网的增长所带来的后果,这两个方案同时被采纳。第一个方案是采用某种形式的IP地址拓扑分组。1993年以前无法从IP地址推断出有关其位置的任何信息。1993年,为简化与节约IP地址的分配(这在下文的CIDR中讨论),对未来地址的分配决定使用下面的地区位置:
地址194.0.0.0~195.255.255.255在欧洲
地址198.0.0.0~199.255.255.255在北美地区
地址200.0.0.0~201.255.255.255在中南美地区
地址202.0.0.0~203.255.255.255在亚太地区
因为这些地理区域也对应于互联网上确切定义的拓扑区域,并且仅有部分网关路由器提供了对每个区域的访问,所以极大地简化了这些地址范围的路由表。例如,欧洲以外的路由器对于范围在194.0.0.0到195.255.255.255的地址,可以只有一个表项。路由器将所有目的地在这个范围内的IP数据包使用相同的路由发送到最近的欧洲网关路由器上。注意,在做出这个决策之前,IP地址的分配通常与拓扑或地理位置无关,目前这些地址的大部分仍在使用,1993年的决策无法减少这些地址对应路由表项的规模。
解决路由表大小爆炸性增长的第二个解决方案更简单而且非常有效。它基于下述观察结果,如果离主干链路最近的关键路由器具有比较完整的路由表,那么大多数路由器中的路由表信息的精确性可以放宽。放宽的表现形式为路由表中具有默认的目的地项,此默认项指定了所有目的地址不在路由表中的IP数据包所使用的路由。为了说明这种情况,考虑图3-7与图3-8,假设结点C的路由表改为:

结点C忽略了结点A与D。它将所有到达结点A与D的数据包都通过链路5路由到E。结果呢?目的地为D的数据包可以到达其目的地,在路由过程中不会损失有效性,但目的地为A的数据包会增加一跳,需要通过E和B进行传输。总之,默认路由的使用在表格大小与路由有效性之间作出了折中。但在有些情况下,特别是路由器在中继点位置时,所有向外发送的消息必须通过某一个点,此时不会损失有效性。默认路由方案在互联网路由中使用很广泛,互联网上没有一个路由器包含到达所有目的地的路由。
本地子网上的路由 当数据包的目的地主机与发送者在同一网络上时,利用地址的主机标识符部分可获得底层网络上的目的主机的地址,只需一跳就能将数据包传送到目的地。IP层使用ARP来获得目的地的网络地址,然后使用底层网络来传输数据包。
如果发送方计算机的IP层发现目的地在另一个网络上,它必须将消息发送到一个本地路由器。它使用ARP获得网关或路由器的网络地址,再使用底层网络将数据包传送给它们。网关和路由器被连接到两个或更多的网络上,它们具有多个互联网地址,每个地址对应一个所连接的网络。
无类别域间路由(CIDR) 3.4.1节指出,IP地址的短缺导致1996年引入CIDR方案,该方案用于分配地址以及管理路由表中的项。主要问题在于B类地址不足,B类地址用于那些具有255个以上主机的子网,同时又有大量的C类地址可用。CIDR对这个问题的解决方案是给那些需要255个以上地址的子网分配一批连续的C类地址。CIDR方案也允许将B类地址空间分割,以便把它分配给多个子网。
将C类地址分批似乎是一个简单的方法,但除非同时改变路由表的格式,它才会对路由表的大小产生显著的影响,进而影响管理路由表的算法的性能。改变路由表的方法是给路由表增加一个掩码域。掩码是一个位模式,用于选择与路由表项比较的IP地址部分。这有效地使主机/子网地址成为IP地址的任意部分,比A类、B类与C类地址提供了更大的灵活性,无类别域间路由也因此得名。同样,路由器的这些改变是增量式的,所以有些路由器执行CIDR,而其他路由器仍然使用旧的基于类别的算法。
该方案可以工作的原因是新分配的C类地址的范围是256的模,因此每个范围表示了C类大小的子网地址对应的一个整数值范围。另一方面,有些子网也使用CIDR划分单个网络中的地址范围,这个网络可以是A类、B类或C类网络。如果一组子网完全由CIDR路由器与外部世界相连接,那么该组子网的IP地址范围可以成批分配到每个子网中,其中由任意大小的二进制掩码决定子网。
例如,一个C类地址空间可以划分为32组的8地址空间。图3-10包含一个使用CIDR机制将138.37.95这样的C类地址规模的子网划分为多个组,115每组包含8个主机地址,每个地址的路由不同。不同的组用138.37.95.232/29以及138.37.95.248/29等符号表示。这些地址中的/29表示附加一个32的掩码,前29位是1,后3位是0。
未注册的地址和网络地址翻译(NAT) 不是所有访问互联网的计算机和设备都需要分配全局唯一的IP地址。局域网中的计算机通过具有NAT功能的路由器访问互联网,它依靠路由器将到达的UDP和TCP包重定向。图3-18给出了一个典型的家庭网络,其中的计算机和其他网络设备通过一个具有NAT功能的路由器与互联网相连。网络包括能访问互联网的计算机,它们通过有线以太网连接到路由器,还包括通过WiFi接入点连接的设备。为了保证完整性,图中给出了一些具有蓝牙功能的设备,但它们不是与路由器连接,因此不能直接访问互联网。家庭网络具有由互联网服务提供商分配的一个已注册的IP地址(83.215.152.95)。这里描述的方法适合任何希望其没有注册IP地址的计算机连接到互联网的组织。
家庭网络上所有能访问互联网的设备都被分配了192.168.1.x C类子网上的一个未注册的IP地址。大多数的内部计算机和设备由路由器上运行的动态主机配置协议116(Dynamic Host Configuration Protocol,DHCP)动态分配一个IP地址。在图3-18中,192.168.1.100以上的数字由DHCP服务使用,数字较小的结点(例如PC 1)已经以手工方式分配了数字,这样做的理由将在后面解释。虽然NAT路由器使得这些地址对互联网的其他部分完全隐藏,但通常使用IANA为私有互连网保留的三块地址(10.z.y.x,172.16.y.x或192.168.y.x)之一中的一段。
NAT的介绍见RFC 1631[Egevang and Francis 1994],它的扩展见RFC 2663[Srisuresh and Holdrege 1999]。具有NAT功能的路由器维护一个地址翻译表,使用UDP和TCP包中源端口和目的地端口号域,将每个到达的应答消息分配到发送该请求消息的内部计算机。注意,请求消息中给定的源端口总是被用做相应的应答消息中的目的地端口。

最常用的NAT寻址算法的工作流程如下:
1)当内部网络上的计算机发送一个UDP或TCP包给网络外的计算机时,路由器接收到数据包并将源IP地址和端口号保存为地址翻译表中一个可用的项。
2)路由器用路由器的IP地址替换包中的源地址,用虚拟端口号替换源端口,虚拟端口号指向包含发送计算机的地址信息的地址翻译表项。
3)已修改源地址和端口地址的数据包经路由器向它的目的地转发。现在,地址翻译表包含最新的从内部网上计算机发出的包的端口号和从虚拟端口号到实际内部IP地址的映射。
4)当路由器从外部计算机处接收到一个UDP或TCP包时,它使用包中的目的地端口号访问地址翻译表中的项。它用存储在表项中的值替换已接收包中的目的地址和端口号,然后将修改后的包转发到由目的地地址标识的内部计算机。
只要该端口还在使用,路由器就将保留端口映射并重用它。每次路由器访问表中的一项,就重设计时器。如果在计时器过期之前没有访问该表项,那么就从表中删除该表项。
上述方案很好地解决了未注册计算机的通信模式,在这种模式下,未注册计算机可以作为外部服务(例如Web服务器)的客户。但未注册计算机不能作为处理到达请求的服务器。为了处理这种情况,可以手工配置NAT路由器,将某个指定端口上所有到达的请求转发到一台指定的内部计算机上。作为服务器的计算机必须保留同样的内部IP地址,这一点可通过手工分配它们的地址(类似对PC1所做的操作)来达到。只要不要求多于一台内部计算机在指定端口提供服务,这种提供对服务的外部访问的解决方法是令人满意的。
NAT是一种解决个人和家庭计算机分配IP地址的短期解决方案。它使得互联网使用的扩张得比预期的更大,但它也有一些限制,例如上例中的最后一点。117IPv6被看成是未来趋势,它将使得所有计算机和便携设备能全方位地参与互联网。

时间: 2024-10-09 03:03:26

《分布式系统:概念与设计》一3.4.3 IP路由的相关文章

《分布式系统:概念与设计》一第3节 练习

前 言 在互联网和Web持续发展并且对我们社会的每个方面都产生影响的时候,这本教材的第5版问世了.本书的介绍性章节提到互联网和Web对诸多(如金融.商业.艺术.娱乐等)应用领域的影响以及对信息社会的普遍影响.它还强调了诸如Web搜索和多人在线游戏等应用领域中的需求.从分布式系统的角度出发,这些开发在应用的范围.多个现代系统所支持的工作负载和系统大小等方面正在对底层系统架构提出实质性的新需求.重要的趋势包括网络技术上不断增加的多样性和普遍性(包括不断增加的无线网络的重要性).移动和无处不在计算元素

《分布式系统:概念与设计》一1.2 分布式系统的例子

1.2 分布式系统的例子 本节给出能激发读者学习积极性的当代分布式系统的例子,用于说明分布式系统所扮演的无处不在的角色和相关应用的多样性. 如1.1节所提及的那样,网络无处不在,成为我们现在认为理所当然的日常服务(互联网和相关的万维网.Web搜索.在线游戏.电子邮件.社会网络.电子商务,等等)的基础.为了进一步说明这一点,可参考图1-1,它描述了一系列所选的关键商务或社会应用部门,强调了相关的分布式系统技术已公认或新出现的应用. 正如所看到的,分布式系统包含近些年许多最重要的技术发展,因此理解底

《分布式系统:概念与设计》一第3章 网络和网际互连

第3章 网络和网际互连 分布式系统使用局域网.广域网和互连网络进行通信.底层网络的性能.可靠性.可伸缩性.移动性以及服务质量特征都影响着分布式系统的行为,因而也影响这些系统的设计.为适应用户需求的改变,无线网络和有服务质量保障的高性能网络应运而生.计算机网络所基于的原理包括协议分层.包交换.路由以及数据流等,网际互连技术使得异构网络可以集成在一起.互联网就是一个重要的例子.它的协议广泛地应用于分布式系统中.互联网中使用的寻址以及路由方案经受了互联网快速成长所带来的影响.它们也被不断地修正,以适应

《分布式系统:概念与设计》一3.3.5 路由

3.3.5 路由 路由是除了局域网以外,例如以太网(局域网在所有相连的主机间两两都有直接连接),其他网络都需要的功能.在大型网络中,采用的是自适应路由,即网络两点间通信的最佳路由会周期性地重新评估, 图3-7 广域网中的路由评估时会考虑到当时的网络流量以及故障情况(如路由器故障或网络断链). 如图3-7所示,在网络中将数据包传递到目的地址是处于连接点的路由器的共同责任.除非源主机和目的主机都在同一个局域网中,否则数据包都必须经过一个或多个路由结点,辗转多次才能到达.而决定数据包传输到目的地址的路

《PADS 9.5电路设计与仿真从入门到精通》——第一章 绪论 1.1 PCB的基本概念及设计工具

第一章 绪论 PADS 9.5电路设计与仿真从入门到精通 本章主要介绍PADS的基本概念及特点,包括PCB设计的一般原则.基本步骤.标准规范等.着重介绍了美国Mentor Graphics公司的PCB设计软件:PADS 9.5,包括了PADS 9.5的发展过程以及它的新特点.PADS 9.5是一款非常优秀的PCB设计软件,它具有完整强大的PCB绘制工具,界面和操作十分简洁,希望用户好好学习本书,以便更加方便地使用PADS 9.5软件. 1.1 PCB的基本概念及设计工具 PADS 9.5电路设计

《分布式系统:概念与设计》一练习

练习 1.1 列出能被共享的五种类型的硬件资源和五种类型的数据或软件资源,并举出它们在实际的分布式系统中发生共享的例子. 1.2 在不参考外部时间源的情况下,通过本地网络连接的两台计算机的时钟如何同步?什么因素限制了你描述的过程的准确性?由互联网连接的大量的计算机的时钟是如何同步的?讨论该过程的准确性. 1.3 考虑1.2.2节讨论的大型多人在线游戏的实现策略.采用单一服务器方法表示多个玩家游戏状态的好处是什么?这存在什么问题以及如何解决? 1.4 一个用户随身携带可以无线连网的PDA,来到一个

《分布式系统:概念与设计》一2.3.1 体系结构元素

2.3.1 体系结构元素 为了理解一个分布式系统的基础构建块,有必要考虑下面四个关键问题: 在分布式系统中进行通信的实体是什么? 它们如何通信,特别是使用什么通信范型? 它们在整个体系结构中扮演什么(可能改变的)角色,承担什么责任? 它们怎样被映射到物理分布式基础设施上(它们被放置在哪里)? 通信实体 上述前两个问题是理解分布式系统的关键:什么是通信和这些实体如何相互通信为分布式系统开发者定义了一个丰富的设计空间.它对从面向系统和面向问题的角度解决第一个问题是有帮助的. 从系统的观点,回答通常是

《分布式系统:概念与设计》一2.4.1 交互模型

2.4.1 交互模型 2.3节对系统体系结构的讨论表明分布式系统由多个以复杂方式进行交互的进程组成.例如: 多个服务器进程能相互协作提供服务,前面提到的例子有域名服务(它将数据分区并复制到互联网中的服务器上)和Sun的网络信息服务(它在局域网的几个服务器上保存口令文件的复制版本). 对等进程能相互协作获得一个共同的目标.例如,一个语音会议系统,它以类似的方式分布音频数据流,但它有严格的实时限制. 大多数程序员非常熟悉算法的概念--采取一系列步骤以执行期望的计算.简单的程序由算法控制,算法中的每一

《分布式系统:概念与设计》一3.1 简介

3.1 简介 要构建分布式系统所使用的网络,首先需要众多的传输介质,包括电线.电缆.光纤以及无线频道:然后需要一些硬件设备,包括路由器.交换机.网桥.集线器.转发器和网络接口:最后还需要软件组件,包括协议栈.通信处理器和驱动器.上述因素都会影响分布式系统和应用程序所能达到的最终功能和性能.我们把为分布式系统提供通信设施的软硬件组件称为通信子系统.计算机和其他使用网络进行通信的设备称为主机.结点则指的是在网络上的所有计算机或者交换设备.互联网是一个通信子系统,它为所有接入的主机提供通信服务.互联网