博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
F5 LTM 在SIP消息负载均衡中存在的问题
阅读量:7067 次
发布时间:2019-06-28

本文共 1336 字,大约阅读时间需要 4 分钟。

常被用来做应用交付负载均衡器,支持HTTP和SIP协议,以及从IP层(3层)到应用层(7层 standard)的负载均衡,同时兼具路由转发功能。业界使用F5 LTM来完成HTTP请求负载较多,基于SIP协议的7层协议较少。在使用该负载均衡器的过程中,我总结了一些问题:

  1. 使用基于TCP的传输大消息时,如果使用Standard模式,该消息会被切分,导致服务器端无法正常接收到消息。因此,只能选择Performance Layer4模式。

  2. F5 LTM支持AUTO MAP模式的NAT功能,却无法处理SIP消息的端口问题。

    F5为全代理工作模式,设备同时与客户端和真实服务器各建立一条连接,分别被定义为client side和server side。客户端会与F5的vs建立一条连接,F5会以自身接口IP与真实服务器建立一条连接。即:

    Client Side    Server SideClient------F5 VSF5 接口IP------Server

    由于F5与后端服务器通讯时仅使用的自身一个接口IP,所以就需要通过不同的源端口来区分不同客户端的Session。例:

    192.168.1.1:2000--->192.168.1.100:8080192.168.1.200:2000--->192.168.1.254:8080192.168.1.200:2000<-----192.168.1.254:8080192.168.1.1:2000<-----192.168.1.100:8080

    如上为当有一个客户端时F5默认使用与客户端相同端口转发数据包,固定端口2000,不使用rport时,根据VIA字段回复,能正确处理该消息。此时,有另一个客户端也是固定2000端口来访问。例:

    192.168.1.2:2000--->192.168.1.100:8080192.168.1.200:5555--->192.168.1.254:8080192.168.1.200:**2000**<-----192.168.1.254:8080

    当同时有另外一个客户端访问该VS时F5将使用随机端口“举例5555”与服务器通信,不然则无法区分Session。此处,没有使用rport,导致回复给F5的端口和F5发请求的端口不一致。(如果使用rport,服务器会根据rport来回复响应,此处,rport应为5555)。

因此,在实际应用当中使用F5作为SIP负载均衡器存在以下问题:固定端口后,大多数平台和设备使用5060端口进行SIP信令传输,在上次请求连接没有断开时,下次请求会使用随机端口向服务器发送请求响应。在不使用rport机制的情况下,服务器默认向VIA字段里的地址和端口进行回复,即响应被回复到了5060,导致F5无法正确匹配请求和响应,从而响应无法正确返回客户端(而是回复到了最初占用5060端口的那个客户端上了)。

建议解决方案:统一收发端口后,使用rport机制,在VIA字段中携带rport,从而服务器在接收请求后会记录F5发送请求的端口,回复响应会回复到该端口,让F5匹配请求和响应。固定端口使得F5能正常将响应回复到客户端。

另,rport机制详见:。

转载地址:http://xfall.baihongyu.com/

你可能感兴趣的文章
运维大师讲堂,7天从入门到进阶
查看>>
C语言scanf函数用法详细解释!
查看>>
【PHP-ZF】项目实战纵览(持续更新中...)
查看>>
深入理解HTML协议
查看>>
Spring 中获取 request 的几种方法,及其线程安全性分析
查看>>
您对TOP Server的德语、中文和日语语言支持了解吗?(一)
查看>>
JetBrains公司引入了新的JVM语言Kotlin
查看>>
边防综合指挥训练系统解决方案
查看>>
使用Python获取Google日历条目
查看>>
我的友情链接
查看>>
Go语言中分片(Slice)的其他使用方式
查看>>
C# Enum.Parse
查看>>
prototype资源
查看>>
Hello-World
查看>>
UNP卷1:第四章(基本TCP套接字编程)
查看>>
strcpy与memcpy以及strncpy
查看>>
centos下安装redis 以及 phpredis扩展
查看>>
使用python脚本利用SSH协议通过TFTP备份批量备份山石防火墙配置
查看>>
支付宝手机支付集成
查看>>
路由汇总实例
查看>>