APP下载

基于地址重写的智能双IP双线服务高可用性研究

2018-03-07张文盛

关键词:双线路由器数据包

张文盛

(安徽广播电视大学 远程教育技术与图文信息中心,安徽 合肥 230022)

高可用性是集群系统研究的一个热点,通过引入冗余设计,使得系统能够不间断对外提供服务,这对于重要的企业应用至关重要[1].智能双IP双线服务比单线服务具有更好的带宽和性能,是目前较为流行的系统架构,普遍应用于各中小型企业[2].

智能双IP双线服务的工作原理如图1所示.图1中服务双线接入两个ISP(例如移动和电信),每条链路分别配置ISP提供的IP(例如移动IP和电信IP);用户使用域名访问服务时,智能DNS服务器根据用户IP所属的ISP返回对应的服务IP(例如移动用户返回移动IP,其他用户返回电信IP)[3-4];用户向该IP发送的请求数据包经相应链路到达负载均衡器(Load Balancer,LB);LB根据均衡策略和算法选择真实服务器(Real Server,RS)[5-6],将请求数据包转发给它;RS处理请求,发送应答数据包到达LB;LB执行源策略路由[7],将应答数据包从源链路发送给用户.

图1 智能双IP双线服务工作原理Fig.1 Operation principle of the intelligent dual-IP dual-line service

智能双IP双线技术可明显减少跨ISP访问,实现就近获取服务,极大提高用户体验[8].此外智能双IP双线服务在一条链路发生故障的情况下,另一条链路下的用户不受影响,比单链路可靠性有所提高[9].但是智能双IP双线服务还存在单点故障,在一条链路意外中断的情况下,将导致部分用户不能访问服务,对业务造成很大损失[10].针对这一缺点,提出一种基于地址重写的智能双IP双线服务架构,该架构利用链路冗余,在一条链路发生故障时,将流量转移到另外一条链路,从而实现不间断服务,提高服务可靠性.

1 相关研究

针对双线服务的高可用性研究,目前成熟的技术有光线路自动切换保护(Optical Line Auto-Switching Protection,OLP)[11]和边界网关协议(Border Gateway Protocol,BGP)双线[12].

OLP,又名双路由保护,是一种物理层的保护技术[13].OLP是指当光传输线路上光纤意外折断或损耗变大导致通讯质量下降或通讯中断时,光线路自动切换保护设备实时检测,发出警告信息,并能够自动地将光传输线路由主线路切换至备用线路,使通信立即恢复,从而使传输系统的故障时间降至最小,保证光传输系统的可靠性[14].OLP的最大缺点是需要布设第二条光缆,成本较高,不适合大面积使用[15].

BGP双线技术是指采用BGP路由器接入两个自治系统(Autonomous System,AS)[16],通过BGP协议选择访问服务的最佳路径.BGP双线技术的缺点是BGP路由器十分昂贵,同时要申请AS号[17].目前只有ISP才能利用这种技术,建立BGP双线机房,提供托管和租用服务[18].

OLP和BGP都具有很好的链路可用性,同时代价都很大,不适合中小型企业使用.智能双IP双线服务有线路冗余设计,与OLP、BGP相比,拓扑结构有自己的特点.目前,利用这种线路冗余实现高可用性的相关的研究还不多.本文设计链路状态监控协议,对IP协议进行改造,在一条链路发生故障时执行地址重写,提高智能双IP双线服务的可用性.

2 基于地址重写的智能双IP双线服务系统架构

2.1 工作原理

基于地址重写的智能双IP双线服务系统工作原理如图2所示.

图2 基于地址重写的智能双IP双线服务系统工作原理Fig.2 Operation principle of address-rewriting-based intelligent dual-IP dual-line service

图2中,路由器B、路由器C和负载均衡D部署了状态监测模块,BD之间的链路发生故障时,状态检测模块使系统进入地址重写模式,此时用户A访问D的流量路径如下:

