计算机网络自顶向下 第4章 网络层

4.1 网络层概述

  • 网络层作用:将分组从一台发送主机移动到一台接收主机。

  • 网络层所需的两种功能:

    • 转发:当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。
    • 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing alogrithm)。
    • 连接建立:网络中还有第三种重要的网络功能,即连接建立(connection setup),某些网络层体系结构如ATM、帧中继、MPLS,要求从源到目的地沿着所选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。
  • 转发表:每台路由器具有一张转发表(forwarding table)。路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在该路由器的转发表索引查询。路由选择算法决定了插入路由器的转发表中的值。类似下图所示:
    在这里插入图片描述

  • 分组交换机:分组交换机是指一台通用分组交换设备,它根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组。某些分组交换机称为链路层交换机(link-layer switches),基于链路层字段中的值做转发决定。其他分组交换机称为路由器(router),基于网络层字段中的值做转发决定。

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

  • 当运输层向网络层传递一个分组时,能由网络层提供的特定服务包括:

    • 确保交付,该服务确保分组将最终到达其目的地。
    • 具有时延上界的确保交付:该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内(例如在100ms内)交付。
    • 有序分组交付:该服务确保分组以它们发送的顺序到达目的地。
    • 确保最小带宽:这种网络层服务模仿在发送和接收主机之间的一条特定比特率(例如1Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特,则分组不会丢失,且每个分组会在域定的主机到主机时延内到达(例如在40ms内)。
    • 确保最大时延抖动:该服务确保位于发送方的两个相继分组之间的时间量等于在目的地接收到它们之间的时间量(或者这种间隔的变化不超过某些特定的值)。
    • 安全性服务:使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机的网络层能够加密向目的主机发送的所有数据包负载。在目的主机中的网络层则能够复制解密该负载。除了提供机密性以外,网络层能够提供数据完整性和源鉴别服务。
  • 尽力而为服务:因特网的网络层提供了单一的服务,因特网的网络层提供了单一的服务,称为尽力而为服务(best-effort service)。使用尽力而为服务,分组件的定时是不能确保被保证的,分组的接受顺序也不能保证与发送的顺序一致,传送的分组也不能保证最终交付。

  • 恒定比特率(Constant Bit Rate,CBR)ATM网络服务。CBR服务的目标从概念上就是使网络连接看起来就像在发送与接收主机之间存在一条专用的、固定贷款的传输链路,以使用性质相同的虚拟管道来提供分组(ATM称为信元)流。使用CBR服务,ATM信元流以如下方式被承载跨越网络,即一个欣苑的端到端时延,信元端到端时延中的可变性(即时延抖动)及丢失或推迟交付的信元的比率都确保在特定值以下。当第一次建立CBR连接时,发送主机与ATM网络认可了这些值。

  • 可用比特率(Available Bit Rate,ABR)ATM网络服务。ABR网络中信元也许会丢失,但是信元不能被重排序,且信元传输速率(MCR)时可以得到保证的。
    在这里插入图片描述


4.2 虚电路和数据报网络

  • 数据报网络(datagram network) :因特网
  • 虚电路(Virtual-Circuit,VC):ATM、帧中继的体系结构

网络层连接和无连接服务与运输层面向连接和无连接服务有类似之处,但也存在重大差异:

  • 在网络层中,这些服务时由网络层向运输层提供的主机到主机的服务。在运输层中,这些服务时运输层向应用层提供的进程到进程的服务。
  • 网络层不同时提供主机到主机的连接服务和无连接服务。
  • 运输层面向连接服务时在位于网络边缘的端系统中实现的;网络层连接服务除了在端系统中,也在位于网络核心的路由器中实现。

4.2.1 虚电路网络

一条虚电路的组成如下:

  • 源和目的主机之间的路径(即一系列链路和路由器);
  • VC号,沿着该路径的每段链路的一个号码;
  • 沿着该路径的每台路由器中的转发表表项。属于一条虚电路的分组将在它的首部携带一个VC号。因为一条虚电路在每条链路上可能具有不同的VC号,每台中间路由器必须用一个新的VC号替代每个传输分组的VC号。该新的VC号从转发表获得。
  • 信令报文:端系统向网络发送指示虚电路启动与终止的报文、以及路由器之间传递的用于建立虚电路的报文(修改路由器表中的连接状态的报文),它们被称为信令报文(signaling message)。
  • 信令协议:用来交换信令报文的协议称为信令协议(signaling protocol)。

【例如】 在下图的网络中,主机A请求该网络在它自己与主机B之间创建一条虚电路。假设网络为该虚电路选择路径为A-R1-R2-B,并为这路径上三条链路分配VC号12、22和32。在这种情况下分组离开主机A时,VC号是12;离开R1时,VC号为22;离开R2时VC号为32。
在这里插入图片描述
在R1的转发表中可以如下表:
在这里插入图片描述
路由器为进行中的连接维持连接状态信息(connection state information)。无论何时跨越一台路由器创建一条新的虚电路,转发表就增加了一个新表项。类似地,无论何时终止一条虚电路,沿着该路径每个表中的相应项将被删除。

不为路径中每条链路简单保持相同VC号的原因:

  • 1.可以减少VC号字段的长度。
  • 2.简化了虚电路的建立,在由多个VC号的路径,其上的每条链路能够独立于沿着该路径的其他链路所需的号码选择一个VC号。如果所有链路要求一个共同的VC号的话,路由器不得不交换并处理相当大量的报文,以约定一个共同的VC号。

虚电路的三个阶段

在虚电路中有3个明显不同的阶段:

  • 虚电路建立:在建立阶段,发送方运输层与网络层联系,指定接收方地址,等待网络建立虚电路。网络层决定了虚电路路径,并为路径中的每台路由器的转发表中增加一个表项,网络层还可以预留该虚电路路径中的资源。
  • 数据传送:一旦建立连接后,就可以如下图一样传送数据。
    在这里插入图片描述
  • 虚电路拆除:当发送方或接收方通知网络层它希望终止该虚电路时,网络层告知网络另一端系统结束呼叫,并更新路由器中的转发表以表明虚电路不存在。

网络层的虚电路建立运输层的连接建立区别

  • 运输层连接建立,由两个端系统独自决定运输层连接的参数,虽然两个端系统已经知道该运输层连接,但网络中的路由器则完全不知情。
  • 对于一个虚电路,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路。

4.2.2 数据报网络

  • 在数据报网络中,每当一个端系统要发送分组,它就为该分组加上目的端系统的地址,然后将分组推进网络中;
  • 当分组从源到目的地传输,它通过一系列路由器传递。这些路由器中的每台都是用分组的目的地址转发该分组。特别时,每台路由器由一个将目的地址映射到链路接口的转发表
  • 转发表中使用最长前缀匹配进行转发分组,如下图所示:
    在这里插入图片描述

在数据报网络中路由器不维持连接状态信息,但它们无论如何在其转发表中维持了转发状态信息。实际上,在数据报网络中的转发表是通过路由选择算法进行修改的,通常每1~5分组更新一次转发表。


4.3 路由器工作原理

下图现实了一个通用路由器体系结构的总体试图,标识了一台路由器的4个组成部分。
在这里插入图片描述

  • 输入端口:输入端口执行以下几项关键功能。如下图所示。

    • 1.它要执行将一条输入的物理链路与路由器相连接的物理层功能。如上图输入端口部分中最左边的方块。
    • 2.它还要执行需要与位于入链路远端的数据链路层交互的数据链路层功能。如上图输入端口部分中中间的方块。
    • 3.它还要完成查找功能,即通过查询转发表决定路由器的输出端口,这显示在输入端口部分中最右边的方块。
      在这里插入图片描述
    • 转发表的一份影子副本会通过独立总线备份在输入端口中,转发决策能在每个输入端口本地做出,无需调用中央路由选择处理器,避免了集中式处理的瓶颈。
    • 进入交换结构前要采取的动作
      • 1.一个被阻塞的分组必须要在输入端口处排队,并等待稍后被及时调度以通过交换结构。
      • 2.必须出现物理层和链路层处理。
      • 3.必须检查分组的版本号、检验及寿命字段,并且重写后面两个字段。
      • 4.必须更新用于网络管理的计数器(如接收到的IP数据报的数目)。
  • 交换结构:交换结构将路由器的输入端口与输出端口相连接。这种交换结构完全包含在路由器中,即它是一个网络路由器中的网络!
      交换结构可以用多种方式完成,如下图所示:在这里插入图片描述

    • 1.经内存交换
    • 2.经总线交换:在这种方法中,输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。具体实现:由输入端口为数据报打上标签分发到各个输出端口中,输出端口检查标签保留发送给自己的数据报。
    • 3.经互联网络交换:克服单一、共享式总线带宽限制的一种方法是,使用一个更复杂的互联网络。纵横式交换机就是一种由2N条总线组成的网络。每条垂直的总线在交叉点与每条水平的总线交叉,交叉点通过交换结构控制器能够在任何时候开启和关闭。因此,与前面两种交换方法不同,纵横式网络能够并行转发多个分组。然而,如果来自两个不同输入端口的分组目的地为相同的输出端口,则其中一个分组必须在输入端等待。
  • 输出端口:输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输入链路上传输这些分组。如下图所示:
    在这里插入图片描述

  • 路由选择处理器:路由选择处理器执行路由选择协议维护路由选择表以及连接的链路状态信息,并未路由器计算转发表。它还执行网络管理功能。

  • 路由器转发平面:一台路由器的输入端口、输出端口和交换结构共同实现了路由器的转发功能,并且总是用硬件实现,如上图所示。这些转发功能有时总称为路由器转发平面(router forwarding plane)。

  • 何时出现排队
      输入端口和输出端口都可能因数据报集类而形成分组队列,随着这些队列增长,路由器的缓存空间将会被耗尽,从而到新的分组到达时将会出现丢包(packet loss)
      当输入端口和输出端口的速率小于交换结构传送速率,则在最坏情况下即输入端口不断传送分组,则在输出端口就会出现排队情况,甚至发送丢包。
      输出端口排队的后果就是:一、在输出端口上的一个分组调度程序(packet scheduler)必须在这些排队的分组中选出一个来发送。选择可能使用先来先服务(FCFS)调度,也可能使用加权公平排队(WFQ)。分组调度程序在提供服务质量保证(quality-of-service guarantee)方面起着关键作用。二、类似地,如果没有足够的内存来缓存一个分组,那么必须做出决定:要么丢弃到达的分组(一种称为弃尾(drop-tail)的策略),要么删除一个或多个已排队的分组来为新的分组腾出空间。这些策略统称为主动队列管理(Active Queue Management,AQM)算法。比如随机早期检测(Random Early Detection,RED)算法。
      同样,若交换结构传送速率小于输入端口传输速率也会导致输入排队交换机中的线路前部(Head-Of-the-Line,HOL)阻塞


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

因特网网络层的一些组件如下图所示:
在这里插入图片描述

4.4.1 数据报格式

IPv4数据报格式

在这里插入图片描述
IPv4数据报中的关键字段如下:

  • 版本号:这4比特规定了数据报的IP协议版本,通过查看版本号,路由器能够解释IP数据报的剩余部分。
  • 首部长度:因为一个IPv4数据报可包含一些可变数量的选秀,故需要用这4比特来确定IP数据报中数据部分实际从哪里开始。
  • 服务类型:服务类型(TOS)包含在IPv4首部中,使得不同类型的IP数据报(例如,一些特别要求低时延、高吞吐或可靠性的数据报)能相互区别开来。例如将实时数据报(如用于IP电话应用)与非实时流量(如FTP)区分开也许是有用的。
  • 数据报长度:这是IP数据报的总长度(首部加上数据),以字节计,该字段为16比特,所以IP数据报的理论最大长度为65535字节。
  • 标识、标志、片偏移:这三个字段与所谓IP分片有关。
  • 寿命:寿命(Time-To-Live,TTL)字段用来确保数据报不会永远在网络中循环。当为0是被路由器丢弃。
  • 协议:该字段仅在一个IP数据报到达其最终目的地才会由用。该字段值指示了IP数据报的数据部分应交给哪个特定的运输层协议。
  • 首部检验和:首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。
  • 源和目的IP地址:发送发和接收方IP地址。
  • 选项:选项字段允许IP首部被拓展,很少使用,IPv6中已经去掉该字段。
  • 数据:IP数据报中的数据字段包含要交付给目的地运输层报文段(TCP或UDP),同时该数据字段也可承载其他数据类型的数据,如ICMP报文。

IP数据报分片

  • 最大传送单元:一个链路层帧能承载的最大数据量叫做最大传送单元(Maximum Transmission Unit,MTU)
  • :若某个路由从某条链路收到一个IP数据报,通过检查转发表确定出链路,并且该出链路的MTU比该IP数据报的长度要小,就要将IP数据报中的数据分片成两个或更多个较小的IP数据报,然后向输出链路上发送这些帧。每个这些较小的数据报都称为片(fragment)
  • 重新组装:若一台目的主机从相同源收到一系列数据报时,如果某些数据报时片的话,它必须进一步确定何时收到了最后一篇,并且如何将这些接收到的片拼接到一起以形成初始的数据报。为了让目的主机执行这些重新组装任务,IPv4的设计者将标识、标志和片偏移字段放在IP数据报首部中。
    • 生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时再贴上标识号。发送主机通常将为它发送的每个数据报的标识号加1。
    • 当路由器需要对一个数据报分片时,形成的每个数据报(片)具有初始数据报的源地址、目的地址、标识号。
    • 当接收主机收到一些列数据报时,它通过检查标识号判断哪些数据报时同一较大数据报的片,为了判断是否接收到最后一片,路由器分片的时候将最后一片的标志比特设为0,而其他片的标志比特则为1。另外用偏移字段指出该片应放在初始IP数据报的哪个位置。

4.4.2 IPv4编址

  • 接口:主机与物理链路之间的边界叫做接口(interface)。

  一个IP编制与接口例子如下:

在这里插入图片描述

  • 子网:如上图左上方互联这3个主机与1个路由器接口的网络形成了一个子网(subnet)
  • 子网掩码:IP编制为这个子网分配了一个地址:223.1.1.0/24,其中的/24记法(表明前24位相同),有时称为子网掩码(network mask)
  • 无类别域间路由选择:因特网的地址分配策略被称为无类别域间路由选择(Classless Interdomain Routing,CIDR)。CIDR将子网寻址的概念一般化。对于子网寻址,32比特的IP地址被划分为两部分,对于点分十进制形式a.b.c.d/x,其中x指示了地址的第一部分中的比特数,称为网络前缀(prefix)。一个组织通常被分配一块连续的地址,即对组织中的个体具有相同的前缀。
  • 地址聚合:由单个网络前缀通告多个网络的能力通常称为地址聚合(address aggregation),也称为路由聚合(route aggregation)或路由摘要(route summarization)。
  • 分类编址:(classful addressing)限制IP地址的网络部分为8、16、24bit,即由子网掩码进行分类。
    • A类网络(/8)IP 地址范围在 1.0.0.1-127.255.255.254,(网络号不能全部为0),可容纳16777214台主机。
    • B类网络(/16)可以容纳65534台主机,IP 地址范围在 128.0.0.0-191.255.255.255。
    • C类网络(/24)仅能容纳254台主机,IP 地址范围在 192.0.0.0-223.255.255.255。
    • 广播地址:即主机位全为1的地址,当一台主机向对应路由器发送主机地址全为1的数据报时,该报文会转发给同一个网络中的所有主机。
      在这里插入图片描述

1.获得一块地址

  组织可向ISP申请一块网络地址。IP地址由DNS根服务器及域名都是由因特网名字和编号分配机构(Internet Corporation for Assigned Names and Numbers,ICANN)管理的。


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

  主机地址可以通过手动配置,也可以通过动态主机配置协议(Dynamic Host Configuration,DHCP)来完成。DHCP协议又称为即插即用协议(plug-and-play protocol)。
  DHCP除了分配IP地址以外,还允许一台主机得知它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地DNS服务器地址等信息。
  DHCP是一个客户-服务器协议,在最简单的场合下,每个子网具有一台DHCP服务器。如果在某子网中没有服务器,则需要一个DHCP中继代理(通常是一台路由器),这个代理知道用于该网络的DHCP服务器的地址。
  对于一台新到达的主机而言,DHCP协议是一个4个步骤的过程,如下图所示,yiaddr指示被分配给该新到达客户的地址。
在这里插入图片描述

  • Step1.DHCP服务器发现:DHCP客户通过在UDP分组中向端口67发送一个DHCP发现报文(DHCP discover message)来完成,其中IP数据报使用广播目的地址255.255.255.255,并且使用“本主机”源地址0.0.0.0,然后传输给链路层,链路层进行广播。
  • Step2.DHCP服务器提供:DHCP再接收到一个DHCP发现报文后,用一个DHCP提供报文(DHCP offer message)向客户作出相应,仍然使用IP广播地址255.255.255.255。在子网中可能存在多台DHCP服务器,客户可以选择优越的IP位置。每个提供报文包含发现报文的事务ID向客户推荐的IP地址网络掩码IP地址租用期(address lease time)。
  • Step3.DHCP请求:新到达的客户从一个或多个服务器提供中选择一个,并向对应服务器发送一个DHCP请求报文(DHCP request message) 进行回应,回显配置参数。
  • Step4.DHCP ACK:服务器用DHCP ACK报文(DHCP ACK message)对DHCP请求报文进行响应,证实所要求的参数。

3.网络地址转换(NAT)

  网络地址转化(Network Address Translation)是一个IETF(Internet Engineering Task Force)标准,允许一个整体机构以一个公用IP地址出现在Internet上。
  将同一个局域网内的私有地址通过NAT使能路由器转换成公有的唯一IP地址。路由器通过维护NAT转换表,使用端口号(NAPT技术)及ip地址来确定收到的数据报属于局域网中的哪台主机。路由器的IP地址从ISP的DHCP服务器中获得,局域网中主机的IP地址由路由器运行的DHCP服务器分配。
在这里插入图片描述
NAT主要功能

  • 1.数据伪装:可以将内网数据包中的地址信息更改成统一的对外地址信息。
  • 2.端口转发:当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。
  • 3.负载均衡:目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。负载均衡主要是将大量的访问合理地分配至多台服务器上。
  • 4.失效终结:NAT可以用来提供高可靠性的服务,如果系统有一台通过路由器访问的关键服务器宕机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。(不太理解)
  • 5.透明代理:NAT 可以把连接到因特网的 HTTP 连接重定向到一个指定的 HTTP 代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。

NAT三种类型

  • 1.静态NAT:是指将内网IP转换为公网IP时,映射关系时一对一的永久映射。
  • 2.动态NAT:是指将内网IP转换为公网IP时,IP地址是不确定的,也就是说只要指定哪些内网IP可以进行转换,以及哪些合法公网IP可以作为外部地址,就可以动态的将一个内网IP地址映射到公网IP地址池中的一个公网IP。如下图所示:
    在这里插入图片描述
  • 3.网络地址端口转换NAPT:NAPT是业界使用最广泛的NAT类型,是指将多个内网IP动态转换成同一个公网IP,使用不同的端口号来区分不同的主机。如下图所示:
    在这里插入图片描述

4.UPnP

  NAT穿越(即私网地址对公网地址的映射)正越来越多地由通用即插即用(UPnP) 提供,UPnP是一种允许主机发现并配置邻近NAT的协议。UPnP要求主机和NAT都是UPnP兼容的。使用UPnP,在主机上运行的应用程序能够为某些请求的公共端口号请求生成一个NAT映射,该映射为(专用IP地址,专用端口号) → \rightarrow (公共IP地址,公共端口号)。如果NAT接收该请求并生成映射,则来自外部的结点能够发起到(公共IP地址,公共端口号)的TCP连接,此外,UPnP让该应用程序知道(公共IP地址,公共端口号),因此该应用程序能够向外部世界通告它。


4.4.3 因特网控制报文协议(ICMP)

  因特网控制报文协议(Internet Control Message Protocol,ICMP)由[RFC 792]定义,被主机和路由器用来彼此沟通网络层的信息,最经典的用途是用来进行差错报告。
  ICMP通常被认为是IP的一部分,但从体系结构上讲它是位于IP之上的,ICMP报文是承载在IP分组中的,就像TCP与UDP报文被IP承载一样。
  ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生词的IP数据包的首部和前8字节内容(以便发送方能确定引发该差错的数据报)ICMP报文类型如下图所示:
在这里插入图片描述
  比如ping程序发送一个ICMP类型8编码0的报文到指定主机。目的主机看到该回显(echo)请求,发回一个类型0编码0的ICMP回显回答。
  为了适应IPv6的需求,ICMPv6还增加了“分组太大”和“未识别的IPv6选项”的错误编码。


4.4.4 IPv6

IPv6设计原因:

  • IPv4即将耗尽
  • 在IPv4的基础上进行优化

IPv6数据报格式:

在这里插入图片描述
IPv6最重要的变化

  • 扩大的地址容量:IPv6将IP地址从32比特增加到128比特。并且还引入了任播地址(anycast address),这种地址可以使数据包交付给一组主机中的任意一个。
  • 简化高效的40字节首部:许多IPv4字段都已被舍弃或作为选项,因此形成的40字节定长首部允许更快地处理IP数据包。
  • 流标签与优先级:比如可以设置视频流比邮件具有更高的优先级(视频实时性要求更高)。

IPv6中定义的字段

  • 版本:大小4比特,用于标识IP版本号。IPv6报文中该字段值为6。
  • 流量类型:大小8比特,使用流量类型将不同类型的IP数据报(如视频和邮件)区分开来。
  • 流标签:大小20比特,用于标识一条数据报的流。
  • 有效载荷长度:大小16比特,作为一个无符号整数,给出IPv6数据报中跟在定长的40字节数据报首部后面的字节数量(即数据部分大小)。
  • 下一个首部:该字段标识数据报中的数据字段需要交付给哪个协议(比如TCP或UDP),使用与IPv4首部中协议字段相同的值。
  • 跳限制:转发数据报的每台路由器将对该字段的内容减1,当计数为0时,该数据报被丢弃。
  • 源地址和目的地址:指示发送主机和接收主机。
  • 数据:IPv6的有效载荷部分,当到达目的主机时,将该部分交由上层协议进行处理。

IPv6中消失的字段

  • 分片/重新组装:IPv6不允许在中间路由器上进行分片与重新组装,这种操作只能在源与目的地上执行。如果路由器收到的IPv6数据报因太大而不能转发到出链路上,则路由器丢掉该数据报,并向发送方返回一个“分组太大”的ICMP差错报文。于是发送发使用较小长度的IP数据报重发数据。
  • 首部检验和:由于因特网层中的运输层和数据链路层执行了检验查作,因此IP设计者觉得网络层使用该功能有点多余,将其区除。
  • 选项:选项没有被真正的删除,可能包含在下一个首部指出的位置上。删除选项可以使IP首部称为定长的40字节。

2.从IPv4到IPv6的迁移

  考虑到因特网上的系统和设备非常多,想要一次从IPv4升级到IPv6是无法做到的。国际互联网工程任务组IETF设计了三种策略来实现平滑的IP版本升级。

  • 1.双栈协议策略(dual-stack):就是一个站同时运行IPv4和IPv6,直到整个因特网使用IPv6。当一个分组被发送到目的端时,主机向DNS进行查询。如果DNS返回一个IPv4地址,那么源主机就发送一个IPv4分组,如果返回一个IPv6地址,就发送一个IPv6分组。
  • 2.隧道技术策略(tunneling):当两台使用IPv6的计算机进行相互通信的时候,但其分组数据要通过使用IPv4的网络时(IPv6数据报如果转换成IPv4,可能会丢掉一些字段数据,比如IPv6特有的流标签字段)。这时,发送的时候,该分组要封装成IPv4分组,当离开这个网络的时候再去掉这个封装。
  • 3.头部转换策略:将IPv6头部格式转换成IPv4头部格式,IPv6地址按照一定规则转换成IPv4地址。

4.4.5 涉足IP安全性

  在安全性成了主要关注对象的今天,研究人员设计了提供各种安全性服务的新型网络层协议。其中之一便是IPsec(nternet Protocol Security),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族。
  IPsec是面向连接的,使用IPsec的运输模式,在这两台主机之间发送的所有TCP和UDP报文段都享受IPsec提供的安全性服务。
  由IPsec会话提供的服务包括:

  • 密码技术约定:这种机制允许两台通信的主机对加密算法和密钥达成一致。
  • IP数据报有效载荷的加密:当发送主机从运输层接收到一个报文段时,IPsec加密该有效载荷。该有效载荷仅能由在接收主机中的IPsec解密。
  • 数据完整性:IPsec允许接收主机验证数据报的受字段,保证被加密的有效载荷在其数据报从源到目的地路由器中传输时没有被修改过。
  • 初始鉴别:当一台主机从某受信任源接收到一个IPsec数据报时,该主机确信在数据报中的源IP地址时该数据报的实际源。

4.5 路由选择算法

  主机通常与一台路由器相连接,该路由器即为该主机的默认路由器(default router),又称为该主机的第一跳路由器(first-hop router)。每当主机发送一个分组时,该分组被传送给它的默认路由器。我们将源主机的默认路由器称作源路由器(source router),把目的主机的默认路由器称作目的路由器(destination router)。
  路由选择算法的目的:找到一条从源路由器到目的路由器的具有最低费用的路径。

路由选择算法的分类

  • 1.根据算法是全局式还是分散式的来加以区分

    • 全局路由选择算法(global routing algorithm):用完整的、全局性的网络知识计算出从源到目的地之间的最低费用路径。这就要求该算法在真正开始计算以前,要以某种方式获得这些信息。实践中,具有全局状态信息的算法常被称作链路状态(Link State,LS)算法,因为该算法必须知道网络中每条链路的费用。
    • 分散式路由选择算法(decentralized rouoting algorithm):以迭代、分布式的方式计算出最低费用路径。每个结点仅需由与其直接相连链路的费用知识即可开始工作。
  • 2.根据算法是静态还是动态的进行区分

    • 静态路由选择算法(static routing algorithm)中,随着时间的流逝,路由的变化是非常缓慢的,通常是人工干预进行调整(如手工编辑一台路由器的转发表)。
    • 动态路由选择算法(dynamic routing algorithm)能够当网络流量负载或拓扑发生变化时改变路由选择路径。
  • 3.根据负载敏感还是负载迟钝进行区分

    • 负载敏感算法(load-sensitive algorithm)中,链路费用会动态地变化以反应出底层链路的当前拥塞水平。
    • 当今的因特网路由选择算法(如RIP、OSPF和BGP)都是负载迟钝(load-insensitive)的,因为某条链路的费用不明显地反映其当前或最近的拥塞水平。

4.5.1 链路状态路由选择算法

  在链路状态算法中,网络拓扑和所有的链路费用都是已知的。实践中这是通过让每个结点向网络中所有其他结点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的特征和费用。在实践中,经常是由链路状态广播(link state broadcast)算法来完成。
  一个链路状态路由选择算法是Dijkstra算法.

震荡现象:进行一次LS算法后,所有路由器将数据从高拥塞链路移到低拥塞链路,导致新的拥塞,而高拥塞链路不再拥塞,则下一次LS算法又回返回原样,无限循环。
解决方法:不让路由器同时执行LS算法。将执行时间随机化。


4.5.2 距离向量路由选择算法

  距离向量(Distance-Vector,DV)算法是一种迭代的、异步的的和分布式的算法。

  • 分布式:每个结点都要从一个或多个直接相邻的邻居接收某些信息,执行计算,然后将计算结果分发给邻居。
  • 迭代:计算的过程要一直持续到邻居之间无更多信息进行交换。
  • 异步:不要求所有结点步伐一致地进行操作。

算法思想: 不使用全局信息。通过使用 B e l l m a n − F o r d Bellman-Ford BellmanFord方程,即 d x ( y ) = m i n v { c ( x , v ) + d v ( y ) } d_x(y)=min_v\{c(x,v) + d_v(y)\} dx(y)=minv{c(x,v)+dv(y)}来更新转发表中的信息。每台路由器会向其邻居发送其更新后的距离向量。所有结点异步的进行交换距离向量,则距离就会收敛到最低。

  • 1.链路费用改变与链路故障
      当链路费用改变的时候,可能会出现路由选择环路,即为到达x,y通过z路由,z又通过y路由。
  • 2.增加毒性逆转
      上述技术可以通过一种毒性逆转(poisoned reverse)的技术而加以避免(涉及到3个以上结点则无法处理)。其思想为:如果z通过y路由选择到目的地x,则z将通过y,它(z)到x的距离是无穷大。只要z经y路由选择到x,z就持续地向y讲述这个善意的谎言,因为y相信z没有到x的路径,故只要z继续经y路由选择到x,y将永远不会试图经由z路由选择到x。(即当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去,这叫做毒性逆转。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。)
  • 3.LS与DV路由选择算法的比较
    • 报文复杂性:LS算法每个路由器都需要知道网络中每条链路的费用,要求发送 O ( ∣ N ∣ ∣ E ∣ ) O(|N||E|) O(NE)个报文。而DV算法是在路由表更新后才给直连的其他路由器发送报文,直到网络中路由表都不更新。
    • 收敛速度:LS使用dijstra算法,收敛速度为 O ( N 2 ) O(N^2) O(N2),而DV算法收敛较慢,甚至会碰到路由选择环路,无穷计数的问题。
    • 健壮性:LS算法中路由器根据网络信息进行计算,比较独立,提供了一定程度的健壮性。DV算法路由器的更新依靠其邻居路由器,当一个路由器出现计算错误,可能会随着网络传播开来。

4.5.3 层次路由选择

上述路由选择算法没有注意到的重点:

  • 规模:随着路由器数目变化得很大,涉及路由选择信息的计算、存储及通信的开销将高得不可实现。
  • 管理自治:在理想情况下,一个组织应该能够按自己的愿望运行和管理其网络,还要能将其网络与其他外部网络相连接。

上述两个问题都可以通过将路由器组织进自治系统(Autonomous System,AS) 来解决。每个AS由一组通常处在相同管理控制下的路由器组成(例如,由相同的ISP运营或属于相同公司的网络)。在相同AS中的路由器运行同样的路由选择算法,并且拥有彼此的信息。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议(intra-autonomous system routing protocol)。同时AS中还有一台或多台路由器将负责向本AS之外的目的地转发分组,这些路由器称为网关路由器(gateway router)
在这里插入图片描述
还存在的问题】假如说路由器1d要向外发送数据包,目的地为子网x,他应该选择1c还是1b进行转发?
解决方法】为了解决这个问题,AS1需要:

  • 1.知道经AS2可达哪些目的地,经AS3可达哪些目的地;
  • 2.向AS1中的所有路由器传播这些可达性信息,因此每台路由器能够配置它的转发表以处理外部AS目的地。

从相邻AS获取可达性信息和向该AS中所有路由器传播可达性信息是两项由自治系统间路由选择协议(inter-autonomous system routing protocol) 处理的任务。相互通信的AS必须运行相同的自治系统间路由选择协议。事实上,因特网中所有AS中都运行相同的AS间路由选择协议,该协议称为BGP4。

  • 3.AS1从AS间路由选择协议知道子网x从AS3可达,则会向它所有路由器传播这个信息,更新子网中的转发表,并确定路径为从路由器1d到网关路由器1c的最低费用路径。

在实践中经常使用的方法是热土豆路由选择(hot potato routing) :即将数据包往与当前路由器有最小路径费用的网关路由器上扔。


4.6 因特网中的路由选择

AS内部路由选择协议用于确定在一个AS内执行路由选择的方式。历史上有两个曾被广泛用于因特网上自治系统内的路由选择:

  • 1.路由选择信息协议(Routing Information Protocol,RIP)
  • 2.开放最短路优先(Open Shortest Path First,OSPF)

4.6.1 AS内部的路由选择:RIP

  RIP是一种距离向量协议,运行方式类似DV(距离向量路由选择)算法。RIP中使用术语:跳是沿着从源路由器到目的子网(包括目的子网)的最短路径经过的子网数量。下图举例指出了从源A到其他叶子子网的跳数:
在这里插入图片描述
  在RIP中,一条路径的最大费用被限制为15。因此RIP的使用限制在网络直径不超过15跳的自治系统内。在RIP中,路由选择更新信息在邻居之间通过一种RIP响应报文(RIP response message)来交换,大概每30秒相互交换一次。该报文包含了该AS内的多达25个目的子网的列表,以及发送方到每个子网的距离。响应报文又被称作RIP通告(RIP advertisement)。
  在RIP中,每台路由器维护一张称为路由选择表(routing table) 的RIP表,其中包括了该路由器的距离向量和转发表。
  如果一台路由器一旦超过180秒没有从邻居听到报文,则该邻居不再被认为是可达的(有可能是其邻居死机了,或者是连接的链路中断了);当这种情况发生时,RIP修改本地路由选择表,然后通过向相邻路由器(那些仍然可达的路由器)发送通告来传播该信息。路由器也可通过使用RIP请求报文,请求其邻居到指定目的地的费用。路由器在UDP上使用端口520相互发送RIP请求与响应报文。封装在标准IP数据报中的UDP报文段在路由器之间传输。RIP使用一个位于网络层协议(IP)之上的运输层协议(UDP)来实现网络层功能(一种路由选择算法)。


4.6.2 AS内部的路由选择:OSPF

  OSPF通常用在上层ISP中,而RIP通常用在下层ISP和企业中。
  洪泛:洪泛不要求维护网络的拓扑结构和相关的路由计算,仅要求接收到信息的节点以广播方式转发数据包。例如,源节点希望发送一段数据给目标节点。源节点首先通过网络将数据副本传送给它的每个邻居节点,每个邻居节点再将数据传送给各自的除发送数据来的节点之外的其他。如此继续下去,直到数据传送至目标节点或者数据设定的生存期限(TTL,Time To Live)为0为止。
  OSPF的核心是一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法。使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图,于是,路由器在本地运行Dijkstra算法,以确定一个以自身为根节点的到所有子网的最短路径树。各条链路费用是由网络管理员按照其策略配置的。使用OSPF时,路由器向AS内所有其他路由器广播路由选择信息。每当一条链路的状态发生改变时,路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性地(至少每隔30分钟一次)广播链路状态。
  OSPF的优点

  • 安全:使用鉴别,只有受信任的路由器能参与一个AS内的OSPF协议。
  • 多条相同费用的路径:当多条想等费用的路径存在时,OSPF允许使用多条路径。
  • 对单播与多播路由选择的综合支持
  • 支持在单个路由选择域内的层次结构

  一个OSPF自治系统可以配置成多个区域,每个区域都运行自己的OSPF链路状态路由选择算法,一个区域内的每台路由器都向该区域内的所有其他路由器广播其链路状态。在一个区域内,一台或多台区域边界路由器(area border router)负责为流向该区域以外的分组提供路由选择。最后,在一个AS内,只有一个OSPF区域配置成主干(backbone)区域。主干区域的主要作用是为AS内其他区域之间的流量提供路由选择。该主干总是包含了AS内的所有区域边界路由器,并且可能还包含了一些非边界路由器。


4.6.3 AS间的路由选择:BGP

  由RFC 4271定义的边界网关协议(Border Gateway Protocol,BGP)版本4是当今因特网中域间路由选择协议事实上的标准。它通常被称为BGP4或简称为BGP。
  BGP为每个AS提供了进行以下工作的手段:

  • 1)从相邻AS处获得子网可达性信息。
  • 2)向本AS内部的所有路由器传播这些可达性信息。
  • 3)基于可达性信息和AS策略,决定到达子网的‘好’路由

  最重要的是,BGP使得每个子网向因特网的其余部分通告它的存在。


