网络层:数据平面

4.1 网络层概述

每台路由器的数据 平面的主要作用是从其输入链路向其输出链路转发数据报;

控制平面的主要作用是协调这些本地的每路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。

4.1.1 转发和路由选择:数据平面和控制平面

网络层的作用从表面上看极为简单,即将分组从一台发送主机移动到一台接收主机。 为此,需要使用两种重要的网络层功能:

  • 转发。当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。转发是在数据平面中实现的唯一功能。在最为常见的场合,分组也可能被现有的路由器阻挡,或者可能是冗余的并经过多条出链路发送.

  • 路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing algorithm)。路由选择在网络层的控制平面中实现。 转发(forwarding)是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。转发发生的时间尺度很短(通常为几纳秒),因此通常用硬件来实现。路由选择(routing)是指确定分组从源到目的地所采取的端到端路 径的网络范围处理过程。路由选择发生的时间尺度长得多(通常为几秒),因此通常用软件来实现。

每台网络路由器中有一个关键元素是它的转发表(forwarding table)。路由器检査到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这种方法来转发分组。这些值对应存储在转发表项中的值,指出了该分组将被转发的路由器的输出链路接口。

实现控制平面的两种方法

传统方法

路由器中的转发表一开始是如何配置的?如上图所示,路由选择算法决定了插入该路由器转发表的内容。在这个例子中,路由选择算法运行在每台路由器中,并且在每台路由器中都包含转发和路由选择两种功能。在一台路由器中的路由选择算法与在其他路由器中的路由选择算法通信,以计算出它的转发表的值。 这种通信是如何执行的呢?通过根据路由选择协议交换包含路由选择信息的路由选择报文!

image-20220509215629465

SDN方法

下图显示了从路由器物理上分离的另一种方法,远程控制器计算和分发转发表以供每台路由器所使用。而在图4・3中,控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。远程控制器可能实现在具有高可靠性和冗余的远程数据中心中,并可能由ISP或某些第三方管理。路由器和远程控制器是如何通信的呢?通过交换包含转发表和其他路由选择信息的报文。显示在图4・3中的控制平面方法是软件定义网络(Software-Defined Networking, SDN)的本质,因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是“软件定义”的。

image-20220509220633126

4.1.2 网络服务模型

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

