Netscreen的岁月 之七 NS-1000

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




Netscreen的产品,一直以ASIC和高性能著称。真正的ASIC产品,其实是在第三代芯片,也就是Saturn出现后才实现。之前的两代ASIC, Pluto和Neptune,都只实现了ACL规则搜索和VPN加密的功能,根本没有实现防火墙的核心—流转发。不过时间不等人,我们必须要推出下一代千兆防火墙。

99年的春天,邓锋把柯严,老毛,老黄和我叫到会议室里,讨论怎样实现千兆性能。当时的处理器性能很低,总线也是个瓶颈,32位的PCI总线也就能实现最多700Mbps的数据通过能力。后来我的方案最终被大家接受,就是用10个NS-100处理板,前面放上一个负载均衡处理器,就可以实现千兆处理能力。最终这个项目由老黄和我负责,老黄做软件,我做硬件。

接着问题又来了,负载均衡的处理性能要求很高,必须用FPGA来实现。可是当时ASIC组的人都在忙Neptune,根本没有人力去做这个FPGA。我看到邓锋很为难,自告奋勇由我来做这个FPGA和转发接口板。我之前没有学过任何高级芯片编程语言,最多也就是用ABEL写CPLD。买了本VHDL的书,一边学一边写,还要做板子设计。最后总算是不辱使命,一直到这个产品的生命终结,都是我在维护这个FPGA。

这是我第一次接触千兆光纤端口设计,其中涉及125MHz的GMII和1.25G的差分对信号线。第一个原型机出来后,基本上都正常。但是负责软件的老黄很快发现,板间的数据转发光纤端口会出现大量的CRC错误。我先是怀疑差分对的信号质量不好,但是当时我们没有钱买仪器,示波器是最低端的Tek100,到网上读了许多资料,修改PCB设计情况都没有好转。

CRC问题拖了好几个月,我的压力非常大。那时销售们一直在要求尽快出NS-1000,项目拖延的症结也明显在硬件。好在邓锋从不催我,他大概帮我顶住了许多压力。

事情的转机是非常偶然的。我从当时Motorola的网站上读到一篇技术文章,提到时钟抖动和误码率的关系。这一下提醒了我,之前我已经试了无数种可能,几乎已经山穷水尽,就是没有怀疑过晶振。立马到Digikey找了一款Epson的低抖动晶振,结果是药到病除。

这段时间是我硬件设计水平提高最快的阶段。之前基本上是知其然不知其所以然,懵懵懂懂的。为了解决这个问题,我把能读到的技术文章都通读了一遍,遇到原厂FAE,也抓过来问一通;做FPGA设计,对时序,状态机,DRAM接口都理解得更为透彻。有时回过头来想,困难真是最好的老师。

NS-1000是基于CPCI架构,选择CPCI,是因为有现成的机箱可以使用。产品经理们一直抱怨我们的面板设计太简陋,因此前盖板的设计工作就分配给生产部。最终拿回来的前面板让我们大吃一惊,它是用整个的铝锭蚀刻切削而成,成本每块三千美金。后来有好事者把这个面板置换到一个微型冰箱的面板上,倒也非常合适。10年以后,我发现Apple居然盗用了我们的创意,iPad的背壳也是用整块铝锭切出来的,可惜当年没有申请专利。

:)

回过头来看,NS-1000初期设计非常草率,当时没有串行背板的技术,邓锋的主意是用千兆光纤在前面板把处理板和交换板连接起来。打开前面板,用户可以看到几十根飞得乱七八糟的光纤电缆,可以说没有任何美感可言。因为要冲进度,软件质量也不稳定,到客户那里一塌糊涂。

然而,当时NS-1000的快速推出,奠定了Netscreen在防火墙市场上的一哥位置。其实当时Netscreen的研发团队水平一般,我在做这个项目之前,对信号完整性简直是一无所知;软件也好不到那里去。不过我们都有一种初生牛犊不怕虎的精神,也就是老美所说的 “can do”的工作态度。通过这么一个远谈不上完美,甚至有很多缺陷的产品,为后来一系列真正领先的架构和技术奠定了坚实的基础。

老黄负责软件,NS-1000让他吃了不少苦头。因为要支持处理板的板间冗余,会话同步非常麻烦,费了好大劲才稳定下来,但还是有不少bug。这也促使Netscreen 下一颗伟大的芯片Saturn的诞生。

—————————- 版权所有 Hillstone 老童 欢迎转载  —————————-

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

雁过留声

“Netscreen的岁月 之七 NS-1000”有3个回复

  1. lucky 于 2011-09-23 8:40 上午

    果然是强人,看来人都是逼出来的啊,就算不会的东西也逼得精通了

  2. 弯曲是山石内部论坛吗? 于 2011-09-23 9:07 上午

    感觉最近弯曲更像山石内部论坛了,被收购了吗?

  3. 理客 于 2011-09-23 9:14 上午

    硬件设计,时钟是最关键的技术之一,时钟搞不好,就很难做好硬件