著名院校介绍–香港大学

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享

(1个打分, 平均:1.00 / 5)

万兆以太网交换机

《作者按》:去年写的老文章,没人看过,就已经过时了,大家可以把它当旧报纸看。

今天(2007/12/31)看到的两则关于以太网交换机的新闻:

1、arastra公司发布了48个万兆接口的以太网交换机(1U pizza box),平均每端口价格约$400美金,主要面向数据中心市场。这则新闻有两个看点:(1)在一个1U的盒子里面实现48个10GE接口,这是有一定技术难度的哦。也就是说,1U的机箱里面实现了480G线速non-blocking的报文交换,从其产品外观看,其定位明显是中低端产品。Juniper最近发布的MX960,主要针对运营商的Metro Ethernet汇聚,交换能力也不过960G。思科的王牌产品7600,交换能力720G。仅就交换能力而言,他们与这个1U的pizza box处于同样档次。(2)$400 / 端口,这个数字有两个含义,对10GE端口来说$400是比较便宜的,按照这个价格计算,这个1U的以太网交换机的售价竟然达到了$19200,这个就不便宜了哦,简直可以算是天价了。force10要努力了,新的竞争者来了哦。

另:数据中心、大规模并行计算、IP存储网络(iSCSI)等应用需要大容量、功能简单的三层交换机。通常这些场所不需要MPLS功能,也不需要特别完善的ACL。但是需要端口密度高的、成本低的以太网交换机。

http://www.arastra.com/

http://cnw2005.cnw.com.cn/store/detail/detail.asp?articleId=55201&ColumnId=16122&pg=&view=

2、google造交换机自用

另外一则新闻说,google买了一堆broadcom 的交换芯片和光模块,打算自己造以太网交换机,用在自己的数据中心。这意味着什么?自给自足的小农经济模式与现代高技术互联网公司google完美结合了:)

在网络上经常看到这样一些观点:芯片才是核心技术,不会造芯片的设备商,就没有自己的核心技术;会用汇编语言写驱动程序的人才很牛;等等。我不赞同这些观点,其实,整个IT产业是一个大的生态系统,每个公司都是这个系统的一部分,都是某条价值链上的一个环节。有些公司处于前端、上游,有些则处于后端、下游,无论是上游还是下游,把事情做好了就有价值,就有核心技术,否则就没有。就像是建筑行业,造砖的是上游,造房子的是下游,造砖的并不比造大楼的拥有更多核心技术。在IT行业也是一样的,造芯片的是上游,造设备的是下游,面向用户搞软件的,则是更下游。每个领域都有自己的核心技术,做好了,都有价值。

估计google搞以太网交换机,可能也并非是为了证明自己拥有核心技术。可能的原因:(1)目前市场上正在销售的以太网交换机无法满足google的特殊要求,而google的这种特殊需求不具有普遍性,与以太网交换机庞大的市场相比,google的采购量实在太小,所以设备厂商不愿意专门为google开发。而google有很有钱,所以就自己搞。(2)google打算进入网络设备市场,先开发一些自己用的产品操练一下,如果效果不错,就拿出来卖。

我觉得第二钟原因更有说服力,毕竟无论google如何有钱,都不值得为了自己的某些特殊需求而进入一个陌生领域。用broadcom芯片开发一个款以太网交换机,其实并不算是高技术,完全是繁琐枯燥的工程实现工作,即便是没有什么网络设备研发经验的团队,估计也能够搞出来。而google要做这样一件事,就必须招聘一个专门的设备研发团队,一旦这款交换机开发完了,这些人怎么办?辞退么?还是接着再开发一款速度更高、功能更强、容量更大的交换机?还是让他们去开发google专用的服务器?或者干脆养着他们,什么都不做?

http://network.chinabyte.com/232/7678232.shtml

(1个打分, 平均:1.00 / 5)

路由器需要多大内存?

计算机需要多大内存?当然是越大越好了,这是用户的想法。但是计算机的设计者则必须在成本、实现难度、和取悦客户等几个因素之间进行折中,选取一个最佳平衡点。对计算机来说,其主要依据是产品的市场定位,高端商务PC至少配2G内存,低端学生机配256M就够了。如果用256M RAM的学生机来作复杂的大规模FPGA仿真,可能会发现硬盘的灯一直是亮的,这说明内存已经不够用了,操作系统正在不停的在内存和硬盘之间兑换数据,用大容量的低速硬盘来弥补内存太小的不足,但是代价是计算时间延长了很多倍。路由器是不是也向PC一样,主要依据售价来决定内存配置的大小呢?会不会也是内存越大越好呢?路由器的设计者依据哪些因素来决定内存配置的大小?一般来说,路由器的内存主要用于一下这些方面:

(1)用于存储路由器软件指令和静态数据,路由器跟PC不同,PC是只把当前运行的程序装到RAM中,但多数路由器都是一开机就把全部程序都装到RAM中,一般来说,路由器的程序也不大(几兆到几十兆);(注:此处主要指控制平面的程序,也就是Cisco和Juniper的路由引擎)

