Tuesday, August 09, 2011

网络流管理与交通流管理

曾经有幸听过一个交通流管理方向的专家做过一个研究报告。提到他们的研究成果被美国政府采用后,提高了接近十个百分点的性能(具体啥性能指标已经忘记了)。那时我刚接触网络流量管理这个课题不久,还只有个大概的认识。但即使如此,那个讲座还是引发了我不少的思考。

网络流管理跟交通流管理,貌似风马牛不相及的两个课题,其实有着惊人的内在关联。

从目的上看,两者都是为了提高系统的某种性能,包括容量、鲁棒性等,同时要尽量减少突发情况带来的损失,尤其典型的场景是拥塞避免。对网络来说,拥塞意味着大量的数据包挤占了有限的带宽,造成数据丢失(目的不可达);对于交通来说,则是为了减少堵车发生,也是为了保障可达性。但是两者在可控手段上和物理过程上的差异,造成了在实际应用中的天壤之别。

网络上的流量管理,特别是现代的互联网,已经被研究了二十多年,但一直到今天都没有有效的手段去达到让人满意的控制。而交通流管理,已经有太多行之有效的思路和手段。我曾总结说,现在的交通网在讨论解决的类似问题,至少十年前互联网的专家们就已经研究过了(所以搞交通网络的专家们翻翻互联网上的相关问题的研究论文,未必不是一个好思路)。

抽象的看,一个系统,要避免拥塞,要么从提高容量角度入手,要么从降低压力峰值入手。提高容量,对于交通网络来说意味着增加更多的车道,对通信网络则意味着升级设备。无论对交通网络还是通信网络,这都不是能即时有效的手段。因此,两者都想到了如何去降低压力峰值,或者说如何做好调度优化。恰恰在这一点上,交通网络上的控制显示出了巨大的可操作性。

相比较互联网中以接近光速穿行的信号来说,交通网络中的承载单元——典型的如汽车,不仅速度慢,而且随时随地可以停住。将载荷停住对通信网来说则意味着存储。无论是技术的限制还是机制的设计约束,随时随地的高性能存储对于现代的通信网络来说都是“不可能的任务”。因此在流量调度上通信网络的要求要高的多,也难得多。同时也因为互联网是多个自治系统的自由连接,在交换节点上大规模的部署新的调度技术更是难上加难。

那么,通信网上的流量管理就没有一点优势了么?

当然也不是。相比较交通网来说,通信网上的流量管理也存在显著的优势。一是对载荷的可控性。载荷在经过每个节点时都存在被任意处理的潜能;二是允许丢弃重传;三是可控。每个载荷都严格遵守“交通规则”。也正是从这几点出发,以MPLS为代表的相关技术成为了ISP网络中事实上的标准。

写到这里,突然想到除了交通网和通信网之外的另一张大网——电网,也存在类似的问题。电网的调度跟互联网类似,也不存在任意灵活的存储(目前的电力存储,还有太多问题,最显著的就是容量和吞吐率,其次是效率)。另一方面电网又没有通信网络可以任意丢弃重传的灵活性。因此,电力网络的调度将更加困难,也是下一步马上面临的更大的挑战。美国前几年的电力网故障造成大面积停电,中国西部大开发早了很多发电基地,却无法输送出来。这都是一些经典的例子。当然,凡事有利有弊,电网调度也存在它有优势的一点。因为电力是能源,其应用十分广泛,既然现在输送不出来,为何不能本地消化掉?例如东部的生产基地如果直接建造到西部去,即消耗了西部的富余电力,又降低了东部的用电压力,可谓一举两得。

Saturday, June 11, 2011

随机——概率幽灵

