我们有幸请到虎牙直播的首席架构师——林正显老师,为我们介绍5G低延时的误区和机会。本文从介绍5G低延时原理开始,一步步解开大众对5G低延时的5个误区,最后分享了虎牙直播在建设低延时确定性网络技术的想法以及5G在其他场景的应用。
大家好,我叫林正显,来自虎牙直播,今天一起聊聊5G低延迟相关的一些问题。想起谈这个话题是因为虎牙在做一些5G的落地实践时候,发现工程上的数据和宣传上、媒体上的数据有很大差别。我们做了很多的探索和分析。今天把我们所思,所想,所见分享给大家。
我们想先讲一下何为5G低延时?它是如何实现的,我会剖析一下5G低延时的误区;另外包括MEC(多接入边缘计算),它和5G是密切相关的;还有虎牙在5G低延时或MEC上的一些实践;最后聊一聊虎牙在5G低延时方面的思考,以及未来的挑战与机会。
关于5G的一些报(wu)道(dao)
在过去的一两年,5G一直都是比较热门的一个话题,很多媒体都做了大量的报道。左边这个图告诉我们,在人多的时候带宽不怎么样,4G马马虎虎,但是5G非常迅速;5G另一个应用是——远程驾驶,号称可以利用5G超低延时,足不出户驾驶千里之外的汽车;还有一些说5G可以大大提高下载的速度。以上这些报道,真真假假,大家听完今天我的讲解后会有自己的理解和认知。
5G延时的定义
什么是5G的低延时?在3GPP里对5G低延迟有非常明确的定义:对于URLLC(高可靠、低延时通讯场景)上下行的标准值为0.5毫秒(RTT 1毫秒)。对于eMBB(增强型移动宽带场景)上下行的延迟各4毫秒。我们平时上网、直播、刷视频等几乎都是eMBB服务。
5G为何能做到低延时
5G是如何做到低延时的?在无线方面,也就是手机端到基站采用了哪些措施?在核心网内侧5G和3G、4G有什么区别?
我们简单讲一下这个图。不管是5G、4G还是3G,如果之前没发送过数据,我们的手机要上行数据到公网或者基站,这和我们在课堂上举手回答问题类似。首先要向基站申请一个上行的无线资源,基站根据当前负载情况合理分配,并提供一个可以发送的时间及无线资源返回给用户,随后用户再完成数据发送。这个举手的时间是一个周期性窗口,不是随时待命的,我们称这叫做——调度请求。
调度请求引入了延时,它在整个无线方面的延时中占比是不低的。在5G需要低延时,我们通过配置把调度的过程去除,可以认为,只要有数据抵达,在配置的时间窗口就可以直接发送,不再需要额外的申请。
另外就是Slot,5G支持的是mini-slot。Slot中文翻译为时隙,在4G和5G中,一个时隙可以分为7个或14个symbol,一个symbol对应一个正弦波的波长周期。对于4G来说,子载波的频宽是15khz,所以一个symbol就是1/15毫秒,整个slot就是大约1毫秒,这是4G调度基本单位。
在5G中也是如此,Slot始终是一个基本的调度单位。但是到了5G呢,它的子载波的频宽可以更宽,达到30khz、60khz、120khz甚至240khz,那么它一个symbol的时长也会成比例下降,因此整个调度的周期就可以变得更短。所以在极端情况下,5G完整的调度周期可以低至几十微秒。更进一步,5G可以支持mini-slot,可以只用2个symbol来做调度基本单位,这时调度周期可以控制在微秒级别。另一种情况,在使用eMBB服务时,因为调度单位是1毫秒,我正在发送eMBB的数据时,URLLC(更高优先级)的数据来了,这时可以暂停eMBB的发送,在原来无线资源的信道上,先发送URLLC的数据,这个叫做抢占式调度。这样可以保证更高优先度的数据可以更快的发送出去。
最后一张图描述的是传输的可靠性。低延时和传输可靠性有密切的关系,由于传输不可靠导致丢包重传,客观上会导致延时的升高。5G的做法是冗余,一份数据包作多份拷贝,通过不同的子载波,不同的信道把相同的数据发出去,这里不同的载波可能是同属一个基站的两个载波,甚至可能是两个基站的不同载波,通过冗余来保证发送可靠性从而做到稳定性。此外,在极端情况下保证可靠性时,可能需要牺牲一部分无线的效率,采用抗干扰性更强的调制方式来做传输。比如原本可以用16QAM的调制方式,但是为了稳定性,我选择了QPSK。在空口上大致就这些措施。
在核心网上,从3G开始,移动网络要上公网的话会经过网关(移动网络和公网之间的数据网关)。在WCDMA里我们叫GGSN,在4G里我们叫P-GW,而5G里叫UPF,名字虽不同,但都是网关。在3G、或4G时,网关在每个省只会在1、2个地方部署,比如在广东省大概率就部署在广州或深圳或东莞,其他地方即使访问同城的服务器,也会经过基站,经过核心网以及刚才提到的网关,绕一圈之后再回到原来的服务器,过程非常曲折。
但是5G就可以把网关下沉到离我们访问基站较近的地方,甚至就在同一个机房,我们称为UPF的下沉。参看右图的绿线,我们通过基站,基站连接本地UPF,直接到城域网,然后就可以访问到本地的服务器了。不需要像黄线一样千里迢迢跑到广州,经过骨干网,再到城域网最后才能访问。
如何进行分流,运营商是有策略的,通过上行分流器来做到这一点,这里我们不细讲。
听起来5G在低延时方面还是做了很多事情的,感觉上也很靠谱,5G低延时特效也被大众津津乐道。但是非常遗憾的是大家在讨论这个话题的时候,很多人的理解还是有一些偏差的。
理论极延时与实际延时混为一谈
理解误区 #01
第一,我们很容易把5G理论延时和实际延时混为一谈,尤其是媒体的朋友们,有意无意地在做一些引导。
我们来详细看看之前提到的“调度”的过程。当我们有一项数据在手机上即将产生的时候,我们并不能马上发送出去,我们需要等一个周期性配置的“调度请求”(SR)的窗口(比如1毫秒、80毫秒),发送SR请求之后(可以理解为在红绿灯路口按下想要通行那个按钮的过程)基站收到请求后会判断用户的优先级、空口的占用状况如何等来决定何时给手机发送“授予”grant(在何时在哪个信道上传数据)授予的信道有可能很小,也许只够用户发送一个BSR(缓冲状态报告),手机会告诉基站现在有20k的数据需要发送,基站收到后知道你有很多数据会授予更多的信道供用户发送,这是在空口发生的一个事情,也是大部分情况会经历的过程,无论是4G还是5G。5G的免调度只是把申请SR的过程去掉了,但是对eMBB服务来说不太可能实现,因为需要付出很大的代价。上行的调度请求周期越长,延时就会越大,因为这个过程引入的延时平均是SR周期的一半,运气好会快一些,运气不好SR刚过,需要等待下个周期。
如果我们周期配置的足够小,我们的延时依然能够保证。理论上来说,即使是4G,延时也可以到几毫秒。
很遗憾,虽然4G延时数据理论上也能到几毫秒,但是我们4G实测数据并不理想,虎牙在高峰时期4G用户到同城服务器RTT超过了40毫秒,同一时刻Wi-Fi用户到同城服务器RTT大概率在20毫秒以内。
去年有一份白皮书,列举了很多5G to B的场景,5G在结合了UPF下沉了以后,端到端的基本延时在16~20毫秒之间,这和我们虎牙现网5G的数据也差不多。
为什么现实和理想差距那么大?我们在谈论延时的时候,其实包含了处理延时、排队延时、发送延时和传播延时。处理延时是指对包进行有效性校验等操作引入的延时,这时间基本可以忽略不计。传播延时取决于光速,从A发送到B,通过光纤传送过去,这一速度我们无法干预,距离足够短时,这一时间也可以忽略不计。剩下的问题就在于排队延时和发送延时,这两个延时我们在后面会详细展开,在做一般的理论分析时,往往会把它们忽略掉,这是造成我们现实与理想差距的主要原因。还有一个问题是丢包重传,很多时候不是网络RTT不好,而是偶尔的丢包导致的重传,使得实际的延时变高。
不同技术与不同应用场景的
延时混为一谈
理解误区 #02
第二个误区也能在媒体中经常见到。5G有很多不同的场景和技术,但是报道时,总是挑最领先的技术来说。
比如,5G有三大应用场景,eMBB(增强型无线宽带)对应大带宽,URLLC对应高可靠低延时的业务,还有一个mMTC海量机器类型通讯,对应物联网的广连接。通常来说,只有等场景需要用到URLLC这种极端的低延时保障,这种端到端的延时可能只有2、3毫秒。
但是有一点不能忽略,为了能够获得超低延时需要付出相当大的代价,坦白来说很多场景极端低延时不是必须的,比如浏览一个网页,是否需要一个端到端3毫秒的低延时?因为成本差别很大,我们不可能在所有场景覆盖低延时。另外除了成本较高的冗余、调制方式等方面的无线措施,还有端到端的低延时也需要非常严苛的端到端QoS保障。
4G的QoS是怎么样的?4G在传输数据时有2种承载,一种叫默认承载,一种叫专有承载。默认承载有数据就有可能建立。专有承载针对不同的QoS所要求的流来建立额外的通道。这个承载本身的建立是有一定限定的消耗的。另外它的粒度比较大,因为一个手机通常只能建立几个到十几个专有承载。所以在日常生活中很少听到有对4G QoS的利用,因为它往往只会出现在运营商内部业务,比如给VoL这类业务来做一些高优先级的保证,但现在运营商正在慢慢放开。
5G的QoS相对来说更灵活,我们可以根据不同流设置不同PCC的规则,对应不同包的计费和质量保证的规则。它不是基于承载而是基于流,流的标识通常是三元组或是其他特征。
上图和其他5G QoS图不太一样,因为它有涉及多接入技术的QoS。多接入(Mul-Access),比如在3GPP AN里面,5G除了通过空口来连接到目标地址以外,还可以通过非5G,如Wi-Fi等介质同时形成多接入通道,以此保证数据接入可靠性。但是3GPP毕竟代表的是运营商或是设备商的利益,所以这一特性未必能得到广泛的运用,比如我们在做传输时通常会考虑同时使用Wi-Fi、4G、5G或是MP-TCP这种特性来做多路的传输,这些我们通常在应用层实现。3GPP试图在底层将这套方式封装起来,但就我和其他应用厂商的讨论,似乎没有人愿意为这一方式买单,应用厂商更愿意自己把控这方面内容。另一个与QoS有对应关系的是切片。
这部分内容我不会详细展开,因为内容过多。切片的目的是为了保证不同业务不同的优先级,但这项技术对手机来说是个“坑”,因为目前市面上5G手机对UP的支持非常不足,几乎没有。虽然3GPP定义出来了,但是短期内,这项技术只能在to B场景应用,比如根据不同的DNN做一些不同切片的接入。对于目前的手机来说,很难从一个切片切换到另一个切片:理论上我们可以给不同的APP或是不同的流特性,映射到不同的切片享受不同的QoS保证,但是目前终端并不支持这项技术。
空口延时与网络全链路混为一谈
理解误区 #03
还有一个更为常见的误区,我们讨论的5G低延迟,其实说的是它空口的延迟,但很多人会把网络的端到端延时与之混为一谈,更有甚者会把业务的端到端混在一起。
我们一直在说的5G低延时,其实说的就是手机到基站的这段低延时。而端到端的过程会经过空口到承载到核心网,从核心网再到公网,经过若干个有可能换到另外一个运营商的核心网,再到接入网最后抵达空口。坦白来说,即使5G的空口可以做到零或一毫秒延时,最多也就是打平了和固网的差距。如果用有线接入的话,事实上空口这个环节怎么样都是比不过的。我们真正需要的是端到端的低延时,剩下的部分怎么办?
我们可以参考一下TSN(时间敏感型网络),它在工业互联网中是会被用到的网络,通过这个网络我们希望能够得到5G来实现端到端、高稳定的超低延时方案。
最核心的点——冗余。从图中可以看到,控制器希望控制远端设备的时候,中间加入了5G网络。在END STATION,我们就分成了2路,接入2个终端,分别通过不同的传输通道进行传输。在5G中有不少类似于多链路、多路径的处理,这是值得我们借鉴的方式,鉴于时间原因,我无法展开更多。我想强调的是,端到端的低延时比整个空口的低延时更重要,我们可以从工业互联网中寻找灵感。
空载延时与带载延时混为一谈
理解误区 #04
另一个误区是,大家会把空载(网络较为空闲时段)的延时和带载甚至重载时的延时混为一谈。
比如在节假日时,我们的高速路口车流拥挤,这个时候我们不会指望能够快速通行。在网络中这对应的是排队延时,排队等待资源,等待上一个用户排空缓冲,这是我们延时的一大来源。对于无线用户来说,每个人都想上传数据,作为一个基站需要调度数据,那就势必会造成排队的现象。除非我的“车道”特别宽(多),每个人都有足够的车道,但这是难以实现的。
举一个例子,如果大家对无线网络感兴趣,在很多地方是可以进行测试的。最经典的是在地铁站,尤其是高峰期的地铁站,比如北京的西二旗地铁站。这个车站如果在高峰期,同城RTT有可能在200,300毫秒。即使是空载的状态,清早或大半夜测量,会发现延时也有80毫秒。这和基站的设置是有关系的,回到前面提到的“调度周期”,通常运营商会根据基站的忙闲来对该值做些调整如果我需要保证很多人能同时接入基站,我必须在有限的控制信道内让更多用户接入。如此一来,调度周期一定会被拉长,这样每个用户才能有接入的机会。我猜想,运营商对于那个点的调度周期设置就是不低于80毫秒,这时平均的RTT就有额外的40毫秒的引入,这也是出现在地铁站的一个非常有意思的现象。