How does each work?
I currently use PerlBal...is that ok? It's just round-robin non-session-based load balancing.
"How does each work?"
As much as it's possible to say, I suppose you could say that a hardware loadbalancer has as much of their traffic-processing and other operations burned onto silicon as is feasible. A software loadbalancer performs all operations on traffic in, er, software. This means it is usually slower, and requires more resources to perform a unit of work.
Pseudo-hardware loadbalancers can use an open-source software stack, such as those from loadbalancer.org - these are just commodity servers rebadged with a bespoke web interface for easy management.
True hardware loadbalancers like F5 BIG-IP have features over and beyond open-source-based products - with a price tag at least ten times that of pseudo-hardware loadbalancers. However you also get advanced options for traffic processing, excellent logging and other snazzy features. F5 even have a language (iRules) you can use to inspect each transaction and make decisions based on content, which is really cool.
I haven't used PerlBal, but I'm guessing that if you're using a stock Linux server in this role you could do a lot worse than use LVS.
Similar question here.
Hardware LBs such as Cisco ACEs and Foundry ServerIrons do a few things very quickly (deal with SYN-flood attacks etc. ) and have low 'attack surfaces'.
Software LBs such as ZXTMs are much more capable but their performance is directly linked to the hardware they're running on, as such they can often be slower than hardware LBs and as they're based on a general purpose OS are sometimes considered to have larger (but still very good) 'attack surfaces'.
Following on from Chopper3 and Andrew Hodgson hardware load balancers such as F5 BIG-IP and Citrix Netscaler have moved on from being purely load balancers into the lofty realm of application acceleration/delivery devices through adding SSL and HTTP compression offload, caching, Layer 4+ load balancing with many sophisticated options for distributing load, etc to their capabilities.