有一个程序员都看的懂的网络流行笑话,说有人写了一个超快的随机数生成函数,全部代码如下:
int getRandomNumber(){
return 4;
}
相信不少人看了都会会心一笑,说这程序员也太懒了,一直返回4,怎么就能生成随机数了呢?可是等我们仔细想象随机数的定义,随机数应该是跟此前发生的数无关的数,这也就意味着,无论此前生成的是什么数字,都不管,需要重新生成。
那么,每次产生4有什么问题呢??
有数学家宣称,让一只长生的猴子敲击键盘无数次,总有一段是莎士比亚的某一部作品。其实我们可以推广下,让一只长生的猴子敲击键盘无数次,我们总可以找到人类历史上出现过的所有信息。
回到我们的问题,一个随机数生成器,某天生成的序列是“444444444……”,并非毫无可能,按照概率论的说法,随机数生成器生成的序列中,总会有任意一个数字的无限长的重复子序列。
也许有人已经开始迷糊了:“等一下,你怎么能说一直是某个数字的重复序列是随机序列呢,虽然你说的似乎有道理……”
让我们再来看一个简单的例子。
给你一枚普通的硬币,抛起来,掉到地上,假设硬币不能立起来,那么你猜正面的可能性有多大?
“这还用问,小孩子都知道,是1/2。”
好的,我们抛一下,结果是正面,那么我再抛一下,结果还是正面的概率是多少呢?
“嗯,应该也是1/2吧”
好的,我们再抛一下,结果还是正面,那么再抛一下呢?如果我连续抛出来了10个正面之后,下一次我再抛出正面的概率是多大呢?
可能有人额头已经开始出汗了,掏出笔,想一想概率论上学到的道理:每次抛都是独立事件,互相应该不受干扰,那么下一次结果是正面的概率应该仍是1/2。但是连续抛出11次正面,天哪,这个概率太小了。。。。似乎下一次更有可能出现反面啊。。。
好吧,相信到这里,大部分人已经彻底晕了。如果你还没晕,相信我,要么是你概率论没学好,要么是……你的神经无比粗壮。
这几个例子说明的其实都是随机。
现代概率论可以告诉我们某某事情发生的概率是多少,但是永远无法准确的告诉我们发生与否。事实上,概率为1的事情不一定会发生,而概率为0的事情也有可能会发生。
是不是听起来挺可怕?就像一个数学幽灵一样,无法捉摸。
实际上,当我们再仔细思考概率论的基础时,会发现数学上的假设与真实之间,出现了那么一丝的不和谐。什么叫相互独立事件?之前抛硬币跟下次抛硬币之间的独立真的符合数学上的理想定义么?
问题到了这一步,是现代最伟大的数学家或物理学家都无法回答的了。因为这涉及到这个宇宙的基本性质。在时空上看,多个事件点之间的联系并不是那么好理解。
一种最粗鲁的解释是我们的宇宙在时空中是不断分裂的,任何事件的发生的多个可能结果都导致了一个新的宇宙,我们在这个宇宙中只是一种偶然。因此,我们未来要做什么其实跟过去无关,因为总会导致均等机会的新的宇宙产生。
另一种解释,是宇宙中有某种神秘的力量,让整体稳定分布符合概率统计,小概率事件的发生,其实类似池塘水波的震荡,有波峰,就有波谷,而且当没有外在力量影响的时候,产生大水波的可能性很小,但允许极小概率的局部小震荡。这样的话,某天我们发现一件不可思议的小概率事件发生的时候,其实是发生了震荡的缘故。
以上两种解释似乎都有一定道理,但可能只有后人才有可能更完善的理解这个问题了。

Sunday, May 29, 2011

世界计算机名校的网络课程


虽然排名方法有很多种,但公认的计算机领域的世界顶级名校至少包括MIT、Stanford、UCB和CMU(排名不分先后)。这四所高校在计算机领域无不处在领头地位,在专业上又各有偏重,一起构成了计算机学术界的半壁江山。
下面是我选出的这四所高校在网络方面的代表课或特色课,授课者都是计算机界的大牛,面向对象均为研究生。
 
