




摘 要:主要介紹了目前災備中心的雙信道網絡接入情況,并針對當前網絡環境,針對如何高效發揮雙信道備份的網絡優勢,最大化地保障數據質量的問題,給出了網絡路由智能切換的技術設計與實現方法。
關鍵詞:多路由表;智能切換;設計;實現
引言
2011年4月25日,中國地震局印發了《中國地震局事業發展規劃綱要》。綱要中明確指出,要完善國家地震專業基礎設施,建設國家地震數據災備中心。應《關于廣東省地震局國家地震速報災備中心項目建議書的批復》文件指示,最終方案決定國家地震速報災備中心項目由中國地震局出資,由廣東省地震局承擔,在廣東地震臺網中心成立一個國家地震速報災備中心(以下簡稱災備中心)。
災備中心的建設其中一項主要的建設內容是新建第二信道的數據通信網絡建設。災備中心實現以廣州為中心,新建一條連接個省區地震臺網的星形地震行業專用網絡,用于各省區地震臺網與廣州為中心進行實時數據和信息的傳輸和交換,新建鏈路與原有的以北京為中心的星形行業網絡形成雙星結構并互為備份。
截止到發稿為止,除了西藏臺網的第二信道建設未完成以外,其他臺網的第二信道都已開通并使用。備份線路建設完成后所帶出的問題是,讓它一直做備用信道的角色而浪費大多數網絡資源明顯是不合理;主備互用原則上是可以做到網絡資源的最大利用,但是如果其中任一條線路出現故障,又會引發故障不容易及時發現及追查跟蹤等連鎖反應。針對以上這些問題,信息網絡部門最終會有一個解決方法,但對于災備中心應用層使用來說,設計實現一個應用級的智能路由切換系統對用戶使用有重大的意義。
1 設計思路
1.1 思路
程序設計思路和方法用了最簡單的方式實現,總體來說就是利用系統支持多重路由表的功能,設計一個自動輪詢方式程序,向定制的目標主機列表發送ping包,然后根據返回值判斷鏈路在其所在路由表里的狀態情況,再自動修改更新系統靜態路由實現。
1.2 原理
如圖1所示,在最底層的總路由表分為兩個子路由表,每個路由表負責維護各自鏈路的路由狀態信息。路由表1(10.88/8子網)是默認的災備線路的路由出口,負責維護災備鏈路各節點的主要路由,在文章里它是作為主要線路出口;路由表2(10.44/8子網)是原來地震行業骨干網的路由出口,負責原本已有行業網各節點的路由,在文章里也就是用它來做備用信道,完成在10.88子網不通的情況下,鏈路自動切換到原來已有的備用線路上,從而保障災備業務正常運行,降低數據丟失風險。
2 實現方法
由于國家災備系統部署在FreeBSD操作系統上,因此,要在FreeBSD上實現此場景,我們就要利用該系統提供的多路由表setfib[1]功能,并且把此服務集成到應用程序中。為了實現路由自動切換,我們還需要定義一個配置文件和幾個主要函數來完成路由的增加、刪除、檢查、切換、ping包測試等,下面本文就依次為函數的實現附上代碼清單及解釋。
2.1 配置文件
2.1.1 Spring Framework[2]介紹
配置文件使用基于Spring框架完成xml文件的構建。何謂Spring呢?簡單來說,Spring是一個開源的Java EE應用程序框架。該框架的主要優勢之一就是分層架構,它可以讓用戶根據需要選擇不同的模塊,比如面向方面編程(AOP)和基于JavaBeans的依賴性注入(Dependency Injection)等,本文所應用的xml文件主要就是利用其提供的依賴注入功能完成xml配置文件的構建。
依賴性注入,有時也稱作控制反轉模式(IOC),其基本概念是:不創建對象,但是通過xml文件描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。在典型的IOC場景中,容器創建了所有對象,并設置必要的屬性將它們連接在一起,決定什么時間調用方法[3]。表1列出了 IOC 的一個實現模式。
容器其實就是基于反射機制寫的一些包,有了它以后您可以將類的實例化寫到一個配置文件里,由相應的Spring包負責實例化。假設你有一個類A,以前你實例化時要寫A a = new A(),現在用了Spring框架后,您只需寫一個xml文件,并按Spring指定的格式配置好,它就能通過反射機制將A的實例返回給您。
2.1.2 配置文件示例
上面代碼是程序實現的核心部分,首先根據是否切換路由返回的值判斷路由的切換。程序在備用信道上添加、刪除走主信道的某目標主機靜態路由后,分別發送ping包檢測鏈路狀態。簡單地說就是主鏈路用來做主出口,輔助鏈路主要用來檢測鏈路狀態。如果主路由是通的,則所有數據走主信道并刪除輔助鏈路的靜態路由;如果主信道不通,則添加走輔助信道的靜態路由。
2.2.6 判斷是否切換
3.2 系統分析
3.2.1 優點
從上面的簡單測試結果可以看出,系統能自動檢測并切換路由,從而實現了線路的冗余和使用;另一方面,它可以為前端網絡路由做了一個理想的補充作用。
3.2.2 缺點
由于它的路由切換在用戶應用層,因此當路由真正切換時,還是會造成數據的短暫中斷。由TCP/IP協議可以知道,當TCP/IP的套接字(socket)被創建時,通信雙方的地址和端口也隨之被初始化。當路由切換后,由于源IP地址的改變使得socket套接字連接失敗,在新的套接字重新建立連接以前會從造成短暫的數據中斷情況。
4 結束語
在災備中心設計實現一個智能路由切換系統,對災備中心數據質量及使用有絕對重大的意義。前端網絡設施部分,在信息網絡部門未規劃好雙信道路由如何規劃以前,從以上論述試驗中可用看出在應用端有個應用級的智能路由切換系統,不但可確保應用系統的正常運行,還能做到簡單的線路自動切換,提高數據可用性。即使未來前端網絡已做好了最科學的雙線路使用設定,后端的路由智能切換也不會和前端網絡設定有任何沖突,正好相反,它還可用給后端的應用系統提供雙冗余的網絡切換備份,極大地提高了數據的可用性。換句話來說就是,即使前端高效科學的網絡規劃出現故障了,后端的路由智能切換也能自動找到可用信道并使用,從而保障應用系統的正常運行,發揮了很重要的補充作用。
實現用戶級別的智能路由自動切換系統,從效率上可能比不上前端專業網絡設備,但在災備中心的實際應用中,正是由于它的實現,充分驗證了路由自動切換系統設計與實現的必要性,并解決了西藏臺網目前在第二信道未完成連通以前,災備中心仍能較好地自動切換到原有信道接收到其實時數據,保障災備中心的正常運行問題。
參考文獻
[1]https://www.freebsd.org/cgi/man.cgi?query=setfibsektion=2.
[2]Spring Framework[EB/OL].https://projects.spring.io/spring-framework/.
[3]查普爾,蒂特爾.TCP/IP協議原理與應用[M].2005:3.
作者簡介:吳叔坤(1977-),男,工程師,1999年畢業于防災科技學院,從事地震監測工作。