网络互联

我们已经见到如何用点到点链路共享介质交换机 建立单一的网络。 网络互联需要强调两个重要的问题:异构性(heterogeneity)和可扩展性(scale)。

异构性问题指的是一种类型网络上的用户希望能够同其他类型网络上的用户通信。

可扩展性问题因特网规模快速扩张,使得面临许多挑战,其中之一是路由(routing):你如何在有几百万个到几十亿个节点的网络中去找到一条高效的路径。与此密切相关的是编址(addressing),即给所有节点疼合适标识符的任务。

4.1 简单的网络互联(IP)

4.1.1 什么是互联网

我们用小写i的internetwork(互联网)这个词或仅用internet指可提供某种主机到主机的分组传送服务的相互连接的网络的任意集合。

4.1.2 服务模型

可以将IP服务模型看成两部分:一是编址方案,提供标识互联网中所有主机的方法;二是传送数据的数据报(无连接的)模型。这种服务模型有时也称为尽力服务(best-effort)模型,这是因为尽管IP尽力传送数据报,但并不提供保证。

数据报传送

数据报传送是IP的基础。数据报详情请见3.1.1。

分组格式

在没有其他选项的时候,首部通常是5个字长(20个字节)。首部信息中有一个16位的length指定数据报的字节数目,故而IP数据报最大尺寸为65535个字节。然而IP运行的物理网络可能不支持如此长的分组,因此IP支持分段和重组。

分段和重组

每个网络类型都有一个最大传输单元(Maximum Transmission Unit,MTU),这是一帧能够携带的最大数据报。 通常,当路由器接到一个想要在一个网络上转发的数据报,而这个网络的MTU比所接受到的数据报小时,在路由器上将进行分段,为了在目的主机上可以重组,所以都标识符(Ident)字段上携带同样的标识符。这个标识符由发送主机选择,并且对于所有可能在某个合理时段内从这个源主机到达目的主机的数据报来说是唯一的。

4.1.3 全局地址

以太网地址也是全局唯一的,但是以太网地址是扁平的flat,也就是说他们没有结构,且几乎不对路由协议提供线索。 相比之下IP地址是分层次的hierarchical,即他们由对应于互联网某种层次结构的几个部分构成。IP地址分为两个部分:网络部分和主机部分。 更确切的说IP地址属于接口而不是属于主机。

  1. A类 第一位为0 7位网络,24位主机
  2. B类 第一位为0,第二位为1 14位网络,16位主机
  3. C类 第一二位为0,第三位为1 21位网络 8位主机

4.1.4 IP中的数据报转发

转发数据报按一下方法处理:一个数据报从源主机发往目的主机,沿途可能经过多个路由器。任何一个节点,无论是主机还是路由器,首先试图确定自己是否与目的主机连接在同一个物理网络上(通过比较目的地址的网络部分和它的每一个网络接口地址的网络部分)。

网桥,交换机和路由器的区别: 他们都是从一条链路把消息转发到另一条链路上。 人们根据分层对他们做出区分:网桥是链路层的节点(他们在链路间转发帧,实现可扩展的LAN),交换机是网络层节点(他们在链路间转发分组实现分组交换网络),路由器是互联网层节点(他们在网络之间转发数据报实现互联网)。 交换机和路由器有什么区别:关键区别是转发包的种类,路由器转发IP数据报,而以太网帧或者ATM信元是用交换机转发的。 交换机构造的ATM网络和路由器构造的因特网之间有一个很大的区别就是,因特网可以适应异构性,而ATM只能包含同构链路。

4.1.5 地址转换 ARP

上一节,我们讨论了如何使IP数据报到达正确的物理网络,但是掩饰了一个数据报如何到达该网络上某一个特定主机或路由器的问题。主要问题是IP数据报包含IP地址,但是你想要传送到的主机或者路由器上的物理接口硬件只理解特定网络的编址方案。这样,我们就需要将IP地址转换为这个网络所能理解的链路层地址。(如一个48位的以太网地址)

Address Resolution Protocol,ARP

ARP的目标是使网络上每个主机都简历一张IP地址到链路层地址间的映射表。 例:如果一个主机要发送一个数据报给已知为同一网络内的另一个主机(或路由器)(即发送和接收节点有同样的网络号),那么它首先检查缓存中的映射,如果映射不存在,就调用ARP。即通过向网络广播一个ARP查询来实现,这个查询包括询问的IP地址,每个主机收到这个查询并检查是否与自己的IP地址匹配。如果匹配,该主机发送一个包含它的链路层地址的应答信息给发送出查询的源主机。源主机将次应答的包含的信息添加到自己的ARP表中。 同时查询信息中也包含源主机的IP地址和链路层地址,这样,每台主机都会知道源主机的链路层地址和IP地址,并更新自己的ARP表。

