top of page
Foto do escritorvictor tirloni

[Fortigate] Utilização do BGP para manipulação de rotas em conjunto com SD-WAN para obter um melhor desempenho da rede

Atualizado: 30 de mai. de 2024

No Laboratório de hoje, nosso cliente fictício é um Sistema Autônomo, ou seja, possuí sua própria rede de IP pública, onde o seu ASN (Autonomous System Number) é o 500.


Topologia criada:


Figura 1 - Topologia Criada no EVE-NG

A rede pública deste cliente é a 200.200.200.0/24 (lembrando que é fictícia), e esta rede é gerenciada (é o gateway da rede) pelo Firewall Fortigate que o mesmo possuí na sua empresa.


O cliente possuí dois provedores de upstream, onde ele necessita que a sua rede pública seja anunciada para estes dois provedores para manter a disponibilidade da sua rede em caso de falha de um dos provedores. Os dois provedores irão anunciar apenas a rota default (0.0.0.0/0) para o Firewall.


O anúncio das rotas será realizado pelo Protocolo BGP (Border Gateway Protocol).


O que o cliente solicitou para configurar?


Provedor ISP-A ser o primário tanto para o tráfego de saída quanto para o tráfego de entrada.


Além da alta disponibilidade entre as operadoras, cliente também queria usufruir dos benefícios do SD-WAN no Fortigate, para obter um melhor desempenho nas suas comunicações independente de qual Provedor está como primário via BGP, pois o SD-WAN escolherá o melhor caminho baseado nas regras aplicadas e vai definir de forma inteligente o melhor Link para ser utilizado nas suas comunicações.


Como o Post está dividido?


Inicialmente, irei abordar as configurações de IP, roteamento dinâmico via BGP, como a manipulação das rotas foi realizada, e por fim uma demonstração dos testes realizados. Após, abordaremos a parte do SD-WAN.


Vamos falar um pouco sobre o BGP:


Sempre quando falamos de ASN, a troca de rotas entre provedores é realizada pelo Protocolo BGP.


Nesta topologia, cada ASN que é diretamente conectado possuí uma sessão eBGP (external Border Gateway Protocol) configurado entre eles, ou seja, uma sessão BGP entre ASN's diferentes.


O BGP possuí diversas formas de manipulação de tráfego e processo de seleção de melhor rota. Segue alguns exemplos retirados do Fórum da Fortinet:


Figura 2 - Processo de Seleção de Rotas - BGP

Como o Fortigate do Cliente está recebendo apenas uma rota default (0.0.0.0/0) dos ISP's , e o mesmo deseja que o "ISP-A" seja sempre preferencial enquanto este estiver online, a manipulação das rotas ocorreram da seguinte maneira:


  • Para o tráfego de download: será controlado nos anúncios de out do BGP no Firewall, onde para o provedor secundário "ISP-B", a rota da rede 200.200.200.0/24 será anunciada com prepend. Conforme a Figura 2 acima, no item 4, a preferência é o caminho mais curto (shortest AS path), e quando incluímos prepend na rota, o path acaba ficando mais longo. Exemplo de um "sh ip bgp" num roteador Cisco da Topologia:


* 200.200.200.0 172.16.2.2 0 500 500 500 500 ?

*> 172.16.4.1 0 30 10 500 ?


Podemos observar que a rota recebida do 172.16.4.1 está como best route, devido ao path ser mais curto. O caminho via 172.16.2.2 está recebendo prepend de 3.


  • Para o tráfego de upload: será controlado nos anúncios de in do BGP no Firewall, no qual será manipulado com o uso do atributo Local Preference. Quanto maior o valor do atributo, maior a preferência sob a rota.


Topologia Física:


Cliente possuí um Firewall Fortinet, onde nas portas 1 e 2 são conectados o "ISP-A" e "ISP-B" respectivamente. A rede LAN do Firewall está conectado na porta 3. Os "ISP-A" e "ISP-B" são atendidos pelo provedor "ISP-WORLD", que simula a "rede da internet", como se fosse um grande provedor que atende ambos, onde possuem uma interface conectada diretamente entre eles. Todos os equipamentos dos ISP's são Cisco.


