分布式Web服务器技术在网管中的应用
来源:爱玩科技网
第7卷第5期 2008年5月 软件导刊 Software Guide VO1.7 NO.5 Mav2008 分布式Web服务器技术在网管中的应用 曾 烨.黄迪明 (电子科技大学计算机科学与工程学院,四川成都610054) 摘 要:基ff-Web ̄网管系统是未来的发展趋势。当前大型网管系统还不能很好地为用户提供细粒度的网管信息: 当系统访问量增加时,系统的性能急剧下降。为了克服这些缺点,把分布式Web服务器集群的思想引入了当前的Web 网管系统,重点研究了这种思想在新网管系统架构中是如何实现的。 关键词:分布式Web集群:网络管理;TCPff2移 中图分类号:TP393.07 文献标识码:A 文章编号:1672—7800(2008)05—0051—03 因此.本文试图将分布式Webn ̄务器技术引入网管系统领 O 引言 Web技术引入网管系统已经成为趋势。但是相比传统的网 管系统,基于Web的网管系统表现出来的性能和扩展性不足. 无法应用于大规模的复杂网络。 域,提出一种新的应用框架。 1系统关键技术 在新系统中,前端机(即分配器)位于用户通往真正提供服 务的后端Web服务器的逻辑路径上,每一个来自用户的数据包 都必须经由它中转。当客户端向Webn ̄务器提交访问请求时. 前端机从这个TCP连接中解析出H1TP请求的具体内容,然后依 据分配转发策略,进行TCP连接转交。系统要求这个处理过程 不仅对客户端完全透明,而且也不会使前端机成为整个系统的 网络瓶颈。原理如图2所示。 ;中问层管理服务器! 图l基于Web的网管系统 目前基于Web的分布式网管系统如图1所示。这种网管体系 结构虽然可以解决多平台的互操作问题,提供易于使用的图形 界面,大大减少了需要在工作网络中传播的网管信息量和需要 由核心服务器处理的数据量等等。但是,它也存在以下的缺点: (1)不能很好地为用户提供细粒度的网管信息。通过Web 图2 TCP连接迁移原理 服务器,用户只能够获得各个子域(或称为“组”)的整体信息, 当用户需要粒度更细的网管功能时。大量数据要经由中间层服 务器中转给顶层服务器,这样会造成对顶层服务器或者网络带 1.1数据结构 为了转发用户数据包和实现对后端机存储系统的统一管 理,前端机需要维护两张表:连接状态表和URL分布表。连接状 态表通过某一连接的用户端标识(即用户的IP地址和Poa)检索 宽资源的占用,增加延迟,使得顶层服务器成为瓶颈。 (2)在系统访问量增加时,系统与用户的交互能力是系统 出服务器系统中负责处理该连接的后端机的IP地址、该连接的 最近使用时间和连接状态等,此外,根据某个后端服务器的IP 地址检索该表,还可得到该服务器当前负荷情况。 1.2工作原理 的潜在性能瓶颈。今天对网管信息感兴趣的不再只是少数的网 管人员。相关的决策人员、网络用户等都可能成为网管信息的 用户。随着网管GUI用户的增加,系统的交互能力就会急剧下 降。 TCP连接转交的思想是在后端服务器上“重现”连接的建 作者简介:曾烨(1982-),男,湖南株洲人,电子科技大学计算机科学与工程学院硕士研究生,研究方向为计算机网络技术;黄迪明(1944一),男,四,1 成都人。电子科技大学计算机科学与工程学院教授,研究方向为网络信息技术、网络安全。 ・52・ 软件导刊 2008正 立过程,即在前端机上复制并缓存客户端在连接建立过程中发 送来的报文。在决定迁移的后端服务器后,通过IP隧道,将这些 文头 ̄?ackseq域值,加上OFFSET。这样,该报文变为了ACK (SSeq+1)报文.重新计算校验和。(以后S上转交模块在该连接 报文封装发送给后端服务器。后端服务器根据IP隧道协议解开 封装后,报文被TCP迁移系统的内核模块所截获。此模块从中 依次提取出各个报文,然后伪装成客户与后端服务器的协议栈 上截获收到报文,修改序列号,其方法均为加上OFFSET)。这 样.后端服务器S就被“欺骗”,认为它发出去的SYN+ACK报文 的响应报文到了,三次握手完成。 进行三次握手过程,使连接从前端机迁移到后端服务器上。此 外,内核模块还需要修改所截取报文的序列号,使其在客户端 和后端服务器保持一致。这种方法与具体操作系统实现无关, (6)转交模块从先前的IP报文中最后提取出H1TrP请求(seq: CSeq+l,ack—seq:BSeq+1)报文,将ack—seq域值加上0FFSET,即将 该报文变为(seq:CSeq+l,ack—seq:SSeq+1)报文,重新计算校验 对操作系统协议栈和上层应用透明。 为此,需要设计一个TCP转交处理模块(简称转交模块), 它安装在前端机和后端服务器上.其主要功能:在前端机上,主 要是记录连接、迁移信息,分析H1TrP请求内容,转发报文给后 端服务器:在后端服务器上,主要是改写序列号,丢弃某些响应 报文,以达到“欺骗”后端服务器的目的,以此来实现TCP的连 接转交。 1.2.1连接建立阶段 (1)客户端向前端机发起请求。典型的请求以一个SYN (CSeq表示客户端报文的初始序列号)报文开始。前端机上的转 交模块将截获客户端的SYN请求报文,解析后,将其复制一份, 缓存下来;前端机再回应一个ACK(CSeq+I)到客户端。同时,发 起一个SYN(BSeq表示前端机的初始报文序列号)。 (2)ACK+SYN报文回送到客户端。客户端在收到前端机的 正确应答报文后,认为连接已经建立(实际上,客户端仅仅是和 前端机建立了连接),对前端机的SYN(BSeq)进行应答,发送 ACK(BSeq+I)(不考虑捎带确认,下同)。至此完成了三次握手 的全部过程。并且开始进行数据通信,客户端向前端机发出数 据请求报文(这里假设为HTTP请求报文)DATA(CSeq+1)。 (3)ACK(BSeq+1)报文到达前端机后,由前端机上的转交 模块复制一份缓存起来。当客户端的HTrP请求到达时,同样由 前端机上的转交模块截获,转交模块分析该H1TrP请求,并根据 URL表和算法1进行匹配,从而调度到一台后端服务器S。然后 将先前复制的SYN报文、ACK报文连同该I-ITTP请求报文,封装 为一个报文。通过IP隧道发送给选出的后端服务器S。前端机以 后只负责在IP层封装客户端发来的报文,再通过IP隧道转发给 后端服务器S。 (4)前端机刚才转发的报文首先被后端服务器S上的转交 模块截获.转交模块先直接将该IP隧道报文交给IP隧道设备解 开封装。IP隧道设备解开封装后,将原始IP报文重新放入协议 栈中。又重新被转交模块截获。转交模块解析该报文,从中提取 出客户端原始的SYN(CSeq)报文,记下报文的初始序列号 CSeq,然后直接交给协议栈。 (5)后端服务器S产生SYN+ACKSE文。这里的初始序列号 与前端机产生的是肯定不同的,该报文同样由转交模块截获, 记下该序列号为SSeq。然后将该SYN+ACK报文丢弃,不再通过 协议栈向下传输发送。接着,KTH从先前的IP报文中又提取出 客户端的ACK(BSeq+1)报文,计算偏差0FFSET=SSeq—BSeq,根 据TCP协议,该偏差是固定的。将该ACK(BSeq+1)报文的TCP ̄E 和,交给协议栈。 (7)后端服务器S响应该H1TrP请求。响应报文(seq:SSeq+l, ack—seq:CSeq+2)同样在发送前由转交模块截获。转交模块将报 文的seq域减去OFFSET,变为(seq:BSeq+l,ack seq:CSeq+2),重 新计算校验和,交给协议栈,发送给客户端。以后S上的转交模 块截获到的所有该连接上发送的报文,修改序列号的方法均为 将其减去OFFSET。同时还要把报文的原IP地址改为前端机的 IP地址。这样客户端以为是前端机发来的响应,从而客户端也 正确地得到了响应。至此已完成连接的迁移工作,该过程对客 户端是透明的。 1.2.2 URL请求和应答阶段 迁移的连接上的后续报文由客户端发送给前端机,前端机 上的转交模块截获报文后,根据客户端的IP和Port,查找连接状 态表得到目的服务器S的IP地址。转交模块将报文使用IP隧道 协议封装后。转发给后端服务器S。S上修改序列号,修改应答报 文的原IP地址等操作与1.2.1相似。 I.2-3连接结束阶段 考虑客户端主动关闭连接。 (1)客户端发起一个FINC,到达前端机。前端机删除连接 状态表中相应的项。将该报文缓存起来。同时前端机发送ACKB 和FINB给客户端,客户端应答报文ACKC到达前端机。前端机 把客户端的FINC和ACKC通过IP隧道发给后端服务器S。 (2)后端服务器S上的转交模块提取出FINC,修改序列号, 将报文交给本机协议栈。 (3)后端服务器S要发送ACKS和FINS给客户端,被转交模 块截取并丢弃。 (4)S上的转交模块提取出ACKC,修改序列号,将报文交给 本机协议栈。这样服务器S就关闭了该连接。 前端机和后端服务器S之间的连接可以是持久连接,也可 以是客户端发起时才建立的。如果是后一种情况,那么前端机 和后端服务器S之间也需要关闭连接。服务器主动关闭连接类 似,这里不再叙述。 2 系统模型 2.1系统整体架构 新的网管系统是一个具有统一的管理界面的分布式网管 系统,它引入了分布式Web ̄E务器技术,试图在用户界面一级 为用户提供单一的管理入口,提供统一的网管系统用户界面。 其框架结构示意图如图3所示。其中的网管服务器分别处于不 第5期 曾烨,黄迪明:分布式Web服务器技术在网管中的应用 ・53・ 同的层次,共同组成一个具有层次结构的网管系统。后端服务 器和前端机可 通过高速链路连接起来。从用户与网管系统交 互的角度看,该系统以一个识别用户请求的分配器作为前端 机。所有用户请求,首先送到分配器,分配器了解用户索取的 URL之后,将该用户请求转交给相应的Web网管服务器来处 理。顶层服务器(核心服务器)负责对用户提供与网络整体状态 相关的信息,而每一个中间层网管服务器为用户提供本域内的 网管信息。这样,各个层次上的网管服务器组成一个大的虚拟 Web服务器系统,共同为网管系统的用户提供一个具有单一系 统映像的用户界面。用户通过浏览器可以随时随地通过同一 URL进入该网管系统的图形化界面,获取各个层次的网管信 息。 _ ●………………_图3基于分布式Web服务器的网管系统架构 管理域的划分可以通过Web服务器系统的虚拟文件目录 结构来实现。将不同服务器负责提供不同层次管理活动、管理 不同管理域的事实,映射为由不同的网管服务器负责提供Web 服务器某目录下的所有内容、操作和服务。在分配器中存储一 个简单的URL对应关系表(即上述的URL表),根据它可以迅速 将用户请求转发往相应的网管服务器.而各个服务器只需将虚 拟目录映射为本地的一个真实目录即可。 2.2转交模块实现 目前的Linux内核中,引入了一个最新的编程框架: Netifher。它提供了非常好的接口用于抓取、截获、分析网络上 的数据包。利用Netfilter框架的支持,在前端机和后端服务器 上,分别挂接IP_LOCAL_IN链和IP_LOCAL_OUT链,用于截取/ 改写TCP报文。挂接IP_LOCAL_IN链,将截获所有发送给本机的 IP报文。而挂接IP_LOCAL_OUT链,将截获所有本机将要发出 的IP报文。在前端机上,模块的功能主要是记录连接迁移信息、 分析H1-I’P清求内容、转发报文给后端服务器。在后端服务器 上.则主要是改写序列号。丢弃某些响应报文以达到“欺骗”后 端服务器的目的。 2.3性能分析 测试环境包括1台Pentium4 2.66GHz(1GB内存.80G硬盘) 运行在Linux操作系统上作为前端机,后端服务器为3台 Pentium4 2.66GHz(1GB内存,80G硬盘),用Linux+Apache提供 we1)服务,采用WebBENCH5.0作为性能测试软件。性能评测实 验结果显示新的Web原型性能有了显著的提高。 表1性能评测结果 客户请求个数 基于代理方式Web基于TCP Handoff 网管吞吐量 网管吞吐量 3结束语 把分布式Web服务器技术引入网管系统.新的网管系统以 单一的系统映像为用户提供多种粒度的网管功能。避免了在网 络上传输大量的网管数据而需要的带宽开销;系统支持大量的 用户访问;便于通过增加网管服务器的数量,或者增加网管系 统的层次来实现对更大规模的网络的管理。 参考文献: [1] 薛,王宇,李增智.基ff-Web ̄分布式网络管理的设计及实现 [J].计算机工程,2002(1). [2]wei Meijuan,Xiao Debao,Guo Jintao.A Distributed Network Management Model for Next Generation Internet Based on XML and Policy [C]//ICCT"06.International Conference on Communication Technology.2006. [3]Papathanasiou A E,Van Hensbergen E.KNITS:switch-based connection hand—off[c].//Twenty—First Annual Joint Conference of the IEEE Computer and Communications Societies.Proceedings. IEEE.June 2002. [4] 李波,李双庆,程代杰.web服务器集群TCP Handoff ̄术及其实 现[J].计算机工程与应用,2004(2). [5] 林曼筠,钱林华.基于标记的缓存协作分布式Web服务器系统 [J].软件学报,2003(1). [6] 张建鑫,古志民,廖祥文,等.基于分布式请求处理的Web虚拟服 务器[J].计算机工程,2004(19). (责任编辑:杜能钢)