《计算机网络》-读书笔记-第四章-网络层

第四章 网络层

4.1 概述

4.1.1 转发和路由选择

网络层的作用从表面上看极为简单,即将分组从一台发送主机移动到一台接收主机。

为此,需要两种重要的网络层功能:

转发。当一个分组到达路由器的一条输人链路时,路由器必须将该分组移动到适当的输出链路。例如,来自主机 H1 到路由器 R1 的一个分组,必须向在 H2 路径上的下一台路由器转发。在 4.3 节中,我们将深入路由器内部观察,考察分组在路由器中是如何实际从一条输人链路转发到一条输出链路的。

路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing algorithm)。例如,下一个路由选择算法将决定分组从 H1 到 H2 流动所遵循的路径。

每台路由器具有一张转发表(forwarding table)。路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在该路由器的转发表中索引查询。存储在转发表项中的该首部的值指出了该分组将被转发的路由器的输出链路接口。分组首部中的该值可能是该分组的目的地址或该分组所属连接的指示,这取决于网络层协议。

连接建立(connection setup):当数据能从发送方流向接收方之前,需要三次握手。这允许发送方和接收方建立所需的状态信息(例如,序号和初始流控制窗口长度)。以类似的方式,某些网络层体系结构如 ATM、帧中继、MPLS,要求从源到目的地沿着所选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。在网络层,该过程被称为连接建立。

4.1.2 网络服务模型

网络服务模型(network service model)定义了分组在发送与接收端系统之间的端到端运输特性。

网络层提供的特定服务包括:

确保交付。该服务确保分组将最终到达其目的地。

具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内(例如在 100 ms 内)交付。

此外,能够为给定的源和目的地之间的分组流提供下列服务:

有序分组交付。该服务确保分组以它们发送的顺序到达目的地。

确保最小带宽。这种网络层服务模仿在发送和接收主机之间的一条特定比特率(例如 1 Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作为分组的组成部分),则分组不会丢失,且每个分组会在预定的主机到主机时延内到达(例如在 40 ms 内)。

确保最大时延抖动。该服务确保位于发送方的两个相继分组之间的时间量等于在目的地接收到它们之间的时间量(或这种间隔的变化不超过某些特定的值)。安全性服务。使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机中的网络层能够加密向目的主机发送的所有数据报负载。在目的主机中的网络层则能够负责解密该负载。使用这种服务,能够向源和目的主机之间的所有运输层报文段(TCP 和 UDP)提供机密性。除了机密性以外,网络层能够提供数据完整性和源鉴别服务。

这只是网络层能够提供的部分服务的列表,有无数种可能的服务变种。

因特网的网络层提供了单一的服务,称为尽力而为服务(best- ffort service)。尽力而为服务看起来是根本无服务的一种委婉说法。使用尽力而为服务,分组间的定时是不能确保被保证的,分组接收的顺序也不能保 i 证与发送的顺序一致,传送的分组也不能保证最终交付。

4.2 虚电路和数据报网络

4.2.1 虚电路网络

虽然因特网是一个数据报网络,但许多其他网络体系结构(包括 ATM、帧中继的体系结构)却是虚电路网络,因此在网络层使用连接。这些网络层连接被称为虚电路。

4.2.2 数据报网络

在数据报网络中,每当一个端系统要发送分组,它就为该分组加上目的端系统的地址,然后将分组推进网络中。

4.2.3 虚电路和数据报网络的由来

数据报与虚电路网络的演化反映了它们的由来。作为一条重要的组织原则,虚电路的概念来源于电话界,它采用了真正的电路。由于呼叫建立及每呼叫的状态要在网络中的路由器上维持,一个面向虚电路的网络显然比数据报网络要复杂得多、。这也与它的电话传统 -致。电话网络在网络中必然有其复杂性,因为它们要连接哑端系统设备,如转盘电话。

4.3 路由器工作原理

4.3.1 输入端口

