Bojie Li (李博杰)
2014-10-20
逃离微软
2014 年 9 月 17 日上午,微软亚洲研究院 12 楼会议室。老板刚结束了一个月的国际会议回到北京,我在组会上忐忑地汇报一个月来并不令人满意的进展。这之前的几天我的心一直在狂跳,生怕老板看穿我不认真干活的本质。出人意料的是,老板在汇报结束后并没有骂我,而是说我的模型比起一个月前有了很大进步。不过,我们都清楚地认识到我们的工作不可能赶上 9 月 26 日截止的 NSDI 会议了。
2014-09-29
DHCP 的麻烦事
事情要从科大更新网络接入管理设备说起。
公共上网区域之所以要统一分配 IP 地址,是因为早先各楼各自为政、零散分配的 IP 地址段不够用了。几年前上网的主力是台式机和笔记本,也不可能时时刻刻开机;但现在人人都有智能终端,有可能还不止一台,到哪里就会连上哪里的 Wi-Fi。很多地方早先绰绰有余的 /24 地址段(256 个 IP)在高峰时段出现了分配不到 IP 的情况。而科大的 IP 地址池大小是有限的,集中分配就解决了地址不够的问题。
这本来是件皆大欢喜的事情,但新设备带来了新的问题。采用网络启动的图书馆查询机隔一段时间就卡死了,原因是母系统启动阶段与子系统启动阶段所分配到的 IP 地址不同,而这种不同又是由于 BRAS 网络接入管理设备的 bug。
2014-07-06
使用 ext 文件系统存储数据的同学也许发现,200 G 的分区只能用 190 G,2000 GB 的分区只能用 1900 GB。这 5% 磁盘空间到哪里去了?有的同学认为这是 1000 进制与 1024 进制的区别,但事实并非如此。
1 | $ df /mnt/sdb/ |
上面这块标称 2 T 的磁盘可用空间为 0,看起来是满了。试着创建一个目录,发现没有空间了。
1 | $ mkdir hello |
但 sudo mkdir hello 竟然能成功!这是怎么回事呢?答案在 ext 文件系统的 “预留空间” 里。
2014-06-22
看着离校手续单上 “结清网络费” 一栏的 “免办”,我思绪万千。我也许是少有的几个从未开通过 “网络通” 的学生之一。因为在少院机房不需要网络通,后来有了 LUG 服务器也不再需要网络通,现在我坐在寝室里,用无线信号放大器蹭东活的 ustcnet。其实我并不真的在乎每月 20 元的网络费,不开网络通,更多是一种符号、一种象征,它串联起支离破碎的记忆,祭奠着悄然逝去的青春。纯属个人 YY,勿喷。
10 年前:编程从谭浩强开始
刚上初中的时候,听说有计算机竞赛这个玩意。不知道是哪里来的消息,我家长以为计算机竞赛就是玩游戏,当时我也不知道百度一下,就信以为真了。开课一个月之后,孟同学跟我说,计算机竞赛里有很多像奥数题,你应该喜欢。我家长于是向班主任核实,才知道计算机竞赛是编程序,其实我当时对编程序的理解就是修电脑的叔叔在黑框框里输入命令。当我上大学之后教同学做网站的时候,她也把 Windows 命令提示符说成是黑框框,我不禁哑然失笑,其实我们都是从那里走来的。
第一次去上计算机竞赛课的时候,40 个机位的机房里挤了 60 多号人,我连座位都没有;老师在黑板上讲 printf,台下的同学昏昏欲睡。看到同学们人手一本绿皮的《C 程序设计》第二版,封面上印着“发行 700 万册”,我就感觉谭浩强是仅次于比尔盖茨的计算机大神了。听说大牛学长还买了《算法导论》,虽然有点贵,还是“请”了一本回来供着;之所以供着是因为上面没有可以直接抄的 C 代码,没有代码的书能叫计算机专业书吗?
2014-06-01
Traditional router requires cold reboot if any component of the router software fails or needs to be upgraded. Network traffic is likely to be interrupted for minutes in the meantime. This work designs and implements a fault-tolerant software architecture composed of four components: clients including routing protocols and administrator, the router information base (MiniDB), a daemon to resolve rule conflicts among clients (SyncD) and the SDK for programmable switching chip. This architecture allows any component to fail or upgrade without interrupting data plane, and the control plane will automatically recover within predictable time after the component restarts.
Publication
Dissertation of Bachelor’s Degree, 2014. [PDF (Chinese)]
People
- Bojie Li, 4th year undergraduate in USTC
- Dr. Kun Tan, Senior Researcher in Microsoft Research Asia
2014-05-12
世界上有两种密码:一种是防止你的小妹妹偷看你的文件;另一种是防止当局阅读你的文件。
—— Bruce Schneier《应用密码学》
传说中的 “明文密码” 有两种形式:明文传输和明文存储。明文传输的密码不一定明文存储,明文存储的密码也不一定明文传输。去年沸沸扬扬的明文密码事件,就是密码明文存储,网站的数据库一旦被窃取,用户的密码也就随之失窃了。密码明文传输也是非常危险的,网络中的很多位置都可能安装有嗅探装置,明文传输的密码对这些嗅探者来说也就无密可言了。本文关注的是密码传输中的安全问题。
什么是 “明文”?如果密码以 ASCII 字符的形式直接发出去,对任何人来说这都是明文;如果密码用 base64 编码一下(例如 123456 经过 base64 编码就是 MTIzNDU2),对多数人来说这也许是密文,而对任何专业程序员来说就是明文。有些人认为,把“加密”算法弄得复杂些,再用代码混淆工具弄乱,就没人能分析出来了。这样的做法叫做隐藏,而不是安全,属于防止小妹妹偷看文件的级别。真正的安全依赖于公开的、被广泛使用的密码学算法,靠密钥而不是算法本身来保证安全。
可惜,密码学算法和协议并不是随便拼凑起来就安全的。
2014-04-09
昨天 OpenSSL 爆出了名为 Heartbleed 的重大安全漏洞(CVE-2014-0160),通过 TLS 的 heartbeat 扩展,可以读取运行 HTTPS 服务的服务器上长达 64 KB 的内存,获取内存中可能存在的敏感信息。由于这个漏洞已经存在两年,Debian stable (wheezy) 和 Ubuntu 12.04 LTS、13.04、13.10 等流行的发行版都受影响,无数部署 TLS(HTTPS)的网站都暴露在此漏洞之下。
什么是 SSL heartbeat
2014-03-31
我是怀着复杂的心情写这篇文章的,因为我们赶到大年三十的 SIGCOMM paper 因为与这个3月5日发表的演讲在架构上过于类似(事实上我们的 paper 里包含很多此演讲中没有提到的技术细节),被评审者认为 “nothing new”,只好撤回。要是 Google 晚两个月再发表他们的网络虚拟化技术多好啊!
这场演讲由 Google 网络技术总监 Amin Vahdat 发表于 Open Networking Summit 2014(视频链接),从概念上介绍了代号为 Andromeda 的 Google 网络虚拟化解决方案。
2014-03-31
昨天受科大 LUG 之邀参加了 CSDN 主办的 2014 开源技术大会(OSTC),结合会上记的笔记和不靠谱的记忆,与诸位分享,如有错漏之处请回复指出。本文部分图片来自 CSDN 官方的图文直播,演讲者的 slides 我显然没有,据说 CSDN 官方随后几天会发布。
早上见到了又高又帅的 Thomas Yao 和 Deepin 的王勇(没拍下来)。
2014-03-21
3月18日是在北京召开的 IEEE 802 全会的学生开放日,受 MSRA 所邀我去打了一圈酱油。参与标准制定的都是专业人士,我基本上是刘姥姥进大观园,止增笑耳。由于会场禁止拍照录音,而且会议所讨论的技术文档是不公开的,只能无图无真相了。
首先科普一下 IEEE 802 是干什么的。IEEE 802 是 IEEE(国际电气电子工程师学会)下属的委员会,负责局域网和城域网标准的制定,计算机网络的物理层和链路层协议基本都是这个组织制定的。IEEE 802 每年都要召开三次全会,大多数都在北美举行。从第三次参加全会开始才有投票权。
IEEE 802 下设若干工作组,例如 802.3 负责以太网(Ethernet),也就是我们用的有线网络;802.11 负责无线局域网络(WLAN),也就是俗称的 wifi。每个工作组要做的事情仍然很多,例如以太网有百兆、千兆、万兆、40G、100G 以及正在研究的 400G,不仅速度不同,所用的传输介质也不同;无线局域网有 802.11a/b/g/n/ac/ad 等标准,不仅速度不同,所用的频段也不同。因此每个工作组下又设任务组(Task Force)和研究组(Study Group)。