1.BGP基础

  在BGP中,路由器对通过使用179端口的半永久TCP连接来交换路由选择信息。如下图所示。对于每条直接连接位于两个不同AS中的路由器的链路而言,通常有一条这样的BGP TCP连接。在一个AS中的路由器之间还有许多半永久的BGP TCP连接。
在这里插入图片描述
  对于每条TCP连接,位于该连接端点的两台路由器称为BGP对等方(BGP peers),沿着该连接发送所有BGP报文的TCP连接称为BGP会话(BGP session)。此外,跨越两个AS的BGP会话称为外部BGP会话(eBGP,external BGP session),在同一个AS中的两台路由器之间的BGP会话称为内部BGP会话(iBGP,internal BGP session)。
  BGP使得每个AS知道经过其相邻AS可达到哪些目的地。在BGP中,目的地不是主机,而是CIDR化的前缀(prefix),每个前缀表示一个子网或一个子网的集合。 比如AS2与四个子网相连:138.16.64/24,138.16.65/24,138.16.66/24,138.16.67/24。则AS能为这4个子网聚合这些前缀,并使用BGP向AS1通告单一前缀138.16.64/22


2.路径属性和BGP路由

  在BGP中,一个自治系统由其全局唯一的自治系统号(Autonomous System Number,ASN)所标识。(并非每个AS都有ASN,有一种所谓桩(stub) AS通常就没有ASN,这种AS仅承载源地址和目的地址作为本AS的流量)
  当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括一些BGP属性(BGP attribute)。在BGP中,带有属性的前缀被称为一条路由(route)。因此,BGP对等方彼此通告路由。两个较为重要的属性是AS-PATHNEXT-HOP

  • AS-PATH:该属性包含了前缀的通告已经通过的那些AS,当一个前缀传送到一个AS时,该AS将它的ASN增加到AS-PATH属性中。(比如一个前缀通告从AS2经过AS1要传送到AS3,则在AS1时该AS-PATH将是AS2 AS1)。路由器使用该AS-PATH属性来检测和防止循环通告。如果一台路由器看到它的ASN被包括在该路径列表中,它将拒绝该通告。
  • NEXT-HOP:NEXT-HOP是去往目的路由下一跳AS的路由器的IP地址。(比如,一台路由器A通告另一台路由器B,某些子网IP可以通过我(A路由器)可达,我(A路由器)就是你(B路由器)的下一跳,一个路由器有好多个接口,每个接口都有一个地址)
    NEXT-HOP的另一个作用:如下图所示,AS1和AS2由两条对等链路连接。在AS1中的路由器都知道到相同前缀x的两条不同的路由,这两条路由具有相同的AS-PATH(AS1-AS2)。但通过使用NEXT-HOP值和AS内部路由选择算法,路由器能够确定每条路径的费用,然后应用热土豆路由选择来决定适当的接口。
    在这里插入图片描述

  当一台网关路由器接收到一台路由器通告时,它使用其输入策略(import policy)来决定是否接收或过滤路由。