Topológia Lógica:


Equipamentos que são diretamente conectados possuem uma rede /30 inválida entre si, conforme demonstramos na Figura 1 da "Topologia Criada", acima. Entre eles, foi configurado sessões eBGP, para o anúncio das rotas. Na Figura 3, abaixo, demonstramos como foi configurado os anúncios das rotas BGP entre os roteadores:


Figura 3 - Topologia Lógica - BGP

Configurações Aplicadas:


Configuração no Fortigate:


  • Interfaces:



A rede LAN 200.200.200.1/24 foi configurado como IP Secundário na interface de Gerenciamento do Firewall, devido à VM do Firewall com Licença Evaluation ter disponível apenas 3 interfaces:



  • Prefix-List e Route-map:

config router prefix-list
    edit "PUBLIC_LAN_PL"
        config rule
            edit 1
                set prefix 200.200.200.0 255.255.255.0
                unset ge
                unset le
            next
        end
    next
    edit "DEFAULT_ROUTE_BGP"
        config rule
            edit 1
                set prefix 0.0.0.0 0.0.0.0
                unset ge
                unset le
            next
        end
    next
end
#
config router route-map
    edit "PUBLIC_LAN_RM"
        config rule
            edit 1
                set match-ip-address "PUBLIC_LAN_PL"
            next
        end
    next
    edit "PUBLIC_LAN_RM_PREPEND"
        config rule
            edit 1
                set match-ip-address "PUBLIC_LAN_PL"
                set set-aspath "500 500 500"
            next
        end
    next
    edit "DEFAULT_ROUTE_RM_ISP_A"
        config rule
            edit 1
                set match-ip-address "DEFAULT_ROUTE_BGP"
                set set-local-preference 500
            next
        end
    next
    edit "DEFAULT_ROUTE_RM_ISP_B"
        config rule
            edit 1
                set match-ip-address "DEFAULT_ROUTE_BGP"
                set set-local-preference 400
            next
        end
    next
end

Aqui configuramos duas prefix-list, a "PUBLIC_LAN_PL" para rede 200.200.200.0/24, onde foi utilizado para a route-map do tráfego de out, e a "DEFAULT_ROUTE_BGP", para a rede default (0.0.0.0/0) recebida pelos provedores, para ser utilizado na route-map do tráfego de in.


Para a manipulação do tráfego das rotas BGP, configuramos 4 route-maps, sendo elas:


  1. A route-map "PUBLIC_LAN_RM", no qual da match na prefix-list "PUBLIC_LAN_PL", apenas para anunciar a rede pública do cliente aos provedores. Essa route-map foi utilizada para o tráfego de out para o provedor "ISP-A";

  2. A route-map "PUBLIC_LAN_RM_PREPEND", também da match na prefix-list "PUBLIC_LAN_PL", porém podemos observar o comando set set-aspath "500 500 500", que foi utilizado para adicionar 3 de prepend na rota. Essa route-map foi utilizada para o tráfego de out para o provedor "ISP-B";

  3. A route-map "DEFAULT_ROUTE_RM_ISP_A", para controlar e priorizar a rota default que é recebida pelo "ISP-A", onde estamos setando um local-pref maior, conforme comando set set-local-preference 500;

  4. A route-map "DEFAULT_ROUTE_RM_ISP_B", para controlar e priorizar a rota default que é recebida pelo "ISP-A", onde estamos setando um local-pref menor, conforme comando set set-local-preference 400.


  • BGP:

config router bgp
    set as 500
    set router-id 200.200.200.1
    config neighbor
        edit "172.16.1.1"
            set remote-as 10
            set route-map-in "DEFAULT_ROUTE_RM_ISP_A"
            set route-map-out "PUBLIC_LAN_RM"
            set update-source "port1"
        next
        edit "172.16.2.1"
            set remote-as 20
            set route-map-in "DEFAULT_ROUTE_RM_ISP_B"
            set route-map-out "PUBLIC_LAN_RM_PREPEND"
            set update-source "port2"
        next
    end

Configuração do BGP no Fortigate, para os dois neighbors "ISP-A" e "ISP-B" e setando as route-maps para controle dos tráfegos de in e out.


