2002年我开始构思下一代高端平台。NS-5400和Saturn毕竟有许多先天的不足。这段时间公司并购了一家做IPS的公司,叫OneSecure。 OneSecure的创始人是Nir Zuk, 一个以色列人,之前在Checkpoint干过。我就在考虑如何能够在一个系统里同时支持Firewall和IPS,甚至包括和Trend Micro合作的病毒防护功能。把别人的软件融合到ScreenOS里是不现实的,软件升级很麻烦,bug又多,还把整体性能给拖下来了。
因此我设想规划四个内部处理模块,除了防火墙主控CPU外,还可以支持另外三个CPU板,板间通过Xilinx FPGA的Rocket I/O串行总线相连,拿ASIC和一颗大FPGA组成交换总线板,前面板还有固定端口和4个接口扩展槽 。有了三个CPU板,类似IPS和AV的处理功能就可以跑在各自独立的操作系统上了。事后证明,这是一个非常优越和超前的设计。后来Netscreen的IPS主要通过这个平台销售,始料未及的是,客户大多买的是独立的IPS系统,因为通过三块双CPU卡加速的IPS性能已经可以与一些专业硬件加速的平台相竞争。
我给这个项目取了一个代码名,叫Tasmania。 原因是公司每年都有President Club,拉业绩优异的销售去风景优美的地方有吃有玩,让我们一帮工程师十分眼热。他们也请工程师,不过只请支持过项目的工程师,而且每年就一个名额,那就只有测试组的人才有资格参加。那一年,他们去的是澳大利亚的Tasmania岛,我留了这个私心,希望产品大卖的时候那帮销售能够想起我来,不过到我离开,这个心愿也没有实现。
这个设计构想没有异议地得到了大家的支持。不过后来Raymond找到邓锋,担心Rocket I/O技术太新,会有风险。在他俩的坚持下,第一版还是用传统的FIFO bus作为主数据通道,但是我还是要求FPGA一定要支持Rocket I/O,可以不用但是生产时要可以测试。多年后,我离开了Juniper,老兄弟聚会的时候,有人还提起幸好当年留下了Rocket I/O,解决了板间互联的性能问题,这个平台才能支撑那么久。屈指一算,ISG-2000在市场上活跃了八年,可谓长寿矣。
这次做ISG-2000,软件方面又是老搭档老黄来负责。其实当时整个软件部门也在讨论大的改变。创业时柯严写的ScreenOS操作系统,修修补补多年,已经不敷使用。首先要解决的是内存保护的问题,不然一个飞指针就能把系统搞死,太可怕了,尤其是代码量越来越大,新手不断进入,这个问题非解决不可。
2000年底,陈怀临加入Netscreen。陈怀临就是现在大名鼎鼎弯曲评论的创始人,他在这个项目上的工作首先就是给ScreenOS加上内存保护,基本上是改变直接寻址的模式,转而用虚地址和MMU映射,一旦发生内存overwrite,CPU会启动Exception,这样就可以定位问题了。
ISG-2000用的是PowerPC G4,而且麻烦的是,为了追求性能,我设计了两片处理器,跑在一个LVTTL并行总线上。从电路设计上,这是我遇到最难的一个,原因是信号的终结termination非常麻烦,因为是T形总线。后来的串行技术,就算速率再高,比起这个几乎就没有太大技术含量了。
当时我还年轻,火气也比较大,遇事不服输,系统不稳定,陈怀临怀疑是硬件问题,我就和他争辩。他吵不过,干脆要port一个Linux来验证。邓锋是学并行计算出身的,他推荐我读了一本处理器原理的权威著作,最后我也弄明白了Cache, MMU的工作原理,因此能够读懂Exception寄存器的含义了,算是一大收获。
这个项目上我基本上只负责架构,我们硬件组的Edward, Scott Chastain和机构工程师Eugene负责具体的设计。技术的挑战最终提升了整个团队的个人和团队协同作战能力,这是第二个收获。
几经周折,这个系统终于发布了,而且大获成功。
—————————- 版权所有Hillstone 老童 欢迎转载 —————————-