(2)用于存储动态数据,例如:路由表、OSPF的链路状态数据库等。假如某路由器需要支持最多10万条路由,按照每条路由256字节计算,那么大约需要200M左右内存。

(3)用于缓冲数据报文,路由器的工作原理是存储转发。极端情况下,路由器的每个接口,至少需要缓冲一个报文,否则路由器根本不能工作。下面重点讨论这个问题。

一般来说,路由器配置的报文缓冲区都不止一个报文。因为这样也就意味着当有新报文到达的时候,如果前面一个报文正在发送,这个报文缓冲区尚未处于空闲状态,那么新的报文势必将会被丢掉。等前面一个报文发送完了,链路处于空闲状态,但是由于刚才报文已经被丢掉了,也无法利用链路空闲状态。如果被丢掉的报文是TCP报文,那么主机势必将重传这个报文(在该路由器前面的一段线路上传输两次同样的报文),并缩小自己的发送窗口,降低了TCP连接的速率。

也就是说,如果接口的报文缓冲区太小,将导致丢包率高,数据链路利用率低,TCP传输效率低。那么是不是报文缓冲区越大越好呢?也不是,因为报文缓冲区大到一定程度,就不能继续提高数据链路利用率和降低丢包率了。如果这台路由器处于拥塞状态,接收报文的速率远远大于接口的发送带宽,无论多大的报文缓冲区都会被填满,而报文缓冲区大了,那么也就意味着拥塞状态的时候,报文的转发延迟时间会很长。延迟时间太长的报文,对于接收方来说,已经没有意义了。以TCP连接为例,当报文大于发送方的重传时间的时候,发送方就会重传该报文,也就是说,大于TCP的重传时间的到达的报文,是没有意义的。对VoIP等应用来说,对网络延时更加敏感。

一般来说,路由器的接口缓冲区的大小有一个经验法则(rule-of-thumb):B = C * RTT,C是链路速率,RTT是平均报文往返之间。至于这个经验法则源自哪里,我没有认真考证。但这个经验法则的主要依据是最大化TCP效率,最大化网络接口带宽利用率。如果依据这个法则来设计路由器,对中低端路由器来说,问题不大。但是对于高端路由器,是有挑战的。一般中高端Internet骨干路由器上会假设RTT为250ms,那么对于个10GE接口,需要的内存是(10G bit/s * 0.25 s) / 8 约为300MB。也许大家会说,300M不大么,但是可以预见,最近两年核心路由器的容量必将发展到单槽位80 - 160G,也就是说单大约需要2.5G - 5G内存。虽然不是完全不可实现,但还是有一定难度。从Juniper的一个白皮书(Characteristics of Switches and Routers)可以看出,Juniper也是按照这个经验法则设计的。

但是最近的一些研究认为(sizing router buffers, Guido Appenzler, Isaac Keslassy, Nick McKeown),其实路由器不需要那么大的内存,每个端口只需要缓冲几十个报文就足够了,这样用NP或ASIC内嵌的RAM就够了,不用配置外部RAM。他主要依据是以前的经验法则是根据单TCP流来推算的,作者认为这个模型不对,实际的骨干路由器上是有很多TCP流的,因此应该按照B = C * RTT / sqrt(N)来计算,N是TCP流数量。但是另外一些研究则认为这个结论不对,路由器上不能只考虑TCP,还有很多急于UDP的语音和视频应用。反正在教授们之间,这个问题至今仍然没有一致的意见。工程师已经不再争论这个问题了,就按照B = C * RTT来设计,成本可以接受,而且也比较安全:)

(10个打分, 平均:4.50 / 5)

谷歌神奇不再的原因

《华尔街日报》报道,谷歌又一名高管跳槽去了创业公司。这已经是一年内谷歌失去的第三位高层了,而他们的去向都是创业公司。这凸显出了谷歌面临的一些巨大问题。究竟什么让谷歌神奇不再?

      三大谷歌跳槽员工

1.Deep Nishar,前谷歌产品高层

这位前谷歌Executive今天宣布离职,去了背景雄厚的Linkedin.com,负责产品和社交业务。
这位产品经理绝非泛泛,是谷歌大量产品的幕后英雄之一,得过谷歌最高荣誉奖章的。

Linkedin的创始人Reid Hoffman在得到这位大将后将可以从产品设计抽身到董事会进行战略运营。

(Reid Hoffman是著名的“Paypel黑帮”一员,所以Linkedin能在“冬天”筹到总计5200万美元投资和不断加入的人才。)

2.Sheryl Sandberg,前谷歌在线销售和运营副总裁

这位现年39岁、声名显赫的姐姐连续几年被华尔街日报评选为最有影响力的商业领袖。
  作为哈佛1991年最佳毕业生、1994年最佳MBA毕业生,她带领谷歌Adwords、Adsense团队创造了历史。
  在2008年初,她去了Facebook.com担任CEO,任务是把Facebook的130M活跃用户变现为free cash flow。

 

 

3.Douglas Merrill,前谷歌副总裁

这位更像actor的谷歌前VP去了EMI的数字音乐部门担任CEO。

谷歌失血严重