4.1.6 主机配置 Dynamic Host Configuration Protocol

DHCP依赖于DHCP服务器的存在,DHCP服务器负责向主机提供配置信息。一个管理域中至少有一个DHCP服务器。 为了与一个DHCP服务器相连,一台新自举或新连接的主机发送一条DHCPDISCOVER消息到一个特殊的IP地址(255.255.255.255)—-广播地址。DHCP服务器应答产生这条发现消息的主机(所有其他节点忽略这条消息)。然而,并不是每个网络都需要一个DHCP服务器,因此,DHCP使用一个中继代理(relayagen)的概念。每个网络中至少有一个中继代理,它只配置有一条消息:DHCP服务器的IP地址。 DHCP允许地址一段时间内被”租用”。一旦租用期满,服务器将地址回收。一个租用地址的主机,如果事实仍然连在网络上并功能正常,显然需要定期重新租用地址。 当然,DHCP也引入了更多的复杂性到了网络管理,因为它使物理主机与IP地址之间的绑定更为动态化。

4.1.7 差错报告 ICMP

IP总是和网际控制报文协议(Internet Control Message Protocol)配置在一起的,这个协议定义了当一个路由器或主机不能成功处理一个IP数据报时,向源主机发回的错误消息的集合。(与http状态码类似)

4.2 路由

转发(forwarding):转发过程包括接收一个分组,查看它的目的地址,查询转发表,按表中决定的路径把分组转发出去。转发是在一个节点本地执行的一个相对简单,定义良好的过程。 路由(routing):用于建立转发表的一个过程,依赖于在网络发展过程中不断演进的,复杂分布式算法。

构造转发表是为优化转发分组时查找网络号的过程,而优化路由表是为了计算拓扑结构的改变。

4.2.1 用图表示网络

路由本质上是图论中的一个问题。 图中的边对应于网络中的链路,每条边都有一个相应的开销(cost),表示希望通过这段链路发送的通信量。 路由最基本的问题就是找出任意两个节点之间开销最小的路径,一条路径的开销等于组成这条路径的所有边上开销之和。

4.2.2 距离向量 RIP

每个节点构造一个包含到所有其他节点”距离”(开销)的一维数组(一个向量),并将这个向量分发给它的邻接点。对距离向量路由所作的最初假设是每个节点都知道到其直接邻接点的链路开销。到不相邻节点的链路开销被指定为无穷大。

网络中没有任何一个节点有网络路由表的所有信息,每个节点只知道它自己路由表的内容。像这种分布式算法的优点就是它能够使所有节点在没有任何集中授权的情况下取得对网络的一致视图。

路由表更新:第一种为定期更新(periodic),第二种为触发(triggered)更新。

两种改进稳定路由时间的技术;第一种是使用一个相对较小的数作为无穷大的近似值,第二种被称为水平分割(splithorizon),其思想是当一个节点把路由的更新消息发送给相邻节点时,它并不把从各个相邻节点处学到的路由再回送给该节点。

4.2.3 链路状态 OSPF

假设每个节点都能找出到它的相邻节点的链路状态以及每条链路的开销,我们还希望提供给每个节点足够的信息,使他能找出到达任一目标的最小开销路径。 基本思想:每个节点都知道怎样到达它的邻接点,如果我们确保这种信息被完整地传播到每个节点,那么每个节点都有足够的网络信息来简历一个完整的网络映像。 链路状态路由协议依靠两种机制:链路状态信息的可靠传播和根据所有积累的链路状态指示的总和进行的路由计算。

4.2.4 度量标准

  1. 第一版本的度量标准是在每条链路上排队等待发送的分组的数量。
  2. 第二版本的度量,即考虑了链路带宽,又考虑了链路时延,并使用延迟而不是队列长度作为负载的衡量标准。
  3. 第三版本的度量,主要的改进是大量缩减度量值的动态范围。

4.3 全球因特网

4.3.1 划分子网

划分子网是减少分配网络号总数的一个很好的简单方法。 基本思想是只用一个网络号,把具有这个网络号的IP地址分配给多个物理网络,每个物理网络叫做一个子网(subnet)。在很多个网络当中共享一个网络号的机制涉及到使用子网掩码(subnetmask)配置每个子网中的所有节点。 因此现在我们可以认为IP地址分为3部分:网络部分,子网部分和主机部分。即我们将原来用于表示主机的部分划分为子网部分和主机部分。