网络层能提供服务可能包括:

  • 确保交付。该服务确保分组将最终到达目的地。
  • 具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内交付。
  • 有序分组交付。该服务确保分组以它们发送的顺序到达目的地。
  • 确保最小带宽。这种网络层服务模仿在发送和接收主机之间一条特定比特率(例如 1 Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特,则所有分组最终会交付到目的主机。
  • 安全性。网络层能够在源加密所有数据报并在目的地解密这些分组,从而对所有运输层报文段提供机密性。

因特网的网络层提供了单一的服务,称为尽力而为服务(best effort service)。使用尽力而为服务,传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证有最小的带宽。其他的,ATM网络体系结构提供了确保按序时延、有界时延和确保最小带宽;集成服务体系结构的目标是提供端到端时延保证以及无拥塞通信。

4.1.3 网络层提供的两种服务

面向连接:虚电路(Virtual Circuit)网络

源节点和目的节点在进行数据传输之前必须建立连接 ,即建立一条虚电路,以保证双方通信所需的一切网络资源。

无连接:数据报(datagram)网络--典型:因特网网络机构

无需先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关;

每个报文携带目的节点完整的地址信息,路由器接收到数据报时都能根据数据报中目的节点地址来决定如何到达目的节点。

4.2 路由器工作原理

image-20220509231507156

4.2.1 路由器组成

  • 输入端口。

    输入端口(input port)执行几项重要功能:在路由器中执行终结入物理链路的物理层功能,这显示在图中输入端口部分最左侧的方框与输出端口部分最右侧的方框中。它还要与位于入链路远端的数据链路层交互来执行数据链路层功能,这显示在输入与输出端口部分中间的方框中。还要执行查找功能,这显示在输入端口最右侧的方框中。正是在这里,通过查询转发表决定路由器的输出端口,到达的分组通过路由器的交换结构转发到输出端 口。控制分组(如携带路由选择协议信息的分组)从输入端口转发到路由选择处理器。

  • 交换结构。

    交换结构将路由器的输入端口连接到它的输岀端口。这种交换结构完全包含在路由器之中,即它是一个网络路由器中的网络!

  • 输出端口。

    输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物理 功能在输出链路上传输这些分组。当一条链路是双向的时(即承载两个方向的流量),输出端口通常与该链路的输入端口成对出现在同一线路卡上。

  • 路由选择处理器。

    路由选择处理器执行控制平面功能。在传统的路由器中,它执行路由选择协议,维护路由选择表与关联链路状态 信息,并为该路由器计算转发表。在SDN路由器中,路由选择处理器负责与远程控制器通信,目的是接收由远程控制器计算的转发表项,并在该路由器的输入端口安装这些表项。路由选择处理器还执行网络管理功能。

路由器的输入端口、输出端口和交换结构几乎总是用硬件实现,

4.2.2 输入端口处理和基于目的地转发

输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。在输入端口中执行的查找对于路由器运行是至关重要的。正是在这个地方,路由器使用转发表来查找输 出端口,使得到达的分组能经过交换结构转发到该输出端口。转发表是由路由选择处理器计算和更新的(使用路由选择协议与其他网络路由器中的路由选择处理器进行交 互),或者转发表接收来自远程SDN控制器的内容。

image-20220509232533800

基于目的地址进行转发,每台路由器有一个将目的地址映射到链路接口的转发表

image-20220509233001221image-20220509233013850

使用这种风格的转发表,路由器用分组目的地址的前缀(prefix)与该表中的表项进行匹配;如果存在一个匹配项,则路由器向与该匹配项相关联的链路转发分组。当有多个匹配时,该路由器使用最长前缀匹配规则;与最长前缀匹配相关联的链路接口转发分组。

4.2.3 交换结构

交换结构位于一台路由器的核心部位, 因为正是通过这种交换结构, 分组才能实际地从一个输入端口交换(即转发)到一个输出端口中。交换可以用许多方式完成,如图所示。

image-20220509233433364
  • 经内存交换。在输入端口与输出端口之 间的交换是在CPU (路由选择处理器)的直接控制下完成的。输入与输出端口的功能就像在传统操作系统中的I/O设备一样。一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号。于是,该分组从输入端口被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中。速率受内存带宽限制(每数据报跨越两次总线)。不能同时转发两个分组,经过共享系统总线一次仅能执行一个内存读/写。
  • 经总线交换。输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。 输入端口为 分组预先计划一个交换机内部标签(首部),指示本地输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。然后标签在输出端口被去除。每个分组必须跨过单一总线,故路由器的交换带宽受总线速率的限制;
  • 经互联网络交换。克服单一、共享式总线带宽限制的一种方法是,使用一个更复杂的互联网络。纵横式交换机就是一种由2N条总线组成的互联网络,它连接N个输入端口 与N个输岀端口。与前面两种交换方法不同,纵横式网络能够并行转发多个分组。纵横式交换机是非阻塞的,即只要没有其他分组当前被转发到该输出端口,转发到输出端口的分组将不会被到达输出端口的分组阻塞。类似可编程逻辑电路。

4.2.4 输出端口处理

image-20220509234932386

4.2.5 排队

输入端口排队

交换结构比输入端口处理速度慢----> 数据报在输入端口排队---->排队延时,内存溢出丢包

线路前部Head-of-the-Line (HOL)阻塞 : 在一个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的),因为它被位于线路前部的另一个分组所阻塞。

image-20220509235617497

输出端口排队

当达到端口速度超过输出速度,则需要缓存数据报---->排队延时,内存溢出丢包

当没有足够的内存来缓存一个入分组时,就必须做出决定:要么丢弃到达的分组(采用一种称为弃尾的策略),要么删除一个或多个已排队的分组为新来的分组腾出空间。在某些情况下,在缓存填满之前便丢弃一个分组(或在其首部加上标记)的做法是有利的,这可以向发送方提供一个拥塞信号。分组丢弃与标记策略统称为主动队列管理Active Queue Management ,AQM算法。随机早期检测(Random Early Detection, RED)算法是得到最广泛研究和实现的 AQM 算法之一。

