張文盛
(安徽廣播電視大學 遠程教育技術與圖文信息中心,安徽 合肥 230022)
高可用性是集群系統(tǒng)研究的一個熱點,通過引入冗余設計,使得系統(tǒng)能夠不間斷對外提供服務,這對于重要的企業(yè)應用至關重要[1].智能雙IP雙線服務比單線服務具有更好的帶寬和性能,是目前較為流行的系統(tǒng)架構,普遍應用于各中小型企業(yè)[2].
智能雙IP雙線服務的工作原理如圖1所示.圖1中服務雙線接入兩個ISP(例如移動和電信),每條鏈路分別配置ISP提供的IP(例如移動IP和電信IP);用戶使用域名訪問服務時,智能DNS服務器根據(jù)用戶IP所屬的ISP返回對應的服務IP(例如移動用戶返回移動IP,其他用戶返回電信IP)[3-4];用戶向該IP發(fā)送的請求數(shù)據(jù)包經相應鏈路到達負載均衡器(Load Balancer,LB);LB根據(jù)均衡策略和算法選擇真實服務器(Real Server,RS)[5-6],將請求數(shù)據(jù)包轉發(fā)給它;RS處理請求,發(fā)送應答數(shù)據(jù)包到達LB;LB執(zhí)行源策略路由[7],將應答數(shù)據(jù)包從源鏈路發(fā)送給用戶.
圖1 智能雙IP雙線服務工作原理Fig.1 Operation principle of the intelligent dual-IP dual-line service
智能雙IP雙線技術可明顯減少跨ISP訪問,實現(xiàn)就近獲取服務,極大提高用戶體驗[8].此外智能雙IP雙線服務在一條鏈路發(fā)生故障的情況下,另一條鏈路下的用戶不受影響,比單鏈路可靠性有所提高[9].但是智能雙IP雙線服務還存在單點故障,在一條鏈路意外中斷的情況下,將導致部分用戶不能訪問服務,對業(yè)務造成很大損失[10].針對這一缺點,提出一種基于地址重寫的智能雙IP雙線服務架構,該架構利用鏈路冗余,在一條鏈路發(fā)生故障時,將流量轉移到另外一條鏈路,從而實現(xiàn)不間斷服務,提高服務可靠性.
針對雙線服務的高可用性研究,目前成熟的技術有光線路自動切換保護(Optical Line Auto-Switching Protection,OLP)[11]和邊界網(wǎng)關協(xié)議(Border Gateway Protocol,BGP)雙線[12].
OLP,又名雙路由保護,是一種物理層的保護技術[13].OLP是指當光傳輸線路上光纖意外折斷或損耗變大導致通訊質量下降或通訊中斷時,光線路自動切換保護設備實時檢測,發(fā)出警告信息,并能夠自動地將光傳輸線路由主線路切換至備用線路,使通信立即恢復,從而使傳輸系統(tǒng)的故障時間降至最小,保證光傳輸系統(tǒng)的可靠性[14].OLP的最大缺點是需要布設第二條光纜,成本較高,不適合大面積使用[15].
BGP雙線技術是指采用BGP路由器接入兩個自治系統(tǒng)(Autonomous System,AS)[16],通過BGP協(xié)議選擇訪問服務的最佳路徑.BGP雙線技術的缺點是BGP路由器十分昂貴,同時要申請AS號[17].目前只有ISP才能利用這種技術,建立BGP雙線機房,提供托管和租用服務[18].
OLP和BGP都具有很好的鏈路可用性,同時代價都很大,不適合中小型企業(yè)使用.智能雙IP雙線服務有線路冗余設計,與OLP、BGP相比,拓撲結構有自己的特點.目前,利用這種線路冗余實現(xiàn)高可用性的相關的研究還不多.本文設計鏈路狀態(tài)監(jiān)控協(xié)議,對IP協(xié)議進行改造,在一條鏈路發(fā)生故障時執(zhí)行地址重寫,提高智能雙IP雙線服務的可用性.
基于地址重寫的智能雙IP雙線服務系統(tǒng)工作原理如圖2所示.
圖2 基于地址重寫的智能雙IP雙線服務系統(tǒng)工作原理Fig.2 Operation principle of address-rewriting-based intelligent dual-IP dual-line service
圖2中,路由器B、路由器C和負載均衡D部署了狀態(tài)監(jiān)測模塊,BD之間的鏈路發(fā)生故障時,狀態(tài)檢測模塊使系統(tǒng)進入地址重寫模式,此時用戶A訪問D的流量路徑如下:
(1)用戶A的訪問數(shù)據(jù)包到達路由器B,數(shù)據(jù)包目的地址是IP1.
(2)路由器B將IP1存入IP選項字段(類型為目的地址重寫),并重寫數(shù)據(jù)包的目的地址為IP2,然后將重寫后的數(shù)據(jù)包發(fā)給路由器C.
(3)路由器C將數(shù)據(jù)包發(fā)給負載均衡D.負載均衡D發(fā)現(xiàn)數(shù)據(jù)包含類型為目的地址重寫的IP選項,還原數(shù)據(jù)包目的地址為IP1,完成遞交RS的工作.
(4)負載均衡D接收RS的應答數(shù)據(jù)包,數(shù)據(jù)包源地址是IP1.負載均衡D將IP1存入IP選項字段(類型為源地址重寫),并重寫源地址為IP2,然后將重寫后的數(shù)據(jù)包發(fā)給路由器C.
(5)路由器C解析IP選項字段,將數(shù)據(jù)包源地址重寫為IP1,發(fā)給用戶A.
基于地址重寫的智能雙IP雙線服務系統(tǒng)結構如圖3所示.
圖3 基于地址重寫的智能雙IP雙線服務系統(tǒng)結構Fig.3 System architecture of address-rewriting-based intelligent dual-IP dual-line service
圖3中,節(jié)點可以是路由器,也可以是負載均衡設備.每個節(jié)點除了角色不同外,擁有相同的系統(tǒng)結構.該系統(tǒng)結構包括兩個模塊:狀態(tài)監(jiān)控模塊和地址重寫模塊.狀態(tài)監(jiān)控模塊運行在用戶空間;地址重寫模塊建立在Netfilter框架[19]上,運行在內核空間.狀態(tài)監(jiān)控模塊和其他節(jié)點的狀態(tài)監(jiān)控模塊通訊,交換彼此維護的狀態(tài)信息.狀態(tài)監(jiān)控模塊一旦發(fā)現(xiàn)鏈路斷開,立即通知地址重寫模塊開始工作;地址重寫模塊對發(fā)往該鏈路的數(shù)據(jù)包進行重寫,使之重定向到另外一條鏈路.
為了進一步區(qū)分發(fā)生重寫時兩個路由器的角色,定義連接故障鏈路的路由器為重寫由器,另外一個路由器為中轉路由器.
鏈路兩端節(jié)點不斷探測彼此和交換信息,確定鏈路狀態(tài).定義一次探測事務如下:節(jié)點以定時間隔T向對端節(jié)點發(fā)送狀態(tài)請求數(shù)據(jù)包;對端節(jié)點接收到狀態(tài)請求數(shù)據(jù)包后,經過適當處理,立即返回狀態(tài)應答數(shù)據(jù)包給發(fā)送端;發(fā)送端解析應答數(shù)據(jù)包,更新對端狀態(tài).狀態(tài)監(jiān)控模塊執(zhí)行探測事務確定其他節(jié)點狀態(tài),同時交換彼此維護的狀態(tài)信息,從而獲知系統(tǒng)狀態(tài),并決定本節(jié)點是否執(zhí)行地址重寫.節(jié)點的狀態(tài)轉換圖如圖4所示.
圖4 節(jié)點狀態(tài)轉換圖Fig.4 Node state transition
節(jié)點狀態(tài)包括初始化(INIT)、同步(SYNC)、就緒(READY)、不可達(UNREACHABLE)和恢復(RECOVERY).節(jié)點狀態(tài)轉換邏輯如下:
(1)節(jié)點啟動時設置對端節(jié)點狀態(tài)為INIT.
(2)節(jié)點完成第1個探測事務時,置對端節(jié)點狀態(tài)為SYNC.
(3)對端節(jié)點處于SYNC時,只有連續(xù)完成N1個探測事務才能置對端節(jié)點為狀態(tài)為REDAY,防止鏈路故障率過高對系統(tǒng)運行造成干擾.
(4)在對端節(jié)點處于READY時,連續(xù)N2個探測事務失敗,置對端節(jié)點狀態(tài)為UNREACHABLE,此時節(jié)點需要根據(jù)其他信息判斷是否進入地址重寫模式.
(5)在對端節(jié)點處于UNREACHABLE時,完成1個探測事務,則置對端節(jié)點狀態(tài)為RECOVERY.
(6)在對端節(jié)點處于RECOVERY時,連續(xù)N1個探測事務成功,則置對端節(jié)點狀態(tài)為READY,此時節(jié)點需要根據(jù)其他信息判斷是否退出地址重寫模式.
在鏈路斷開的情況下,已建立的TCP連接會重傳數(shù)據(jù)[20],重傳失敗超過規(guī)定次數(shù)會關閉連接,因此N2*T的時間不能太長,要小于平均的重傳時間.
對端處于UNREACHABLE并不能確定是鏈路出問題(斷開)還是節(jié)點出問題(死機),因此不能據(jù)此切換運行模式.為了解決這個問題,通過在探測事務中交換彼此維護的狀態(tài)信息進行確認.每個節(jié)點維護一個狀態(tài)表格,其中包括本節(jié)點和其他兩個節(jié)點的狀態(tài).狀態(tài)表格結構見表1.
狀態(tài)表中的每條記錄創(chuàng)建時,固定值字段從配置文件中加載,初始值字段自動初始化,對于可變值字段,本節(jié)點設置{直接狀態(tài):READY,間接狀態(tài):READY,運行模式:正常},其他節(jié)點設置{直接狀態(tài):INIT,間接狀態(tài):INIT,運行模式:正常}.
節(jié)點執(zhí)行探測事務時,主要維護直接狀態(tài),同時交換該信息.通過狀態(tài)交換,可以獲知對端節(jié)點的間接狀態(tài).間接狀態(tài)是第三方節(jié)點探測到的對端節(jié)點的直接狀態(tài),表明經第三方節(jié)點能否到達對端節(jié)點.
表1 節(jié)點狀態(tài)表
Tab.1 Node states
字段名稱字段描述字段值屬性節(jié)點名稱給節(jié)點起的名字固定值節(jié)點類型可選值:路由器,負載均衡固定值節(jié)點地址IP地址固定值是否自己標識是否是本節(jié)點,是TRUE,否FALSE固定值直接狀態(tài)通過探測事務確定的節(jié)點狀態(tài)可變值間接狀態(tài)通過交換信息確定的節(jié)點狀態(tài)可變值運行模式可選值:正常,目的地址重寫,源地址重寫可變值當前事務ID事務需要,初始值0,以后每次加1初始值連續(xù)成功事務數(shù)用于節(jié)點狀態(tài)轉換,初始值0初始值連續(xù)失敗事務數(shù)用于節(jié)點狀態(tài)轉換,初始值0初始值總成功事務數(shù)用于統(tǒng)計,初始值0初始值總失敗事務數(shù)用于統(tǒng)計,初始值0初始值切換模式次數(shù)用于統(tǒng)計,初始值0初始值最近切換模式時間用于統(tǒng)計,初始值空初始值
有了所有節(jié)點的直接狀態(tài)和間接狀態(tài),狀態(tài)監(jiān)控模塊就可以決定是否切換運行模式.對于路由器,只有負載均衡的直接狀態(tài)為UNREACHABLE而間接狀態(tài)為READY,其他節(jié)點的直接狀態(tài)均為READY時,才可以進入地址重寫模式;對于負載均衡,只有一個路由器的直接狀態(tài)為UNREACHABLE而間接狀態(tài)為READY,其他節(jié)點的直接狀態(tài)均為READY時,才可以進入地址重寫模式.
地址重寫類型包括源地址重寫和目的地址重寫.目的地址重寫發(fā)生在重寫路由器上,源地址重寫發(fā)生在負載均衡上.除了地址重寫外,還有地址還原,包括源地址還原和目的地址還原.目的地址還原發(fā)生在負載均衡上,源地址還原發(fā)生在中轉路由器上.為了完成重寫,定義新的IP選項見表2.
表2 地址重寫選項列表
Tab.2 Address rewriting options
重寫類型類型值長度數(shù)據(jù)源地址重寫1484IP地址目的地址重寫1494IP地址
根據(jù)角色的不同和收到的數(shù)據(jù)包不同,節(jié)點執(zhí)行如下動作:
(1)源路由器收到發(fā)往故障鏈路的數(shù)據(jù)包,執(zhí)行源地址重寫.
(2)負載均衡收到包含源地址重寫選項的數(shù)據(jù)包,執(zhí)行目的地址還原.
(3)負載均衡發(fā)送到故障鏈路的數(shù)據(jù)包,執(zhí)行源地址重寫.
(4)中間路由器收到目的地址重寫選項的數(shù)據(jù)包,執(zhí)行源地址還原.
為了不影響路由和TCP連接的處理,根據(jù)動作特點,在Netfilter框架中嵌入重寫鉤子,完成處理任務.重寫鉤子的位置如圖5所示.
圖5 重寫鉤子Fig.5 Rewriting hooks
圖5中,重寫鉤子掛接在PRE_ROUTING和LOCAL_OUT兩個位置.狀態(tài)監(jiān)控模塊在節(jié)點初始化時將節(jié)點角色、IP1、IP2等屬性設置進行重寫鉤子,并在節(jié)點狀態(tài)改變時將重寫標志設置進重寫鉤子.重寫鉤子根據(jù)節(jié)點角色、重寫標志、地址重寫選項和鉤子位置執(zhí)行對應的動作(見表3).
表3 重寫鉤子執(zhí)行動作對應表
Tab.3 Map of rewriting hooks and actions
角色重寫標志地址重寫選項鉤子位置執(zhí)行動作路由器是無PRE_ROUTING(1)目的地址重寫負載均衡是目的地址重寫PRE_ROUTING(2)目的地址還原負載均衡是無LOCAL_OUT(3)源地址重寫路由器否源地址重寫PREROUTING(4)源地址還原
在Linux中實現(xiàn)狀態(tài)監(jiān)測模塊和地址重寫模塊,并搭建如圖6所示的測試網(wǎng)絡拓撲環(huán)境檢驗系統(tǒng)性能.
圖6 測試網(wǎng)絡拓撲Fig.6 Network topology for testing
圖6中,所有鏈路最大帶寬均為100M.測試方法是從U訪問B上的WEB服務,下載一個10G大小文件,當下載到一段時間后,手工斷開R2<->B之間鏈路,驗證文件能否正常下載,同時監(jiān)視B->R2和B->R3兩條鏈路的流量分布情況.設置狀態(tài)檢測模塊的T為2s,N1為30,N2為5,結果如圖7所示.
圖7 測試結果Fig.7 The testing result
在圖7中,[0,150]s區(qū)間,B->R2的流量很大,表明下載流量從B經R2的鏈路返回給用戶,符合正常的工作模式.在150s處,手動斷開B<->R2之間的鏈路,導致該鏈路流量直接降到0.各節(jié)點的狀態(tài)監(jiān)測模塊感知到這種變化,經過10s,切換系統(tǒng)進入地址重寫模式,流量被切換到B<->R3鏈路上,因此B->R3的流量從0開始增長,直至完成后續(xù)下載.比對文件的MD5值,服務器上的文件和用戶下載的文件相同,表明基于地址重寫的智能雙IP雙線服務具有較好的可用性.
本文從技術層面探討如何解決智能雙IP雙線服務可用性問題,提出基于地址重寫的智能雙IP雙線服務系統(tǒng)解決方案,通過引入地址重寫技術,描述工作原理,設計新系統(tǒng)的架構,探討狀態(tài)監(jiān)測模塊、地址重寫模塊的功能和運行方式,搭建環(huán)境測試系統(tǒng)性能,解決了智能雙IP雙線服務可用性不高的問題.但在具體應用層面上,基于地址重寫的智能雙IP雙線服務系統(tǒng)還存在一些問題,需要增加新的IP選項,需要修改路由器系統(tǒng)軟件和負載均衡系統(tǒng)軟件,操作起來難度很大.
[1]侯興林,王曉云.服務可用性監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].軟件,2016,37(2):74-76,80.
[2]陳棟.校園網(wǎng)多鏈路接入的負載均衡技術研究[J].哈爾濱師范大學自然科學學報,2014,30(5):48-51.
[3]侯冬青.智能DNS在多出口局域網(wǎng)中的應用研究[J].西昌學院學報(自然科學版),2015,29(1):49-52.
[4]王子榮,胡浩,尹紹鋒,等.基于策略DNS和HTTP Proxy的多宿主網(wǎng)絡服務部署的研究[J].計算機工程與科學,2014,36(2):238-243.
[5]劉芳,吳瓊.基于Web的集群部署管理系統(tǒng)[J].山東理工大學學報(自然科學版),2015,29(2):32-35.
[6]ZHANG Z C. Design and realization of multi-export campus network based on redundancy architecture[J]. Computer Science,2012,39(10):219-222.
[7]幸福,楊峰,燕霄翔,等.Linux服務器下多網(wǎng)口負載均衡算法的研究[J].計算機工程與應用,2013,49(24):93-96.
[8]李曉利.智能DNS解析在校園網(wǎng)中的應用[J].濰坊學院學報,2014,14(2):44-47,55.
[9]JIANG W U.The research and implementation of intelligent DNS system for campus network[J]. Microcomputer Information,2010,26(9):102-104.
[10]王東.智能DNS和NAT技術在多出口高校校園網(wǎng)中的應用[J].重慶科技學院學報(自然科學版),2012,14(3):151-152,176.
[11]李勇超.光線路自動保護系統(tǒng)技術及其實用性探討[D].鄭州:解放軍信息工程大學,2008.
[12]譚欽紅,陳菊,曹懿樂,等.SNMP在OLP系統(tǒng)中的應用[J].電視技術,2012,36(21):99-101,155.
[13]楊雪,劉學升,欒宏之,等.OLP系統(tǒng)在電力光纖通信中的應用研究[J].電力系統(tǒng)通信,2012,33(9):56-60.
[14]卓文合,邵廣賢.光纖線路自動切換保護裝置在安徽電力通信網(wǎng)的應用研究[J].安徽電氣工程職業(yè)技術學院學報,2013,18(4):121-125.
[15]鄒朝亮.光線路保護系統(tǒng)OLP在福建電信波分系統(tǒng)中的應用與研究[D].北京:北京郵電大學,2011.
[16]賀聿志,章勇,柳斌.多鏈路BGP接入方法的探討[J].華中科技大學學報(自然科學版),2016,44(1):148-151.
[17]蘇申,方濱興.BGP路由的動態(tài)性研究[J].智能計算機與應用,2016,6(5):69-70,73.
[18]黎松,諸葛建偉,李星.BGP安全研究[J].軟件學報,2013,24(1):121-138.
[19]張文盛.源抑制在網(wǎng)絡流量控制中的應用研究[J].微型機與應用,2015,34(17):60-62.
[20]孔金生,任平英.TCP網(wǎng)絡擁塞控制研究[J].計算機技術與發(fā)展,2014,24(1):43-46.