We wanted to select destination server address and rewrite all IP packets at application layer at front node. Divert socket provides us exactly same set of features. We used standard firewalling mechanism (that uses high performance packet filtering within Kernel after a setsocketopt call) to divert all IP packet with destination TCP port 80 to divert socket port, where our application read them and modified them. After modification divert sockets provides options to re-inject packets in local TCP/IP stack or on network. At front node, packets are re-injected on network, while at servers packets are allowed to pass up to higher protocol layer in same machine.
Thus divert socket provided an easy mechanism for request distribution at front node within cluster. However, divert socket requires patching of kernel for divert socket support.
More details about divert sockets can be found at http://www.anr.mcnc.org/divert/index.shtml