4.2.6 分组调度

排队的分组如何经输出链路传输?

先进先出

image-20220510000340243

如果链路当前正忙于传输另一个分组,到达链路输出队列的分组要排队等待传输。缓存空间不够,队列的分组丢弃策略则确定该分组是否将被丢弃或者从队列中去除其他分组腾出空间。当一个分组通过输出链路完全传输(也就是接收服务)时,从队列中去除它。

优先权排队

image-20220510001020104

在优先权排队(priority queuing)规则下,到达输出链路的分组被分类放入输出队列中的优先权类,每个优先权类通常都有自己的队列。当选择一个分组传输时,优先权排队规则将从队列为非空(也就是有分组等待传输)的最高优先权类中传输一个分组。在同一优先权类的分组之间的选择通常以FIFO方式完成。在非抢占式优先权排队,一旦分组开始传输,就不能打断。

循环排队

image-20220510001051937

在循环排队规则下,分组像使用优先权排队那样被分类。然而,在类之间不存在严格的服务优先权,循环调度器在这些类之间轮流提供服务。一个所谓的保持工作排队规则在有(任何类的)分组排队等待传输时,不允许链路保持空闲。当寻找给定类的分组但是没有找到时,保持工作的循环规则将立即检查循环序列中的下一个类。

加权公平排队

一种通用形式的循环排队已经广泛地实现在路由器中,它就是所谓的加权公平排队 (Weighted Fair Queuing, WFQ )规则。其中,到达的分组被分类并在合适的每个类的等待区域排队。与使用循环调度一 样,WFQ调度器也以循环的方式为各个类提供服务。WFQ也是一种保持工作排队规则。 WFQ和循环排队的不同之处在于,每个类在任何时间间隔内收到不同数量的服务,处理的分组数量与队列的权重相关。

4.3 网际协议

4.3.1 IPv4数据包格式

image-20220511161710628
  • 版本(号)。4比特规定了数据报的IP协议版本。通过查看版本号,路由器能 够确定如何解释IP数据报的剩余部分。不同的IP版本使用不同的数据报格式。
  • 首部长度。因为一个IPv4数据报可包含一些可变数量的选项,故需要用这4比特来确定IP数据报中载荷实际开始的地方。大多数IP数据报不包含选项, 所以一般的IP数据报具有20字节的首部。 首部长度以4字节为单位。
  • 服务类型。服务类型(TOS)比特包含在IPv4首部中,以便使不同类型的IP数 据报。例如,将实时数据报与非实时流量区分开也许是有用的。
  • 数据报长度。这是IP数据报的总长度(首部加上数据),以字节计。因为该字 段长为16比特,所以IP数据报的理论最大长度为65 535字节。然而,数据报 很少有超过1500字节的,该长度使得IP数据报能容纳最大长度以太网帧的载 荷字段。
  • 标识、标志、片偏移。这三个字段与所谓IP分片有关,IPv6不允许在路由器上对分组分片。片偏移以8字节为单位。
  • 寿命。寿命(Time To Live, TTL)字段用来确保数据报不会永远在网络中循环。每当一台路由器处理数据报时,该字段的值减 1,若TTL字段减为0,则该数据报必须丢弃。
  • 协议。该字段通常仅当一个IP数据报到达其最终目的地时才会有用。该字段值 指示了 IP数据报的数据部分应交给哪个特定的运输层协议。例如,值为6表明 数据部分要交给TCP,而值为17表明数据要交给UDP。
  • 首部检验和。首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。首部检验和是这样计算的:将首部中的每2个字节当作一个数,用反码算术对这些数求和。路由器一般会丢弃检测出错误的数据报。每台路由器必须重新计算检验和并再次存放到原处,因为TTL字段以及可能的选项字段会改变。IP层只对IP首部计算了检验和,而TCP/UDP检验和是对整个报文段进行的。
  • 源和目的IP地址。当某源生成一个数据报时,它在源IP字段中插入它的IP地 址,在目的IP地址字段中插入其最终目的地的地址。通常源主机通过DNS查找 来决定目的地址。
  • 选项。选项字段允许IP首部被扩展。首部选项很少使用,数据报首部不包括选项字段能够节约开销。
  • 数据(有效载荷)。数据报存在的首要理由。在大多数情况下,IP数据报中的数据字段包含要交付给目的地的运输层报文 段(TCP或UDP)。