3.BGP路由选择

  如果路由器知道对相同前缀的多条路有,则BGP顺序地调用下列消除规则,直到留下一条路由。

  • 路由被指派一个本地偏好值作为它们的属性之一,这由偏好策略决定。
  • 在余下的路由中(具有相同的本地偏好值),具有最短的AS-PATH将留下。
  • 在余下的路由中,将选择具有最靠近NEXT-HOP路由器的路由。
  • 如果仍有多条路由,该路由器使用BGP标识符来选择路由。

4.路由选择策略

在这里插入图片描述

  W和Y是桩网络(stub network):所有进入桩网络的流量必定是去往该网络,所有离开桩网络的流量必定源于该网络。X是一个多宿桩网络(multi-homed stub network)。桩网络的实现方式:桩网络向其邻居通告它没有除自身以外其他目的地的路径。(如在上图中,避免B通过X转发分组到C,X可能直到有一条路径到Y(可能是XCY),但是它不将该路径通告给B,由于B不知道X有一条路径到Y,B绝不会经过X转发到Y的分组)
  对于ISP B来说,它可能不会转发从C到A的分组,因为它会认为这不是它应该负责的(会承担额外的费用)。商业运行的ISP们都遵从的一个经验法则是:任何穿越某ISP主干网的流量必须是其源或目的(或两者)都位于该ISP的某个客户网络中。不然这些流量将会免费搭车通过该ISP的网络。


