Forum Discussion
Triggering an action based on TCP Connections
Is it possible to trigger an action on the base of how many tcp connection a specific VIP has under a http request? If yes how to use the variable in order to define it?
Many Thanks in advance
Can the sessions be replaced with connectionswith the way you are prescribing?
if you want to track tcp connection, you may increase the counter in CLIENT_ACCEPTED and decrease it in CLIENT_CLOSED.
- nitassEmployee
Is it possible to trigger an action on the base of how many tcp connection a specific VIP has under a http request?
what action do you want?
you can count number of current tcp connections to virtual server using table sessiondb (table irule command) and take an action when the number reaches threshold.
- Absarkhan_15403NimbostratusHi Nitass, I am trying to run below iRule to display a waiting room page when a certain threshold is reached. Currently the threshold is "number of sessions", however I think it is more logical to track the "number to TCP connections" instead. Can the sessions be replaced with connectionswith the way you are prescribing? Many Thanks for your help.
- Absarkhan_15403Nimbostratuswhen HTTP_REQUEST priority 1 { set static::maxActiveClients "[class search -all -value datagroup_selfridges_waitingroom starts_with "max_active_clients"]" set subtableName "sessionLimit" set sessionCookieName "[class search -all -value datagroup_selfridges_waitingroom starts_with "session_cookie_prefix"]" set holdingPage "[class search -all -value datagroup_selfridges_waitingroom starts_with "holding_page_url"]" set static::sessionTimeout "[class search -all -value datagroup_selfridges_waitingroom starts_with "session_timeout"]" set need_cookie 0 if {[HTTP::cookie exists $sessionCookieName]} { set client_id [HTTP::cookie $sessionCookieName] set sessiondata [table lookup -subtable $subtableName $client_id] if { $sessiondata != "" } { log local0. "Valid session $client_id - continuing" return } } log local0. "No session. Checking for free slot (Max $static::maxActiveClients)" set sessionCount [table keys -subtable $subtableName -count] log local0. "No session. Checking for free slot (Current $sessionCount)" if {$sessionCount < $static::maxActiveClients} { set need_cookie 1 set client_id [format "%08d" [expr { int(1000000000 * rand()) }]] set sessionValue [IP::client_addr] table add -subtable $subtableName $client_id $sessionValue $static::sessionTimeout log local0. "New Session ($client_id) added value $sessionValue Timeout $static::sessionTimeout" } else { HTTP::redirect $holdingPage } } when HTTP_RESPONSE priority 1 { if {$need_cookie == 1} { HTTP::cookie insert name $sessionCookieName value $client_id path "/" } }
- nitass_89166Noctilucent
Is it possible to trigger an action on the base of how many tcp connection a specific VIP has under a http request?
what action do you want?
you can count number of current tcp connections to virtual server using table sessiondb (table irule command) and take an action when the number reaches threshold.
- Absarkhan_15403NimbostratusHi Nitass, I am trying to run below iRule to display a waiting room page when a certain threshold is reached. Currently the threshold is "number of sessions", however I think it is more logical to track the "number to TCP connections" instead. Can the sessions be replaced with connectionswith the way you are prescribing? Many Thanks for your help.
- Absarkhan_15403Nimbostratuswhen HTTP_REQUEST priority 1 { set static::maxActiveClients "[class search -all -value datagroup_selfridges_waitingroom starts_with "max_active_clients"]" set subtableName "sessionLimit" set sessionCookieName "[class search -all -value datagroup_selfridges_waitingroom starts_with "session_cookie_prefix"]" set holdingPage "[class search -all -value datagroup_selfridges_waitingroom starts_with "holding_page_url"]" set static::sessionTimeout "[class search -all -value datagroup_selfridges_waitingroom starts_with "session_timeout"]" set need_cookie 0 if {[HTTP::cookie exists $sessionCookieName]} { set client_id [HTTP::cookie $sessionCookieName] set sessiondata [table lookup -subtable $subtableName $client_id] if { $sessiondata != "" } { log local0. "Valid session $client_id - continuing" return } } log local0. "No session. Checking for free slot (Max $static::maxActiveClients)" set sessionCount [table keys -subtable $subtableName -count] log local0. "No session. Checking for free slot (Current $sessionCount)" if {$sessionCount < $static::maxActiveClients} { set need_cookie 1 set client_id [format "%08d" [expr { int(1000000000 * rand()) }]] set sessionValue [IP::client_addr] table add -subtable $subtableName $client_id $sessionValue $static::sessionTimeout log local0. "New Session ($client_id) added value $sessionValue Timeout $static::sessionTimeout" } else { HTTP::redirect $holdingPage } } when HTTP_RESPONSE priority 1 { if {$need_cookie == 1} { HTTP::cookie insert name $sessionCookieName value $client_id path "/" } }
- Absarkhan_15403Nimbostratus
Hi Nitass,
I am trying to run below iRule to display a waiting room page when a certain threshold is reached. Currently the threshold is "number of sessions", however I think it is more logical to track the "number to TCP connections" instead.
Can the sessions be replaced with connectionswith the way you are prescribing?
Many Thanks for your help.
- Absarkhan_15403Nimbostratus
when HTTP_REQUEST priority 1 { set static::maxActiveClients "[class search -all -value datagroup_selfridges_waitingroom starts_with "max_active_clients"]" set subtableName "sessionLimit" set sessionCookieName "[class search -all -value datagroup_selfridges_waitingroom starts_with "session_cookie_prefix"]" set holdingPage "[class search -all -value datagroup_selfridges_waitingroom starts_with "holding_page_url"]" set static::sessionTimeout "[class search -all -value datagroup_selfridges_waitingroom starts_with "session_timeout"]" set need_cookie 0 if {[HTTP::cookie exists $sessionCookieName]} { set client_id [HTTP::cookie $sessionCookieName] set sessiondata [table lookup -subtable $subtableName $client_id] if { $sessiondata != "" } { log local0. "Valid session $client_id - continuing" return } } log local0. "No session. Checking for free slot (Max $static::maxActiveClients)" set sessionCount [table keys -subtable $subtableName -count] log local0. "No session. Checking for free slot (Current $sessionCount)" if {$sessionCount < $static::maxActiveClients} { set need_cookie 1 set client_id [format "%08d" [expr { int(1000000000 * rand()) }]] set sessionValue [IP::client_addr] table add -subtable $subtableName $client_id $sessionValue $static::sessionTimeout log local0. "New Session ($client_id) added value $sessionValue Timeout $static::sessionTimeout" } else { HTTP::redirect $holdingPage } } when HTTP_RESPONSE priority 1 { if {$need_cookie == 1} { HTTP::cookie insert name $sessionCookieName value $client_id path "/" } }
- nitass_89166Noctilucent
Can the sessions be replaced with connectionswith the way you are prescribing?
if you want to track tcp connection, you may increase the counter in CLIENT_ACCEPTED and decrease it in CLIENT_CLOSED.
- Absarkhan_15403NimbostratusThere is a data group as you have probably found already where this iRule takes the values from. Such as; set holdingPage "[class search -all -value datagroup_selfridges_waitingroom starts_with "holding_page_url"]" Can you kindly elaborate a little regarding tracking tcp connections in a table? I don't think I have found it so far. Regards
- nitassEmployee
Can the sessions be replaced with connectionswith the way you are prescribing?
if you want to track tcp connection, you may increase the counter in CLIENT_ACCEPTED and decrease it in CLIENT_CLOSED.
- Absarkhan_15403NimbostratusThere is a data group as you have probably found already where this iRule takes the values from. Such as; set holdingPage "[class search -all -value datagroup_selfridges_waitingroom starts_with "holding_page_url"]" Can you kindly elaborate a little regarding tracking tcp connections in a table? I don't think I have found it so far. Regards
- nitassEmployee
Can you kindly elaborate a little regarding tracking tcp connections in a table?
you are already using table (table irule command) to track number of user sessions.
what i mean is something similar to this.
iRule::ology; Connection Limiting Take 2 by Colin Walker
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