注意到一个IP数据报有总长为20字节的首部(假设无选项)。如果数据报承载一个 TCP报文段,则每个(无分片的)数据报共承载了总长40字节的首部(20字节的IP首部加上20字节的TCP首部)以及应用层报文。

4.3.2 IPv4数据报分片

分片缘由和概念

并不是所有链路层协议都能承载相同长度的网络层分组。如,以太网帧能够承载不超过 1500字节的数据,而某些广域网链路的帧可承载不超过576字节的数据。一个链路层帧能承载的最大数据量叫作最大传送单元(Maximum Transmission Unit, MTU

问题在于在发送方与目的地路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同的 MTU。 需要将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报,然后通过输出链路发送这些帧。每个这些较小的数据报都称为片 (fragment) 。

IPv4将数据报的重新组装工作放到端系统中,而不是放到网络路由器中。

当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时贴上标识号。发送主机通常将它发送的每个数据报的标识号加1。当某路由器需要对一个数据报分片时,形成的每个数据报(即片)具有初始数据报的源地址、目的地址与标识号。当目的地从同一发送主机收到一系列数据报时,它能够检查数据报的标识号以确定哪些数据报实际上是同一较大数据报的片。由于IP是一种不可靠的服务,一个或多个片可能永远到达不了目的地。为了让目的主机绝对地相信它已收到了初始数据报的最后一个片,最后一个片的标志比特(MF)被设为0,而所有其他片的标志比特被设为1。另外,为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组装片),使用偏移字段指定该片应放在初始IP数据报的哪个位置。

如何分片

image-20220511164643581image-20220511164717469

4.3.3 IPv4编址

概述

主机与路由器连入网络的方法:一台主机通常只有一条链路连接到网络;当主机中的IP想发送一个数据报时,它就在该链路上发送。主机与物理链路之间的边界叫作接口。因为路由器的任务是从链路上接收数据报并从某些其他链路转发出去,路由器必须拥有两条或更多条链路与它连接。路由器与它的任意一条链路之间的边界也叫作接口。因为每台主机与路由器都能发送和接收IP 数据报,IP要求每台主机和路由器接口拥有自己的IP地址。 每个IP地址长度为32比特(等价为4字节),总共有大约40亿个可能的IP地址。这些地址通常按所谓点分十进制记法书写。

一个接口的IP地址的一部分需要由其连接的子网来决定。

用IP的术语来说,互联这3个主机接口与1个路由器接口的网络形成一个子网。P编址为这个子网分配一个地址223.1.1.0/24,其中的 /24记法,有时称为子网掩码(network mask),指示32比特中的最左侧24比特定义了子网地址。剩余的低位比特标识为主机号。

特点

IP **地址是一种分等级的地址结构。**分两个等级的好处是:

第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。方便 IP 地址的管理。

第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少。

分类编址

image-20220511170222277image-20220511170259701image-20220511170314043

无类别域间路由选择CIDR----无类别编址

无类型域间选路(Classless InterDomain Routing, CIDR):消除传统的 A 类、B 类和 C 类地址界限

  • 子网为连续地址的地址块
  • 网络前缀可以任意长度(如/23)
  • (子网地址,主机地址)格式: a.b.c.d/x

层次划分

需要注意划分之后的网络需要在同一个子网,遵循从大到小分配就可以避免这个问题

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

某组织一旦获得了一块地址,它就可为本组织内的主机与路由器接口逐个分配IP地 址。主机地址配置使用动态主机配置协议(Dy namic Host Configuration, DHCP)来完成。DHCP 允许主机自动获取(被分配)一个IP地址。

网络管理员能够配置DHCP,以使某给定主机每次与网络连接时能得到一个相同的IP地址,或者某主机将被分配一个临时的IP地址,每次与网络连接时该地址也许是不同的。

