Forum Discussion
Packet based load balancing instead of connection based (default)
Hi everyone,
I have a requirement to load balance iso 8583 echo messages across two servers in a pool. I used a performance Layer 4 virtual server to attempt achieving this because I reckon that is the type of virtual server that could fulfill the requirements of load balancing all the requests across the 2 servers in the pool. However, requests are only being sent to one pool member. I also tried to craft an iRule (see below) to do this, still requests are only sent to one pool member.
when CLIENT_ACCEPTED {
log local0. "ACCEPTED !!"
TCP::collect
}
when CLIENT_DATA {
log local0. "DATA !!"
#to get the length of messagein hexadecimal,the length info can be get from the first 2 byte
binary scan [TCP::payload] H4 len
log local0. $len
#convertlentodecimal
scan $len %x len
log local0. $len
#totalmessage length is length + 2
set len [expr { $len + 2} ]
if {[TCP::payload length] < $len} {
TCP::collect [expr {$len - [TCP::payload length]}]
return
}
TCP::release $len
TCP::notify request
TCP::collect
}
when LB_SELECTED {
log local0. [LB::server]
}
when SERVER_CONNECTED {
log local0. "Server Connected !!"
TCP::collect
}
when SERVER_DATA {
log local0. "response: [TCP::payload]"
TCP::release
TCP::notify response
TCP::collect
}
Has anyone done packet-based load balancing before? Any ideas?
It is impossible on an F5 device.
The F5 device can load balance to only one server.
If you need to send packets to both servers, you can use a client/server clone pool or a TAP switch.
- Lucas_ThompsonEmployee
BIG-IP really wants to:
1- Receive a packet for my MAC
2- Look at the VLAN and L4 source/dest and match a virtual
3- Add this flow to the flow table
4- Try to connect the server-side of the flow or continue the client-handshake, depending on how the proflies are set up
All of the traffic processing hinges upon what's in the flow table, so there's not really a way to "turn it off".
However, you can easily reconnect the server-side to a different server using "LB::reselect":
https://clouddocs.f5.com/api/irules/LB__reselect.html
You can also reconnect the flowserver-side to a server using the "node" command if you want to disregard all BIG-IP load balancing logic:
https://clouddocs.f5.com/api/irules/node.html
- zamroni777Nacreous
how is the pool's load balancing method and vserver's persistence profile config?
for custom persistence that is not provided in standard ltm, you can try universal persistence method.
https://my.f5.com/manage/s/article/K7392- f5guyskenziNimbostratus
Hi zamroni777
- zamroni777Nacreous
if what you meant is sending 1 client request to more than 1 servers simulatenously, then you can try using "send" command.
https://clouddocs.f5.com/api/irules/send.htmlf5 engineer used this in a telco customer to do similar thing.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com