谷歌“失血”情况确实已经到了需要重视的程度。
Facebook产品主管Ben Ling、商务拓展总监Ethan Beard、CFO的Gideon Yu、厨师长Josef Desimone,
都是在一年半里从谷歌跳槽去Facbook。 
同时,大量的高级工程师和管理人员也从谷歌离职,
自行创业或加入Zillow、FriendFeed、Twitter和Xobni等创业公司。
 最要命的是,现在连谷歌的CEO:Eric Schmidt,也有可能应奥巴马之邀担任美国政府“CTO”。

这家硅谷的搜索巨人,正面临着严重的人员危机和经济危机。

  谷歌失血原因

这种情况发生在谷歌身上的原因大致有5:

1.谷歌收入将下滑,神话不再。

市场调研机构Global EquitiesResearch前天发布预测,谷歌2008年营收为157.1亿美元,
确定其2009年为152.3亿美元,而2010年为145.7亿美元。
这份对谷歌业绩的严重质疑和华尔街分析师们的预测大致相同。
同时,谷歌的股价也已经比巅峰期掉价了一半。
谷歌发展前景不如以往,是谷歌高管们寻求新机会的一大原因。

2.大公司病开始显现。
 谷歌的创业文化随着公司人员的增加而逐渐稀释。
近1年来,谷歌的新产品数量和质量远不如创业初期。
Open social的名存实亡、Page Rank规则的不断被挑战、G App与普通用户的超远距离,
以及谷歌对移动互联网的扩张、wireless基础设备的建设等“不专注”行为,
都在让谷歌渐渐地失去其硅谷地位和人心。

3.期权基本套现,人心思动。
  谷歌上市近5年,限售期早已满,所以高管们已经把手中的期权售卖殆尽。
  对于科技创业公司,没有了期权的约束和激励,人才的流动性会加倍。

4.风险投资压力让谷歌无法专注。
  红杉资本和KPCB至今仍坐在谷歌的董事会里。这是什么概念?
  这就等于,这两家风险投资商在投资了科技项目后,可以轻松地要求谷歌把它收购掉,从而套现离开。
  当你的“师傅”扣着你的股价和董事会,逼迫你用一个离谱的价格购买你的“小师弟”时,
  你能说不?(比如谷歌16亿美金购买他们投资的Youtube,失败至极,但是两位“师傅”套现了。)

5.后起小公司的强力追逐。
  Facebook、Linkedin的增长率明显快过谷歌,新媒体的机会也都层出不穷。
  对于已经不缺钱的谷歌高层员工来说,创新和创造下个谷歌的机会,将是他们离开谷歌的最大动力。

(5个打分, 平均:4.00 / 5)

宽带路由器杂谈

宽带路由器杂谈
欢迎交流,email: mphyatyh (at) yeah (dot) net。
黄岩, 2005。

0、用户需要什么

作为用户,我们理想的宽带路由器应该是:

1、 功能和性能可以满足现在的需要。
2、 稳定可靠,最好能够使用10年不死机,不维修。
3、 价格便宜,越便宜越好。
4、 性能越高越好,最好是让我们感知不到这台设备的存在,就象直接用以太网线连接起来一样(在wan口和lan口之间)。
5、 功能可以满足未来需要,功能越多越好,未来需要的功能全都有了。如果现在没有,在需要某个功能的时候,最好能够及时得到最新的软件版本。
6、 操作简单,易于使用。最好不需要阅读《操作手册》,网线插好,开电就能够工作。

以上6条是判断标准,重要性依次递减。下面进入主题,讲一讲我们具体如何判断。

1、功能和性能可以满足现在的需要

这一点最重要,也是必须的。应用场合不同,解决的问题不同,功能和性能需求也不同。宽带路由器最典型应用场合有下面几种:
A、 个人用户,家庭上网。
B、 网吧。
C、 中小企业,办公室上网。
D、 中小企业,连锁店与总部之间互联,主外分支机构与总部之间互联。

1.1、 个人用户
个人用户需要宽带路由器的原因可能是:家里面有多台计算机需要共用一个账号同时上网、限制小孩对某些网站访问、防范病毒和黑客的攻击等等。在选购宽带路由 器的时候,一定要搞清楚自己为什么需要这个东西,这个东西能够给自己带来那些好处。关于这一点,有一些常见的误区:比如认为宽带路由器能够加快上网速度想 法可能就是错误的。现在多数宽带Internet接入运营商使用的认证方式都是PPPoE,也有少数使用802.1x和Web方式的,多数宽带路由器都支 持PPPoE,但是后面两种多数都不支持。
个人用户不需要很高性能,ADSL号称“上行1.5M,下行8M”,但是实际上很多地方的运营商对个人用户的带宽进行了限制,多数不超过1M。以太网也查 不多,由于很多用户共享有限的运营商出口带宽,加之很多运营商网络都有防火墙、宽带接入服务器(BAS)、三层交换机、路由器等,这些设备往往会成为瓶 颈,一般实际可用的带宽在1M以下,并且还不能得到保证。
防火墙、NAT、ACL、PPPoE、DHCP这是现在宽带路由器的典型功能。另外一些我们需要的功能,多数宽带路由器不能提供,例如:
A、 我希望宽带路由器有一个RJ11的电话接口,能够让我不开电脑,接一个电话机就可以利用skype打长途电话,最好还能够有一个接程控交换机的接口,这样我就可以长途电话用skype,本地电话用PSTN,宽带路由器自动选择路由。
B、 我希望宽带路由器能够帮助我检查邮箱里面是否有新邮件,如果有,就亮某个灯来通知我,免得每天都要开计算机检查邮件,每开机一次至少需要10分钟(这个功能实现起来应该不难)。
C、 宽带路由器最好有一个USB接口,这样我就可以把移动硬盘接到它上面,用bt自动进行下载,免得计算机整天开着。

