Forum Discussion

jobasu_360381's avatar
jobasu_360381
Icon for Nimbostratus rankNimbostratus
Aug 08, 2018

Sideband TCP Zero Window

Hi There,

 

I'm using a sideband connection to copy data to two nodes, but when the sideband is enabled the error comes out, am I missing something in my code?

 

When I use the command "sys conn all " 30 connections exist, with the sideband enabled it duplicates to 60-63.

 

The incoming traffic is on average 8 Mbps after the sideband is enabled the traffic drops to 4-6 Mbps.

 

F5-i2600 tcp-wan-profile

 

iRule:

 

when RULE_INIT {
    this is the destination for traffic to be replicated to, IPv6 or IPv4 should work.
    node1
    set static::sideband_node1_address "10.10.43.104"
    set static::sideband_node1_port "5588"
    node2
    set static::sideband_node2_address "10.10.35.107"
    set static::sideband_node2_port "4010"
}

CLIENT_ACCEPTED fires once per client connection, after the three way handshake completes
when CLIENT_ACCEPTED {

connection must contain -myaddr [IP::client_addr] -myport [TCP::client_port] to retain original ip/port
            if { [active_members sideband1pool] > 0 } {
    set connnode1 [connect -protocol TCP -myaddr [IP::client_addr] -timeout 100 -idle 3600 -status conn_status $static::sideband_node1_address $static::sideband_node1_port]
            }
            if { [active_members sideband2pool] > 0 } {
    set connnode2 [connect -protocol TCP -myaddr [IP::client_addr] -timeout 100 -idle 3600 -status conn_status $static::sideband_node2_address $static::sideband_node2_port]
            }

collecting the data to clone
    TCP::collect
}

CLIENT_DATA fires when new data is received after issuing TCP::COLLECT
when CLIENT_DATA {

    Will avoid attempts to send when destination is offline
    if { [active_members default_pool] == 0 } {
        TCP::respond "Dummy server responding\r\n"

        sending data to node1
        if { [active_members sideband1pool] > 0 } {
            set data [TCP::payload]
            TCP::collect
            set send_info [send -timeout 3000 -status send_status $connnode1 $data]
        }
        sending data to node2
        if { [active_members sideband2pool] > 0 } {
            set data [TCP::payload]
            TCP::collect
            set send_info [send -timeout 3000 -status send_status $connnode2 $data]
        }
        TCP::payload replace 0 [TCP::payload length] ""
    }
    TCP::collect
}

when CLIENT_CLOSED {
    attempt to clean up any sideband connection which may be open
    set result [catch { close $connnode1}] 
    set result [catch { close $connnode2}] 
}
No RepliesBe the first to reply