Hi, I want to configure CentOS on powerful server with gigabit adapters as transparent bridge and deploy it in front of server farm. Can you tell how to optimize the OS for hight packet processing? What configurations I need to do to achieve very hight speeds and thousands of packets?
sadas sadas wrote:
Hi, I want to configure CentOS on powerful server with gigabit adapters as transparent bridge and deploy it in front of server farm. Can you tell how to optimize the OS for hight packet processing? What configurations I need to do to achieve very hight speeds and thousands of packets?
iptables makes a TERRIBLE firewall, use pf instead
http://www.openbsd.org/faq/pf/index.html
Also consider how your going to provide redundancy, if you have a web server farm you want to protect them with at least two firewalls, not one.
http://www.openbsd.org/faq/pf/carp.html
I haven't used CARP myself but did setup a pair of pf firewalls about 5 years ago in a large network in bridging mode, the layer 3 fault tolerance was provided by OSPF on the core switches, the firewalls were active-active(with pfsync) since they were layer 2 only.
Maybe someday linux will fix the overly complex iptables system to something that is more manageable, not holding my breath though.
If you want really high speed(say multi GbE) though you'll want/need to go with an appliance based solution.
Also since your referring to a web server farm, it is perfectly acceptable to not use firewalls these days, if you have a good load balancer that serves the same role as a firewall in that it only passes traffic that you specifically configure it to pass. Also in high traffic environments the performance of load balancers destroys most firewalls, making investing in a high end firewall a very expensive proposition.
I've worked for the better part of the last 10 years with companies who did not have firewalls in front of their web servers for this reason, it didn't make sense $$ wise, because the benefit wasn't there, and the added complexity, and performance implications wasn't worth it either. Talk to most load balancing companies and they'll tell you this themselves.
nate
I'll second damn near everything nate said, and hopefully add a tidbit or two.
If you're new to BSD, you may want to consider the pfsense project in the aforementioned active-active configuration.
It gives you a nice, intuitive gui to manage your failover firewalls, if you insist on putting a firewall in front of your web servers.
Better to secure the box, leave only the ports you need open on the public interfaces, and don't firewall them.
Also, I'd strongly consider running your firewalls with no disk at all. A Live CD, CF card or USB Flash to boot off of, remote syslog and one less subsystem (disks) to buy/fail makes for some mighty cheap 1U servers. A single dual-core with core speeds above 3.0Ghz and 4GB of RAM is to pass Gb @ line rate - ethernet overhead. Truth be told, it's already being done on much less than that. You can also load balance your traffic, albiet somewhat primitively with it. If you really want massive throughput, consider toying around with extremely expensive 10G gear, size RAM appropriately, and see how PF performs under multi-processor, high-core speed. but if you're handling over a Gb of traffic and you can't split the application into multiple farms, that's the best move.
Akamai, for instance, runs 10G to each rack, each rack has around 20-24 servers, and they run GB to the server.
pfsense.org has extensive information about hardware requirements, features, and what you're looking to do.
https://calomel.org/network_performance.html is an excellent BSD firewall performance site.
One thing to note, you are claiming to want to deploy this as a passive bridge. You cannot do what you want to do running anything in bridge mode. The packets need to route somehow. Get a /29 from your colo provider and ask to have your existing block routed through it once you've tested it.
Another option for a seamless failover, is to alias a different range of IP's to the server interfaces, put a /29 and whatever netblock you want to end up being your public IP block on the PFSense hardware. When you're convinced everything's working through rigorous testing, put a test domain up pointing to that block, modify virtualhost entries on the servers to respond to that domain with your production web site, and test some more. Once you're convinced that's working perfectly, make the changes in DNS to point your production domain at the IP's you want, and failover will happen with DNS convergence.
Peter
On Fri, Dec 18, 2009 at 9:06 AM, nate centos@linuxpowered.net wrote:
sadas sadas wrote:
Hi, I want to configure CentOS on powerful server with gigabit adapters as transparent bridge and deploy it in front of server farm. Can you tell how to optimize the OS for hight packet processing? What configurations I need to do to achieve very hight speeds and thousands of packets?
iptables makes a TERRIBLE firewall, use pf instead
http://www.openbsd.org/faq/pf/index.html
Also consider how your going to provide redundancy, if you have a web server farm you want to protect them with at least two firewalls, not one.
http://www.openbsd.org/faq/pf/carp.html
I haven't used CARP myself but did setup a pair of pf firewalls about 5 years ago in a large network in bridging mode, the layer 3 fault tolerance was provided by OSPF on the core switches, the firewalls were active-active(with pfsync) since they were layer 2 only.
Maybe someday linux will fix the overly complex iptables system to something that is more manageable, not holding my breath though.
If you want really high speed(say multi GbE) though you'll want/need to go with an appliance based solution.
Also since your referring to a web server farm, it is perfectly acceptable to not use firewalls these days, if you have a good load balancer that serves the same role as a firewall in that it only passes traffic that you specifically configure it to pass. Also in high traffic environments the performance of load balancers destroys most firewalls, making investing in a high end firewall a very expensive proposition.
I've worked for the better part of the last 10 years with companies who did not have firewalls in front of their web servers for this reason, it didn't make sense $$ wise, because the benefit wasn't there, and the added complexity, and performance implications wasn't worth it either. Talk to most load balancing companies and they'll tell you this themselves.
nate
CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Peter Serwe wrote:
I'll second damn near everything nate said, and hopefully add a tidbit or two.
If you're new to BSD, you may want to consider the pfsense project in the aforementioned active-active configuration.
It gives you a nice, intuitive gui to manage your failover firewalls, if you insist on putting a firewall in front of your web servers.
Better to secure the box, leave only the ports you need open on the public interfaces, and don't firewall them.
Also, I'd strongly consider running your firewalls with no disk at all. A Live CD, CF card or USB Flash to boot off of, remote syslog and one less subsystem (disks) to buy/fail makes for some mighty cheap 1U servers. A single dual-core with core speeds above 3.0Ghz and 4GB of RAM is to pass Gb @ line rate - ethernet overhead. Truth be told, it's already being done on much less
/me going to try to get a diskless OpenBSD setup again.
than that. You can also load balance your traffic, albiet somewhat primitively with it. If you really want massive throughput, consider toying around with extremely expensive 10G gear, size RAM appropriately, and see how PF performs under multi-processor, high-core speed. but if you're handling over a Gb of traffic and you can't split the application into multiple farms, that's the best move.
That part about high-core speed for OpenBSD pf is definitely on. The multi-processor part...not too sure. Maybe with NUMA systems like what you get on AMD Opteron platforms.
Chan Chung Hang Christopher wrote:
That part about high-core speed for OpenBSD pf is definitely on. The multi-processor part...not too sure. Maybe with NUMA systems like what you get on AMD Opteron platforms.
Don't both iptables and pf bypass the filters for established TCP connections (making the filtering speed only rarely relevant)?
Les Mikesell wrote:
Chan Chung Hang Christopher wrote:
That part about high-core speed for OpenBSD pf is definitely on. The multi-processor part...not too sure. Maybe with NUMA systems like what you get on AMD Opteron platforms.
Don't both iptables and pf bypass the filters for established TCP connections (making the filtering speed only rarely relevant)?
Yeah, IF you set up the rules right. On that score, i think openbsd has a certain order iirc so you cannot go wrong there...but with iptables and netfilter...heh.
On Fri, Dec 18, 2009 at 12:06 PM, nate centos@linuxpowered.net wrote:
iptables makes a TERRIBLE firewall, use pf instead
I whole heartedly with Nate on this! I spent a bunch of time looking at firewall solutions a year or two back, and PF was by far the easiest solution to manage and get up and running. There are also some killer tools for monitoring PF activity:
http://prefetch.net/articles/monitoringpf.html
- Ryan -- http://prefetch.net