L4-7硬件负载均衡记录上一跳(last hop)原理分析

目前随着L4-7层国产硬件负载均衡设备涌入市场,硬件负载均衡产品的各项功能的介绍也是很多,本文对目前主流的硬件负载均衡产品在负载过程记录上一跳的功能原理进行大致的分析。

硬件负载均衡产品大家估计想到的有很多;有主机类型的也有交换类型的硬件负载均衡产品,例如:F5(云科)、深信服(SANGFOR AD)、迪普(DPtech)、弘积(horizon-adn)信安世纪(NSAE)等等是基于交换类型的的负载均衡产品,在负载的过程中实现转发的功能,从TCP/IP数据包的结构分析,源IP不一定会替换(主机服务器类型的产品,数据包的源IP在没有特殊开发过程中一般情况下是都会被替换,例如,在服务器中搭建的LVS)。

简单列举一下,笔者接触到的产品对于这一项功能的命名:

BIG-IP F5(云科):Auto-last hop 记录上一条的MAC地址

深信服(SANGFOR AD):对称路由 (字面意思请大家理解即可)

信安世纪(NSAE)RTS (Return to Source)路由返回 ,当从多条具有相同优先级的路由中选择一条转发报文时,系系统将通过反查路由来找到客户端请求到达设备的原链路并自动为该链路创建一条RTS路由,确保响应通过该链路返回;

PS:信安世纪对于每个功能介绍还是很详细的,其他的产品功能笔者只是通过自己的理解分析,迪普(DPtech)、弘积(horizon-adn)的产品笔者接触的不多也存在相同的功能,就不一一列举出来了。

抛开以上产品的功能命名不说,引用上一篇的负载均衡内部简单的结构图结合数据包报文结构,简单的刨析记录上一跳的原理。

负载均衡策略内部结构图如下:

TCP/IP数据包报文的大致结构如下:

IP首部和TCP首部报文的结构如下图所示,TCP和IP首部涉及的检验值、序号、确认号等因为本文暂时用不到不详细列举。TCP/IP首部报文为:源IP、目的IP、源端口、目的端口...

负载均衡设备再处理负载流程过程中笔者将其分为4部分,如下图所示:

下面我们结合TCP/IP首部报文在负载均衡过程中的变化进行刨析;

访问序号

源IP

目的IP

源端口号

目的端口号

行为

1

Client IP

虚拟服务IP

Client随机端口(如无特殊设置,Client的端口为随机产生的大端口大于20000)

虚拟服务的port

客户端访问虚拟服务

2

Client IP

虚拟服务IP

Client随机端口(如无特殊设置,Client的端口为随机产生的大端口大于20000)

虚拟服务的port

负载均衡虚拟服务根据设定的策略处理数据包报文

3

Client IP

服务器IP

Client随机端口(如无特殊设置,Client的端口为随机产生的大端口大于20000)

服务器port

负载均衡设备做目的地址转换进行负载

4

根据组网结构如无需改变源IP,默认源地址为Client IP,如果需要做源地址转化,则源IP变化为设定snat ip

服务器IP

源端口号根据负载均衡设定的策略进行变化,一般情况下源端口号进行保留,有特殊设置策略的情况下可能产生变化

服务器port

数据包报文出负载均衡设备被分配至其中一台服务器

通过以上的对比简单理解负载的过程其实是数据包报文做目的转化的过程,待对应的服务器端的程序应答报文后,数据包报文又会按照流程4、3、2、1进行返回;

PS:服务器将数据包报文封装后返回给谁,根据服务器设定的gateway网关实现;在这里大家理解一个问题,相同网段的IP和不同的网段的IP通信方式的不同(属于网络交换范畴,这里不做过多解释),在数据包报文返回至负载均衡设备后,负载均衡设备需要将数据包报文封装进行返回,画重点;

负载均衡设备在封装数据包返回报文的给Client的过程中,目的IP封装Client IP,那么对应的mac地址应该封装谁或者说返回的数据包又是怎么封装?这里就引申出标题负载均衡设备记录上一条的功能,如果不存在这个功能,我们可以将负载均衡设备看作一台服务器,那么负载均衡设备按照设定的gateway网关或者路由封装网关的MAC地址(此处涉及client ip是否为虚拟服务IP的相同的二层网段,如果不是则封装网关MAC,如果是则进行二层广播),此处的问题是负载均衡设备在为服务器负载时候设置网关,网关指向谁?

通过以上的说明就引申出负载均衡记录上一跳的功能,简单的理解为,记录访问到负载均衡虚拟服务最后一跳的数据包报文信息(包括:MAC信息、路由等等)这样方便负载均衡返回数据包报文时候快速封装,节省负载均衡设备设置网关路由等繁琐问题。

那么记录最后一跳具体记录的哪一跳?如图所示:

最后一跳,记录的访问负载均衡虚拟服务最后一跳的设备信息,图中Network位置,如果连接负载均衡设备的是交换机,那就是交换机的MAC,如果是防火墙那就是防火墙的MAC,总之最后一跳的数据包报文在到达负载均衡设备的虚拟服务时候,数据包报文的源MAC地址是谁,就会记录谁。

总结,不管各类L4-7应用交付负载均衡厂家对于记录上一跳的功能如何命名,每个厂家的展现形式又不同,诸如,F5设备(Auto-last hop)上一跳的功能记录在TCP连接表中,SANGFOR AD(对称路由)记录在单独的路由表中,信安世纪NSAE(RTS)好像也记录在路由表中。

原理大致一样,都是为了方便访问减少负载均衡设备上对于路由、网关等信息的设定。

希望通过笔者简单的分析,大家可以对记录上一跳的功能有个了解。

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
负载均衡是指将网络流量分发到多个服务器上,以实现请求的均衡处理。负载均衡可以分为L3、L4和L7三种类型。 L3负载均衡主要工作在网络层,使用IP地址和端口号等信息进行负载均衡。L3负载均衡器可以根据源IP地址或目标IP地址进行请求转发,以实现流量的分发和负载均衡。L3负载均衡器的优点是速度快,但无法对请求进行深入的内容分析和处理。 L4负载均衡工作在传输层,主要用于TCP和UDP协议的负载均衡L4负载均衡器可以基于端口号将请求分发到不同的服务器,以实现负载均衡。常见的L4负载均衡器包括LVS和nginx。L4负载均衡器具有较好的性能和灵活性,但仅能通过端口号进行负载均衡,无法对请求的内容进行处理。 L7负载均衡工作在应用层,可以对请求的内容进行深入的分析和处理。L7负载均衡器可以根据请求的URL、HTTP头部等信息将请求分发到不同的服务器。L7负载均衡器具有较高的灵活性和功能,但由于需要对请求进行深入的处理,性能相对较低。常见的L7负载均衡器包括nginx和HAProxy等。 综上所述,负载均衡可以分为L3、L4和L7三种类型,每种类型都有不同的特点和适用场景。选择合适的负载均衡器取决于具体的需求和应用场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [转载和积累系列 - L4负载均衡的设计与实现](https://blog.csdn.net/initphp/article/details/107927807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值