为什么会有不同的AS间和AS内部路由选择协议?

  • 策略
    • Inter-AS:管理员需要控制通信路径,谁在使用它的网络进行数据传输;
    • Intra-AS:一个管理者,所以无需策略(AS内部的各子网的主机尽可能地利用资源进行快速路由)
  • 规模
    • Inter-AS:必须考虑规模问题,以便支持全网的数据转发。
    • Intra-AS:AS内部路由规模不是一个大问题,如果AS太大,可以将AS拆成小的AS。
  • 性能
    • Intra-AS:关注性能
    • Inter-AS:策略可能比性能更重要

4.7 广播和多播路由选择

  • 单播路由选择:通过路由器将到网际网络上某一位置的通信从源主机转发到目标主机;
  • 广播路由选择(broadcast routing):网络层提供了从一种源结点到网络中的所有其他结点交付分组的服务;
  • 多播路由选择(multicast routing):使单个源结点能够向其他网络节点的一个子集发送分组的副本。

4.7.1 广播路由选择算法

  可以使用N次单播(N-way-unicast)实现广播。但存在几个缺点,是效率低,是为了获得广播接收方的所有地址可能会增大开销,是与使用广播的目的有关(链路状态路由选择协议中使用广播计算单播路由的链路状态信息),因此基于单播实现广播是不明智的。