除了主机IP地址分配外,DHCP还允许一台主机得知其他信息,例如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地 DNS服务器的地址。

由于DHCP具有将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议(plug and-play protocol)或零配置(zeroconf)协议。

DHCP协议是一个4个步骤的过程

image-20220511174456001

DHCP服务器发现。一台新到达的主机的首要任务是发现一个要与其交互的DHCP 服务器。这可通过使用DHCP发现报文(DHCP discover message)来完成,客户在UDP分组中向端口 67发送该发现报文。该UDP分组封装在一个IP数据报中。DHCP客户生成包含DHCP发现报文的 IP数据报,其中使用广播目的地址255.255.255.255,并且使用“本主机”源IP地址 0.0.0.0。DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的节点。

DHCP服务器提供。DHCP服务器收到一个DHCP发现报文时,用DHCP提供报 文向客户做出响应,该报文向该子网的所有节点广播,仍然使用IP广播地址255.255.255.255。因为在子网中可能存在几个DHCP服务器,该客户也许会发现它处于能在几个提供者之间进行选择的优越位置。每台服务器提供的报文包含有收到的发现报文的事务ID、向客户推荐的IP地址、网络掩码以及IP地址租用期(address lease time) , 即IP地址有效的时间量。服务器租用期通常设置为几小时或几天。

DHCP请求。新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用DHCP请求报文进行响应,回显配置的参数。

DHCP ACK。服务器用 DHCP ACK 报文对DHCP请求报文进行响应,证实所要求的参数。 一旦客户收到DHCP ACK后,交互便完成了,并且该客户能够在租用期内使用DHCP分配的IP地址。因为客户可能在该租用期超时后还希望使用这个地址,所以DHCP还提供了一种机制以允许客户更新它对一个IP地址的租用。

从移动性角度看,DHCP确实有非常严重的缺陷。因为每当节点连到一个新子网,要从DHCP得到一个新的IP地址,当一个移动节点在子网之间移动时,就不能维持与远程应用之间的TCP连接。

4.3.4 网络地址转换NAT

具有专用地址的地域是指其地址仅对该网络中的设备有意义的网络。专用地址仅在给定的网络中才有意义

NAT使能路由器对外界的行为就如同一个具有单一IP地址的单一设备。从本质上讲,NAT使能路由器对外界隐藏了家庭网络的细节。

另外,路由器从ISP的DHCP服务器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的计算机提供地址。

image-20220511175043790

如果从广域网到达NAT路由器的所有数据报都有相同的目的IP地址,那么该路由器转发给哪个内部主机呢?技巧就是使用NAT路由器上的一张NAT转换表,并且在表项中包含了端口号及其IP地址。

因为端口号字段为16 比特长,NAT协议可支持超过60 000个并行使用路由器广域网一侧单个IP地址的连接!

NAT优点:

  • 解决IPv4地址耗尽问题
  • 本地网络设备IP地址的变更,无需通告外界网络
  • 变更ISP时,无需修改内部网络设备IP地址
  • 内部网络设备对外界不可见,不可直接寻址(安全)

NAT引起争议

  • 路由器应该只处理第三层功能
  • 违反了端到端原则
  • 应用设计者必须要考虑 NAT可能性,如 P2P应用程序
  • 地址短缺应当由IPv6来解决

4.3.5 IPv6

image-20220511193617614

IPv6改变:

  • 扩大的地址容量。IPv6将IP地址长度 从32比特增加到128比特。

  • 简化高效的40字节首部。40字节定长首部允许路由器更快地处理IP数据报。

  • 流标签。IPv6有一个难以捉摸的流(flow)定义。

  • IPv6数据报的结构更简单、更高效。 下是在IPv6中定义的字段。

