5年前,我也曾经急动过。。。。。。。
算起来从2002年在学校做的第一个网管的项目,加上后来在两个公司做的两个,实际上是有3个这样的项目了.主要的工具依然是SNMP,这是个好东西,当然还有别的接口和协议比如TMN和一些专属语言,但总归说起来,我始终觉得工具就是工具,一个工具不可能让人真正优秀起来.
研一的时候,拿到的第一个开发包,是大名鼎鼎的ucd-snmp,那个时候已经在改名为net-snmp.这是个好东西,比较简单,而且关键是免费的,很好.我拿到这个工具真是大材小用,用它来干吗那,来糊弄学校的老板,来糊弄那帮863的专家,就是用标准代理中的接口组提供的数据,统计整个网络中的流量情况,包括路由相关的信息,这带来了一个副产品,后来我胡编乱造写了篇拓扑发现的文章,发表到了通信学报上面.
关于net-snmp,其实也没有什么好说的,是一个做agent扩展的好东西,lib2c这个toolkit的翻译做得也不错,从ansi格式的mib文件到c源文件,这个转换工作做得也不错.基本上一个基本的agent开发的流程和主要方面,它都有涵盖.不过我们说网管五大领域中,FCAPS,这个中间最考验功力的是容错管理和安全管理,那个时候我没有涉及,实际上很可惜,trap是个很好的东西,应该花些时间在上面的.另外,当时没有想过用这个工具做些manager的开发工作,这个也是个遗憾.在学校做的东西,大部分都是玩具,所以这个agent实际上也是个玩具,玩具的表现是,它实际上是将应用集成到了agent里面,呵呵.这个避开了agent开发里面最麻烦的和应用的集成.当时的开发难度,就相当于自己写个UDP的agent,解解包,发发包,就这么个简单玩意.
后来到了AC,拿到了很多ASAM7300的源码,不得不说,阿尔卡特的DSL平台做得真好,这是后来我在LU接触到那个RNC平台时候才发现的,所以说什么东西都怕有比较的,不过考虑到DSL是AC发家的两大看家本领,至少当时是全球第一也是中国第一,这样的前提背景下,把这个平台的核心架构拿到中国来,还是很不容易的.当时这个平台中就是集成了TMS的snmp代理,很好的东西,这个平台太庞大了,庞大到我在那儿的一年都没有机会接触到manager的东西,包括source code,据说manager是印度人做得,在Solaris上面做得,使用过那个东西,做得真好,一看就是大规模现代化的软件工厂的作品,很好,很好,很好.
那么这个网管的开发的主要工作是什么呢?当然也是集成了,这次用的一个工具叫mibc,我不知道这个东西是不是法国人自己做的,因为mibc产出的下游是一个叫MAPPER的WRAPER,这个MAPPER的layer做得非常非常好,结构非常干净,有了它的存在,AGENT是个很简单,很干净的东西,从层次来讲,WRAPPER在标准agent和应用程序,协议和驱动之间,所以它可以掩盖agent扩展中的那些很细节的东西,这个当然是对agent而言,同时,因为有了它的存在,使得下面各个模块中的负责网管工作的兄弟们非常轻松。
我前面说过,我在这个项目的过程中,始终都没有看到网管的manager的实现部分,也就是manager打包SNMP的UDP的packet,然后发送出去的部分.这个遗憾后来到了LUCENT算是得到补偿,:LUCENT的这套RNC的东西实现是印度人做的,不过这次印度人让我很失望,不过好歹我也算看到了.另外从RNC这个平台的实现来看,它的代码的严谨和结构,也远远不及ASAM的那套实现,这也是可以理解的,因为毕竟LUCENT最核心的东西不在这个上面,RNC只是个附送品,比起大名鼎鼎的四号机五号机,这个产品也是分量不够.不过考虑到贝尔实验室的名号,做出这样的东西,尽管很好,但是还是让我不太满意,可能是心中对贝尔实验室的顶礼膜拜让我昏了头.接着说RNC的这套实现机制吧,它的manager实际上用的是Adventnet的一个标准manager,自己做了扩展注册,做了个manager的client,snmp的代理部分用的是WindRiver的TMS,这个东西我也不陌生,考虑到IP问题,甚至是职业道德,我在这里不可能把它的实现细节画出来,不过我个人觉得这个东西还是比较清晰,当时花了1个星期读它的那些东西,画了不少UML图,还是画得很高兴,不过考虑到当时是无心恋战,仅仅是出于自己得兴趣爱好,我觉得可能以后再也不会有这样的心情去挖啊去exploit这些大面的code.
TMS的那套mib翻译和agent接口很多地方都有介绍,我在这里也没啥必要贴上来,不过这里让人很难忘的是这套AGENT嵌入到应用中的实现是基于C++的,这个比起以前的mib2c和mibc都不太一样.C++就是好,接口很干净,看起来赏心悦目.另外,这次是正儿八经做Fault管理,看到了trap的东西,不过真是痛苦.这个错误检测和恢复太难了,所以这个软件或者说系统的健壮性真是太难保证了.
我不知道自己以后还有没有机会继续开发网管的一些东西,不过真是很舍不得,有人总是说要动不动就去瞧瞧LINUX的内核代码啥的,其实这些优秀的平台做得都非常好,有机会有时间好好看看他们的实现让人也会增长不少功力.我没有看过LINUX的内核代码,也不知道后面有没有时间和心情去exploit这些东西,不过我觉得功夫在书外,只要有一个好的平台,很多东西都是相通的,现在手头上的一个SUN的KVM的实现和一个嵌入式的平台,好像做得也不错……