1.无控制洪泛

  实现广播的最显而易见的技术是洪泛(flooding) 方法,该方法要求源节点向它的所有邻居发送分组的副本。当某节点接收了一个广播分组时,它复制该分组并向它的所有邻居(除了从其接收该分组的那个邻居)转发之。
  显然,如果图是连通图,这种方案会将广播分组的副本交付给图中的所有结点。
【致命缺点】 当图中有环的时候,则每个广播分组的一个或多个分组副本将无休无止地循环。如在下图中,R2泛洪到R3,R3泛洪到R4,R4将泛洪到R2,R2将再次泛洪到R3,等等。但当每个结点与多个结点连接时,可能会导致在该网络中生成大量的广播分组,使得网络变得毫无作用,称为广播风暴(broadcast storm)。
在这里插入图片描述


2.受控洪泛

  避免广播风暴的关键是每个结点明智地选择何时洪泛分组,何时不洪泛分组(例如,如果它已经接收并洪范了某分组的较早副本)。在实践中,这能以几种方式来实现。

  • 序号控制洪泛(sequence-number-controlled flooding)
      在序号控制洪泛中,源结点将其地址(或其他唯一标识符)以及广播序号(broadcast sequence number)放入广播分组,再向它的所有邻居发送该分组。每个结点维护它已收到的、复制的和转发的源地址和每个广播分组的序号列表。当结点接收到一个广播分组时,它首先检查该分组是否在列表中。如果在,丢掉该分组;如果不在,复制该分组并并向所有邻居转发(除了发送该分组的那个邻居)。
  • 反向路径转发(Reverse Path Forwarding,RPF)
      RPF的基本思想简单而优雅。当一台路由器接收到具有给定源地址的广播分组时,仅当该分组到达的链路正好是位于它自己的返回其源的最短单播路径上,它才向其所有出链路转发分组(即该分组到达的路径确定是最小路径时,才转发)。否则,路由器丢弃该分组。
    【不解的地方】 若有多条最短路径时怎么处理?

  虽然序号控制洪泛和RPF避免了广播风暴,但它们不能完全避免冗余广播分组的传输。(即每次广播还是会向所有邻居发送分组,不论对方是否已经接收过该分组)