1.2、网吧
网吧需要的功能:NAT、访问控制(防病毒、防攻击)、PPPoE认证、DHCP服务器等功能。相对于企业用户和个人用户来说,网吧是对宽带路由器的功 能、性能、稳定性的要求最高。网吧的主要应用是:聊天,包括文字、语音、和视频三种聊天方式,对延迟时间和带宽的要求都比较高;游戏,各种大型网络游戏, 对带宽和延迟时间的要求也高;看电影,对带宽要求高,延迟时间要求不高;大数据量下载,对带宽要求高。
除了对性能的要求之外,网吧里面还充斥着各种病毒和攻击。网吧的开机时间很长,从早晨8:00到晚上0:00。
网吧对路由器故障的容忍度很低,如果路由器坏了,花一到两天时间给他换一个新的,个人用户完全可以容忍,甚至会认为服务很好。但是网吧却完全不能容忍,1 -2天时间损失的营业利润已经相当与一台新的路由器了。如果遇到这种情况不能马上解决,一般来说网吧老板会立即决定重新买一台新的,其他品牌的。
所以我建议网吧老板,如果你不能确定你的路由器是否非常可靠,那么最好买两台,一台主用,另外一台备用。备用的路由器可以选择性能比较低的家用型宽带路由器,但是功能一定要满足要求。一旦主用的坏了,备用的立即顶上。

1.3、中小企业
对办公室上网来说,与家庭用户差别不大,只不过性能要求稍高一些,如果用户不多(例如不超过20个),则可以选择稍稍好一点的家用型宽带路由器。
对分支机构与总部互联这种应用,严格来说,需要的是VPN设备。通过互联网把分支机构连接起来,上面传输的是:公文、帐务等重要数据,这些数据需要保密, 并且不能出差错。一般来说,除了传输数据之外,最好能够有VoIP功能,因为这些分支机构内部的电话比较多,VoIP可以节约电话费用。除了以上这些对产 品的要求之外,企业用户要求有非常良好的售后服务,因为中小企业用户不会专门设置自己的网络管理员,这样成本比较高。另外,这类用户对可靠性的要求也比较 高。宽带路由器满足这种应用存在一定困难,首先是售后服务难以达到企业用户的要求,因为宽带路由器大多采用分销方式进行销售,销量大,价格透明,提供良好 售后服务的系统集成商都不会选择宽带路由器,没有利润,这样做有可能亏本。宽带路由器厂家也不会有全国性的、完善的售后服务系统。建议这种应用不要选择宽 带路由器,最好选择传统的路由器、或者VPN网关。

2、宽带路由器的性能

