意义

前段时间看了姜文的《一步之遥》,作为一个观影不多的观众至少也从中看出了姜文享受在其中的形象,我想这就是一部好电影。所以说做一件自己想做的或者说自己喜欢做享受在其中的事情是可以排在第一位的,外在的评论和事后的结果相对都可以排在之后。举个不恰当的例子,这就好像鲍尔默买手机,贝佐斯做手机一样(笑),既然自己喜欢,多花点时间多花点钱开心就好,不在乎别人多说几句。

中国有这么好的一个寓言故事,讲夫妇俩带着毛驴去赶集。两人牵着毛驴走,结果被人笑话有驴不骑;于是男的骑上驴让他老婆走路跟着,人说议论这大男人不照顾女的;于是换做让老婆骑驴,又被人说女人不体恤丈夫;只好俩人一起骑着驴,这下别人又说这两懒鬼折磨一头驴;没办法只好把驴捆木头上俩人抬着走了。

所以说既然无论如何都无法取悦,甚至是不得罪所有人,那还不如干脆做自己。我倒是好奇为什么自己在这个年纪乐得(苦得)时常去想这个问题,看来还是因为刚从学校毕业迈入社会,又到了这『青黄不接』的年纪,压力略大又无从选择,欲求自由却缺乏对生活的想象力吧。看了看之前的文章,其实一年前就知道生活『没有意义』,不过这标准答案既然没达到心理预期总是心中有说不出的抗拒。

这段时间(从上次的文章到现在)看知乎的频率高了起来,物以类聚的道理。但是真的什么问题都需要一个解答吗?更进一步说,都需要一个大众化的高票数的标准答案吗?以程序员作为职业(或者以工科作为专业)的一个『副』作用让我自身觉察到对于世界的看法的逐步改变——认为万物可解,所有问题、现象、矛盾都有原因,都可以重复性试验,都可以找到节点,进而解决——这就是工作中解决代码问题的万变不离其宗的能力。既Find a bug. Try to reproduce. Debug function by function, line by line. Fix the issue. 时常的这样的习惯给予了生活莫大的方便和心态上的宽慰——相信一切问题皆能解决和解决一切问题的能力。但是偶尔的潜意识中也会觉得是否这样的不变流程就是最优解、唯一解,或者是否真的需要解?

也许真的不需要解呢?因为每个人评价标准不同,所以自己才是唯一的评价标准来源吗?那么自己的评价标准是正确还是错误呢?可是遗憾的是,正确和错误的定义本身却又来自于其他人,也同样没有定论。

去年哪儿都没去,今年挽回了一点。我从不关心别人嘴里的正确和错误的旅行目的地——这没有定论,我关心的是我觉得它有趣不有趣。旅行或者换句话说出去玩儿,是通向新世纪三有青年(不是有学历、有背景、有证书,而是有钱、有趣、有理想)的必经之路。这次走访了墨西哥和俄罗斯,也算不虚此行——世界上不只有北美西欧这样的国家,中国特色也不是那么独一无二,墨西哥街边的早晚的卖吃的小摊小贩的铺子,还有莫斯科城里城郊的火柴盒型的居民楼,都能看到熟悉的影子。热闹的街头巷尾和喧嚣的城市对于一个住在市郊小山坡上的我来说更是亲切有加。这些都是有趣的元素。一定要空余出时间好好整理一下照片可以重新回味也好安排未来的旅途计划。

再记录一行,昨儿抓了一只螃蟹,味鲜。

Data Center Network Structures

之前一段时间恰好准备了一个”HOW TO HOUR”,因为自己才疏学浅,东拼西凑找了一些值得一读的文章做了一个简单的概论。把大致内容记录于此,之后亦可以浏览。

一个典型的三层(核心层、汇聚层、接入层)的Data Center Network Structure大体如下图所示

这里涉及到了架构或拓扑、Oversubscription、多路径路由和费用这些概念。在之后的讨论中都有逐条说明。同时,这里也讲到了这种架构来自于Fat Tree Network和Clos Network的“结合”。

第一篇有关的文章是A Scalable, Commodity Data Center Network Architecture。应该是现代数据中心网络架构的先驱。这篇文章提出了如下的模型

可以看出,在核心层和汇聚层都被小型路由器替代了。这里为了达到一比一的Oversubscription,大体比例上是这样的:对于一个k-ary fat tree来说,一共有k个pods,每个路由器有k个ports,一共有k^2/4个核心层路由器,k^3/4个主机,两个主机之间有k^2/4条最短路径。文章中提出了一种寻址方法,即每一个pod switch的IP地址设置为10.pod.switch.id。每一个核心路由器的IP地址设为10.k.j.i,每一个主机的IP地址设为10.pod.switch.id。这里文章提到不用OSPF或OSPF-ECMP的原因是防止信息拥塞等考虑。路由表由两层结构,第一层是后缀表,第二层是前缀表。后缀表决定北向路由,前缀表决定南向路由。

