Forum Discussion

CTS_14402's avatar
CTS_14402
Icon for Nimbostratus rankNimbostratus
Mar 30, 2006

LB::detach command

Hello,

I wrote following iRule to loadbalance DNS requests.


rule DNS_LB {
  when RULE_INIT {
    ::zcn_bits 0x78
    ::zcn_sign 0x20
  }
  when CLIENT_DATA {
    if { [UDP::payload length] > 3 } {
      binary scan [UDP::payload] x2c1 dns_req_byte
      if { [expr $dns_req_byte & $::zcn_bits] == $::zcn_sign } {
        LB::detach
        pool DNS_UDP_dnsi01
      }
      else {
        LB::detach
        pool DNS_UDP_Not_Notify
      }
    }
  }
}

Then I sent DNS requests to VIP which assigned above iRule

from same client IP address and port No. in shortly time

(this means all datagramwas processed in same connection).

However, the BIG-IP output following error log.

TCL error: Rule DNS_LB - Address in use (line 4)

invoked from within "pool DNS_UDP_dnsi01"

It seems that the BIG-IP didn't detach server side connection

on "LB::detach" command.

Can I use "LB::detach" command for UDP connection?

Regards.

2 Replies

  • unRuleY_95363's avatar
    unRuleY_95363
    Historic F5 Account
    There is a UDP profile option that will cause each UDP datagram to be load-balanced individually (causes an implied LB::detach for each datagram). Setting this would give you the same behavior as using the LB::detach command like you have. I'll need to look into why it might not be working for UDP.