1、要解决的问题
Panabit 2007的Panabit Core是作为一个Kernel Loadable Module(KLD)运行在Kernel空间,KLD是一种非常好的扩展Kernel功能的机制,但是运行在Kernel空间会带来一些问题:
(1) 任何微小的KLD BUG都有可能导致整个系统crash;
(2) Kernel的虚拟地址空间有限,只有1G,这个有限的空间很难支持更大规模的并发连接数;
(3) 由于运行在Kernel空间,因此要适应不同的Kernel变化,系统得移植性变得困难,特别是当移植到不同的平台(如Linux)时,工作量非常大;
(4) 由于运行在Kernel空间,因此当出现crash后,现场难以保存,难于调试。
最近1年,硬件特别是多核CPU的发展非常之快,在今后,估计很难在市场上买到单核的CPU。而目前象FreeBSD和Linux等OS的调度器都是针对线程进行调度的,而对于象Panabit这样的网络类型的系统而言,其调度的对象是数据包(Packet)和流(Flow),因此通用的进程调度算法并不适合网络类应用,不能发挥硬件的最大性能。所以,Panabit也有必要设计出一套自己的基于Packet和Flow的调度算法和平台。
2、新的架构
新架构主要基于以下思想:
(1) Panabit出现问题不能导致系统crash;
(2) Panabit必须能够在其依赖的运行机制不变的情况下独立运行;
(3) Panabit是高性能的;
(4) Panabit是容易调试的;
(5) Panabit的特征库是可描述的。
基于上述思想,一套独立的运行于通用OS(如FreeBSD和Linux)之上的OS被设计出来,我们称这个OS为PanaOS,相比以前的版本称之为PanaOS 2.0。
另外,一种独立的专门用来描述协议特征的语言PSDL(Protocol Signature Description Language)也被设计出来。有了PSDL,Panabit在支持新的协议时,不在需要更改代码,而是扩展一个特征库即可。
3、PanaOS 2.0主要特性
PanaOS主要是针对于多核或多CPU系统,但是在单CPU(或核)系统上依然保持现有性能。
PanaOS是一个运行于FreeBSD或Linux等传统OS之上的OS,但是同时它具备自己的调度策略。为了确保PanaOS能够获取有保证的CPU时间,PanaOS接管了系统的调度器,然后根据自己的需要应用自己的调度策略。同时,PanaOS实现了自己的驱动架构,这个驱动架构实现比传统意义上的"Zero Copy"更好的性能,这个驱动架构同样运行于PanaOS之上。
为了保证稳定性,PanaOS实现了双OS备份机制,当MASTER OS出现问题时,SLAVE OS就会自动切换,这个切换的时间小于1ms。
同一般的调度器不一样,PanaOS所调度的单位为Packet和Flow,如果PanaOS运行在多个核或CPU单元上,这些核或CPU通过lock free ring进行通信,由于其lock free特性,因此核之间可以完全并行处理。
4、PSDL
PSDL是一个基于state chart的描述性语言,由于基于state chart,因此它可以描述协议的流程,这是很多厂家现有描述性语言所不具备的。
协议的特征主要表现在两个方面:数据特征和流程特征。
PSDL所描述的流程由一个起始节点开始,这个起始节点在PSDL中被称之为一个trigger,然后经由这个trigger的action可以引出一系列的watcher或其它action。
"Trigger,Action,Watcher"为PSDL的三个要素,由这简单的三个要素,Panabit可以构建一个简单而灵活的协议特征框架。
|