MIT
课程网址:http://mit.edu/6.829
主要开课人:Hari Balakrishnan
面向对象:研究生
内容:大规模网络系统的设计、实现、分析、测试等
形式:阅读(论文、技术报告、RFC)+报告

Stanford
主要开课人:Nick McKeown
面向对象:研究生
内容:网络系统设计、分析、下一代网络等
形式:阅读(论文为主)+实践(基于Openflow)

UCB
主要开课人:Ion Stoica, Scott Shenker
面向对象:研究生
内容:网络各层研究、网络热点问题等
形式:阅读(论文为主)+讲座+专题研讨
 
CMU
主要开课人:Srinivasan Seshan
面向对象:研究生
内容:网络原理、设计原则、应用问题等
形式:阅读(论文为主)+讲座+讨论

Friday, May 20, 2011

“拨云探月”——云计算话题浅析(二)


在上篇文章中,我们分析了云计算出现的原因和必然性,相信可以帮助大家更好的理解和把握云计算的定位。在本次IT的泡沫即将破灭之际,必然要有大批没有质量的企业和产业被淘汰掉,遴选的唯一原则还是我们根本所说的“生产力原则”。因此,真正掌握云计算核心技术的企业是肯定可以存活下来的,也只有这批新型的企业模式,才会让IT产业更加蓬勃和高效。本篇文章中我们将探讨涉及到云计算/数据中心的几个核心技术问题,并展望下云计算的未来发展。

虚拟化

虚拟化的概念从有了计算机,甚至在计算机发明之前就已经被广泛的应用。但从来没有过一个时代像云计算时代一样,使得虚拟化变得如此重要。要理解虚拟化对云计算为何如此重要,首先就要深刻把握虚拟化的内涵。
什么是虚拟化?表面看来似乎很容易理解,但要下个准确的定义却不是那么简单。网上随便一搜,说法众说纷纭。Wikipedia上说虚拟化是“一個表現邏輯群組或電腦資源的子集的進程”,百度百科上说“虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。”大大小小的技术论坛上也是瞄准添加一层新的抽象层的角度来进行描述,简而言之就是重新抽象。
应该说这些说法都多多少少的描述了虚拟化要做的事情或者相关的技术手段,但并没有涉及到虚拟化的本质所在。以最常见的主机虚拟化为例,一台硬件机器放在那里,怎么让它能跑多个程序甚至是多个操作系统?很自然的我们采取的手段是创建一个新的虚拟层,在此新层上运行多个程序/系统,并让它们感觉不到其他个体的存在。这个过程就典型采用了虚拟化的手段,但我们不能把这个手段就当做虚拟化。
我曾思考这个问题数年,却一直无法用语言具体描述那种玄妙的体会,直到有一天看到下面的文字,突然如醍醐灌顶。
“道可道,非常道。
名可名,非常名。
无,名天地之始,有,名万物之母。”
这是《道德经》第一章一开头的文字,相信不少人如我都曾读过,却从来没把它跟云计算联系起来。这一段说了两件事情,第一件事情是“道”,这是根本,是宇宙产生的本源依赖;第二件事情是“名”,是万物变化的初始动力。
何为“名”?
为何一棵树要被定义为一棵树?
为何一块石头要被定义为一块石头?
在为万物起名之前,万物早已存在;为万物起名之后,万物并没有变化。变化的是我们,是命名者。就如同硬件的机器一样,造好后摆放在那里,你让它被解释为一台机器,那么就可以做一台机器做的事情;你让它被解释为多台机器(对程序或系统而言),那么它就能同时运行多个实例。
“名”,或者说解释,才是虚拟化的本质所在。
从这个角度,我们重新来看待虚拟化和云计算的关系。在上一篇中提到,现代可扩展的数据中心主要通过糅合大量不可靠的廉价节点来构造一朵具备强大计算能力并可靠的云。从本质上说正是一个“名”的问题,或者说虚拟化的问题。我们要把普普通通的不同类型的硬件机器解释为统一的数据中心!
因此,这里面就涉及到大量的虚拟化相关的技术问题。包括性能、扩展、管理、可靠性。值得庆幸的是,虚拟化技术这些年来一直在飞速发展(大量的软件虚拟化要容易的多),并未对云计算的需求形成显著瓶颈。

