提升高端路由器性能的方案
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)。
AC實體是PW的接入部分,需要使用二級HASH組織,一級為主接口索引HASH,二級為子節口索引HASH,以滿足如下兩個需求,一是主接口狀態變化時,會影響到它所有子節口上的PW狀態變化,比如主接口狀態DOWN,則該接口下所有的子接口上的PW的AC狀態都應該置DOWN;二是子接口狀態變化時,需要更新該子接口上的PW的AC狀態。
Local?PW實體是本地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并下發轉發信息到轉發引擎,以便盡可能快的恢復業務。
Remote PW實體是信令(Mapping)學習到的遠端PW信息,該數據也上述的Peer IP一起組織,在PeerIP節點下再下掛一顆Remote PW AVL樹。
PW狀態UP后創建的轉發信息表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關聯。主鍵為Local PW ID;在PW ID+ PW TYPE、Peer IP上創建索引,分別用于PW ID + PW TYPE快速定位PW、在會話狀態變化時能夠快速定位到所有基于該會話的PW;增加AC ID、FIB ID列,分別建立和AC Table、FIB Table的關聯。主鍵為Remote PW ID;在PW ID+ PW TYPE、Peer IP上創建索引,分別用于PW ID + PW TYPE快速定位PW、在會話狀態變化時能夠快速定位到所有基于該會話的PW;增加Local PW ID列,建立和Local PW Table的關聯。
PW FIB Table如圖9所示,在下發時,實時外鍵查詢相關內容,組裝后下發給轉發引擎。剩下的工作就是處理業務流程,把數據維護交給數據庫管理了。
3、簡化熱備份的實現
在高端路由器系統中,需要實現HA,其中一項就是熱備份,就是雙主控備份問題。
有兩塊主控板,一個是ACTIVE的,叫著主用主控板,和接口板通訊,一個是INACTIVE,叫著備用主控板,和主用主控板通訊,接受主用主控板備份過來的數據,并進行還原,而且需要實現主備板數據的一致性。當主用主控板出現故障時,備用主控板能夠順速變為ACTIVE狀態,替代主用主控板的功能,實現和接口板的通訊。
主備板數據的一致性一般是一個HA的模塊實現的,該模塊實現一個簡單的狀態機,控制主備板狀態的變化以及切換,同時為應用提供一個統一的API,實現數據的備份和恢復。每個應用子系統都會在主板封裝數據,HA發送到備板,在備板解封裝,然后重建。
如果使用實時數據庫系統,備份功能可以交給數據庫的備份功能實現。在主備板之間分別建立一個數據庫,主備板數據的同步交給數據庫的備份功能完成。
4、結束語
把實時數據庫技術使用在高端路由器軟件平臺上帶來的另一個好處就是縮短開發周期,能夠迅速推出產品并占領市場。
參考文獻
[1] 盧炎生,潘怡,趙棟,謝曉東 . 一個內存數據庫管理系統的數據組織.華中理工大學學報, 1999
[2] 楊武軍, 張繼榮, 屈軍鎖 . 內存數據庫技術綜述.西安郵電學院學報,2005
[3] McObject公司.內存數據庫使用說明。