4.3.2 交换结构

交换结构位于一台路由器的核心部位。正是通过这种交换结构,分组才能实际地从一个输人端口交换(即转发)到一个输出端口中。

4.3.3 输出端口

4.3.4 何处出现排队

4.3.5 路由选择控制平面

4.4 网际协议:因特网中的转发和编址

4.4.1 数据报格式

IP数据分片

并不是所有链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。例如,以太网帧能够承载不超过 1500 字节的数据,而某些广域网链路的帧可承载不超过 576 字节的数据。一个链路层帧能承载的最大数据量叫做最大传送单元(Maximum Transmission Unit, MTU)。因为每个 IP 数据报封装在链路层帧中从一台路由器传输到下一台路由器,故链路层协议的 MTU 严格地限制着 IP 数据报的长度。对 IP 数据报长度具有严格限制并不是主要问题。问题在于在发送方与目的地路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同的 MTU。

解决该问题的方法是将 IP 数据报中的数据分片成两个或更多个较小的 IP 数据报,用单独的链路层帧封装这些较小的 IP 数据报;然后向输出链路上发送这些帧。每个这些较小的数据报都称为片(fragment)。

片在其到达目的地运输层以前需要重新组装。实际上,TCP 与 UDP 都希望从网络层收到完整的未分片的报文。IPv4 的设计者感到在路由器中重新组装数据报会给协议带来相当大的复杂性并且影响路由器性能。(如果你是一台路由器,你愿意将重新组装报文片放在你必须要做的各种各样工作的首位吗?)为坚持网络内核保持简单的原则,IPv4 的设计者决定将数据报的重新组装工作放到端系统中,而不是放到网络路由器中。

4.4.2 IPv4编址

从ISP获取地址

获取主机地址:动态主机配置协议(DHCP)

网络地址转换(NAT)

UPnP

4.4.3 因特网控制报文协议

ICMP 由[RFC 792] 定义,被主机和路由器用来彼此沟通网络层的信息。ICMP 最典型的用途是差错报告。例如,当运行一个 Telnet、FTP 或 HTTP 会话时,你也许会遇到一些诸如“目的网络不可达”之类的错误报文。这种报文就是在 ICMP 中产生的。在某个位置,IP 路由器不能找到一条路径,以通往 Telnet、FTP 或 HTTP 应用所指定的主机。该路由器就会向你的主机创建和发出一个类型 3 的 ICMP 报文以指示该错误。

4.4.4 IPv6

在 20 世纪 90 年代早期,因特网工程任务组就开始致力于开发一种替代 IPv4 的协议。该努力的最初动机是因为以下现实:由于新的子网和 IP 结点以惊人的增长率连到因特网上(并被分配唯一的 IP 地址),32 比特的 IP 地址空间即将用尽。为了应对这种对大 IP 地址空间的需求,开发了一种新的 IP 协议,即 IPv6。IPv6 的设计者们还利用这次机会,在 IPv4 积累的运行经验基础上加进和强化了 IPv4 的其他方面。

4.4.5 涉足IP安全性

通过使用 IPsec,一个公司能够在非安全的公共因特网中进行安全通信。

4.5 路由选择算法

4.5.1 链路状态路由选择算法

路由选择算法的目的:给定一组路由器以及连接路由器的链路,路由选择算法要找到一条从源路由器到目的路由器的“好”路径。通常,一条好路径指具有最低费用的路径。然而我们将看到,实践中现实世界还关心诸如策略之类的问题(例如,诸如“属于组织 Y 的路由器 X 不应转发任何来源于组织 Z 网络的分组”之类的规则),这也使得概念简单、性能优秀的算法变得复杂。然而这些概念简单、性能优秀的算法的理论奠定了当今网络路由选择实践的基础。