交换

虚拟化虽是云计算发展的基础技术,但因为应用场景十分类似,并未形成瓶颈。而另外一项根本技术——交换则不然。
我们知道,现代的Internet实际上是运行在以太网及少量其他类型网络基础上的。别看Internet规模庞大,构造的原理却十分简单——利用交换节点把主机连接起来。
一般来说,我们可以很轻松的通过二层交换机连接本地网络,然后多个交换机再互联形成一个不小的局域网,利用二层交换机构建的局域网可以运行的十分稳定,似乎是个不错的解决方案。但当要扩展出去的时候,就有了新的问题。
我们知道,交换机之所以能实现交换,是因为它记住了每个端口上的机器mac,或者说它知道谁在哪里。而主机位置可能会发变化,例如从一个端口变到另一个端口,这个时候交换机就需要有机制来不断的更新它的内部记录,以随时跟踪最新的机器位置信息。当需要完成交换的主机数目增多的时候,不仅硬件上的端口不够用,内部的位置信息维护也成了大问题。不光维护大量的位置数据无法实现快速的查找。当机器位置更新频繁的时候,大量的arp相关报文将使交换机疲于应付。
为了解决这个问题,人们在二层以上新定义了IP层,试图利用IP地址的聚合来降低这些代价(当然,IP层的意义远不仅于此)。这也就是路由的由来。传统的交换机无法完成三层的交换(现代交换机很多都支持三层交换,但都是小规模),而路由器则可以通过维护庞大的IP段表来实现不同本地网络之间的流量传输。但相比交换机而言,路由器无法很快的更新位置信息。一次路由错误可能会导致网络几分钟甚至到几个小时无法work。
总结一下,二层交换能较快的跟踪位置信息,但无法处理大规模网络;三层的路由则相反。
对于目前的互联网来说,二层和三层交换的紧密配合,能够很好的处理目前的情况。毕竟,我们从一个地区转移到另一个地区,总是默认要重新连接,并不需要保持工作的连续。而到了现代的数据中心,问题便浮现出来了。
由于我们有大量的互联网的设计经验,很自然的,在设计现代数据中心的时候借鉴了类似的结构。这使得现代的数据中心从某种意义上来说其实是一个小型的Internet,只是真正的Internet并不属于某一家企业来统一管理而已。从Internet到数据中心,计算的个体从个人主机变成了虚拟机,同时由于业务连续的需要,移动性的需求变得敏感起来。即在虚拟机的迁移过程中,我们希望能保持它提供服务的连续。在二层网络中这不是问题,二层交换机能很好的跟踪位置信息,但是到了大规模的数据中心,我们不得不采用类似三层交换的机制,这就使得位置的跟踪与规模的扩展之间的矛盾凸现出来。
所有炒数据中心的交换设备,都躲不开这个问题。这一问题在传统的交换架构下其实并没有太好的解决思路,所以必须要改革。学术界以VL2为代表的一系列解决方案,都是试图将位置信息与名称信息(IP信息等)剥离开来,绕过矛盾。
其实,位置与名称信息的剥离,在数年前研究Internet的时候就提过相关思想,但因为应用并不多见不为人所关注,但到了数据中心就成了首要解决的问题。
另外一个问题,也是传统交换机制在新挑战下被发现的,即多路径的问题。简而言之,传统的交换机架构是不允许成环的,通用的生成树协议会自动维护唯一的两点之间的路径。带来的好处是可以避免复杂的交换管理,问题是浪费了可能存在的路径。
在互联网时代,我们可以容忍点到点吞吐量不满载,可以通过冗余链路来实现高可靠的冗余。但到了数据中心时代,首要的需求是交换性能,为了实现性能和可靠性,我们恨不得充分利用每一条链路。这种情况下,就不得不舍弃生成树,重新设计更为复杂的交换机制。这一问题也给现代交换设备生产商带来了新的挑战。
无论是Cisco的Nexus/FabricPath Jawbreaker,还是Juniper的QFabric,都为了数据中心带来了新的技术思想和解决方案,但都有其存在的问题。目前产业界,还远没有一种完善的方案能力压群雄,成为事实的标准。这也使数据中心这块大蛋糕之争,充满了不确定的迷雾。