这样的一个问题就是,fat tree结构并没有被充分利用。所以两种动态路由在此被提出。一是流分类Flow Classification,将北向的流按照大小动态分流到北向的端口;一是流调度Flow Scheduling,这里提及了一个中央调度器Central Scheduler。通过中央调度器来决定哪一个流用哪一个端口。

这样的设计存在着一些问题,譬如可扩展性相对较差,负载平衡过于简单,commodity device需要有专门的设计满足寻址和路由,虚拟化计算机的动态迁移,和浪费较多地址空间等问题。所以接下来我们再看一篇文章Portland: A scalable Fault-Tolerant Layer 2 Data Center Network Fabric。这篇文章意在设计这样一种架构,虚拟机迁移过程中IP地址不变、路由器不需要专门配置、Oversubscription达到一比一、路由不出现环路、以及路由表的错误修正。为了达到这些目的,作者认为这会是一个Layer 2的构造。Portland的目标是给出一个可扩展的数据链路层的路由、转发、寻址设计。Portland这里也需要一个逻辑上的中央处理器以保持一个配置信息的软状态。

实现这个设计的关键在于:一、Positional Pseudo MAC Addresses;二、Proxy-based ARP。第一点和第一篇文章中的IP分配的想法是类似的。这里为每一个主机分配一个独特的MAC地址:pod.position.port.vmid。

Fabric Manager分配给主机一个独特的PMAC,每一个主机向边缘路由器发起ARP请求以得到目的主机的PMAC,边缘路由器的功能在于拥有AMAC和PMAC的映射,而Fabric Manager只存有主机的IP和PMAC的映射。在边缘路由器转发的过程中,也会向Fabric Manager查询相应IP地址对应的PMAC。

Portland的设计——位置地址Location Address和应用地址Application Address的分离,使得虚拟机在迁移的过程中无需改变IP地址。中央控件的使用保证了LA-AA的映射。网关负责DCN内外的encapsulation/decapsulation。

在VL2: A Scalable and Flexible Data Center Network一文中,以上几点特征同样留在了设计中。而区别在于,Portland是一个基于Layer 2的设计而VL2则是Layer 3层的设计——IP-PMAC的映射变为了IP-IP的映射。

上面几张图可以看出VL2在于

  1. Building on proven networking technology.
  2. Separating names from locators.
  3. Embracing end systems.

这里要提到的是VL2的directory system design。它代替了Portland中的fabric manager的角色,保证了查询更新地址映射的功能。这个设计包含了(1)一个大约50-100个服务器组成了读优化的冗余目录系统,存储和负责AA-LA的映射和查询;(2)一个相对较小的(5-10)写优化的异步replicated state machine服务器簇,以保证统一的可靠地映射一致更新和存储。具体实现细节可以参考原文章。

话说要提到的一点是,这篇文章的作者在这篇文章发表这年入职了亚马逊,James Hamilton。成为了AWS的VP/Distinguished Engineer。可想而知AWS的架构与之的关系。

夏天再见

过完这个周末,就同夏天说再见了。

身在西雅图,这样的时节每过一日便多一份焦虑。心情挣扎在等待下雨又盼望雨来得再晚点的边缘。就好像考完试享受着短暂轻松的学生,心里却总挂记着分数何时出来一般——我在等待那场宣判夏日终结的雨。每天注意着太阳升起落下的时间,似乎夜幕来临的又早了些,然后,又早了些。聚散苦匆匆,此恨无穷。之于人是如此,之于西雅图之夏,蓝天暖阳,亦如此。古人惜春伤春怨春,我惜夏伤夏怨夏。

古人行路不便,方圆百里既是极大一片区域。如今有车助力,能有幸抵达更多去处。北面Mt Baker,North Cascades National Park,南面Mount Rainier National Park,西面Olympic National Park,东面Snoqualmie Falls,Mount Si,等等等等。照片还未都整理好,也就留个到此一游的纪念。对摄影的执念不那么重,器材,后期都是为了最后的美的效果而服务,若为此累,倒不如图个清闲睁大眼就行。

朝十晚七的生活日复一日,却还没有从学生身份走出来。不知道是好事还是坏事。说到好坏,人的一个执念就是区分好坏,执着目的,寻找意义。可是好坏如何判断,目的是否有意义,这些问题都没有一个通解。无解的东西本身很容易困扰一个做了近二十年习题求解找答案的学生,当回过头来不得不承认一切都“没有意义”的时候,如何面对这个回应又是一番纠结。

宇宙是不是就好像一个数学公式,给定自变量时间T就能求出任意时刻的宇宙的状态呢。我的每一个动作,每一种想法,是否都逃不出这个公式呢。宇宙包含时间吗?如果包含,宇宙就仅仅是一个状态吗?如果不包含,那时间又是什么呢?

看《后会无期》里那段火箭升空的场景,想到了《三峡好人》里那幢奇怪建筑物升空。现实超现实本身就是模糊的。《来自新世界》很有意思,相对更加开放的价值观念比传统剧场卖座的好莱坞大片看完更有回味。

浮萍漂泊本无根,天涯游子君莫问。来年夏天,我将身处何方。