(1)用户A的访问数据包到达路由器B,数据包目的地址是IP1.

(2)路由器B将IP1存入IP选项字段(类型为目的地址重写),并重写数据包的目的地址为IP2,然后将重写后的数据包发给路由器C.

(3)路由器C将数据包发给负载均衡D.负载均衡D发现数据包含类型为目的地址重写的IP选项,还原数据包目的地址为IP1,完成递交RS的工作.

(4)负载均衡D接收RS的应答数据包,数据包源地址是IP1.负载均衡D将IP1存入IP选项字段(类型为源地址重写),并重写源地址为IP2,然后将重写后的数据包发给路由器C.

(5)路由器C解析IP选项字段,将数据包源地址重写为IP1,发给用户A.

2.2 系统结构

基于地址重写的智能双IP双线服务系统结构如图3所示.

图3 基于地址重写的智能双IP双线服务系统结构Fig.3 System architecture of address-rewriting-based intelligent dual-IP dual-line service

图3中,节点可以是路由器,也可以是负载均衡设备.每个节点除了角色不同外,拥有相同的系统结构.该系统结构包括两个模块:状态监控模块和地址重写模块.状态监控模块运行在用户空间;地址重写模块建立在Netfilter框架[19]上,运行在内核空间.状态监控模块和其他节点的状态监控模块通讯,交换彼此维护的状态信息.状态监控模块一旦发现链路断开,立即通知地址重写模块开始工作;地址重写模块对发往该链路的数据包进行重写,使之重定向到另外一条链路.

为了进一步区分发生重写时两个路由器的角色,定义连接故障链路的路由器为重写由器,另外一个路由器为中转路由器.

2.3 状态监控模块

链路两端节点不断探测彼此和交换信息,确定链路状态.定义一次探测事务如下:节点以定时间隔T向对端节点发送状态请求数据包;对端节点接收到状态请求数据包后,经过适当处理,立即返回状态应答数据包给发送端;发送端解析应答数据包,更新对端状态.状态监控模块执行探测事务确定其他节点状态,同时交换彼此维护的状态信息,从而获知系统状态,并决定本节点是否执行地址重写.节点的状态转换图如图4所示.

图4 节点状态转换图Fig.4 Node state transition

节点状态包括初始化(INIT)、同步(SYNC)、就绪(READY)、不可达(UNREACHABLE)和恢复(RECOVERY).节点状态转换逻辑如下:

(1)节点启动时设置对端节点状态为INIT.

(2)节点完成第1个探测事务时,置对端节点状态为SYNC.

(3)对端节点处于SYNC时,只有连续完成N1个探测事务才能置对端节点为状态为REDAY,防止链路故障率过高对系统运行造成干扰.

(4)在对端节点处于READY时,连续N2个探测事务失败,置对端节点状态为UNREACHABLE,此时节点需要根据其他信息判断是否进入地址重写模式.

(5)在对端节点处于UNREACHABLE时,完成1个探测事务,则置对端节点状态为RECOVERY.

(6)在对端节点处于RECOVERY时,连续N1个探测事务成功,则置对端节点状态为READY,此时节点需要根据其他信息判断是否退出地址重写模式.

在链路断开的情况下,已建立的TCP连接会重传数据[20],重传失败超过规定次数会关闭连接,因此N2*T的时间不能太长,要小于平均的重传时间.

对端处于UNREACHABLE并不能确定是链路出问题(断开)还是节点出问题(死机),因此不能据此切换运行模式.为了解决这个问题,通过在探测事务中交换彼此维护的状态信息进行确认.每个节点维护一个状态表格,其中包括本节点和其他两个节点的状态.状态表格结构见表1.

状态表中的每条记录创建时,固定值字段从配置文件中加载,初始值字段自动初始化,对于可变值字段,本节点设置{直接状态:READY,间接状态:READY,运行模式:正常},其他节点设置{直接状态:INIT,间接状态:INIT,运行模式:正常}.