在链路状态算法中,网络拓扑和所有的链路费用都是已知的,也就是说可用作 LS 算法的输人。实践中这是通过让每个结点向网络中所有其他结点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的特征和费用。在实践中(例如使用因特网的 OSPF 路由选择协议,讨论见 4.6. 1 节),这经常由链路状态广播(link state broadcast)算法【Perlman 1999] 来完成。

4.5.2 距离向量路由选择算法

距离向量(Distance- Vector, DV)算法是一种迭代的、异步的和分布式的算法,而 LS算法是一种使用全局信息的算法。说它是分布式的,是因为每个结点都要从一个或多个直接相连邻居接收某些信息,执行计算,然后将其计算结果分发给邻居。说它是迭代的,是因为此过程一直要持续到邻居之间无更多信息要交换为止。(有趣的是,此算法是自我终止的,即没有计算应该停止的信号,它就停止了。)说它是异步的,是因为它不要求所有结点相互之间步伐一致地操作。我们将看到一个异步的、迭代的、自我终止的、分布式的算法比一个集中式的算法要有趣得多。

LS 与 DV 路由选择算法的比较

DV 和 LS 算法采用互补的方法来解央路由选择计算问题。在 DV 算法中,每个结点仅与它的直接相连的邻居交谈,但它为其邻居提供了从它自己到网络中(它所知道的)所有其他结点的最低费用估计。在 LS 算法中,每个结点(经广播)与所有其他结点交谈,但它仅告诉它们与它直接相连链路的费用。我们通过快速比较它们各自的属性来总结所学的链路状态与距离向量算法。记住 N 是结点(路由器)的集合,而 E 是边(链路)的集合。

4.5.3 层次路由选择

将路由器组织进自治系统(Autonomous System, AS)来解决,每个 AS 由一组通常处在相同管理控制下的路由器组成(例如,由相同的 ISP 运营或属于相同的公司网络)。在相同的 AS 中的路由器都全部运行同样的路由选择算法(如一种 LS 或 DV 算法),且拥有彼此的信息,这就像在前一节中所讲的理想化模型中的情况一样。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议(intra- autonomous system routing protocol)。当然,将 AS 彼此互联是必需的,因此在一个 AS 内的一台或多台路由器将有另外的任务,即负责向在本 AS 之外的目的地转发分组。这些路由器被称为网关路由器(gateway router)。
1、路由器规模大,计算无法收敛
2、管理自治,企业可自行选择路由算法

4.6 因特网中到路由选择

4.6.1 因特网中自治系统内部到路由选择:RIP

AS 内部路由选择协议用于确定在一个 AS 内执行路由选择的方式。AS 内部路由选择协议又称为内部网关协议(interior gateway protocol)。历史上有两个路由选择协议曾被广泛用于因特网上自治系统内的路由选择:路由选择信息协议(Routing Information Protocol, RIP)与开放最短路优先(Open Shortest Path First, OSPF)。与 OSPF 密切相关的路由选择协议是 IS-IS 协议【RFC 1142; Perlman 1999]。

RIP 是一种距离向量协议

4.6.2 因特网中自治系统内部到路由选择:OSPF

OSPF 路由选择也被广泛用于因特网的 AS 内部路由选择。OSPF 和它的关系密切的表兄弟 IS-IS 通常都设置在上层的 ISP 中,而 RIP 却被设置在下层 ISP 和企业网中。OSPF 中的开放(Open)一词是指路由选择协议规范是公众可用的(与之相反的是如 Cisco 的 EIGRP 协议)。

OSPF 被设想为是 RIP 的后继者,因为它有许多先进特性。然而,OSPF 的核心就是一个使用洪泛链路状态信息的链路状态协议和一个 Dijkstra 最低费用路径算法。使用 OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图(即一个图)。于是,路由器在本地运行 Djkstra 的最短路径算法,以确定一个以自身为根结点的到所有子网的最短路径树。各条链路费用是由网络管理员配置的(参见“实践原则:设置 OSPF 链路权值”)。管理员也许会选择将所有链路费用设为 1, 因而实现了最少跳数路由选择,或者可能会选择将链路权值按与链路容量成反比来设置,从而不鼓励流量使用低带宽链路。OSPF 不强制使用如何设置链路权值的策略(那是网络管理员的任务),但提供了一种机制(协议),为给定链路权值集合确定最低费用路径路由选择。