目前市场上多数宽带路由器的吞吐率都能够达到10k pps左右(注:pps即packet per second,每秒钟转发的报文个数,通常用来衡量路由器、交换机等设备的转发性能,10k pps大约相当于8M带宽,多数应用的报文尺寸都比较大,例如FTP、HTTP等都是1500字节),多数宽带路由器都能够满足个人用户需要。
有一点需要特别指出,有些路由器设备存在这种现象:就是当发往路由器的实际流量远远超过它的实际处理能力的时候,路由器可能出现不转发任何报文、或这者实 际吞吐率非常低的现象,有些技术资料上把这种问题叫做“live lock”,活锁.smartbits测试吞吐量的方法不能反应这种问题,smartbits的方法是,只要有丢包,就减小发送速率,直到不再丢包为止, smartbits只报告达到收发平衡的吞吐率。产生这种问题原因是,路由器的转发算法有问题,一般宽带路由器的转发过程是:当路由器的以太网mac部件 受到一个报文之后,随即产生一个中断信号,通知CPU处理这个报文,这是CPU的报文接受中断处理程序被激活,对这个报文进行简单处理之后(把报文从‘接 收环’上卸载下来,重新分配一个新的空报文缓冲区,并把它挂到‘接收环’上去,应答中断),这个报文被交给负责转发处理的线程,然后由线程负责为这个报文 查找发送接口(用该报文的目的IP作为key查找路由表)、进行NAT处理、进行防火墙功能处理、进行更加复杂的QoS分类,并把报文送入不同的QoS队 列,根据调度策略决定从那个队列中取出报文,把报文送入‘发送环’。多数路由器都是这样的,不同的操作系统过程大同小异。从以上过程可以看出,路由器转发 报文的处理过程分为两个阶段:中断处理阶段、线程处理阶段。一般在操作系统中,中断处理程序的优先级高于所有线程,当报文计入路由器的速率足以达到所有的 CPU处理能力都花在接收中断处理程序中都还不够的时候,那么负责报文转发处理线程就无法得到调度了,这就是问题产生的原因了。很多主机操作系统也由同样 的问题,不信你可以试试,用smartbits对Windows98或Windows2K猛发报文,看会出现什么情况。
值得注意的是,除了吞吐量这个指标之外,还有另外一个衡量性能的指标,那就是转发延迟时间,也就是一个报文通过宽带路由器这个转发设备所需要的时间,举例说明:如果网络上没有这个宽带路由器,从 www.sina.com 发出的报文到达我的机器需要0.11秒,增加了宽带路由器之后,这个时间变成了0.14秒,那么这台宽带路由器的报文转发延迟时间就是0.03秒,30毫秒。这个指标主要影响诸如视频聊天、网络电话等应用,如果用户不使用这一类程序,那么也就不需要关注这个指标。在路由器内部,转发延迟由两部分组成:报文移入移出延迟、报文处理延迟。我们可以把报文转发过程想像成一列火车通过火车站,由这个车站给火车带来的延迟也包括两部分:进站出站时间、等待调度的时间,报文被从线路上逐个bit 移入路由器缓冲区的过程就相当于火车进站,路由器处理这个报文相当于火车停在车站等待调度。对于100M接口的宽带路由器,报文移入移出延迟时间是固定 的,大约0.12毫秒左右,报文处理时间则不尽相同,我们作一个估计,假设宽带路由器的采用100M主频的CPU,平均每条指令需要1.5个时钟周期 (CPI=1.5),由于cache missed增加了70%处理时间开销,平均处理每个报文需要10000条指令,繁忙时平均中断响应时间是1000个时钟周期,那么报文处理时间大约是: (10000 + 1000)*1.5 *1.7 / (100 * 1E6) =0.00028秒 = 0.28毫秒。根据以上估计可以看出,一般宽带路由器的转发延迟应该不会超过10毫秒,都能够满足要求。一般来说,VoIP应用可以容忍20ms的延迟。
上面讲到了报文转发的一般过程,下面我们再讲一讲提高路由器转发性能的方法。无论那种方法,思路都是一样的,就是减少每个报文的处理时间,举个例子:路由 器需要为每个报文查找路由表,一遍决定把这个报文转发到哪里,那么改善路由表的查找算法,是多数路由器软件编写者首先想到的办法。有一个简单的做法,就是 把每次查找的目的地址、以及结果都暂时存储在一个全局变量中,当新的报文到达时,先比较一下这次的目的地址是否和前一个报文的目的地址是相同的,如果是就 直接利用上一次结果转发这个报文,不是就再重新查找路由表。过程如下所示。

Interface_t *last_result;
Ip_addr_t last_destination_addr;
interface_t *find_output_interface(packet_t *packet)
{
if (packet.destination_addr == last_destination)
return last_result
last_destination = packet.destination_addr;
last_result = search_output_interface_in_route_table(packet)
return last_result;
}

因为在某一段时间内,宽带路由器的用户总是倾向于与同一个目的站点进行通讯。因此对未经任何优化的路由器软件来说,这种算法有很好的效果,极大的减少了查 找路由表所花费的时间。如果这个报文的目的地址与上一次的一样,只需要对引用内存一次,就可以得到结果了。这种方法对于smartbits的吞吐量测试特 别有效,因为smartbits总是是用固定的IP地址进行测试。但是这种算法对于位置稍稍靠近网络核心一点的路由器来说,就不太管用了,因为这些路由器 需要同时处理很多报文,这些报文的源地址和目的地址都不相同。为此,Cisco是用一种他成为CEF的加速算法,其实没有什么神秘的,简单的说,就是利用 256叉树替代了上面那两个全局变量的作用,这个不再展开讨论。
除了对查找路由表进行优化之外,对其他方面的优化更为重要,例如:缓冲区管理算法、NAT和ACL的算法。一般来说,路由器的操作系统都是多线程、多任务 的操作系统(例如:vxWorks、pSOS、ecos、uCos、nucleus、Linux等等,Linux是利用核心线程来实现bottom half的,本质是一样的),因此就会涉及到利用各种同步机制(信号灯、中断锁、消息队列等等),来保持数据一致性,这些同步机制也是造成报文转发性能下 降的一个重要原因,因此进可能在中断处理程序中完成所有报文转发处理过程,就是一个最容易想到的解决这个问题的方法。
路由器转发性能的优化,更多的是靠一点一滴的改进,是日积月累的结果,是滴水穿石的硬功夫,绝不是靠什么“专利技术”一举突破,也不是靠一点小窍门就能够 达到的。注意哈,很多厂商都是这么宣传的,这个不真实。(现在这个领域的专利也是一个值得探讨的话题,绝大多数情况下,专利都没有起到保护知识产权的作用,似乎更多的是作为“狗咬狗”的工具。)接着上面的主题,这个‘滴水穿石’跟CPU设计领域里面提高主频有点类似。举几个例子:通过函数指 针来调用函数,比直接通过名字调用的性能会差很多。CPU内部cache利用率也是非常影响性能的一个因素,如何更加高效的利用指令cache,有效的减 少算法的footprint,是一个需要花费很多时间研究的课题。如何有效的利用数据cache,是另外一个问题,比如一个常见的规则是:把结构中最常用 的数据成员放在最前面,让他们处于cache的同一个块上面,这种做法除了可以减少cache的missed次数之外,还可以让这些数据尽可能放在 sdram的同一个行里面,即使数据在cache中不能命中,也可以减少访问sdram的时间开销。尽可能减少对PCI总线的访问,因为PCI比较慢,开 销较大。上面只是简单的列了几条最常见的经验,这几招是远远不够的。除了这些之外,还需要有一些调试和测试方法,例如你怎么测量执行某个函数花了多少时 间。