3.生成树广播

  在理想情况下,每个结点应当仅接收广播分组的一个副本。查看下图a中由粗线相连结点组成的树,如果广播分组沿着该树中的链路转发的话,所有网络结点将恰好收到广播分组的一个副本。该树是一个生成树(spanning tree)。在图的所有生成树中具有最小费用的树称为最小生成树(minimum spanning tree,MST)。
在这里插入图片描述
  因此,提供广播的另一种方法是首先对网络结点构造出一棵生成树。当一个源结点要发送一个广播分组时,它向所有属于该生成树的特定链路发送分组。接收广播分组的结点则向在生成树中的所有邻居转发该分组(其接收该分组的邻居除外)。一个结点并不必知道整棵树,只需要知道它在图中的哪些邻居是生成树的邻居


4.实践中的广播算法

  在实践中,广播协议被应用于应用层和网络层。Gnutella网络为了在对等方之间广播对内容的查询,使用应用级的广播。在Gnutella网络中的两个分布式应用级对等进程之间的一条链路实际上是一条TCP连接,Gnutella使用某种形式的序号控制泛洪,其中使用了一个16比特标识符和一个16比特有效载荷描述符(描述Gnutella报文类型),以监测一个接收到的广播查询是否已经收到、复制和转发过。并使用一个寿命字段(TTL)限制转发一个洪泛请求通过的跳数。Gnutella的洪泛机制有时也被称为范围受限的洪泛
  在OSPF 路由选择算法和中间系统到中间系统(IS-IS)路由选择算法中,使用了一种序号控制洪泛来广播链路状态通告(LSA)。OSPF使用一个32位比特序号,以及一个16比特年龄(age)字段来标识LSA。当网络中的链路状态或费用发生变化时,OSPF结点周期性的向与它相连的链路广播LSA。LSA序号被用于检测冗余的LSA。年龄字段起到了类似TTL值的作用,初试值位0,随着洪泛到每一跳而增加,并且当它位于一台路由器内存中等待洪泛时也会增加。


