文章目录
- [4.1 网络层概述](#4.1 网络层概述)
-
- [4.1.1 转发和路由选择:数据平面和控制平面](#4.1.1 转发和路由选择:数据平面和控制平面)
- [4.1.2 网络服务模型](#4.1.2 网络服务模型)
- [4.2 路由器工作原理](#4.2 路由器工作原理)
-
- [4.2.1 输入端口处理和基于目的地转发](#4.2.1 输入端口处理和基于目的地转发)
- [4.2.2 交换](#4.2.2 交换)
- [4.2.3 输出端口处理](#4.2.3 输出端口处理)
- [4.2.4 如何出现排队](#4.2.4 如何出现排队)
- [4.2.5 分组调度](#4.2.5 分组调度)
- [4.3 网际协议:IPv4、寻址、IPv6及其他](#4.3 网际协议:IPv4、寻址、IPv6及其他)
-
- [4.3.1 IPv4数据报格式](#4.3.1 IPv4数据报格式)
- [4.3.2 IPv4数据报分片](#4.3.2 IPv4数据报分片)
- [4.3.3 IPv4编址](#4.3.3 IPv4编址)
- [4.3.4 网络地址转换](#4.3.4 网络地址转换)
- [4.3.5 IPv6](#4.3.5 IPv6)
- [4.4 通用转发和SDN](#4.4 通用转发和SDN)
-
- [4.4.1 匹配](#4.4.1 匹配)
- [4.4.2 动作](#4.4.2 动作)
- [4.4.3 匹配加动作操作中的OpenFlow例子](#4.4.3 匹配加动作操作中的OpenFlow例子)
- [4.5 小节](#4.5 小节)
4.1 网络层概述
网络层包含数据平面和控制平面两个部分,数据平面负责实际的数据传输和路由,而控制平面则处理路由表的构建和维护,以指导数据平面的操作。
4.1.1 转发和路由选择:数据平面和控制平面
网络层的作用从表面上看极为简单,即将分组从一台发送主机移动到一台接收主机。 为此,需要使用两种重要的网络层功能:
- 转发:当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动 到适当的输出链路。
- 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
转发和路由选择是完全不同的,转发是指将分组从输入链路转移到输出链路的路由器本地动作,而路由选择是分组从源目的地到目的地所选择的路径。简单来说就是分组通过单个路由器就是转发,通过多个路由器的过程就是路由选择
转发过程就是通过路由表实现的,路由器检査到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这种方法来转发分组。
4.1.2 网络服务模型
网络服务模型(network service model)定义了分组在发送与接收端系统之间的端到端运输特性。 我们现在考虑网络层能提供的某些可能的服务。这些服务部分如下:
-
确保交付:该服务确保分组将最终到达目的地。
-
具有时延上界的确保交付:该服务不仅确保分组的交付,而且在特定的主机到主机 时延上界内(例如在100ms内)交付。
-
有序分组交付:该服务确保分组以它们发送的顺序到达目的地。
-
确保最小带宽:这种网络层服务模仿在发送和接收主机之间一条特定比特率(例如 1 Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作 为分组的组成部分),则所有分组最终会交付到目的主机。
-
安全性:网络层能够在源加密所有数据报并在目的地解密这些分组,从而对所有运 输层报文段提供机密性。
因特网的网络层提供了单一的服务,称为尽力而为服务(best effort service)
4.2 路由器工作原理
下图显示了一个通用路由器体系结构的总体视图
可以发现路由器被抽象为了两个部分,控制平面和数据平面,而数据平面是用于实现转发功能的,通过硬件进行实现,将分组从输入端口通过交换结构转移到合适的输出端口。
为什么分组的转发要通过硬件实现而不是软件呢?因为输入链路到到分组的到达的速率非常的快,路由器必须在下一个分组到达之前就要对到达的数据进行处理,通过软件是无法实现的,所以通过硬件来进行处理。
4.2.1 输入端口处理和基于目的地转发
一个分组在输入端口会经过如下处理
输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。然后就是查找工作,查找就是通过转发表来查找对应的输出端口,使得到达的分组能经过交换结构转发到该输出端口。
下面是一种转发表的内容
路由器用分组目的地址的前缀(prefix)与该表中的表项进行最长前缀匹配,然后选择合适的输出端口。这个匹配的工作使用硬件完成,由于匹配速度要求在纳秒级,所以还需要使用一些用超出简单线性搜索的技术,如快速查找算法。
一旦通过查找确定了某分组的输出端口,则该分组就能够发送进入交换结构。但是当交换结构正在被使用的时候,那么该分组就必须进行排队等待。
4.2.2 交换
分组通过交换能实际地从一个输入端口交换(即转发)到一个输出端口中。交换可以用许多方式完成,如下
- 经内存交换:这种方式就是输入端将分组复制到内存,然后输出端再从内存进行内存拷贝。这样如果内存的处理速率是B,那么总的吞吐量就会小于B/2
- 经总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。这种方式同时只能有一个分组使用总线,其它分组必须等待。
- 经互联网络交换:这种算是对总线的一种扩展,由单根总线变为了N+M根总线(N和M代表输入端口和输出端口数量)。这种方式可以并行的发送多个分组,也就说明纵横式交换机是非阻塞的。
4.2.3 输出端口处理
输出端口处理取出已经存放在输出端口内存中的分组并将其发送到输出链路上。
4.2.4 如何出现排队
排队在输入端和输出端都有可能会出现,排队的位置和程度(或者在输入端口排队,或者在输岀端口排队)将取决于流量负载、交换结构的相对速率和线路速率。由于路由器的内存有限,当队列过长的时候就会导致没有足够的内存,从而出现丢包的情况。
- 输入排队: 当交换结构的处理速度慢于输入线路时,即输入端口的传输速率高于交换结构的处理速度,数据包就会在输入端口形成排队。输入排队可能导致数据包在输入端口的缓冲区等待进入交换结构,延长了数据包从输入到输出的传输时间。
- 输出排队: 当交换结构中有多个数据包同时要发送到相同的输出端口时,由于交换结构的处理速度通常远大于单个输出端口的处理速度,就可能导致输出端口排队。即使交换结构能够快速地传递数据包,但输出端口的处理速度可能成为瓶颈,导致多个数据包在输出端口排队等待发送。输出排队可能导致数据包在输出端口的缓冲区中等待,增加了传输的延迟。
4.2.5 分组调度
由于会出现排队,那么对于这个队列就会出现如何进行调度的问题,下面就是一些常见方式
-
先进先出: 这是一种简单而直观的调度方式,即先进入队列的数据包将会先被处理,而后到的数据包将等待。这种调度方式保持了数据包到达的顺序,但可能导致早期到达的大数据包占用队列,导致后续小数据包等待的时间过长。
-
优先权队列:在这种方式中,多个队列被分配不同的优先级。高优先级队列中的数据包将在低优先级队列中的数据包之前被处理。这种方法适用于需要对不同类型的流量进行优先级排序的场景。
-
循环和加权公平排队: 这是一种更为复杂的调度方式,其中存在多个队列,并以循环方式为每个队列分配处理机会。每个队列都被分配一个权重,表示其获得处理机会的频率。这使得分组较多的队列能够获得更多的带宽份额。
4.3 网际协议:IPv4、寻址、IPv6及其他
在这节中,将关注因特网网络层的关键方面和著名的网际协议
4.3.1 IPv4数据报格式
IPv4数据报的格式如下
IPv4数据报字段解释如下
- 版本:这4比特规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分。
- 首部长度:因为在IPv4数据报中含有可选字段,导致IP数据报长度不固定,所以需要一个字段来标识,通常IPv4数据报长度为20字节
- 服务类型: 服务类型字段用于指定数据报的优先级和服务质量,包括最小延迟、最大吞吐量、最高可靠性等。
- 数据报长度:这是IP数据报的总长度(首部加上数据),以字节计。因为该字 段长为16比特,所以IP数据报的理论最大长度为65535字节。
- 标识、标志、片偏移: 这些字段一起用于处理分段(fragmentation)和重组。当数据报太大而无法在一条路径上传输时,它可以被分成多个片段,并在目标处重新组装。
- 寿命:该字段表示数据报在网络中可以经过的最大路由器跳数。每经过一个路由器,该值减1,当这个值为0时,数据报将被丢弃。这个机制有助于防止数据报在网络中无限循环。
- 协议:该字段通常仅当一个IP数据报到达其最终目的地时才会有用。该字段值指示了 IP数据报的数据部分应交给哪个特定的运输层协议。
- 首部检验和:首部检验和用于检测首部的错误。然而,校验和不覆盖数据部分,因此对数据的完整性检查通常由上层协议(如TCP或UDP)负责。
- 源和目的IP地址:分别代表发送方IP地址和接收方IP地址
- 选项:该字段是可选字段,用于对IP数据报进行扩展。
- 数据:数据包所携带的有效载荷,包含要交付给目的地的运输层报文段
4.3.2 IPv4数据报分片
IPv4数据报分片是一种网络中用于处理大于网络链路允许的最大传输单元(MTU)的数据报的机制。MTU是网络链路能够传输的最大数据包的大小。当一个数据报的大小超过了网络链路的MTU时,IPv4路由器就会将该数据报分割成更小的片段,以便它可以在网络上传输,并在目的地重新组装。
IPv4数据报分片涉及三个与分片有关的字段:标识符(Identification)、标志(Flags)、片偏移(Fragment Offset)。
- 标识符(Identification):
- 大小: 16比特。
- 作用: 用于唯一标识一个数据报的所有分片。所有属于同一个数据报的分片都具有相同的标识符。
- 使用: 当数据报被分片时,每个分片的标识符字段都设置为相同的值,以便接收端能够将它们组合成原始的、完整的数据报。
- 标志(Flags):
- 大小: 3比特。
- 作用: 用于指示数据报的分片状态。
- 具体标志:
- 位0(最低位): 保留位,必须设置为0。
- 位1 DF: 如果为1,表示不能分片;如果为0,表示可以分片。
- 位2 MF: 如果为1,表示当前是分片但不是最后一个分片;如果为0,表示最后一个分片。
- 片偏移(Fragment Offset):
- 大小: 13比特。
- 作用: 用于指示当前分片在原始数据报中的位置。
- 单位: 片偏移以8字节为单位,即以8字节的倍数表示分片的相对位置。
- 计算: 片偏移值表示当前分片相对于原始数据报开始处的偏移量,通过将该值乘以8得到实际的字节偏移。
下面是一个例子
假设原始IPv4数据报的大小为4000字节,而网络链路的MTU为1500字节。在这种情况下,我们需要对数据报进行分片。考虑到每个分片都有20字节的IPv4头部,分片信息如下
- 第一个分片:
- 标识符(Identification):5678
- 标志(Flags):0b001(表示有后续分片)
- 片偏移(Fragment Offset):0
- 数据大小:1480字节(1500 - 20)
- 第二个分片:
- 标识符(Identification):5678
- 标志(Flags):0b001(表示有后续分片)
- 片偏移(Fragment Offset):185(1480/8)
- 数据大小:1480字节(1500 - 20)
- 第三个分片:
- 标识符(Identification):5678
- 标志(Flags):0b000(表示没有后续分片)
- 片偏移(Fragment Offset):370(185×2)
- 数据大小:1020字节(4000-20-1480-1480)
4.3.3 IPv4编址
每个IPv4地址长32比特,大约包含40亿个不同的地址。这些地址通常按所谓点分十进制记法,如址193.32.216.9,其中每个字节通过十进制表示,对应的二进制表示为 11000001 00100000 11011000 00001001
由于IPv4地址空间的有限性,引入了子网划分的概念。子网划分允许网络管理员将一个大的IP地址块分割成多个更小的、独立管理的子网。这有助于更有效地使用IP地址,同时提高网络的安全性和管理性。
下图中的路由器和主机都有自己的IP地址
仔细看上图,可以发现某一端的主机和路由器接口前缀都是一样的,例如最左边的223.1.1。在IP术语中,将这种称为子网。
上面最左边的地址可以使用223.1.1.0/24来进行表示,/24记法也被称为子网掩码,表示32比特中的前24比特用来表示子网地址。
为了确定子网,只需要分开主机和路由器的每个接口,观察产生了几个隔离的网络岛。这些隔离的网络中的每一个都叫作一个子网 (subnet) 。例如下图中包含了6个子网
因特网的地址分配策略被称为无类别域间路由选择(Classless Inlerdomain Routing,CIDR),形式为a.b. c. d/x的地址的x最高比特构成了 IP地址的网络部分,并且经常被称为该地址的前缀。在同一个子网内的主机通常具有相同的前缀。地址的32-x位用于区别子网内部的设备
当某个组织通过ISP获得了一块地址后,可为本组织内的主机与路由器接口逐个分配IP地址。
分配IP地址的任务通常是通过用动态主机配置协议 (Dynamic Host Configuration, DHCP)来自动完成的。DHCP 允许主机自动获取(被分配)一个IP地址,由于DHCP具有将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为 即插即用协议(plug and-play protocol)或零配置(zeroconf)协议。
DHCP是一个客户-服务器协议。客户通常是新到达的主机,它要获得包括自身使用 的IP地址在内的网络配置信息。在最简单场合下,每个子网 将具有一台DHCP服务器。如果在某子网中没有服务器,则需要一个DHCP中继代理(通常是一台路由器),这个代理知道用于该网络的DHCP服务器的地址。
上图中DHCP服务器为223.1.2。0/24提供DHCP服务,路由器充当DHCP中继服务器,为223.1.1.0/24和223.1.3.0/24体格DHCP服务
DHCP的简要工作流程如下
- DHCP Discover(发现):
- 当一个设备连接到网络或者重新启动时,它首先在网络上广播一个DHCP Discover消息。
- 这个广播消息的目的是寻找可用的DHCP服务器。
- DHCP Offer(提供):
- DHCP服务器收到Discover消息后,会回应一个DHCP Offer消息,该消息包含了一个可用的IP地址以及其他网络配置信息(如子网掩码、默认网关、DNS服务器等)。
- 服务器会将Offer消息直接发送给发出Discover消息的设备,也是通过广播。
- DHCP Request(请求):
- 设备收到一个或多个DHCP Offer消息后,选择其中一个Offer,并将自己的选择通过DHCP Request消息发送给服务器。
- 这个消息包含了设备对于某个特定提供的接受。
- DHCP Acknowledge(确认):
- DHCP服务器收到Request消息后,如果所提供的IP地址仍然可用,它会回应一个DHCP Acknowledge消息。
- 这个消息确认了设备的请求,并包含了最终分配给设备的IP地址及其他配置信息。
- 此时,设备已经成功获取了有效的IP地址,并可以在网络上进行通信。
- Lease Renewal(租约续订):
- 被分配的IP地址是有期限的,为了保持网络上的IP地址池的有效管理,设备在租期结束前会尝试向DHCP服务器发送租约续订请求。
- DHCP服务器可以选择延长租约,也可以回应拒绝续订的消息,要求设备重新获取新的IP地址。
- Lease Release(租约释放):
- 当设备不再需要使用网络时(例如断开连接或关机),它可以向DHCP服务器发送一个租约释放请求,将之前分配的IP地址释放回IP地址池,以便其他设备使用。
整个DHCP过程允许网络中的设备自动获取IP地址和其他网络配置,简化了网络管理,特别是在大型网络中。
4.3.4 网络地址转换
网络地址转换(Network Address Translation,NAT)是一种在计算机网络中使用的技术,它主要用于将私有网络中的多个主机映射到一个或多个公共IP地址的过程。NAT的主要目的是解决IPv4地址短缺的问题,同时提供一种安全机制,隐藏内部网络结构。
NAT有几种不同的实现方式,其中最常见的是:
- 静态NAT(Static NAT): 将内部网络中的每个私有IP地址映射到一个唯一的公共IP地址。这种映射是固定的,不会随时间或连接状态的变化而改变。
- 动态NAT(Dynamic NAT): 内部网络中的主机在需要访问外部网络时,动态地从一个预定义的IP地址池中获取一个公共IP地址。这个映射是临时的,当连接关闭后,公共IP地址会返回到池中以供其他主机使用。
- PAT(端口地址转换,Port Address Translation): 也被称为NAPT(Network Address and Port Translation),是一种特殊的动态NAT。除了将私有IP地址映射到公共IP地址外,还会使用不同的端口号来区分不同的内部主机。这允许多个内部主机共享同一个公共IP地址。
使用NAT就会存在一个问题,处于两个不同局域网中的私有IP该如何进行通信呢?答案就是NAT穿越
NAT穿越(NAT Traversal)是一种技术,用于克服网络地址转换(NAT)对点对点通信的影响。由于NAT的存在,直接的端到端通信可能会受到限制,因为NAT会修改数据包的源地址和/或目标地址,使得直接通信变得困难。NAT穿越的目标是通过各种手段实现在NAT环境中建立直接通信的能力。
以下是一些常见的NAT穿越技术:
- 端口映射(Port Mapping): 通过在NAT设备上设置端口映射规则,将外部网络的请求映射到内部网络的主机。这通常需要应用程序或设备支持UPnP(Universal Plug and Play)或NAT-PMP(NAT Port Mapping Protocol)等协议,以便在需要时动态地配置端口映射规则。
- 中继服务器(Relay Server): 在NAT环境中引入一个中继服务器,使得两个位于不同NAT网络中的主机可以通过该服务器进行通信。这个服务器可以位于公共云中或任何可以被两个主机访问的位置。通信的两个端点都与中继服务器建立连接,中继服务器负责在它们之间传递数据。
- STUN(Session Traversal Utilities for NAT): STUN是一种协议,用于发现NAT后面的公共IP地址和端口。通过使用STUN,设备可以了解到它被NAT映射到的外部地址,从而使得设备可以在NAT环境中建立直接通信。TURN(Traversal Using Relays around NAT)是STUN的扩展,它在无法直接通信时充当中继服务器。
- ICE(Interactive Connectivity Establishment): ICE结合了STUN和TURN,以在多种网络环境中实现对等连接。ICE会尝试多个候选路径,包括直接连接、STUN发现和TURN中继,以找到最佳的通信路径。
最后再说明一下私有IP,
私有IP地址是指在私有网络中使用而不在公共互联网上直接路由的IP地址。根据RFC 1918,有三个私有IP地址段,它们分别是:
- 10.0.0.0 到 10.255.255.255(10.0.0.0/8): 这是最大的私有IP地址段,提供了16,777,216个IP地址。
- 172.16.0.0 到 172.31.255.255(172.16.0.0/12): 这个地址段包含16个连续的/20子网,每个子网拥有1,048,576个IP地址。
- 192.168.0.0 到 192.168.255.255(192.168.0.0/16): 这是最常见的私有IP地址段,提供了65,536个IP地址。
这些私有IP地址通常用于内部网络中,例如在家庭、企业或组织的内部局域网(LAN)中。它们在互联网上是唯一的,但在不同私有网络中可以重复使用,因为它们不会直接被路由到互联网上。
4.3.5 IPv6
IPv6(Internet Protocol version 6)是互联网协议的第六版,是IPv4的后继者。IPv4是当前互联网上最广泛使用的IP协议,但由于IPv4地址空间的枯竭问题,IPv6逐渐成为了未来互联网发展的方向。以下是关于IPv6的一些重要信息:
- 地址空间: IPv6的地址长度为128位,相比IPv4的32位地址长度更长。这意味着IPv6提供了更广阔的地址空间,使得可以为互联网上的设备分配更多的唯一IP地址。IPv6地址的表示采用冒号分隔的八组16进制数,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
- 无类别域间路由(CIDR): 与IPv4一样,IPv6也支持CIDR,可以更灵活地进行地址分配和路由。CIDR允许对地址块进行聚合,减小路由表的规模,提高路由表的效率。
- 自动配置和无状态地址配置: IPv6引入了一种称为SLAAC(Stateless Address Autoconfiguration)的机制,允许设备在网络上自动获取IPv6地址,减少了对DHCP的依赖。IPv6还引入了无状态地址配置,使得设备可以根据网络前缀自行配置地址。
- 改进的多播和任播: IPv6对多播和任播进行了改进,提高了这些功能的性能和灵活性。IPv6多播地址范围更大,支持更多的组播组。
- IPSec(IP Security): 在IPv6中,IPSec是可选的,而在IPv4中是可选的。IPSec提供了更强大的网络层安全性,包括加密和认证功能。
- 移动IPv6: IPv6对移动设备的支持更为强大。Mobile IPv6是IPv6的移动性支持标准,它允许设备在不同IPv6网络之间切换而无需更改IP地址。
- 内置支持Anycast: IPv6内置了对Anycast的支持,这允许多个节点共享相同的IPv6地址,并且最近的那个会收到流量。
- Internet of Things(IoT): IPv6的大地址空间对于支持大规模的物联网设备非常有用,因为它可以为每个设备提供唯一的全球标识符。
尽管IPv6的部署一直在逐渐增加,但由于IPv4仍然是广泛使用的,目前互联网上同时存在IPv4和IPv6。双栈技术允许设备同时支持IPv4和IPv6,逐渐过渡到IPv6的使用。
IPv6可以向后兼容IPv4,但是IPv4确不兼容IPv4,但已部署的具有IPv4能力的系统如何才能处理IPv6数据报呢?
在实践中已经得到广泛采用的IPv4到IPv6迁移的方法包括建隧道(tunneling) [RFC 4213]
我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道(tunnel),其实简单来说就是将IPv6数据报封装到IPv4的数据载荷部分,然后让路由器通过IPv4进行转发,当通过隧道之后,IPv6的路由器再将IPv4数据报中的数据载荷还原为IPv6数据报。
4.4 通用转发和SDN
通用转发是指设备在收到数据包时,根据预定义的规则(通常是路由表、交换表等),将数据包从输入端口转发到正确的输出端口。通用转发是网络设备的基本功能,涉及到硬件和数据平面的操作,目的是将数据包有效地从源传输到目的地。
在通用转发中,一张匹配加动作表将我们在前面看到的基于目的地的转发表一般化了。因为能够使用网络层和/或链路层源和目的地址做出转发决定,所以显示在下图中的转发设备更为准确地描述为"分组交换机"而不是第三层"路由器"或第二层 "交换机"。
这里介绍下OpenFlow,它是一个得到高度认可和成功的标准,它已经成为匹配加动作转发抽象、控制器以及更为一般的SDN革命等概念的先驱。
匹配加动作转发表在OpenFlow中称为流表( flow table),它的每个表项包括:
- 首部字段值的集合,入分组将与之匹配。与基于目的地转发的情况一样,基于硬件匹配在TCAM内存中执行得最为迅速(TCAM内存中可能有上百万条地址表项) [Bosshart 2013] o匹配不上流表项的分组将被丢弃或发送到远程控制器做更多处 理。在实践中,为了性能或成本原因,一个流表可以由多个流表实现[Bosshart 2013],但我们这里只关注单一流表的抽象。
- 计数器集合(当分组与流表项匹配时更新计数器)。这些计数器可以包括已经与该 表项匹配的分组数量,以及自从该表项上次更新以来的时间。
- 当分组匹配流表项时所采取的动作集合。这些动作可能将分组转发到给定的输出端 口,丢弃该分组、复制该分组和将它们发送到多个输岀端口,和/或重写所选的首 部字段。
4.4.1 匹配
匹配是指网络设备对接收到的数据包进行规则匹配,以确定应该对这个数据包采取何种处理操作。匹配过程涉及到数据包头部的各个字段,比如源地址、目的地址、协议类型、端口号等。匹配的规则通常存储在设备的流表(Flow Table)中,这些规则定义了不同类型的数据包应该如何被处理。
下图显示了 11个分组首部字段和入端口 ID,该ID能被OpenFlow 1.0中的匹配加 动作规则所匹配。
4.4.2 动作
如前面所见,每个流表项都有零个或多个动作列表,这些动作决定了应用于与 流表项匹配的分组的处理。如果有多个动作,它们以在表中规定的次序执行。 其中最为重要的动作可能是:
- 转发。一个入分组可以转发到一个特定的物理输岀端口,广播到所有端口(分组到 达的端口除外),或通过所选的端口集合进行多播。该分组可能被封装并发送到用于该设备的远程控制器。该控制器则可能(或可能不)对该分组采取某些动作, 包括安装新的流表项,以及可能将该分组返回给该设备以在更新的流表规则集合下进行转发。
- 丢弃。没有动作的流表项表明某个匹配的分组应当被丢弃。
- 修改字段。在分组被转发到所选的输出端口之前,分组首部10个字段(上图4.29中 显示的除IP协议字段外的所有第二、三、四层的字段)中的值可以重写。
4.4.3 匹配加动作操作中的OpenFlow例子
在已经考虑了通用转发的匹配和动作组件后,我们在下图显示的样本网络场景中将这些想法拼装在一起。该网络具有6台主机(h1、h2、h3、h4、h5和h6)以及3台分组交换机(s1、s2和s3),每台交换机具有4个本地接口(编号1到4)。我们将考虑一些希望实现的网络范围的行为,在s1、s2和s3中的流表项需要实现这种行为。
- 简单转发:h6分组可以通过s3到s2,再到h4
- 负载均衡:现在h3和h4都要发送分组到h2,那么在s2中就可以将h4的分组转发到s3,而h3的分组转发到s1从而实现负载均衡
- 防火墙:通过配置表项可以实现分组拦截功能
4.5 小节
在本章中,初步了解了网络层的数据平面(data plane)功能,即决定到达路由器的输入链路之一的分组如何转发到该路由器的输岀链路之一。