2、路由器的稳定性

在这个领域中,稳定性不是一个专业术语,但是却应用非常频繁。用来描述网络设备稳定的两个词是可靠性和可用性,下面先来介绍这两个基本概念。
所谓可靠性的衡量指标是路由器不停机正常运行的时间,也就是所谓MTBF(mean time between failure),两次故障之间的间隔时间。按照市面上的说法,电信设备要求这个数字是2000-2700天,或者5万小时,也就是说要求设备5-7年不 死机,不出故障,其实几乎所有设备都达不到这个数字,甚至连航天飞机、大型民航客机都达不到。(最近的哥伦比亚号,快发射的时候一个传感器就出问题了,最 后找到了一个“最可能的原因”,认为“风险不大”发上去了,结果刚一上去,隔热材料也出问题,现在还在天上修呢,不知道修好没有。航天飞机是当今世界在可 靠性上面成本投入最大的一个人造设备,表现也不过如此。)
扯远了,再回来。另外一个词,可用性,在该产品的服役期间无故障运行的时间所占的比例,一般这么来计算可用性,无故障运行时间 / 总运行时间,也可以这么来计算MTBF /(MTBF + MTTR),这个MTTR就是平均修复所需时间(mean time to repair)。由此可见,可靠行和可用行之间是有一定关系的,他们之间的区别是什么?区别就在于这个MTTR,可用性关注两个方面:1、产品无故障运行 的时间,约长越好;2、产品从故障中恢复的时间,月短越好。在这里有必要解释一下‘故障’这个词的含义:指产品主要功能失效,导致产品完全不可用。可靠性 不考虑产品的修复时间,认为修复产品是没有意义的。对于大型民航客机、航天飞机、战斗机、航空母舰来说,更多的应该使用可靠性这个指标。但是对于网络设备 来说,使用可用性比较好。
这些枯燥的概念说明什么呢?举两个例子,说明怎样利用这些概念。对于宽带路由器来说,增加可用性的方法有两大类,其一就是增加MTBF,比如选用更好的器件,严格监控生产质量,增加设计裕度等等。另外一类就是减少MTTR,这方面我们一般用户就不是特别关注,但是非常重要,比如增加本地分销商的备机数量, 一旦路由器坏了,可以再短时间换一台新的,尽量减少故障时间。有一些设备运行时间长了就会出问题,有些是软件问题,比如内存泄漏,有些是硬件问题,比如某 些元器件的质量不过关,不能长时间连续高负荷运行,那么可以采取下面这种办法临时解决问题,每天夜里2-3点业务量最少的时候,休眠10分钟到半个小时, 然后重新启动一次。这叫做有计划的停机维护,不对业务产生负面影响,不算failure。
影响路由器的稳定性的因素有两个方面(这里继续使用稳定性这个模糊概念),硬件的稳定性、软件的稳定性。对于软件的稳定性,一般是从软件工程化的程度去考 察,认为工程化程度高,软件的质量就高,稳定行也就高。除此之外,似乎还没有出现其他更加有效的,被大家公认的软件稳定性的测量方法。下面解释什么是软件 的工程化程度,这个行业里面的多数人认为,软件开发过程也跟建造楼房过程类似,也就是说这个过程可以分成很多个阶段(无论是瀑布模型、还是螺旋模型,都是很多个阶段),每个阶段都要完成某些特定的工作,不同阶段之间需要有明确的分界线,一个阶段结束的时候,要通过某种正规手续来确认这个阶段的工作已经结束,这个阶段的任务已经完成,这个阶段的工作成果是下一个阶段工作的基础,因此这个阶段一旦结束,这个阶段的工作成果就要保持稳定,不能再随便变更了,因 为如果‘基础变了’,就会给下一个阶段带来很多问题。打一个比喻,国家大剧院的设计图纸一旦确定了,设计阶段就完成了,施工阶段开始之后,设计图纸就不能再随意变更了(不是完全不能变,小的改动还是可以的,但是大的改动就不行了,比如从鸭蛋型改成正六面体就不行了)。每个阶段的确定的任务就是这个阶段的基线(baseline),传统的软件工程方法要求,基线应该有明确的书面的描述,有明确的验收标准。验收报告应该用纸件存档,编、审、批要签字。最近有一 些新兴的软件工程实践学派,例如敏捷方法等,似乎要求不再那么严格。简单的说,软件工程就是要遵循“循序渐进、步步为营”的原则作事情。
上面是对软件工程概念的一个简单介绍,为什么大家认为软件工程可以保证软件的可靠性呢?在传统的产品质量研究领域,过程决定论的思想占据了统治地位,过程决定论的意思是说:产品生产过程的稳定程度决定了产品的质量,通过一个稳定的、成熟的生产过程生产出来的产品的质量也是稳定的,如果其中一个产品的质量比 较好,那么可以推想,同型号的其他产品的质量也是比较好的。稳定的过程能够保证同型号的产品“要好都好,要差都差”。软件工程可以保证软件质量的观点,就是对“过程决定论”的继承和发展。
我个人认为,过程决定对于传统工厂生产出来的产品几乎是正确的,但是对于软件来说,这种观点并不完全符合实际情况,只是可以起到一定作用。对于传统产品的生产过程,每个环节都是简单的重复上一次的动作,重复得越精确,产品质量就会约稳定,这种重复并不困难。但是对软件来说,这个假设不成立。对于这个问题,现在还没有出现更好的、被大家公认的理论工具。
过程决定论对于软件来说虽然不是完全适用,但是软件工程却是这个时代的“最佳实践”,这个还是有一定道理的。虽然软件是智力产品,每个软件产品都是不一样,都必须经过重新思考。但是软件开发过程还是有一些共性的东西,比如我们开始编写软件之前,认真的思考一下这个软件应该包括那些功能,应该解决那些问 题,如果能够把这些想法用文字描述出来,这是很有好处的,第一,这种方法可以促使开发者更加清晰的理解这个软件是什么。第二,这种方法对于开发团队成员 “统一思想”有非常重要的作用,每次开发一个软件之前,先开一个类似党的十六大这样的团结的、胜利的大会,并发表一个类似《十六大报告》这样的一个纲领文件,我们程序员把这个东西叫做SRS,Software Requirements Specifications,也就是软件需求规格说明。第三,如果以后这个开发团队解散了,这个SRS文档就是重要的成果,对于以后负责维护这个软件的人非常重要。就像《十六大报告》对于以后的历史学家的作用一样。软件工程除了SRS之外,还有很多其他的方法,美国卡内基梅隆大学(CMU)的软件工程研 究所(SEI)对这些方法进行了一个系统的总结,都写在CMM的文件中,CMM这个东西叫做“软件过程能力成熟度模型”,是目前最流行的软件工程方法的一 个总结。(我写的这篇文章是技术随笔,不是正式的论文,所以可以随便使用“流行”之类的词,对CMM来说“流行”这个词似乎更贴切,就像几百年前最先进的政治理念是“王道”、“以民为本”,而现在流行“民主”:)
下面说说如何评判硬件稳定性?如何改善硬件的稳定性。前面已经描述了过程决定论,这个学说也是电子产品硬件质量的理论基础。我们从下面几个方面来描述硬件质量。
首先,我们要看这个厂商的质量管理做的如何。何为质量管理?前一段实践CCTV的“每日质量报告”节目报道,某个烧鸡生产厂家为每个烧鸡都贴了一个条码, 用户如果发现这只烧鸡有问题,可以通过这个条码很快查到关于这支烧鸡的各种信息,包括:活鸡是那个养鸡户提供的、那一天入厂的、入厂检验员是谁、每道工序 都是那个员工处理的、出场检验员是谁、何时生产的、何时出厂的、发运给那个经销商了等等,这个就是质量管理的一个例子。目前很多电子产品生产厂家的质量管 理工作还不如上面哪一家烧鸡作坊。除了每个产品要有序列号,要贴条码之外,质量管理还有很多其他工作,简单的如:生产过程中每个环节都要签字,并且要管理 好这些签字的文件,复杂的如要统计产品质量数据,例如退返率、一次直通率、生产合格率等等,除此之外还要负责组织对失效产品进行分析,并根据分析结果来改 进生产过程,要管理产品的失效模式库,要跟原材料厂家进行原材料质量信息沟通,负责组织落实“问题整改措施”等等。这些工作都属于质量管理部门的职责,如 果一个电子产品生产公司没有公司一级的(直接对总经理负责的)、专职的质量管理组织,那么基本上就可判定,这个公司的产品质量不会太好,至少可以说“产品 质量没有保障”。如果你是大宗采购路由器的客户,你就可以要求对方提供前面提到的这些“XX率”的数据,并且要求对方提供详细的统计方法、统计流程,并且 要求检查一些统计流程的原始材料(有员工签字的XX单),补充一点,要求对方加盖公章,如果对方提供虚假数据,你可以据此索赔。
路由器是一个技术密集型的产品,要保证硬件质量,只有质量管理方法还不够,还必须具备必要的技术手段,硬件设计师必须具备足够的技术经验。这些技术手段包括要有一整套的硬件测试方法,硬件失效的分析方法,硬件设计要遵守严格的流程等等。
硬件测试方法包括:对电源的专门测试方法(对电源干扰容忍能力,对电源老化试验)、对安全规范的测试和审查(路由器品应该是安全的,不能引起火灾,不能危 及人身安全)、在不同温度和湿度情况运行试验、震动试验、跌落试验、电磁效应试验(EMI)、瞬间耐压试验(也就是防静电试验,ESD)、电磁脉冲试验, 盐雾试验(海边,或者远洋轮船上的路由器需要这种试验),霉菌试验,高强度噪声试验等等。如果你是大宗采购的客户,可以要求对方提供这些试验报告。对改善 产品可靠性比较有效的一种试验是HALT试验(也叫高加速寿命试验),也就是对产品加上比较高的“应力”,加速产品的失效过程,电子产品一般使用比较高温 度的温度交变试验,这种试验可以加速电解电容等容易失效的器件的老化过程,也可以加速质量不好的焊点的失效,可以有效的发现产品设计和生产过程中的问题。
除了上述的试验和测试方法之外,要有必要的分析方法。例如某一批路由器的电容的损坏率较高,怎么分析原因?怎么进行改进?晶体振荡器坏了,怎么办?某一批路由器的一个BGA封装的芯片焊接成功率较低,怎么办?要解决这些问题,需要有一些技术方法。这里不再详细讨论。
硬件的研发流程,跟软件研发流程的思想类似,这里也不再详细讨论。
除了上面这些东西之外,最重要的还是设计人员、生产人员的能力和经验,与“过程决定论者”相比较,我自己更象是一个“人才决定论者”。如果没成熟的、有工 作能力的员工,所有的过程、方法、管理都是空的,无法发挥作用。(如果你是大宗采购者,是否可以要求看供应商员工的履历表?:)

