lvs集群系统网络核心原理分析

lvs集群系统网络核心原理分析

ID:9507055

大小:59.50 KB

页数:8页

时间:2018-05-01

lvs集群系统网络核心原理分析_第1页
lvs集群系统网络核心原理分析_第2页
lvs集群系统网络核心原理分析_第3页
lvs集群系统网络核心原理分析_第4页
lvs集群系统网络核心原理分析_第5页
资源描述:

《lvs集群系统网络核心原理分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、LVS集群系统网络核心原理分析  1、LVS结构与工作原理  LVS由前端的负载均衡器(LoadBalancer,LB)和后端的真实服务器(RealServer,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(VirtualServer),而看不到提供服务的RS群。  当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。同请求包一样,应答包的返回方式也与包转发策略有关。  LVS的包转发策略有三种:  NAT(Netpty(nf_ho

2、oks[(pf)][(hook)])?(okfn)(skb):nf_hook_sloheredo;/*Hooksareorderedinascendingpriority.*/intpriority;};  其实,类似LVS的做法就是生成一个structnf_hook_ops结构的实例,并用nf_register_hook将其HOOK上。其中l123下一页....,。ist项要初始化为{NULL,NULL};由于一般在IP层工作,pf总是PF_I;hooknum就是HOOK点;一个HOOK点可能挂多个处理函数,谁先谁后,便要看优先级,即priority的指定了。filte

3、r_ipv4.h中用一个枚举类型指定了内置的处理函数的优先级:enumnf_ip_hook_priorities{NF_IP_PRI_FIRST=INT_MIN,NF_IP_PRI_CONNTRACK=-200,NF_IP_PRI_MANGLE=-150,NF_IP_PRI_NAT_DST=-100,NF_IP_PRI_FILTER=0,NF_IP_PRI_NAT_SRC=100,NF_IP_PRI_LAST=INT_MAX,};  hook是提供的处理函数,也就是我们的主要工作,其原型为:unsignedintnf_hookfn(unsignedinthooknum,s

4、tructsk_buff**skb,conststruct_device*in,conststruct_device*out,int(*okfn)(structsk_buff*));  它的五个参数将由NFHOOK宏传进去。  以上是NetFillter编写自己模块时的一些基本用法,接下来,我们来看一下LVS中是如何实现的。  3、LVS中Netfiler的实现  利用Netfilter,LVS处理数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数NF_IP_PRE_ROUTING[HOOK1]进行处理;然后进行路由选择,决定该数据报是需要转发还是发给本机;

5、若该数据报是发被本机的,则该数据经过钩子函数NF_IP_LOCAL_IN[HOOK2]处理后传递给上层协议;若该数据报应该被转发,则它被NF_IP_FORP数据报包头的ip地址,并重新计算和修改各个包头中的检验和,之后查找路由调用ip_send()发送修改过的数据报,并返回NF_STOLEN(退出数据报的处理过程)。  ip_vs_in()调用的函数ip_vs_schedule()为虚拟服务器调度可用的RS并建立相应连接。它将根据虚拟服务器绑定的调度算法分配一个RS,如果成功,则调用ip_vs_conn_neit()、ip_vs_tunnel_xmit()、ip_vs_d

6、r_xmit()。例如ip_vs_nat_xmit()的主要操作是:修改报文的目的地址和目的端口为RS信息,重新计算并设置检验和,调用ip_send()发送修改后的数据报。  3.2NF_IP_FORp数据报则直接调用ip_vs_out_icmp();其次判断是否为tcp/udp数据报,如果不是这二者则返回NF_ACCEPT。余下就是tcp/udp数据报的处理。首先,调用ip_vs_header_check()检查报头,如果异常上一页123下一页....,。则返回NF_DROP。其次,调用ip_vs_conn_out_get()判断是否存在相应的连接。若不存在相应连接:调

7、用ip_vs_lookup_real_service()去哈希表中查找发送数据报的RS是否仍然存在,如果RS存在且报文是tcp非复位报文或udp报文,则调用icmp_send()给RS发送目的不可达icmp报文并返回NF_STOLEN;其余情况下均返回NF_ACCEPT。若存在相应连接:检查数据报的检验和,如果错误则返回NF_DROP,如果正确,修改数据报,将源地址修改为虚拟服务器ip地址,源端口修改为虚拟服务器端口号,重新计算并设置检验和,并返回NF_ACCEPT。  ip_vs_out_icmp()的流程与ip_vs_in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。