F5 LTM customized Packet cloning
Hello every body
I have an application using SMPP, SMPP is TCP based protocol and it establish sessions to send traffic, SMPP has unique command IDs to Establish session and tear them up, below image is simple protocol flow:
In below example in packet 8 in attached tcpdump, you will see under SMPP (Short Message Peer to Peer) layer a command ID: 0x00000009 which represent bind command (establish a connection/SMPP session).
What I need to similar to customized clone pool concept but on pool member level and on certain condition, I need an iRule or may be an iCall procedure to check for SMPP bind command by scanning packet PDU, similar example is below: https://devcentral.f5.com/questions/balancing-smpp-traffic-based-on-recipient-address
when CLIENT_ACCEPTED {
set s_seq_idx 1
set first_bind_resp 1
set smsc1
set smsc2
TCP::collect
}
when CLIENT_DATA {
while { [TCP::payload length] > 16 } {
binary scan [TCP::payload] IH8IIa* len oper status seq p
if { [TCP::payload length] < $len &&} // We need here to add check for bind command id as well
{
TCP::collect $len
return
}
My challenge is to replicate SMPP bind packet to all available pool members in certain pool 😃 , Once SMPP Bind packet is replicated, as result we will get established SMPP sessions with all available pool members, and F5 LTM then will be able to load-balance other incoming traffic with all pool members as far as connection is established. If concept is OK, the rest is not challenging as we need to consider other bind command IDs to be replicated (0x00000001, 0x00000002 and 0x00000009), and of course we need to replicate unbind as well 0x00000006 if possible.
Thank you so much in advance.
Sincerely, SAM