OSPF的优点:
– 安全
– 多条相同费用的路径
– 对单博与多播路由选择对综合支持
– 支持在单个路由选择域内对层次结构

4.6.3 自治系统间的路由选择:BGP

跨越多个 AS 的源和目的对之间是如何确定路径的。由 RFC4271(亦可参见【RFC4274】)定义的边界网关协议(Broder Gateway Protocol, BGP)版本 4 是当今因特网中域间路由选择协议事实上的标准。它通常被称为BGP。作为一个自治系统间路由选择协议,BGP 为每个 AS 提供了进行以下工作的手段:
1) 从相邻 AS 处获得子网可达性信息。
2) 向本 AS 内部的所有路由器传播这些可达性信息。
3) 基于可达性信息和 AS 策略,决定到达子网的“好”路由。

更为重要的是,BGP 使得每个子网向因特网的其余部分通告它的存在。一个子网高声宣布“我存在,我在这里”,并且 BGP 确保在因特网中的所有 AS 知道该子网以及如何到达那里。如果没有 BGP 的话,每个子网将是隔离的,即它们孤独并且不为因特网其余部分所知。

4.7 广播和多播路由选择

4.7.1 广播路由选择算法

广播路由选择(broadcast routing)中,网络层提供了从一种源结点到网络中的所有其他结点交付分组的服务;多播路由选择(mulicast routing)使单个源结点能够向其他网络结点的一个子集发送分组的副本。

4.7.2 多播

IP 多播还没有得到大规模应用

4.8 小结

路由器可能需要在同一时刻处理不同源和目的对之间的数以百万计的分组流。为了使得一台路由器能够处理如此大量的流,网络设计者多年前就认识到,路由器的任务应当尽可能地简单。

为了使路由器的工作更容易,能够采取许多措施,包括使用数据报网络层而不使用虚电路网络层,使用一种流水线和固定长度的首部(如在 IP6 中所做的那样),取消分片(也如 IPv6 中所做的那样)和提供唯的尽力而为服务。也许这里最重要的技巧是:不要跟踪各个流,面是使路由选择决策只依赖于数据报中的层次结构化的目的地址。有趣的是注意到邮政服务已经使用这种方法很多年了。

在本章中,我们还审视了路由选择算法的基本原理。我们学习了路由选择算法如何把计算机网络抽象为一个具有结点和链路的图。有了这种抽象,我们能够利用图中的丰富的最短路径路由选择理论,该理论在过去 40 年中在运筹学研究和算法界得到了发展。

有两大类方法:一种是集中式(全局)方法,在这种方法中,每个结点得到网络的”张完整的图并且独立地应用一种最短路径路由选择算法;另一种是分布式方法,在这种方法中,各结点只有整个网络的部分知识,且结点在起工作以便沿最短路径交付分组。

如何使用层次结构来处理规模问题,通过将大型网络划分成称为自治系统(AS)的独立管理城来解决。每个 AS 独立地为其数据报选择路由以通过本 AS,就像各个国家独立地在本国内指定邮件传递路线。我们学习了集中式,分散式和等级制方法是怎样具体应用于因特网中主要的路由选择协议中的,这些协议是 RIP OSPF 和 BGP。通过考虑广播和多播路由选择,我们结束了路由选择算法的学习。

完成了对网络层的学习任务之后,我们的旅行将沿协议栈进步向下,即到达链路层了。就像网络层一样,链路层也是网络核心的一部分。链路层在同一链路或 LAN 的结点之间具有更多的搬移分组的局部任务。

说点什么

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
提醒