3、作为用户,如何选择

作为用户,应该如何评价路由器的性能呢?我们更加看重的是路由器在我的环境中的表现,不是厂家声称的结果,也不是测试的结果。因为测试结果并不能全面反应 路由器在我的环境中表现出的性能。上面已经举了两个smartbits测试问题的例子了,这里再举两个例子:1、有些厂家的路由器在没有配置ACL和 QoS的时候,测试结果性能表现很好,我可能需要配置很多条ACL,可是一旦配置了一条ACL,这个路由器的转发性能就一下子下降了一大截子。2、有些厂 家的路由器提供了一个开关,一条特殊的配置命令,只有当这个开关打开的时候,测试出来的路由器的性能才比较好看,否则性能就没有那么高。厂家也不推荐用户 在实际使用的时候打开这个开关,因为这样可能导致路由器运行不稳定。这里面的名堂有很多。总之一句话,不要看广告,要看疗效:)
我们有些用户可能会说,除非我买了一台路由器,用过了,才知道疗效如何?否则我怎么知道?这里告诉大家一些方法:1、多打听,多问,注重口碑。一般来说, 用户不会骗用户,如果你要开网吧,就去问问其他网吧老板用的是什么路由器,效果怎么样。中医中药能治病,就是这个道理,靠的是几千年的经验的积累,不断的 总结,不断的传播。我从来不相信中医的那些玄学理论,但是我相信中医能治病。2、看品牌,品牌是不完全是广告的结果,也是口碑效应的一种体现。大厂商为了 维护自己的品牌,会非常注重产品的质量。