4.7.2 多播

  在多播通信中,需要面对的两个问题:即怎样标识多播分组的接收方,以及怎样为发送到这些接收方的分组编址。
  在单播通信中,接收方的IP地址承载在每个IP单播数据报中;
  在广播的情况下,所有结点需要接收广播分组,因此不需要目的地址。
  在多播的情况下,在数据报中标识所有接收方地址是不合理的。因此,在因特网体系结构中,多播数据报使用间接地址(address indirection)来编址。这就是说,用一个标识来表示一组接收方,寻址到该组(标识)的分组副本被交付给所有与该组相关连的多播接收方,且该组使用这个单一标识符。在因特网中,这种表示一组接收方的单一标识就是一个D类多播地址。与一个D类地址相关联的接收方小组被称为一个多播组(multicast group)。


1.因特网组管理协议IGMP

  IGMP运行在一台主机与其直接相连的路由器之间。如下图所示。
在这里插入图片描述
  IGMP为一台主机提供了手段,让它通知与其相连的路由器:在本主机上运行的一个应用程序想加入一个特定的多播组。又因为IGMP的交互范围仅限于主机与其相连的路由器中,因此还需要多播路由选择协议来协调遍及因特网内的多播路由器,以便多播数据报能路由到其最终目的地。因此因特网中的网络层多播是由两个互补的组件组成的:IGMP与多播路由选择协议。
  IGMP只有三种报文类型。IGMP报文承载在一个IP数据报中,使用的IP协议号为2。由一台路由器向所有与主机相连的接口发送一个membership_query报文来确定接口上主机已加入的多播组集合。主机用一个membership_report报文来响应。当一个应用程序首次加入一个多播组时,也可由主机产生membership_report报文,而不用等待来自路由器的membership_query报文。最后一种IGMP报文是leave_group报文,并且是可选的。


