Kleinrock和互联网的故事

时间:2021-09-24 17:11:51

最近又重读了一部分Kleinrock的Queueing Systems的下册,十分欣赏他那种写书讲故事的方式。尽管在70,80年代,排队论的成果层出不穷,用到的数学推导也是越来越难,但是他的“Queueing Systems”上下册仍旧是一本非常精彩的排队论入门教材。Kleinrock用比较简单但又十分严谨的数学,揭示了一个排队系统的各种有趣规律。说他用到的数学比较简单是因为只要学了高等数学和概率论,就能看懂他的推导。同时,他的每一步推导都是很严谨的,如果他在正文中没有给出严谨的证明,他会在后面习题中叫你证明。比如对于M/G/1系统,他说由于到达过程是珀松的,所以一个用户到达系统的时候看到的系统状态跟你在时间轴上随机抽取一个时间点看到的系统状态是一致的。这个“现象”其实很容易理解,因为珀松过程具有无记忆性,所以你把时间轴切成无穷小的区间 dt 之后,每一个dt是否有人到达的概率是一样并且独立的,所以换个角度去看,当用户到达的时候,他等于是出现在了一个“随机”的时间上。尽管很容易理解,但Kleinrock还是坚持在习题中叫你去证明它。可能是因为EE出身的缘故,他的Queueing Systems里面几乎没有出现Theorem,Lemma的字眼,尽管他的很多数学公式都算得上是Theorem级别了。