节点执行探测事务时,主要维护直接状态,同时交换该信息.通过状态交换,可以获知对端节点的间接状态.间接状态是第三方节点探测到的对端节点的直接状态,表明经第三方节点能否到达对端节点.

表1 节点状态表
Tab.1 Node states

字段名称字段描述字段值属性节点名称给节点起的名字固定值节点类型可选值:路由器,负载均衡固定值节点地址IP地址固定值是否自己标识是否是本节点,是TRUE,否FALSE固定值直接状态通过探测事务确定的节点状态可变值间接状态通过交换信息确定的节点状态可变值运行模式可选值:正常,目的地址重写,源地址重写可变值当前事务ID事务需要,初始值0,以后每次加1初始值连续成功事务数用于节点状态转换,初始值0初始值连续失败事务数用于节点状态转换,初始值0初始值总成功事务数用于统计,初始值0初始值总失败事务数用于统计,初始值0初始值切换模式次数用于统计,初始值0初始值最近切换模式时间用于统计,初始值空初始值

有了所有节点的直接状态和间接状态,状态监控模块就可以决定是否切换运行模式.对于路由器,只有负载均衡的直接状态为UNREACHABLE而间接状态为READY,其他节点的直接状态均为READY时,才可以进入地址重写模式;对于负载均衡,只有一个路由器的直接状态为UNREACHABLE而间接状态为READY,其他节点的直接状态均为READY时,才可以进入地址重写模式.

2.4 地址重写模块

地址重写类型包括源地址重写和目的地址重写.目的地址重写发生在重写路由器上,源地址重写发生在负载均衡上.除了地址重写外,还有地址还原,包括源地址还原和目的地址还原.目的地址还原发生在负载均衡上,源地址还原发生在中转路由器上.为了完成重写,定义新的IP选项见表2.

表2 地址重写选项列表
Tab.2 Address rewriting options

重写类型类型值长度数据源地址重写1484IP地址目的地址重写1494IP地址

根据角色的不同和收到的数据包不同,节点执行如下动作:

(1)源路由器收到发往故障链路的数据包,执行源地址重写.

(2)负载均衡收到包含源地址重写选项的数据包,执行目的地址还原.

(3)负载均衡发送到故障链路的数据包,执行源地址重写.

(4)中间路由器收到目的地址重写选项的数据包,执行源地址还原.

为了不影响路由和TCP连接的处理,根据动作特点,在Netfilter框架中嵌入重写钩子,完成处理任务.重写钩子的位置如图5所示.

图5 重写钩子Fig.5 Rewriting hooks

图5中,重写钩子挂接在PRE_ROUTING和LOCAL_OUT两个位置.状态监控模块在节点初始化时将节点角色、IP1、IP2等属性设置进行重写钩子,并在节点状态改变时将重写标志设置进重写钩子.重写钩子根据节点角色、重写标志、地址重写选项和钩子位置执行对应的动作(见表3).

表3 重写钩子执行动作对应表
Tab.3 Map of rewriting hooks and actions

角色重写标志地址重写选项钩子位置执行动作路由器是无PRE_ROUTING(1)目的地址重写负载均衡是目的地址重写PRE_ROUTING(2)目的地址还原负载均衡是无LOCAL_OUT(3)源地址重写路由器否源地址重写PREROUTING(4)源地址还原

3 实验

在Linux中实现状态监测模块和地址重写模块,并搭建如图6所示的测试网络拓扑环境检验系统性能.

图6 测试网络拓扑Fig.6 Network topology for testing

图6中,所有链路最大带宽均为100M.测试方法是从U访问B上的WEB服务,下载一个10G大小文件,当下载到一段时间后,手工断开R2<->B之间链路,验证文件能否正常下载,同时监视B->R2和B->R3两条链路的流量分布情况.设置状态检测模块的T为2s,N1为30,N2为5,结果如图7所示.

图7 测试结果Fig.7 The testing result