2.多播路由选择算法

  多播路由选择的目标就是发现一棵链路的树,这些链路连接了所有具有属于该多播组的相连主机的路由器。于是多播分组将能够沿着这棵树从发送方路由到所有属于该多播树的主机。当然,该树可能也会包含一些没有属于该多播分组相连主机的路由器。
  在实践中,采用两种方法来确定多播路由选择树。这两种方法的区别是:是用单一的组共享树来为组中的所有发送方分发流量,还是为每个独立的发送方构建一棵特定源的路由选择树。

  • 使用一棵组共享树的多播路由选择
    如同在生成树广播中,通过组共享树进行多播路由选择的基础是构建一棵树,该树包括了所有具有属于该多播组的相连主机的边缘路由器。在实践中,使用基于中心的方法来狗仔多播路由选择树,具有属于多播组的相连主机的边缘路由器向中心结点(经单播)发送加入报文。
  • 使用一颗基于源的树的多播路由选择
    组共享树多播路由选择构建单一的、共享的路由选择树,以路由所有发送方的分组,而第二种方法为多播组中每个源构建一颗多播路由选择树。在时间中,使用RPF算法来构造一棵多播转发数,以用于源于源点x的多播数据报。对于RPF广播到不属于该多播分组的下游路由器时,该下游路由器会返回一个剪枝报文,避免RPF广播的行为。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值