其他问题

其实,由于现代数据中心结构与Internet的相似性,原先很多的问题,在数据中心的应用环境中仍然存在。例如安全问题、能耗问题、灾备恢复等。
因为数据中心的管理单一化、结构化,安全问题主要面临是外部的攻击和内部的数据管理。虽然看似简单的,但安全性的需求更高了,因为一旦出现问题,带来的损失将是惊人的。亚马逊因为一个小的配置错误导致部分机器宕机就是一个鲜活的例子。
能耗问题这些年颇为火,除了环保主义者的吹捧外,也是实实在在的利益相关。几十万台机器和交换设备每天烧掉的电费也是个惊人的数字。因此,如何实现绿色型数据中心是实在之谈,而非哗众取宠。以谷歌、Facebook等IT巨头的设计为例,主要采取的方法包括动态调整负载以关闭部分节点,减少冷却成本、采用低耗硬件等思路。
灾备恢复始终是系统设计的重要指标。网络结构的复杂化,使得配置和管理成为不可能的任务。而在数据中心中,由于拓扑固定、管理同质,使得管理任务大为简化。但人始终不能胜任对故障的及时处理。一旦出现故障,如何及时的甚至零损失的恢复,现代数据中心并没有很好的解决思路,这将依赖于网络管理技术和设计上的进一步发展。

发展趋势

从目前的情况来看,数据中心的发展是必然,同时,由于技术的发展,未来的数据中心预计将出现如下几个趋势。
规模进一步增大。现在的数据中心往往有几十万节点的规模,但在未来这一规模将更加庞大。但规模的增加不意味着体积等的增加,不意味着数据中心数量的增加。
能效进一步提高。无论是从硬件的发展还是架构的设计上,能效都将成为重中之重。
管理进一步简单。交换技术的发展将提出新型的数据中心交换设备,使得交换节点在整个数据中心中的比例下降,同时,交换设备的智能化得到提高,少数管理员将能轻松管理大规模的数据中心。
性能必然提高。无论是数据中心群的被提出,还是根本技术的改变,例如采用光数据中心,新的存储方式等,都会使得数据中心的性能得到进一步提高。甚至在不远的未来,可能云计算真的就变成了“智”计算——由远在云端演变成时时刻刻、随时随地,由用户可感知演变成融入生活、无处不在。

Friday, May 13, 2011

Interop 2011 Las Vegas 大会