在图7中,[0,150]s区间,B->R2的流量很大,表明下载流量从B经R2的链路返回给用户,符合正常的工作模式.在150s处,手动断开B<->R2之间的链路,导致该链路流量直接降到0.各节点的状态监测模块感知到这种变化,经过10s,切换系统进入地址重写模式,流量被切换到B<->R3链路上,因此B->R3的流量从0开始增长,直至完成后续下载.比对文件的MD5值,服务器上的文件和用户下载的文件相同,表明基于地址重写的智能双IP双线服务具有较好的可用性.

4 结束语

本文从技术层面探讨如何解决智能双IP双线服务可用性问题,提出基于地址重写的智能双IP双线服务系统解决方案,通过引入地址重写技术,描述工作原理,设计新系统的架构,探讨状态监测模块、地址重写模块的功能和运行方式,搭建环境测试系统性能,解决了智能双IP双线服务可用性不高的问题.但在具体应用层面上,基于地址重写的智能双IP双线服务系统还存在一些问题,需要增加新的IP选项,需要修改路由器系统软件和负载均衡系统软件,操作起来难度很大.

[1]侯兴林,王晓云.服务可用性监控系统的设计与实现[J].软件,2016,37(2):74-76,80.

[2]陈栋.校园网多链路接入的负载均衡技术研究[J].哈尔滨师范大学自然科学学报,2014,30(5):48-51.

[3]侯冬青.智能DNS在多出口局域网中的应用研究[J].西昌学院学报(自然科学版),2015,29(1):49-52.

[4]王子荣,胡浩,尹绍锋,等.基于策略DNS和HTTP Proxy的多宿主网络服务部署的研究[J].计算机工程与科学,2014,36(2):238-243.

[5]刘芳,吴琼.基于Web的集群部署管理系统[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服务器下多网口负载均衡算法的研究[J].计算机工程与应用,2013,49(24):93-96.

[8]李晓利.智能DNS解析在校园网中的应用[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技术在多出口高校校园网中的应用[J].重庆科技学院学报(自然科学版),2012,14(3):151-152,176.

[11]李勇超.光线路自动保护系统技术及其实用性探讨[D].郑州:解放军信息工程大学,2008.

[12]谭钦红,陈菊,曹懿乐,等.SNMP在OLP系统中的应用[J].电视技术,2012,36(21):99-101,155.

[13]杨雪,刘学升,栾宏之,等.OLP系统在电力光纤通信中的应用研究[J].电力系统通信,2012,33(9):56-60.

[14]卓文合,邵广贤.光纤线路自动切换保护装置在安徽电力通信网的应用研究[J].安徽电气工程职业技术学院学报,2013,18(4):121-125.

[15]邹朝亮.光线路保护系统OLP在福建电信波分系统中的应用与研究[D].北京:北京邮电大学,2011.

[16]贺聿志,章勇,柳斌.多链路BGP接入方法的探讨[J].华中科技大学学报(自然科学版),2016,44(1):148-151.

[17]苏申,方滨兴.BGP路由的动态性研究[J].智能计算机与应用,2016,6(5):69-70,73.

[18]黎松,诸葛建伟,李星.BGP安全研究[J].软件学报,2013,24(1):121-138.

[19]张文盛.源抑制在网络流量控制中的应用研究[J].微型机与应用,2015,34(17):60-62.

[20]孔金生,任平英.TCP网络拥塞控制研究[J].计算机技术与发展,2014,24(1):43-46.

猜你喜欢

双线路由器数据包
买千兆路由器看接口参数
二维隐蔽时间信道构建的研究*
中老铁路双线区段送电成功
维持生命
路由器每天都要关
路由器每天都要关
双线并行,交相辉映——2021年遵义市中考作文《灯火背后》升格举隅
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
一种双线半自动闭塞信号过渡设计的研究
宁波民生e点通:网友与政府部门沟通的“双线桥梁”