Bojie Li (李博杰)
2016-09-22
(转载自 微软亚洲研究院)
作为计算机网络领域资历最老的顶级学术会议,ACM SIGCOMM自1977年起已经举办了37届。美国计算机学会(ACM)通信专业组(SIGCOMM)在其主页上无不自豪地将SIGCOMM称为其年度旗舰会议。40年来,从计算机网络教科书里的TCP拥塞控制协议到云数据中心里的软件定义网络(SDN)和网络功能虚拟化(NFV),SIGCOMM见证了众多计算机网络关键技术的诞生与发展。
SIGCOMM的论文以高质量著称,每年只录用40篇左右,录取率在15%左右。全世界的网络研究者都把在SIGCOMM上发表论文视为一种荣誉。每篇论文都经过严格的双盲评审,例如今年有三轮评审,第一轮从225篇选出99篇,第二轮选出66篇,第三轮选出60篇进入程序委员会(PC)讨论,在一天半的会议后决定最终被录用的39篇论文。每篇被录用的论文平均收到了8个评审意见,长达十几页。即使最终没有被录用,这些专家审稿人的意见对论文后续的改进也是很有帮助的。
2016-08-22
FAQ for ClickNP: Highly Flexible and High-Performance Network Processing with Reconfigurable Hardware.
2016-08-22
Highly flexible software network functions (NFs) are crucial components to enable multi-tenancy in the clouds. However, software packet processing on a commodity server has limited capacity and induces high latency. While software NFs could scale out using more servers, doing so adds significant cost. This paper focuses on accelerating NFs with programmable hardware, i.e., FPGA, which is now a mature technology and inexpensive for datacenters. However, FPGA is predominately programmed using low-level hardware description languages (HDLs), which are hard to code and difficult to debug. More importantly, HDLs are almost inaccessible for most software programmers.
This paper presents ClickNP, an FPGA-accelerated platform for highly flexible and high-performance NFs with commodity servers. ClickNP is highly flexible as it is completely programmable using high-level C-like languages, and exposes a modular programming abstraction that resembles Click Modular Router. ClickNP is also high performance. Our prototype NFs show that they can process traffic at up to 200 million packets per second with ultra-low latency (< 2µs). Compared to existing software counterparts, with FPGA, ClickNP improves throughput by 10x, while reducing latency by 10x. To the best of our knowledge, ClickNP is the first FPGA-accelerated platform for NFs, written completely in high-level language and achieving 40 Gbps line rate at any packet size.
2016-08-01
Joint project with Tianyi Cui for Microsoft Hackathon 2016.
2016-06-22
To achieve low TCP flow completion time (FCT) in data center networks (DCNs), it is critical and challenging to rapidly recover loss without adding extra congestion. Therefore, in this paper we propose a novel loss recovery approach FUSO that exploits multi-path diversity in DCN for transport loss recovery. In FUSO, when a multi-path transport sender suspects loss on one subflow, recovery packets are immediately sent over another sub-flow that is not or less lossy and has spare congestion window slots. FUSO is fast in that it does not need to wait for timeout on the lossy sub-flow, and it is cautious in that it does not violate congestion control algorithm. Testbed experiments and simulations show that FUSO decreases the latency-sensitive flows’ 99th percentile FCT by up to ~82.3% in a 1Gbps testbed, and up to ~87.9% in a 10Gpbs large-scale simulated network.
2015-09-27
昨天(9月25日)晚上吵架,搞到分手和删 QQ 好友,是我们吵架最严重的一次。都是因为我被指出一些毛病之后,自尊心受到打击,怒了,一下子丧失逻辑,说了很多伤人的话。我们分手了,好友删了加了几次,不过双方想通了之后和好了,我答应诚恳地道歉。静宁还去我寝室拿被套回她寝室洗、晒,我要感动哭了!在此公开发布道歉文一篇,也是给自己敲响个警钟。
教训
- 静宁心情难过的时候,要用心安慰,这时一定不能对她所做的事情横加指责。
- 当静宁指出我的缺点、对我提出意见的时候,不要急于给自己找台阶下,而是应当记在心里,慢慢思考,并不急于回应。只有最亲密的人才肯指出这些性格上的缺点,这些是很宝贵的建议。不能自尊心太重,要勇于承认自己的问题。
- 不论何种情况,要避免情绪不稳定,冲动行事,出语伤人,说话不考虑后果。吵架不仅浪费时间,更是破坏感情。
- 吵架的时候我们都不理性,完全忘了平时对方的好、一起相处的欢乐,以及分手的深远影响。尤其是我,经常说一些没有逻辑的话或者越扯越远。
- 做人、生活、家庭和技术同等重要,应当摒弃技术至上的偏见,不能只顾着搞技术不顾感情。
事件回顾
发端
- 昨天(9月25日)晚上张静宁并不开心,在 QQ 里跟我倾诉了很多。
- 而我早上刚刚赶完一篇 NSDI paper,回到家没聊几句,就呼呼大睡。
- 凌晨 00:37 醒来了,刚好这时候她也想找我。她说已经无聊的开始看网络小说了,跟我发了几段,我却说这些网络小说好无聊,建议她去看明朝那些事儿。
- 她觉得我们无法沟通,说我完全不会哄女生。
- 然后我就开始发飙了,说我应该专心去搞技术,让她去找愿意跟她一起玩的男生,“你说心情不好的时候,我不是想把你的心情弄好,而是想你一个人呆着去吧”。她说我不负责任。
- 她试图缓解局面,聊起小说里泡妞的经验,然后我说不但不会这样做,反而对这种做法很反感,静宁说我可以看了提高一下情商,太直男癌了。
高潮
- 我说“我所了解的男生基本对女生都是说假话的,不准说妹子不好,妹子说什么都得是对的,人性如此,你不愿意承认这一点罢了”。
- 静宁非常生气,说“你自己爱说假话还黑其他人,我的朋友都很诚实”,指出我只是在给自己找借口,拉别人下水,让你自己觉得面子上好过一些。
- 然后我就认为静宁不相信我的人品,开始赶她走了……
- 我又扯到另一件无关的事上:“我觉得每天跟其他同学在一起讨论问题都很有趣,而跟你经常是扯一些无聊的话题,偶尔还会搞得不开心,为什么要跟一个没什么共同话题的人整天在一起,做事的时候还要时不时响应你的中断”
- 这时候双方开始谈分手了,静宁说明天不来合肥就分手吧。我想都没想就同意了分手,以为分手是件很容易的事情,以后不联系了正好不用烦我了,全然忘了在一起一年的欢乐和双方之间的深爱。
- 静宁提出要我道歉。我却说我需要一些主动权,不然以后就是受气包了。
- 我给她导出了聊天记录,静宁删了我好友,并拉黑了通讯录(每次吵架都爱干这些)。这是我们加好友的第 383 天。
- 这时候是凌晨 2 点 25 分。我们分别在人人网上发了状态。
发展
- 我们都睡不着。40 分钟后,静宁发了加好友请求。
- 我这时候开始从情绪中清醒过来,意识到前面是冲动说的胡话,试图挽回。
- 静宁回顾了聊天记录里我说的伤人的话。她说 “你很自私,你吵架的时候觉得自己没有需求,觉得我浪费你时间,你不懂的珍惜和爱护女生,你不配拥有”
- 我承认了错误,静宁要求我写一篇文章发到网上,并且明天来合肥正式道歉。然后又把好友删了。
缓和
- 半个小时后(凌晨四点半),静宁发了一个知乎问题《男票情商低,吵架无逻辑各种伤人,要分手吗?》发完感觉,明明我吵架的时候思维混乱、逻辑不清,就不应该跟我提分手激化矛盾,所以应该包容我,哪怕是说伤人的话。
- 静宁觉得这只是突然吵架拌嘴,要我诚恳道歉并且保证以后不再犯。气氛顿时缓和了。
- 静宁让我把知乎问题标题中的 “情商低” 改成了 “容易冲动”。我们开始理性思考吵架中暴露出的问题。
- 我回顾了小时候跟妈妈吵架的事,认识到自己的问题是长期做优秀学生做惯了,自尊心太强,听不进别人的不肯定。静宁说,我和别人争论的时候,或者自己做错了什么的时,总是快速同意或者随便扯一个结论,都似乎是想给自己找一个台阶下。
- 静宁指出了另一个很好的点,说我还有一种技术至上的偏见,而对做人、生活、家庭并不关心。
- 我很后悔把静宁赶走,轻易同意分手。
尾声
- 早上7点买了周日去合肥的票(周六除了一等座和商务座的票,实在买不到啊,从南京或者天津转车也不行。一等座太贵了……)
- 其实早上可以买周六高铁到最近一个车站的票,就四个多小时,后半段站着,出站补票就行了。
- 中午发现 LUG 讨论组里都在议论我们发生了什么……把内部矛盾捅出去让大家担心,真是惊扰诸位了。
- 今天下午醒来,去公司整理了实验代码和数据,抱果神大腿去清华品尝了美食节,晚上回来开始阅读聊天记录、总结教训。
避免伤害爱你的人
上次严重到要分手的吵架,是大概三个月以前了。也是让讨论组都知道了。我们当时想吵架后分开几天长长教训,不过还是第二天和好了。静宁说,应该考验一下我该怎么做,不过每次都做不到坚持不理我。看起来是一个悖论,早些和好就教训不深刻,晚些和好就给双方更大的伤害。现在异地,要是长时间不联系,就感情越来越淡,最后就真的分手了。我觉得,吵架还是不能冷处理,拖得越久伤害越大,要及时道歉。
今天(9月26日)静宁去我寝室把被套拿回寝室洗了,我说不用麻烦你了,但她还是去做了。我感动得要哭了!昨天晚上我对她这么不好,说了这么多伤人的话,还是她半夜主动找我和好,今天还对我这么好,实在是太感动了。
找到真爱不容易,一定要珍惜。下次想要冲动吵架之前,看看我们在 tower 上的吵架总结和这篇文章,想想平日相处里对方的好,也许就不会这么轻易伤害爱你的人了。
几次吵架,导火索都是我容不得静宁说我不好。尽管我自己知道存在这些缺点,还是容不得静宁说,一说就想要找各种借口。这不仅是双方感情的问题,更是个人心理的问题。整天被膜拜着不是好事,自尊心太强,导致我总是回避自己的短板。能有一个人耐心指出我的不足,是再好不过了。
2015-09-01
题记:暑假我搞挂了 LUG 的开源软件镜像服务器,惩罚之一就是补交从 LUG 书库 所借书籍的读书笔记。距初读此书已两年有余,可以说是《浪潮之巅》为我打开了 IT 产业的大门,在此与诸位看官分享拙见。
《浪潮之巅》有两条主线:一是科技公司的起落沉浮;二是高科技行业的规律性。这本书有趣的地方在其前一条主线,把科技公司的历史写得像小说一样精彩。而这本书的价值则主要在其后一条主线,即透过现象看规律。本文将总结《浪潮之巅》中各个商业帝国的兴起、荣耀与衰落,以及公司和计算机工业的发展规律。
2015-08-02
2015 年 7 月 28 日,世界上应用最广泛的 DNS 服务器 bind9 爆出了一个严重的拒绝服务漏洞(CVE-2015-5477)。
一点背景知识:DNS 是把域名映射到 IP 地址的服务。当你访问 google.com 时,计算机就会问你所在小区的 DNS 服务器,google.com 的 IP 地址是什么?如果你的邻居刚好也在访问 google.com,DNS 服务器就会直接返回其 IP;不然,这个 DNS 服务器就会去问 Google 官方的 DNS 服务器,得到 google.com 的 IP 地址,并返回给你。这个小区的 DNS 服务器叫做递归 DNS;递归 DNS 挂了,会导致它服务的区域无法上网。Google 官方的 DNS 服务器叫做权威 DNS;权威 DNS 挂了,会导致它所服务的网站从地球上消失。
DNS 递归查询 (图片来源)
这个漏洞严重到什么程度呢?只要发一个 UDP 数据包,就能搞挂一台 DNS 服务器。不管是递归 DNS 还是权威 DNS,不管是 bind9 做了什么样的配置,只要这个数据包被 bind9 进程接收了,它就会立刻抛出异常,终止服务。
2015-06-19
5 月中旬,LUG 举行了白帽子大赛,对校内网站进行白帽子漏洞测试,并按照漏洞来评奖。这次活动举行得还算顺利,几天时间里找到了校园网络系统的上百个漏洞。然而不知是什么原因引来了骇客。
5 月 31 日凌晨,监控系统接连发出的报警打破了深夜的宁静,LUG 的数十台服务器毫无预兆地接连出现故障,震惊中外的 LUG 服务器被黑事件拉开了帷幕。从 6 月 1 日服务器管理员 gyf 向网络信息中心第二次通报的邮件里,能够依稀感受到当年的紧张气氛。
1 | 按照事件第一次发生时间排序: |
事后查明,服务器是用我的账号远程登录进去的。骇客 5 月中旬通过 U 盘传播的病毒入侵了我的笔记本,植入了键盘记录器,并通过未知方式远程控制我的浏览器访问一些与网络入侵有关的网页。由于我的个人账号没有访问记录,比特币钱包也没有被窃取,很有可能这是针对 LUG 而非我个人的一次高级持续性威胁(APT)。此后的半个月里,骇客没有打草惊蛇,估计是在通过各种渠道收集 LUG 服务器的信息。5 月 30 日夜,骇客通过键盘记录器窃取的服务器密码登录了大批服务器,并插入恶意内核模块。骇客还侵入 LDAP 数据库,篡改了一位已经离校的老会员的密码,登录进防守最严密的 mirrors 服务器。骇客还窃取了一位 VPN 用户的私钥,接入服务器内网,进一步入侵不允许从校外接入的服务器。
这个恶意内核模块所做的事情看起来很简单,就是在每次文件操作的时候随机修改硬盘上的一个字节。这个看起来像是恶作剧的内核模块,使得服务器在刚被入侵的时候运行一切正常,但当有关键数据被破坏后,发现系统异常,此时已经有大量用户数据和系统文件被破坏了。当管理员试图扫描和修复这些受损文件的时候,由于产生了大量文件操作,就导致更多的文件受损,总也修不好。甚至当我们 NFS 挂载备份服务器来拷贝备份数据的时候,拷出来的备份也是有错的,这让我们百思不得其解(幸亏备份服务器是 NFS 只读挂载,不然备份本身也可能被破坏)。
日访问量过千万的开源软件镜像(mirrors)服务中断,校内数千名用户依赖的 VPN 中断,freeshell 虚拟机内文件损坏,blog 无法访问,连 LUG 主页都打不开了,询问的邮件像雪片一样飞来,然而邮件服务器也挂了。这次被黑事件甚至惊动了多个 Linux 发行版和开源软件的上游,他们纷纷表示开源软件镜像被入侵是闻所未闻的事。Freeshell 服务由于没有备份而终止,VPN 服务则由于充当了帮凶而不再公开运行。此次事件暴露了 LUG 服务器基础架构的诸多问题,比如公共 VPN 服务和服务器使用同一内网,密码登录没有两步验证,服务器没有对插入内核模块的危险操作作报警和防御,离校管理员的账号没有禁用。当然,我的笔记本被骇客入侵是根本原因。事后,LUG 和 james 老师对我宽大处理,没有追究我的责任。我至今感到非常内疚。
2015-05-24
背景:Windows 上的 Virtualbox 虚拟机。Ubuntu 14.04.1 LTS,3.13 内核。ext4 文件系统。
作死:前几天一直在该虚拟机上开发网站,做了 N 多 commit,以为 git push 了,但事实上 push 失败了。
悬疑:今天妹子 git pull 了一下,发现没有任何更新,然后说我这几天都没干活。
悲剧:登录到虚拟机里一看,项目目录里有几个刚写的文件变成了 0 字节的空文件。(ext4 这么稳定,一定是母机里万恶的 NTFS 和 Virtualbox 惹的祸)
.git 目录里好多文件也变成了 0 字节的空文件。git 提示仓库已损坏。
1 | $ git status |
1 | $ git fsck |
几天来写的代码是不是这样就灰飞烟灭了呢?我们知道,当你删除一个东西的时候,你只是删除了这个东西在当前三维空间中的引用,而这个东西的本体仍然存在于四维时空之中。穿越大法,走起!