各个字段:

  • 版本。该4比特字段用于标识IP版本号。
  • 流量类型。该8比特字段与我们在IPv4中看到的TOS字段的含义相似。该20比特的字段用于标识一条数据报的流,能够对一条流中的某些数据报给出优先权,或者它能够用来对来自某些应用的数据报给岀更高的优先权,以优于来自其他应用的数据报。
  • 有效载荷长度。该16比特值作为一个无符号整数,给出了 IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。
  • 下一个首部。该字段标识数据报中的内容(数据字段)需要交付给哪个协议(如TCP或UDP)。该字段使用与IPv4首部中协议字段相同的值。
  • 跳限制。转发数据报的每台路由器将对该字段的内容减1。如果跳限制计数达到 0,则该数据报将被丢弃。
  • 源地址和目的地址。
  • 数据。这是IPv6数据报的有效载荷部分。当数据报到达目的地时,该有效载荷就从IP数据报中移出,并交给在下一个首部字段中指定的协议处理。

较IPv4少了的东西

  • 分片/重新组装。IPv6不允许在中间路由器上进行分片与重新组装。这种操作只能在源与目的地执行。如果路由器收到的IPv6数据报因太大而不能转发到出链路上的话,则路由器只需丢掉该数据报,并向发送方发回一个“分组太大”的ICMP 差错报文即可。分片与重新组装是一个耗时的操作,将该功能从路由器中删除并放到端系统中, 大大加快了网络中的IP转发速度。
  • 首部检验和。因为因特网层中的运输层(如TCP与UDP)和数据链路层(如以太 网)协议执行了检验操作,所以网络层没必要了。
  • 选项。选项字段不再是标准IP首部的一部分了。但它并没有消失,而是可能出现在IPv6首部中由“下一个首部”指出的位置上。这就是说,就像TCP或UDP协 议首部能够是IP分组中的“下一个首部” 一样,选项字段也能是“下一个首部” 。

IPv4到IPv6的迁移

广泛采用的IPv4到IPv6迁移的方法是建隧道(tunneling)。建隧道依据的基本思想如下:假定两个IPv6节点要使用IPv6数据报进行交互,但它 们是经由中间IPv4路由器互联的。我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道(tunnel)。借助于隧道,在隧道发送端的IPv6节点可将整个IPv6数据报放到一个IPv4数据报的数据(有效载荷)字段中。于是, 该IPv4数据报的地址设为指向隧道接收端的IPv6节点,再发送给隧道中的第一个节点。隧道接收端的IPv6节点最终收到该IPv4数据报,并确定该IPv4数据报含有一个IPv6数据报,从中取出IPv6数据报,然后再为该IPv6数据报提供路由,就好像它是从一个直接相连的IPv6邻居那里接收到该IPv6数据报一样。

image-20220511194727660

4.4 通用转发和SDN

因特网路由器的转发决定传统上仅仅基于分组的目的地址。我们现在考虑一种更有意义的通用“匹配加动作”范式,其中能够对协议栈的多个首部字段进行“匹配” ,这些首部字段是与不同层次的不同协议相关联的。 “动作”能够包括:将分组转发到一个或多个输出端口,跨越多个通向服务的离开接口进行负载均 衡分组,重写首部值,有意识地阻挡/丢 弃某个分组,为进一步处理和动作而向某个特定的服务器发送一个分组,等等。

image-20220511195414943

在通用转发中,一张匹配加动作表将基于目的地的转发表一般化了。图显示了位于每台分组交换机中的一张匹配加动作表,该表由远程控制器计算、 安装和更新。

匹配加动作转发表在OpenFlow中称为流表( flow table),它的每个表项包括:

  • 首部字段值的集合,入分组将与之匹配。匹配不上流表项的分组将被丢弃或发送到远程控制器做更多处理。
  • 计数器集合(当分组与流表项匹配时更新计数器)。这些计数器可以包括已经与该表项匹配的分组数量,以及自从该表项上次更新以来的时间。
  • 当分组匹配流表项时所采取的动作集合。这些动作可能将分组转发到给定的输出端口,丢弃该分组、复制该分组和将它们发送到多个输岀端口,和/或重写所选的首部字段。 总结就是:转发、丢弃、修改字段

在结束时,我们注意到流表本质上是一个API,通过这种抽象每台分组交换机的行为能被编程;

4.5 习题

image-20220511195834046image-20220511195847696

image-20220511195905451image-20220511195934775

image-20220511200026064image-20220511200339699

Last Updated:
Contributors: liushun