用内存数据库技术提升高端路由器的性能
1、引言
随着数据通信市场的不断深入发展,运营商对高端路由器系统提出了更加严格的要求,比如丰富的业务特性、大容量、高可靠性和安全性等,这对高端路由器设计和开发是一个巨大的挑战。
研发人员的做法往往是在原有系统的基础上针对业务的特点进行优化,比如优化现有数据结构提高存储、查找效率等,以此提升容量和性能。数据结构优化常用的方法就是利用各种算法重新组织数据,提高各种场景下的存储和查询效率。这种做法的结果是在业务流程中嵌入了很多对数据结构操作的复杂流程,导致系统可维护性很差。
还有,很多常用的业务子系统需要不断叠加新的特性,以满足新的市场需求。很多业务叠加也需要扩展原有的数据结构,甚至需要增加新的数据结构以及新的关系。这种扩展也是比较复杂的工作。
目前大多数数据通信路由软件平台都是实时系统,为了提高实时性,大量的数据都是系统自己维护。现在内存数据库已经不断成熟,而且已经有很多成功的应用案例,比如在电信计费、电力自动化等方面都有应用。如果把内存数据库应用在实时通信路由软件平台的某一些子系统中,可以把复杂数据的维护移交给数据库来做,这样系统本身对数据的维护减少到数据库中的几个接口函数,可以聚焦业务本身,降低了系统的复杂度,同时利用数据库现有的高效检索技术提高系统的性能,增加了系统的可扩展性、可维护性。
比较常用的内存数据库有美国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关联。
- 动态路由协议OSPF原理和特性(01-10)
- IPv4/IPv6双栈方法(01-16)
- 网卡问题(01-24)
- 虚拟局域网技术VLAN的管理与测试(01-26)
- 做个ADSL+LINUX软路由器(01-26)
- 巧妙排除无线局域网的各种路由器故障(01-28)