Configuração do "ISP-A":

interface Ethernet0/0
 description ISP-WORLD
 ip address 172.16.3.2 255.255.255.252
!
interface Ethernet0/1
 description FW-PORT1
 ip address 172.16.1.1 255.255.255.252
!
router bgp 10
 bgp log-neighbor-changes
 neighbor 172.16.1.2 remote-as 500
 neighbor 172.16.3.1 remote-as 30
 neighbor 172.16.3.1 description ISP-WORLD
 !
 address-family ipv4
  redistribute connected
  neighbor 172.16.1.2 activate
  neighbor 172.16.1.2 route-map FW-OUT out
  neighbor 172.16.3.1 activate
 exit-address-family
!
ip prefix-list ANUNCIA-P-FIREWALL seq 5 permit 0.0.0.0/0
!
route-map FW-OUT permit 10
 match ip address prefix-list ANUNCIA-P-FIREWALL

Configuração do "ISP-B":

interface Ethernet0/1
 description ISP-WORLD
 ip address 172.16.4.2 255.255.255.252
!
interface Ethernet0/2
 description FW-PORT2
 ip address 172.16.2.1 255.255.255.252
!
router bgp 20
 bgp log-neighbor-changes
 neighbor 172.16.2.2 remote-as 500
 neighbor 172.16.4.1 remote-as 30
 neighbor 172.16.4.1 description ISP-WORLD
 !
 address-family ipv4
  redistribute connected
  neighbor 172.16.2.2 activate
  neighbor 172.16.2.2 route-map FW-OUT out
  neighbor 172.16.4.1 activate
 exit-address-family
!
ip prefix-list ANUNCIA-P-FIREWALL seq 5 permit 0.0.0.0/0
!
route-map FW-OUT permit 10
 match ip address prefix-list ANUNCIA-P-FIREWALL

Podemos observar nas configurações do "ISP-A" e "ISP-B" que não é realizado nenhum tipo de configuração para manipulação e priorização das rotas. Foi criado uma route-map "FW-OUT" para controlar o anúncio apenas da rota default ao cliente.


Configuração do "ISP-WORLD":

interface Ethernet0/0
 description ISP-A
 ip address 172.16.3.1 255.255.255.252
 ip nat inside
 ip virtual-reassembly in
!
interface Ethernet0/1
 description ISP-B
 ip address 172.16.4.1 255.255.255.252
 ip nat inside
 ip virtual-reassembly in
!
interface Ethernet0/3 <<- PORTA WAN PARA O ROUTER NAVEGAR
 description WAN
 ip address dhcp
 ip nat outside
 ip virtual-reassembly in
!
router bgp 30
 bgp log-neighbor-changes
 neighbor 172.16.3.2 remote-as 10
 neighbor 172.16.3.2 description ISP-A
 neighbor 172.16.4.2 remote-as 20
 neighbor 172.16.4.2 description ISP-B
 !
 address-family ipv4
  neighbor 172.16.3.2 activate
  neighbor 172.16.3.2 default-originate
  neighbor 172.16.4.2 activate
  neighbor 172.16.4.2 default-originate
 exit-address-family
!
ip nat inside source list 10 interface Ethernet0/3 overload
!
access-list 10 permit 200.200.200.0 0.0.0.255

A configuração de NAT do "ISP-WORLD" é para conseguir demonstrar com sucesso a navegação da rede 200.200.200.0/24, onde o "ISP-WORLD" recebe o prefixo 200.200.200.0/24 de um dos ISPs e "propaga para o resto da Internet"(neste caso, apenas realiza um NAT para esta rede).


Resultados Obtidos:


Para o tráfego de download do cliente, podemos observar pelos anúncios de out do Fortigate, onde o "ISP-WORLD" está priorizando a rota da rede 200.200.200.0/24 através do "ISP-A":



Conforme Figura acima, o "ISP-WORLD" selecionou como best a rota recebida pelo 172.16.3.2 (ISP-A), pois o path é mais curto (10 500 do ISP-A contra 20 500 500 500 500 do ISP-B) devido ao prepend configurado no Fortigate nos anúncios de out para o "ISP-B".