Kleinrock可以称得上是学术泰斗,他最标志的两项研究一个是Packet Switching(国内翻译成很令人费解的分组交换,或者包交换。我觉得Switching翻译成“切换”更合适,因为根本就不是在“交换”东西,而是在“切换开关"来发送不同的包裹), 另一个则是CSMA。前者直接导致了所谓“互联网前身--Arpanet”的诞生,后者更是导致了Ethernet和Wi-Fi的出现。他现在已经是接近80岁的高龄,但是仍然在发论文,最近的一篇是还是关于他已经搞了多年的CSMA,发在了INFOCOM上,也不知是他的学生要毕业,他不得不挂名还是他自己仍旧对这玩意很有激情。


Kleinrock在MIT读Ph.D.期间主要研究排队论在计算机系统的应用以及,更重要的,伟大的Packet Switching。当然,Kleinrock和英国学者Donald Davies在谁是Packet Switching的发明上产生了争端,但无可厚非的是, Kleinrock应用排队论的方法分析了Packet Switching的性能,,最终1969年的时候在Arpanet中实现了它。首先说说他在计算机系统方面的研究,他提出了一个叫作Processor-Sharing的模型。这个模型说白了就是,假设当前系统有N个任务在队列里面,那么CPU将“同时和平均”地服务这些任务。换句话说,你可以把CPU资源想象成一个实数C,面对当前N个任务的时候,每个任务获得的服务就是 C / N. 这个模型我不知道当时是不是很受欢迎,但是等到80年代网络领域的研究火起来之后,这个模型就派上用场了,因为它可以避免很多数学上的边边角角,从而让大家集中精力设计网络里面的资源分配算法。

再来说说他的伟大之作Packet Switching。我在Youtube上看到一个采访他的视频,他在里面详细讲了当年关于Packet Switching和Arpanet的种种故事。他在PhD的时候,面对实验室的一大堆机器和设备,就在想总有一天这些机器总要联网在一起互相传输数据的,而当时唯一存在的通信网络就是电话网络。但是电话网络是不适合用在计算机通信上的,为什么呢?因为电话网络用的是一种叫做Circuit Switching(同样,国内翻译成令人费解的“电路交换”)的技术。这技术说白了就是,如果在北京的A要打电话给在上海的B,那么A和B之间就会形成一条“电路上的回路”,这个回路是物理上的,真的有很多电线一段一段地把A和B连接在了一起,这意味着这条线路只能给A和B使用,别人都用不了。如果在计算机网络也采用这种方案就sb了,因为计算机的通信是数据通信,数据通信很重要的一个特点就是,它的数据发送是突发的。就是说,如果你把一条线路专门给它用,那么90%的时间这条线路都会是空闲在那里浪费资源。所以很自然地,Kleinrock就想到了要换一种方案,就是所谓的Packet Switching。每台电脑把要发送的数据分成一个一个的Packet,然后传输到中间的Switch上缓存起来,再由这个Switch来统一调度发送Packet。这种技术的主要好处是资源利用率大大提高,你不用这条路的时候自然地就应该给其他人用。还有另外一个好处是,packet可以走不同的路,到达同一个终点,提高了可靠性,这就是后来Arpanet强调的一个重要功能。


Kleinrock毕业之后,一直想把他这个Packet Switching从理论变为现实。他先是去了AT&T,试图说服那里的工程师去实现它,结果得到的回复是“小子,走开”!有个工程师很傲慢地对他说:“你要搭数据网络是吗?我们这里只有电话线,你随便拿去搭吧!”Kleinrock知道这群人没眼光,只好回UCLA教书去了。时间来到了1969年左右,当时前苏联发射了一个卫星,上面听说是实现了数据通信,搞得美国国防部很紧张,说不能落后给老毛子,我们也要搞数据通信网络。结果美国国防部开始谋划这件事情,当时的一个主要负责人,恰好就认识Kleinrock,也对他的研究工作很熟悉,很自然地就找到了他,而Packet Switching也最终实现在了Arpanet上。


在Arpanet之后,网络技术就一发不可收拾地迅速发展起来,涌现出很多现在都被称为“互联网之父”的人物。比如提出End-to-End原则的David Clark, 这个传说中只收女PhD的MIT教授培养了很多当今活跃的著名女教授。我知道其中两个,一个是人称宅男女神Dina Katabi,另一个是“*中推着牛车,却能实现美国MIT梦”的华裔女教授Zhang Lixia(不知道她的中文名具体是哪几个字)。 70年代也出现了伟大的TCP/IP,其中的一位作者是Vint Cerf,现在Google给了他一个“首席互联网传教士”的头衔。到了80年代,出现了伟大的TCP拥塞控制的算法,作者是著名的Van Jacobson,他所在的Xerox PARC实验室产生了很多改变世界的发明(最著名的莫过于乔布斯先生偷去的鼠标发明和GUI)。这个PARC实验室至今仍在发明,最近又弄了一个叫做CCN(或者NDN,ICN)的全新网络设计。还有一个人不得不提,估计她是无可争议的“互联网之母”,著名的Spanning Tree算法的发明人 -- Radia Perlman.。她现在已经是个胖墩墩的中年大妈了,想当年她从想到Spanning Tree,到数学上给出分析和证明,再到写成工程Spec,最后到交给DEC的工程师实现,一共才花了三个星期。这故事今天看来绝对是个传奇,Radia惊人的工作能力令人叹服,要知道她是一位拥有5个孩子的母亲,竟然可以同时陪熊孩子玩耍又能搞研究。Radia自己也很为Spanning Tree自豪,为此还做了一首歌,前两年她来学校给个讲座,再次深情朗读了这首诗:

I think that I shall never see
A graph more lovely than a tree.
A tree whose crucial property
Is loop-free connectivity.
A tree that must be sure to span
So packets can reach every LAN.
First, the root must be selected.
By ID, it is elected.
Least-cost paths from root are traced.
In the tree, these paths are placed.
A mesh is made by folks like me,
Then bridges find a spanning tree.
óRadia Perlman


回到Kleinrock,最后说说他和CSMA的故事。CSMA的重要性简单说来就是,没有它,就没有WI-FI,人类的最高层次需求就永远得不到满足。目前学界对CSMA的发明人究竟是谁同样有争议,一派支持Kleinrock,另一派支持另外一个教授。抱歉我不记得这个教授的名字了,虽说有点不太尊重人家,但姑且叫他ALOHA教授吧,因为他应该是发明ALOHA协议的团队主要成员。整个故事据说是这样的,70年代初期,夏威夷大学一个团队发明了ALOHA系统,主要用在无线网络的资源分享上。简单来说,ALOHA解决一个很重要的问题,假设你有n台机器,通过一个总线连接起来,现在这些机器都在同时发数据到这根电线上,肯定会产生冲突,你该怎么“有效地”解决这些冲突?这种资源分配的模型被称为Multi-Access Control, 缩写是MAC,这也是为什么现在的局域网网卡地址被称为MAC地址的原因。到了70年代后期,在一次研讨会上,ALOHA教授向大家展示了ALOHA的原理和分析,当时Kleinrock也在场,结果他看完之后就说:“很抱歉,你的数学是错的。”导致场面很尴尬,估计老美就是喜欢直来直去,丝毫不给面子。后来Kleinrock和他的学生在回去的飞机上,就建立了另外一个数学模型,分析了ALOHA的性能,这就是CSMA的前身。大家对CSMA发明者的争论在与:ALOHA教授发明了CSMA,但是Kleinrock证明了CSMA是有效的。一个发明了这玩意但数学可能不太完美,一个用数学给出了更好的证明,等于这样比喻,一个人发明了牛b的飞机,但是没法保证这飞机是安全的,另一个人证明了这飞机是安全的,并且还给出了实现安全的方案。究竟谁才是发明者,只能见仁见智了。


还有一个小故事。想必大家都听说过Ethernet(以太网),就是当今占统治地位的局域网技术。它的发明者当时也在ALOHA教授和Kleinrock的研讨会上,当两个大牛在争论的时候,他这个名不见经传的小伙子,偷偷地吸取了两派的精髓,几年之后“发明”了以太网,并逐渐成为当今人类“宁可不要吃饭睡觉,也要上网“ 的最重要的技术之一了。就是说,当黄药师和洪七公在争论武功的时候,郭靖这个小伙子偷偷悟出了其中的道理,从而名震天下。