面向体验的传输
Posted dog250
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向体验的传输相关的知识,希望对你有一定的参考价值。
面向体验传输而不要面向协议传输,早晚成为一种新时尚。
意思是“传输质量和体验正相关”。传输质量和TCP,UDP等协议的语义解耦,直接和业务指标耦合。
TCP,UDP等传输协议作为公分母,抽出了传输特征的共性,但同时业务也要承认传输协议的假设,比如“需要可靠或不需要可靠”,“需要或不需要保序”,诸如此类。当出现“需要可靠但不需要保序”或“需要保序但允许丢包”等传输场景时,TCP和UDP就很难完美适配,除非再做一个新协议。
为什么不将传输协议的语义交给编码呢?这样实现新的传输协议只需要实现一套编解码方法即可。
本文的核心是柔性有损传输。
举个简单的例子,对于直播流媒体传输,只需实现一种编码就可让所有数据都是可丢弃的,丢的越多,画面越模糊,丢的越少,画面越清晰。
如图片传输,将每个像素携带自己的坐标打乱顺序放入一个容器,从容器内捞足量像素组成一个数据包发出,直到容器为空,接收端从收到的数据包中解码每个像素,按照其坐标摆在相应位置。随便丢包,没有重传,就算只收到一个包,也能拼出个轮廓,这就是自适应柔性有损传输,收益就是无额外延时,无卡顿。
柔性的核心是一切皆可丢弃。
柔性是一种生活哲学,随遇而安,不为任何人和事驻留。收入高就高消费,收入低就低消费。
我中午发了一则朋友圈:
年龄大些的人总抱怨当代青年在IM聊天时随意用空格代替任意标点符号,且大量使用错字,别字,给人的感觉很不严谨。
实际上反过来想,当代青年的做法才是对的,使用诸如微信,飞书,QQ,钉钉等IM聊天,你所打的字本来就要作为口语而非书面语存在,IM的目标就是模拟面对面口语交流而不是严谨,如果太书面语太严谨反而给人压迫感,这些软件应该把标点符号全禁用了才对。空格,错别字,表情包才能最有效模拟面对面交流。
对于错字,别字也没什么好纠结的,根据输入法,怎么快怎么来,选择第一个显示的就好,至于空格,编程的人比较喜欢时不时拍空格,因为代码规范里就建议很多地方用空格,用在IM口语中,大量空格唯一的问题就是不好断句,但问题也不大,并且中文在古代本来就是用空格分隔每一个字的。
当代青年不严谨的口语化交流方式就是柔性有损传输,效率非常高,而严谨的书面语交流方式就是TCP,一个标点都不能错,每个词都要斟酌,精确但低效。
但人们很难接受“有损传输”,人们倾向于一条流中每个比特都被精确复制,无论多大代价都要在有损的网络上构建一个无损传输协议以弥补网络有损的固有缺陷。
人们变着花样改变TCP重传策略,就是要确保每一个比特原封不动到达对端,却几乎没人想过这么做到底有无必要,是否将TCP松弛一下,做一个有损的协议。
有人做出了让步,将业务数据分成可丢弃的和不可丢弃的,对不可丢弃的数据,需要通过FEC,重传等措施来保证传输。在我看来这是典型的事情做了一半,为什么不从编码入手非要跟可靠传输较劲呢。网络明确不可靠,但凡需要重传,必引入额外延时。
若“意义”和所有字节一起分担冗余,就没什么是不能丢弃的了。而“意义”不需要程序可理解,数据受众理解即可。
“门口有一X皮鞋,这双X鞋是X经理的,由于下X进水,已经湿了。张经X穿着这双皮X滑了一下差点摔X,后来发现XX胖了”。如果你收到这句话,你能恢复由于丢包导致的缺失吗?你可以,机器不行,但读文字的是你而不是机器。
端到端传输是从数据的生产端到数据消费端的传输,说它从一个程序传输到另一个程序,或一条TCP连接两端之间的传输都不严谨。对于流媒体,端到端传输就是人到人的传输,无论声音还是视频,有损传输都是可行的,缺的这是一种编码方案。
人们早就接受了静态图像的JPEG有损编码,没人愿为自己眼睛分辨不了的额外像素对空间买单,同理,人们也能接受流媒体有损编解码,没人愿为保真清晰度对重传造成的卡顿时间买单,这是一个自然的推论。那么人们接受不了什么呢?
如果你的边界是TCP,你自然无法接受有损传输,因为TCP不能有损。如果你的边界是程序,你可能能接受部分有损传输,因为总有一些数据是程序运行必不可少的,这些数据显然不能丢失。如果你的边界是真正的端到端,你就能接受完全有损传输,因为你总能通过一套编解码来分摊冗余而允许任意数据丢失,丢失的数据量直接和体验负相关,即传输质量和体验正相关。
为什么年轻人用错别字,空格,表情包,特殊符号进行交流的效率远大于中年经理们字字修辞斟酌?进一步联系到了口语和书面语。一直关注传输,在我看来,口语是针对传输(交流,反馈)的语言,书面语则针对存储。口语可以灵活运用各种口音,方言,符号,所有这些可以抽象为编码,这些编码只为高效,反之,书面语则重在精确,精确便不能灵活随意,精确的代价是必须遵守规则,核验是否真的遵守了规则需要花额外的时间和空间。所以可以按照口语的特征以编解码为核心重新设计流媒体传输协议,而不是使用像书面语一样的TCP协议。刚开会扯淡结束,写篇随笔。
浙江温州皮鞋湿,下雨进水不会胖。
以上是关于面向体验的传输的主要内容,如果未能解决你的问题,请参考以下文章
基于强化学习的低延迟视频传输,虎牙自研传输网络架构实践,面向流媒体的确定时延传输...