Para o tráfego de upload, podemos observar na Figura abaixo que o Fortigate fez a seleção da best route para o 172.16.1.1 (ISP-A), devido ao valor do local preference ser maior (500 do ISP-A contra 400 do ISP-B)


Com isso, demonstramos que tanto para o tráfego de in quanto para o tráfego de out, será sempre selecionado o "ISP-A", a não ser que o mesmo fique indisponível...


Mas isso tudo pode mudar caso tivermos configurações de SD-WAN aplicadas.


Finalmente, vamos a parte do SD-WAN, conforme falamos inicialmente, o cliente quer usufruir dos benefícios do SD-WAN do Fortigate para obter um melhor desempenho nas suas comunicações independente de qual Provedor está como primário via BGP, pois o SD-WAN escolherá o melhor caminho baseado nas regras aplicadas e vai definir de forma inteligente o melhor Link para ser utilizado nas suas comunicações.


O SD-WAN possuí muitas formas de implementação e aplicabilidades, portanto, conforme o nosso LAB já está um pouco longo, vou exemplificar de uma maneira simples e direta. Pretendo futuramente realizar um LAB apenas de SD-WAN.


Configuração do SD-WAN no Firewall:


Foi criado uma Performance SLA no Fortigate, para monitorar a comunicação via ICMP para o destino 1.1.1.1, conforme imagem abaixo:


Após, foi criado uma Rule, onde o SD-WAN irá monitorar a comunicação deste IP por ambos os Link's e, conforme as configurações da Rule, o tráfego irá ser encaminhado pelo Link com melhor qualidade para este destino:



Conforme imagem acima, temos diversas opções de aplicabilidade para as Rules do SD-WAN. Poderíamos definir origens e destinos específicos, protocolos, autenticação de usuários, criar regras para desempenho de aplicações críticas, etc. O modo de seleção de interface foi selecionado como Best Quality, e o Measured SLA como "DNS", que é o nome da Performance SLA criada anteriormente. E como critério de qualidade, selecionado Packet Loss.


Como o teste foi realizado?


Para o sucesso do teste, foi configurado uma interface Loopback no "ISP-B" com o IP 1.1.1.1/32 (IP utilizado na regra "DNS" acima), para anúncio deste prefixo apenas pelo "ISP-B". Desta forma, o Fortigate não terá comunicação com o 1.1.1.1 via "ISP-A", e o SD-WAN, irá selecionar o "ISP-B" como melhor qualidade para a comunicação, por mais que o best route da rota default do Fortigate esteja pelo "ISP-A", conforme demonstrado anteriormente.


Resultados Obtidos:


Na imagem abaixo, no Performance SLAs criado, podemos observar que o "ISP-A" já não possui comunicação com o 1.1.1.1, status contrário do "ISP-B":




No SD-WAN Rules, podemos observar que o SD-WAN selecionou o "ISP-B" como interface de saída do tráfego, conforme imagem abaixo:



E por fim, realizamos um teste de captura de pacote, onde foi feita uma captura na eth0/1 do "ISP-WORLD" que é conectado no "ISP-B", para provar que o tráfego gerado está chegando via "ISP-B" no "ISP-WORLD". Segue vídeo abaixo:



O Fortigate selecionou o "ISP-B" para esta comunicação devido ao route-lookup proccess dar preferência às rotas do SD-WAN antes do que as rotas da FIB, conforme Figura 4 abaixo, retirado do Forum da Fortinet:



Figura 4 - Route-Lookup Proccess Fortigate

Resultado Final


Como resultado final, o cliente obteve um ambiente de rede tolerante a falhas, onde a sua rede pública está sendo anunciada para dois provedores diferentes via Protocolo BGP. Em caso de falha do provedor principal "ISP-A", o Fortigate do cliente seguirá recebendo a rota default via "ISP-B", assim como o anuncio da sua rede pública este provedor seguirá funcionando.


Também foi possível usufruir do SD-WAN para obter um melhor desempenho da rede de acordo com as regras aplicadas, independentemente de qual provedor está como primário via tabela de roteamento FIB.


91 visualizações0 comentário

Posts recentes

Ver tudo

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page