Quanto aos firewalls, eu ficaria preocupado onde eles são colocados, suas velocidades de Internet e quantas regras você precisa nelas. Eles podem praticamente ditar o tipo de hardware que você precisará. Esteja atento para mais desempenho / velocidades mais altas, você pode precisar de melhores placas NIC. No passado, usei cartões Intel Pro de nível superior.
Sobre o roteador / firewalls nas configurações de ISP, eu costumava ter no ISP Eu estava executando um roteador Linux com IPtables para firewall / contabilidade. Com o tempo, substituí-lo por um roteador Cisco ISP, criei listas de acesso para bloquear as poucas portas que eu precisava cortar (principalmente portas padrão do Windows, SQLSERVER e não muito mais) e comecei a enviar netflow para um servidor Linux para fazer a contabilidade de dados de clientes quando nossa capacidade começou a crescer.
Tenha em atenção que, se for um fornecedor de fábrica de cabos, as regras de firewall da camada 2/3 podem ser adicionadas às configurações do modem DOCSIS. Você pode salvar uma significativa largura de banda de envio dessa maneira.
Quanto a um firewall de código aberto, recomendo o pfSense. Eu usei isso no passado para proteger a rede corporativa do ISP, e hoje em dia usá-los para fornecer VPNs de clientes nativos para OS / X, Linux e Windows 7-10. Eles também suportam failover completo, onde, se o mestre falhar, o escravo mantém o estado das conexões ao longo do tempo e seleciona tudo. O pfSense é executado sobre o FreeBSD e possui uma interface gráfica de gerenciamento que é muito flexível.
Em relação ao iptables / VPN no Linux, estou usando um Debian também como firewall e VPN (com strongswan) para proteger uma rede especial, e não é necessário mexer com compilações de kernel.
Quanto ao shapping do tráfego da camada 7, tentamos fazer isso por um tempo com o Linux, mas não foi muito eficiente, e foi um processo demorado. Nós acabamos indo para um shapper de tráfego NetEnforcer.