热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

F5Loadbalancer转发模式原理(客户端>服务器)

1.透明模式:PerformanceL4DNAT原理:这种类型的Virtualserver.F5按照纯四层的方式处理数据包,只看源IP,源

1.透明模式:Performance L4 + DNAT
原理:这种类型的Virtual server.F5按照纯四层的方式处理数据包,只看源IP,源端口,目的IP和目的端口。数据包到达F5后,只改变目的IP为后端地址和端口进行转发。这部分的数据处理方式是可以通过F5 PVA芯片来进行转发的。所以这种模式从理论上来将是不会消耗CPU的。但是F5对PVA转发的要求还是比较苛刻,会有很多相关条件的限制。
后端操作:默认网关需要指向F5

 

2.透明模式:Performance L4 + SNAT + DNAT
原理:这种类型的Virtual server.F5按照纯四层的方式处理数据包,只看源IP,源端口,目的IP和目的端口。数据包到达F5后,改变源IP地址为SNAT地址的(一般为F5的vip),同时也改变目的IP为后端地址和端口进行转发。这部分的数据处理方式是可以通过F5 PVA芯片来进行转发的。所以这种模式从理论上来将是不会消耗CPU的。但是F5对PVA转发的要求还是比较苛刻,会有很多相关条件的限制。
后端操作:不需要任何操作               关于SNAT,F5会自动增加HTTP头部x_forwarded_for标示真实的客户端地址;


3.透传模式:standard + DNAT
原理:这种类型的Virtual server在数据包F5上是采取full proxy 7层的处理模式。一个client发起请求后,首先需要跟F5建立三次握手后,随后F5进行转发,再跟后端real server建立三次握手时,源地址和源端口为原客户端的,而目的IP和端口为后端的。F5维护两个TCP协议栈。在应用HTTP Profile后,F5将数据包按照HTTP协议的方式进行处理。此时数据的处理过程完全由F5 CPU处理。也可以实现所谓的content switch(内容交换)。但是这种方式对CPU的消耗比较高。
后端操作:默认网关需要指向F5(防止回程路由不一致,TCP又是有状态的协议,所以F5的握手得不到响应,见下面)

实例举例:客户端45.45.45.45访问https:195.175.224.74:6070,到达F5。 F5将做DNAT。  TCP ID为N
DNAT:195.175.224.74(VS公网IP)-->F5上的VIP 172.27.0.62(路由)-->172.27.0.19(服务器私网IP)  TCP ID为N

通信流程为:
45.45.45.45-->195.175.224.74  TCP ID为N (检查DNAT绑定) 195.175.224.74(VS公网IP)-->172.27.0.62(路由)-->172.27.0.19(服务器私网IP)  TCP ID为N
最终表现为45.45.45.45-->172.27.0.19   TCP ID为N

Traffic flow:
request Flow 10.10.10.10(Client)  ---> 195.175.224.66 ---->172.27.0.30 --->172.27.0.5
172.27.0.5  ---> 172.27.0.30 ---> 195.175.224.66 ---> 10.10.10.10(server)

 

4,透传模式:standard + SNAT + DNAT


原理:这种类型的Virtual server在数据包F5上是采取full proxy 7层的处理模式。一个client发起请求后,首先需要跟F5建立三次握手后,随后F5进行转发,跟后端real server建立三次握手时,源地址和源端口更改为SNAT地址的((一般为F5的vip)),而目的IP和端口为后端的。F5维护两个TCP协议栈。在应用HTTP Profile后,F5将数据包按照HTTP协议的方式进行处理。此时数据的处理过程完全由F5 CPU处理。也可以实现所谓的content switch(内容交换)。但是这种方式对CPU的消耗比较高。
后端操作:不需要任何操作


实例举例:客户端45.45.45.45访问https:195.175.224.74:6070,到达F5。TCP ID为N   F5将做DNAT和SNAT。
DNAT:195.175.224.74(VS公网IP)-->172.27.0.19(服务器私网IP)  
SNAT:45.45.45.45-->F5上的VIP 172.27.0.62(两台F5上,各自还有和后端服务器同VLAN的IP 172.27.0.61和172.27.0.60)TCP ID为M
通信流程为:
45.45.45.45-->195.175.224.74(TCP ID为N)   检查SNAT,DNAT绑定   172.27.0.62-->172.27.0.19(TCP ID为M)


5,fast http模式:standard + SNAT + DNAT + oneconnect
原理:oneconnect只是一个keepalive的作用,让client向F5发http请求的时候,可以复用同一条连接。不支持https和会话保持功能,原因就是连接复用的问题。
后端操作:不需要任何操作

6,路由转发模式
原理:和lvs的DR模式相同
后端操作:和lvs的DR模式相同


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • LVS服务器集群系统
    LVS介绍LVS:LinuxVirtualServer,负载调度器,内核集成,章文嵩(花名正明),阿里的四层SLB(ServerLoadBalance)是基于LVS+keepali ... [详细]
  • fidder监控请求响应时间和请求IP(摘抄至网络)
    增加监控请求的详情时间在CustomRules.js的classHandlers中增加添加请求的响应时间publicstaticBindU ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • centos 6.5 mysql 集群_CentOS 6下安装部署Galera Cluster for MySQL集群
    GaleraClusterforMySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高, ... [详细]
author-avatar
s0e2tv26d80iossI
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有