当主机要发送一个分组到一个特定的IP地址时,它所做的第一件事就是用它的子网掩码与目标IP地址做按位与运算。如果结果等于发送主机的子网号,那么它就得知目的主机在同一子网内,分组可以在子网中直接传送,如果不等于,就需要把分组发送给一个路由器以便转发到另一个子网。

引入子网后,路由器的工作也跟着发生变化,原先的转发表是由成对形式的(网络号,下一跳)的记录组成,现在变为(子网号,子网掩码,下一跳)的形式。 路由器将分组的目的地址与每个记录的子网掩码依次进行按位与运算,如果结果与某一记录的子网号相匹配,那么这就是要使用的记录,然后将分组转发到指定的下一跳路由器。

4.3.2 无类路由 CIDR

ClasslessInter-DomainRouting技术用于解决因特网中两种可扩展问题:第一,越来越多的网络号需要存在于主干网路由表中,从而导致了它的增长;第二,在第40亿台主机连接到因特网之前,32位的IP地址就可能已经耗尽。 CIDR尝试在减少一个路由器所需要知道的路由数的愿望与有效分配地址的需求之间取得平衡。为了做到这一点,CIDR帮我们汇聚路由。它通过打破地址分类间的严格界限。 CIDR通过一种新型标注或者用已知的前缀来表示网络号,因为前缀可以任意长,所以通常是放置一个”/X”在前缀后,其中”/X”表示前缀的位长度。 如20位的前缀可以表示为 192.4.16/20

4.4 多播

如第二章中,以太网和令牌环这样的多点访问网络用硬件实现多播。 为了更好的支持多对以及一对多的连接,IP提供了一种IP级模拟多播用于多点访问网络。

基本的IP多播模型是基于多播组的多对多模型,每个组都有自己的IP多播地址,组里的任何主机收到任何的分组拷贝都会发送到组的多播地址 这样发送主机不需要发送多个分组拷贝,因为路由器无论何时都会在需要的时候将分组转发给多个链接,相比于使用单播IP传送相同的分组给多个接受者,IP多播更可测,因为它消除了一些需要在同一个链路上发送多次的冗余流量,特别是靠近发送主机的链路。

IP的原始多对多播(任意源多播,ASM)已经增强为可支持的一对多播的形式。在一对多播模型中,即源特定多播(SSM),接收主机指定一个多播组和特定发送主机,接收主机仅将从特定主机收到的多播地址发送给特定的组。

4.4.1 多播地址

IP中有一个子空间是保留给多播地址的。在IPV4中,这些地址被分配在D类地址空间中。

4.4.2 多播路由

多播路由是一个多播分配树的决策过程,更具体的书,是一个多播转发表的建立过程。

  1. 距离向量多播路由协议 DVMRP
  2. PIM
  3. MSDP

4.5 多协议标记交换 Multi-protocol Lavel Switching ,MPLS

MPLS的好处

  1. 使不具备按正常方式转发IP数据报能力的设备能支持IP
  2. 按”显示路由”—-即预先计算的路由转发IP数据报,而无需匹配普通IP路由协议选择的路由
  3. 支持特定类型的虚拟专用网服务

4.5.1 基于目的地的转发

链式索引(threaded index) 当一个路由器能够支持MPLS时,他给路由表中的每个前缀都分配一个标记,并将标记和所表示的前缀通知相邻路由器,此通知的分发由标记分发协议(LabelDistributionProtocol,LDP)携带。

标记边缘路由器(Label Edge Router,LER)对到达的IP分组进行完全的IP查找,然后用他们的标记作为查找的结果并附加到这个分组的头部。 这样,我们就用标记查找代替正常的IP目的地址查找。(IP地址查找算法需要查找最长匹配,与将要转发的分组中的IP地址高比特部分相匹配的最长前缀。相反,标记转发机制则是一种精确匹配算法,建立一个数组,标记为数组的索引)

4.5.2 显示路由

源路由并未广泛使用,MPLS提供了一种方便的方法将类似源路由的能力添加到IP网络中,这种能力被称为显示路由。两者之间的区别在于。显示路由通常不是选择此路由的分组的真正源,在更多情况下它是服务提供者网络中的一个路由器。 资源预留协议(RSVP)

分享 留言