Como fazer com que um determinado conteudo saia por um link especifico

De Wiki BPF
Revisão de 22h55min de 3 de novembro de 2019 por Daniel Damito (discussão | contribs)
Ir para: navegação, pesquisa

Introdução

O titulo deste artigo é propositalmente duvidoso, visto que a maioria das pessoas dizem sair quando na verdade estão querendo dizer receber tráfego.

Antes de tudo, é importante lembrarmos que redes são compostas sempre de dois sentidos: upload e download. Quando você acessa uma página no facebook, por exemplo, inicialmente envia (faz upload) um pacote, para após isso receber (fazer download) outro pacote.

Quando você possui apenas um link de internet, é bastante simples: o caminho por onde você envia dados é o mesmo por onde também recebe. Entretanto, quando você é multihomed e possui dois ou mais links, o caminho pode ser assimétrico: você pode enviar dados por um link e receber por outro ou vice-versa.

O objetivo deste artigo é mostrar, de forma superficial, como manipular o tráfego para que um conteúdo seja acessado por um link ou por outro, para o sentido do download e para o sentido do upload. Este artigo abrangerá apenas como fazer tais modificações através de BGP.

Este artigo não objetiva esgotar todo o assunto sobre BGP, apenas esclarecer de forma superficial este tema, que é bastante recorrente.

Como a vasta maioria dos iniciantes em BGP utiliza Mikrotik, utilizaremos o próprio RouterOS nos exemplos deste artigo. Caso utilize outro vendor, basta seguir a mesma lógica exemplificada com Mikrotik.

Advertência: não considere os filtros usados nos exemplos deste artigo como sendo completos ou adequados para seu cenário. Eles foram usados apenas como um exemplo para contextualizar o conteúdo ensinado neste artigo.

Como manipular o upload

As rotas recebidas de seus neighbors BGP vão determinar por onde você irá fazer o upload para os destinos desejados. Quando estamos tratando de BGP, sempre o seu upload terá efeito em todo o seu tráfego. Isto quer dizer que se você desejar que um cliente faça upload para um determinado destino usando o link A, todos os demais clientes também farão upload por este mesmo caminho. Isto acontece porque o roteamento é sempre determinado pelo destino e não pela origem. A menos que você utilize algum recurso como PBR, não será possível determinar que apenas alguns hosts façam upload por um link e outros hosts façam upload por outro link, quando se tratar de um mesmo destino.

Existem duas formas principais, com BGP, de fazer com que um determinado link seja prioritário para upload de algum destino específico: weight e local-pref.

Para ambos os parâmetros, quanto maior o valor, mais preferível uma rota será. Entretanto o parâmetro weight não é suportado por todos os fabricantes, sendo assim, recomendamos a utilização do local-pref para que não tenha dificuldades de adaptação caso mude de equipamento futuramente.

Um exemplo prático: Determinando que o upload para o Facebook saia pelo Link A.

Considerações sobre o cenário explicado:

  • Temos dois Links, chamados de Link A e link B:;
  • Os filtros de import do link A se chamam "LinkA-V6.IN";
  • Os filtros de import do link B se chamam "LinkB-V6.IN";
  • Todas as colunas que foram preenchidas nos screenshots de exemplo estão sendo exibidas no Winbox. Nenhum outro parâmetro foi alterado.

Nosso cenário antes de fazer a alteração é o seguinte:

Artigo como fazer com que um determinado conteudo saia por um link especifico.png

Um export destes filtros:

/routing filter

add action=discard chain=LinkA-V6.IN comment=\

"Descartar meu prefixo IPv6" prefix=2001:db8::/32 \

prefix-length=32-128

add action=accept chain=LinkA-V6.IN comment="Aceita Full Routing" \

prefix=2000::/3 prefix-length=3-48

add action=discard chain=LinkB-V6.IN comment=\

"Descartar meu prefixo IPv6" prefix=2001:db8::/32 \

prefix-length=32-128

add action=accept chain=LinkB-V6.IN comment="Aceita Full Routing" \

prefix=2000::/3 prefix-length=3-48

1 - Determine qual o endereço IP do Facebook através da linha de comando de seu computador (endereço descoberto em anexo):

danieldamito@SageNetworks:~$ nslookup facebook.com

Server: 127.0.0.53

Address: 127.0.0.53#53

Non-authoritative answer:

Name: facebook.com

Address: 157.240.222.35

Name: facebook.com

Address: 2a03:2880:f148:82:face:b00c:0:25de

2 - Cheque através da tabela de roteamento de seu roteador qual o prefixo maior onde este IP se encontra. Como Mikrotiks são relativamente pobres na filtragem/visualização de rotas, vamos exemplificar a checagem através de um Looking Glass. Usaremos o LG da Telia como exemplo:

Artigo como fazer com que um determinado conteudo saia por um link especifico - LG.png

3 - Em algum lugar antes de seu último filtro, adicione um novo filtro aumentando o local-pref ou weight desta rota. Como o local-pref padrão do Mikrotik tem o valor 100, iremos colocar 200 no prefixo do Facebook. Desta forma, as rotas do Facebook recebidas pelo link A terão o local-pref 200, enquanto as do link A terão o local-pref 100. Veja o passo a passo abaixo:

a) Crie um novo filtro, como o mesmo nome dos demais filtros do link A, adicionando o prefixo do Facebook e setando para que sejam filtrados quaisquer prefixos do tamanho da rede do Facebook (/32) até o menor prefixo atualmente divulgado na Internet em IPv6 (/48):

Artigo como fazer com que um determinado conteudo saia por um link especifico - filtro mk 2.png

b) Na guia actions, configure o parâmetro action com o valor accept:

Artigo como fazer com que um determinado conteudo saia por um link especifico - filtro mk 3.png

c) Na guia BGP Actions, configure o parâmetro Set BGP Local Pref com o valor 200:

Artigo como fazer com que um determinado conteudo saia por um link especifico - filtros mk 4.png

d) Mova este filtro para qualquer lugar antes do último filtro:

Artigo como fazer com que um determinado conteudo saia por um link especifico - filtros mk 5.png

Caso você tenha seguido todos estes passos, seus filtros deverão estar desta forma:

ARTIGO EM CONSTRUÇÃO!!!!