Forum Discussion

RedApple_76292's avatar
RedApple_76292
Icon for Nimbostratus rankNimbostratus
Apr 30, 2008

TCP::collect at client side seem to block server conversation

I try to implement simple iRule to check the TCP payload both client side and server side. The conversation is full duplex so we can not expect the sequence of communication. The following iRule seem to block the server side connection.

 

 

when CLIENT_ACCEPTED {

 

TCP::collect

 

}

 

when CLIENT_DATA {

 

log "check TCP payload"

 

}

 

 

when SERVER_CONNECTED {

 

TCP::collect

 

}

 

 

when SERVER_DATA {

 

log "Check TCP payload"

 

}

 

 

For example, client open connection to server port 8081 (S:1034,D:8081) but after TCP handshake, not data send from client. In the same time, server start feed traffic to client use previous connection (S:8081, D:1034) but data never reach the client. It seem like iRule hang at CLIENT_ACCEPTED event (TCP::collect).

 

Is it normal?
  • TCP::release after TCP::collect does not help. It seem like BIG-IP wait for data from client until TCP timeout before process.
  • spark_86682's avatar
    spark_86682
    Historic F5 Account
    There is a way to accomplish this, but there are some caveats to the solution. Before I discuss it here, I would like to know if you have a case open with F5 support on this issue?