用内存数据库技术提升高端路由器的性能_MySQL
随着数据通信市场的不断深入发展,运营商对高端路由器系统提出了更加严格的要求,比如丰富的业务特性、大容量、高可靠性和安全性等,这对高端路由器设计和开发是一个巨大的挑战。
研发人员的做法往往是在原有系统的基础上针对业务的特点进行优化,比如优化现有数据结构提高存储、查找效率等,以此提升容量和性能。数据结构优化常用的方法就是利用各种算法重新组织数据,提高各种场景下的存储和查询效率。这种做法的结果是在业务流程中嵌入了很多对数据结构操作的复杂流程,导致系统可维护性很差。
还有,很多常用的业务子系统需要不断叠加新的特性,以满足新的市场需求。很多业务叠加也需要扩展原有的数据结构,甚至需要增加新的数据结构以及新的关系。这种扩展也是比较复杂的工作。
目前大多数数据通信路由软件平台都是实时系统,为了提高实时性,大量的数据都是系统自己维护。现在内存数据库已经不断成熟,而且已经有很多成功的应用案例,比如在电信计费、电力自动化等方面都有应用。如果把内存数据库应用在实时通信路由软件平台的某一些子系统中,可以把复杂数据的维护移交给数据库来做,这样系统本身对数据的维护减少到数据库中的几个接口函数,可以聚焦业务本身,降低了系统的复杂度,同时利用数据库现有的高效检索技术提高系统的性能,增加了系统的可扩展性、可维护性。
比较常用的内存数据库有美国MCObject公司的eXtremeDB、Oracle公司的TimeTen等。eXtremeDB可以很好的应用在实时系统中,数据保存在内存而非文件中,访问速度能够满足实时性,而且开放多种检索方法,用户可以根据业务特点选择合适高效的方法。
下面从路由软件平台中拿出一个典型的子系统(PWE3子系统)说明使用内存数据库带来的好处。
2、解决复杂的数据管理问题
PWE3(Pseudowire Emulation Edge to Edge)是MPLS VPN子系统的组成部分,属于L2VPN,是传统网络比如ATM、TDM网络向IP网络迁移的过渡性技术。该业务的特点是业务模型相对简单,但容量需求巨大,可能一个用户需要一条伪线即PW,一个系统需要支撑上万条PW伪线。图1是标准的PWE3参考模型图(摘自RFC4447)。
图1 PWE3参考模型 |
该业务的数据部分涉及如下几个关键的结构实体。
AC实体(参见图2)是PW的接入部分,需要使用二级HASH组织,一级为主接口索引HASH,二级为子节口索引HASH,以满足如下两个需求,一是主接口状态变化时,会影响到它所有子节口上的PW状态变化,比如主接口状态DOWN,则该接口下所有的子接口上的PW的AC状态都应该置DOWN;二是子接口状态变化时,需要更新该子接口上的PW的AC状态。
图2 AC实体 |
Local PW实体(参见图3)是本地PW的数据部分,一级通过Peer IP进行HASH,每个Peer IP节点下挂一颗Local PW AVL树,树的Key就是PW的Key,即PW ID + PW TYPE,以满足如下几个需求:
①以Peer IP为单位的会话状态变化时,能够快速定位到依赖于该会话的所有PW,处理PW状态的变化,比如删除转发信息等;
②收到远端信息时能够通过Peer IP、PW ID + PW TYPE快速定位到Local PW,迅速创建FIB并下发转发信息到转发引擎,以便尽可能快的恢复业务。
图3 Local PW实体 |
Remote PW实体(参见图4)是通过信令(Mapping)学习到的远端PW信息,该数据也通过上述的Peer IP一起组织,在PeerIP节点下再下挂一颗Remote PW AVL树。
图4 Remote PW实体 |
PW状态UP后创建的转发信息表PW FIB,需要下发到转发引擎指导快速转发,通过一个单向链表组织即可。
图5 PW FIB实体 |
另外:
①PW创建、删除流程;
②会话DOWN功能,该流程需要删除该会话下所有的远端PW信息以及相关的PW FIB信息;
③PWE3子系统使能、去使能功能,使能时需要初始化各种表项的数据结构,去使能时,需要依次删除所有的数据结构。
根据上面的描述可以看出,PWE3子系统其实就是维护上述几种数据结构,包括表项的添加、删除、更新、查询等,以及尽可能的提高表项的操作效率、节省内存。
如果使用内存数据库完成上述功能就会使系统简单的多,把数据的维护交给内存数据库完成,比如数据的创建、删除以及更新等,而PWE3子系统本身主要完成业务的处理,比如信令的处理等。重新整理数据库表如下:
AC Table如图6所示,增加一个主键AC ID列,增加一个Main IfNet Index列,在IfNet Index和Main IfNet Index上分别创建索引,分别用于接口状态变化能够迅速定位到AC、主接口状态变化时能够迅速定位到所有子节口的AC,再增加一个外键列Local PW ID,用于和Local PW Table关联。
图6 AC实体表 |
Local PW Table如图7所示,主键为Local PW ID;在PW ID+ PW TYPE、Peer IP上创建索引,分别用于通过PW ID + PW TYPE快速定位PW、在会话状态变化时能够快速定位到所有基于该会话的PW;增加AC ID、FIB ID列,分别建立和AC Table、FIB Table的关联。
图7 Local PW实体表表 |
Remote PW Table如图8所示,主键为Remote PW ID;在PW ID+ PW TYPE、Peer IP上创建索引,分别用于通过PW ID + PW TYPE快速定位PW、在会话状态变化时能够快速定位到所有基于该会话的PW;增加Local PW ID列,建立和Local PW Table的关联。
图8 Remote PW实体表 |
PW FIB Table如图9所示,在下发时,实时通过外键查询相关内容,组装后下发给转发引擎。
图9 PW FIB实体表 |
剩下的工作就是处理业务流程,把数据维护交给数据库管理了。
3、简化热备份的实现
在高端路由器系统中,需要实现HA,其中一项就是热备份,就是双主控备份问题,如图10所示。
图10 热备份板间图 |
有两块主控板,一个是ACTIVE的,叫着主用主控板,和接口板通讯,一个是INACTIVE,叫着备用主控板,和主用主控板通讯,接受主用主控板备份过来的数据,并进行还原,而且需要实现主备板数据的一致性。当主用主控板出现故障时,备用主控板能够顺速变为ACTIVE状态,替代主用主控板的功能,实现和接口板的通讯。
主备板数据的一致性一般是通过一个HA的模块实现的,该模块实现一个简单的状态机,控制主备板状态的变化以及切换,同时为应用提供一个统一的API,实现数据的备份和恢复。每个应用子系统都会在主板封装数据,通过HA发送到备板,在备板解封装,然后重建。
如果使用实时数据库系统,备份功能可以交给数据库的备份功能实现。在主备板之间分别建立一个数据库,主备板数据的同步交给数据库的备份功能完成。
4、结束语
把实时数据库技术使用在高端路由器软件平台上带来的另一个好处就是缩短开发周期,能够迅速推出产品并占领市场。
参考文献
[1] 卢炎生,潘怡,赵栋,谢晓东 . 一个内存数据库管理系统的数据组织.华中理工大学学报, 1999
[2] 杨武军, 张继荣, 屈军锁 . 内存数据库技术综述.西安邮电学院学报,2005
[3] McObject公司.内存数据库使用说明
下一篇: PHP分页种