注:2011年5月11日下午,Las Vegas McCarran国际机场候机厅,于老虎机闹腾的音乐声中。
作为IT领域一个比较年轻的会议,Interop的定位却不低,官网自己宣传的定位是“Interop is the leading business technology event with the most comprehensive IT conference and expo available”。跟其他大会类似,分为专题会议和大型会展(Expo)。一般来说,从参与会展的生产商list基本上就能确定大会的影响力。从这个角度,Interop确实称得上是全球IT领域颇具影响力的大会了,基本上叫得出名和叫不出名的IT厂商都有出席。
自06年举行以来,每年至少分别在春季和秋季在Las Vegas和New York举行一次,今年更是夸张,增加了日本的Tokyo和印度的Mumbai,全球范围内要举行4次(喜欢旅游的同学们可不要错过)。Las Vegas这次是今年首次,规模十分惊人,数百家企业参加Expo,专题会议也有近百个,会期从5月8日到12日持续5天,题目更是几乎覆盖了IT技术的所有领域。
从个人参会体验看,云计算/数据中心确实是如日中天,几乎每家都跟这个靠近乎,Expo上更划出了专门的一块作为云计算区(另一块专区是老问题——安全)。不管是业界巨擘如Cisco、Juniper、HP等等,还是一些Startup类公司。讨论的热点也多在数据中心的交换、虚拟化、管理等关键话题上。值得一提的是,NEC、HP、Juniper、IBM等几家都参与进了Openflow Lab,在会上由Big Switch牵头做了展示,关注的人不少,不过感觉好奇的多,懂技术的少(Big Switch这个startup很有意思,有机会单独撰文予以介绍)。
另外,跟前些年参会大家都是人手一台thinkpad不同,今年不少人是一台ipad(当然做技术的还是thinkpad居多,像我过来前犹豫很久还是带着小黑过来了),会展的商家吸引人的花样也多是ipad。我老早就说过,单纯从革命性上来说,iphone远不及ipad,这是真正是找对了需求。商旅人士要求的无非一个是待机长、一个是轻便和随开随用,这点上传统的laptop或cellphone都很难搞定。
最后8g下做key note的几个高管,秃顶的不少呀,至少是前秃,级别高的甚至顶秃,看来确实是要“聪明绝顶”才能做高管了。
其他闲话不再多说,上pic(主要是5月10日拍的)。
IMG_0093
keynote现场。
IMG_0094IMG_0096
Juniper在会上炒作QFabric,但就在当天得知,设计人David Yen跑到Cisco整Nexus去了,Cisco估计乐坏了。
IMG_0097
MS这些年露面不少,甚至网络会议也纷纷掺和。
IMG_0099
云计算专区,IBM、EMC、Intel、MS等都在这个区。
IMG_0098
不知道为何,就是喜欢EMC的这种蓝色style,多来一张。
IMG_0100
EMC俨然虚拟化的领头人,碰上云计算这个千载难逢的好机会更是出尽了风头呀。
IMG_0101IMG_0102
混久了圈子的人,看口号基本就能猜出是哪家公司。IBM这些年无论在啥场合都炒创新和智能。虽然这个理念大家都会用,但被IBM用出来就气象俨然,俨然宗师气派。
IMG_0103IMG_0104
IMG_0105
Juniper的QFabric,简单的说就是一块超大的交换机。我原来讨论数据中心问题的时候曾跟导师开玩笑,说随着技术发展,将来能实现N对N的超级大交换机,能力无限,那么数据中心很多问题都迎刃而解了。本是一句玩笑话,谁知1个月后,就获知了QFabric推出的消息。
IMG_0106
HP带来了自家的一体化的交换、安全、存储解决方案。
IMG_0107
of lab名头颇大,吸引了不少眼球,但炒作的还是基本的of理念。
IMG_0108IMG_0109
of lab演示现场。
IMG_0110IMG_0111IMG_0112
跟Cvm的工程师聊,说隔了两年时间才由16core升级到32core,对于IT产业来说,感觉产品的市场周期有些略长了。不过人家的东西还是蛮好用的。
IMG_0113
IMG_0119
安全专区,老面孔颇多,新面孔也不少。没有看到Plato,不能再听nir同学侃侃神谈,颇为可惜。
IMG_0114IMG_0115IMG_0116IMG_0117
冰雕是吸引观者的老把戏了,不过还是得承认,视觉效果颇佳。
IMG_0149
IMG_0150
参会的国内厂商,除了华赛勉强算上,就是nsfocus(绿盟)了,听说今年在北美有office了。无论如何,走出国门都颇为不易,希望民族企业们先不要急着内斗,能团结起来,先发展起来成熟的市场其实对大家都有好处,最终走向全球领域的大舞台。