4、作为路由器提供商,应该如何做

作为路由器提供商,首先应该作的事情就是踏踏实实自己的改进工作质量,提高自己员工的素质,认认真真的解决用户反应的问题。
还有一点非常重要,就是如实的向客户提供有关产品信息,并以此与客户之间建立相互信任的关系。必须清楚,信任是所有生意的基础,没有信任,就没有生意。但 是在这个行业里面,许多厂家这一点作的都不够好。下面举几个例子:1、某比较有影响力的大厂商对同一款设备,在英文网页和中文网页所给出的技术指标是不同 的,中文网页给出的技术指标很高,英文网页给出的指标似乎更象是实测值。2、很少有厂家把Bug-list开放给用户,厂家已经发现的Bug还在继续给用 户带来损失。3、很少会有厂商主动提供质量统计数据,但是很多大厂商都有这些数据。4、很少有厂商对客户开放故障模式库的信息,很多大厂商都有这种信息。 为什么不这样作呢?主要是担心遭到竞争对手的攻击,自己太透明了,就很容招致攻击,的确存在这样的问题。但是也要看到,透明也有他的好处,那就是更容易取 得客户的信任。如果你是客户,你会选择什么样的厂商呢?

5、结束语

这是一片技术随笔,尽管没有一个主题,但是也提出一些观点,共大家参考。

(1个打分, 平均:1.00 / 5)

著名院校介绍–厦门大学

(没有打分)

著名院校介绍–同济大学

(没有打分)

著名院校介绍–北京航空航天大学

(没有打分)

著名院校介绍–清华大学

(没有打分)

陈怀临时间–陆奇要感谢杨致远与雅虎

(1个打分, 平均:5.00 / 5)