网络时隙
网络时隙
来源 https://www.sdnlab.com/25098.html
确定性网络要求网络具备有界的端到端时延保证,要计算时延就不得不提到时隙这个关键概念。初识确定性网络会发现,各种协议算法和机制中都有提到时隙,但讲的好像都不是一个东西。那网络中到底什么是时隙?时隙跟路径、带宽、传输速率、突发、缓冲区有什么关系?怎么通过时隙规划保证端到端时延有界?别着急,本文带你玩转时隙,按照时隙的概念、时隙的演进、时隙的相关关系,分为三小节,揭开众多机制背后的核心奥秘。
一、时隙的概念
传统互联网因为流量对时间不敏感,在QoS保障方面大多关注路径、带宽等空间维度的资源,包括队列调度、资源分配等机制也是在空间层面做优化。随着工业互联网、远程控制、实时交互等时间敏感应用的兴起,时间维度的优化成为新的网络升级突破点。相比于带宽、路由等单点指标,时延抖动是端到端指标,保障实现难度更大,需要时间维度的新的概念与约束,其中最重要的就是时隙,它有广义和狭义两方面的概念。
广义上:所有为流量提前预留的时间维度的资源都可以叫做时隙。比如10us,100us,甚至1s,在这一个时间段内,流量可以占用任何所需的路径、带宽、队列缓冲区等网络资源。后面会通过CSMA/CD(载波监听/冲突检测)机制和TDM(时分复用)机制详细展开。
狭义上:一般把交换机出端口的传输时延作为时隙设计的基本单元。比如,端口带宽1Gbps,假设一个MTU大小的包为1500 Bytes, 那么该包经过该出端口的传输时延就是 1500x8 bits /1 Gbps = 12 us,因此,如下图所示,12us就可以作为一个时隙。如果其他包小于1500字节,那么出端口的时隙资源就会有所浪费,或者可以把时隙设计得更小;如果一条流一次要传多个包,则可以为该流预留多个连续的时隙组成一个更大的时隙。
同时,上图还可以分为两种情况,分开到达和同时到达。如果各流分开到达,一条流传输完毕后,另一条流刚好到达开始传输,则每条流的排队时延都是0,它们在交换机内部的时延均为处理时延加传输时延,则基本为一个定值;如果三条流同时到达,则需要排队,第一条流排队0us,第二条流至少排队12us,第三条流至少排队24us,这就导致交换机内部的时延变得不确定。
因此,除了带宽、包大小、包数量等因素,包何时到达是控制时隙分配和端到端时延计算的一个重要因素。包何时到达取决于发包开始时间。我们当前还只是在单节点的情况下讨论,放到复杂拓扑、海量流量场景下,加以不同的约束和目标设计,则可以将时隙玩出上百种花样。
二、时隙的演进
在上百种花样中,笔者总结了四种比较有代表性的机制,从中可以看到时隙的演进过程,介绍如下。
载波监听/冲突检测:早期的以太网采用集线器,许多计算机都是连接到一根总线上,采用广播的通信方式(即当一台计算机发送数据时,总线上所有计算机都能检测到这个数据)和半双工的模式(即接收和发送不能同时进行)。因此,计算机发送数据前,会先发一个探测包,看总线上是否有其他数据在传输,如果有,则执行指数随机退避算法,过一段时间再探测,直到总线空闲,开始发送数据包。因此,载波监听/冲突检测可以被视为最早的实现了发包控制的机制。到后来,互联网流量激增,为了提升了带宽利用率,开始采用交换式全双工以太网,交换机端口增加缓冲区,计算机可以在任意时刻发包。
全局时分复用:后来人们又想,那能不能在交换式以太网实现总线一样的零排队时延的效果?即通过控制发包开始时间,让一条流传输到目的地后,再开始传输下一条流,将全网总的看成一个时隙系统,进行全局时分复用。基于这种方法,在工业以太网中产生了Profinet和EtherCAT等实时以太网协议,在数据中心网络中,MIT联合Facebook也实现了Fastpass,一种通过SDN全网集中式控制、全局时分复用的零排队数据中心网络。
出端口时分复用:一条流传输的过程中,其实只会经过特定的交换机出端口,而全局时分复用却要求全网的端口时隙都为其预留,全局约束条件简单,但网络资源利用率低下。因此,人们发现其实可以在出端口的传输时间加约束,让出端口一条流传输完成后再到达另一条流,即出端口时隙不冲突就可以了,再反推得到发包开始时间,也就是第一节中的分开到达的场景。该方法在简单线性拓扑下十分有效,但在复杂情况下,要保证所有流在任意出端口和任何时刻的传输都不冲突,计算复杂度会指数增加,同时会在链路高负载时存在许多流不可被调度的情况。
出端口有界队长:再后来,人们发现也不需要严格的每个出端口都不冲突。如果存在如上一节中的同时到达的场景,只要出端口排队队列的最大队列长度是有界的,就能求出一个有界的交换机内部时延,从而保证端到端时延有界。基于这种思想,出现了时间感知整形、循环排队转发等调度整形机制。此外,确定性网络演算、带时延约束的交换矩阵等也可用于求解队列长度与排队时延的关系,通过边缘流量整形和接入控制来保证有界队长约束不被破坏。和出端口时分复用相比,最大队长约束使得流在冲突(发包时间排不开或者不可控)时依然可以被成功调度,提高了网络利用率。
三、时隙的相关关系
时隙与带宽的关系:首先,带宽有两层含义,一是指出端口的传输速率,或者说传输能力,比如带宽为1Gbps,那么任意大小的包在出端口都能以1Gpbs的速率被转发,二是指传输容量,1Gbps是指端口1秒钟能传输1Gbit的流量。需注意,比如说将某流进行端口限速到500Mbps时,限制的其实是该流的传输容量,端口依然是按1Gbps的能力在传输,只是1秒内最多只能传500Mbit的该包,多了就丢弃不传了。
因此,如下图所示,1500字节在传输速率为1Gbps时,时隙为12us,如果传输速率提升至10Gbps,则时隙为1.2us。传输带宽增大,则时隙变小,也就是车速提升了,则行驶时间缩短。行驶时间(时隙)是车速(带宽)的微观体现。
时隙与突发的关系:端口在输出到网线上时是串行输出的,不论带宽是1Gbps还是10Gbps,包都是一个一个被传出去,不能并行多个被同时传输,因此常用发送速率和突发尺寸来定义一条流。换句话说,如下图所示,如果没有突发,所有流都整整齐齐的排在马路上,按照发送速率行驶,则不会有拥挤和排队,而一旦有并道(突发、聚播),则会产生排队,导致多条流挤占同一个时隙,需要缓冲区提供缓存。理想情况下设计时隙一般不考虑突发(车辆间紧贴着),而若流具有较大的突发度,则需要将时隙划分更大(车辆间间距更大),即为流预留更多的网络资源,并考虑缓冲区大小的设计。
笔者认为,时隙是理解确定性网络相关机制的钥匙,是将网络从非实时系统演进到实时系统的关键元素。本文梳理了四种有代表性的时隙设计机制,并概括了时隙与带宽、突发的关系。要进一步理解时隙,读者可查阅网络演算等相关资料。
============ End