Mudanças entre as edições de "Como fazer com que um determinado conteudo saia por um link especifico"

De Wiki BPF
Ir para: navegação, pesquisa
Linha 15: Linha 15:
  
 
=== Como manipular o upload ===
 
=== 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.  
+
As rotas recebidas (import/IN) 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.  
 
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.  
Linha 24: Linha 24:
  
 
'''Considerações sobre o cenário explicado:'''       
 
'''Considerações sobre o cenário explicado:'''       
* Temos dois Links, chamados de Link A e link B:;       
+
* Temos dois Links, chamados de Link A e link B;     
 +
* Nosso prefixo IPv6 é 2001:db8::/32;       
 
* Os filtros de import do link A se chamam "LinkA-V6.IN";       
 
* Os filtros de import do link A se chamam "LinkA-V6.IN";       
 
* Os filtros de import do link B se chamam "LinkB-V6.IN";       
 
* Os filtros de import do link B se chamam "LinkB-V6.IN";       
Linha 113: Linha 114:
  
 
<code>add action=accept chain=LinkB-V6.IN comment="Aceita Full Routing" prefix=2000::/3 prefix-length=3-48</code>
 
<code>add action=accept chain=LinkB-V6.IN comment="Aceita Full Routing" prefix=2000::/3 prefix-length=3-48</code>
 +
 +
=== Como manipular o download ===
 +
Quando você não está diretamente conectado ao ASN do fornecedor do conteúdo desejado, não existe uma forma fácil de fazer com que o tráfego deste provedor venha por um link específico sem afetar todo o prefixo em questão. 
 +
 +
Basicamente para que isto aconteça, seu prefixo precisa estar anunciado mais específico pelo link desejado '''ou''' ter um AS-PATH menor. A forma de manipular o download é através de suas rotas anunciadas (filtros de export/OUT).
 +
 +
Para que este artigo seja encurtado e divulgado, não irei explicar um passo-a-passo com screenshots e filtros como fiz na seção anterior. Irei explicar apenas textualmente. 
 +
 +
'''Considerações sobre o cenário explicado:'''
 +
* Temos dois Links, chamados de Link A e link B;     
 +
* Temos uma conexão direta com o Facebook (sessão bilateral) pelo IX;     
 +
* Nosso prefixo IPv6 é 2001:db8::/32;     
 +
* Os filtros de export do link A se chamam "LinkA-V6.OUT";     
 +
* Os filtros de export do link B se chamam "LinkB-V6.OUT";       
  
 
ARTIGO EM CONSTRUÇÃO!!!!
 
ARTIGO EM CONSTRUÇÃO!!!!

Edição das 23h09min de 3 de novembro de 2019

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 (import/IN) 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;
  • Nosso prefixo IPv6 é 2001:db8::/32;
  • 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 como fazer com que um determinado conteudo saia por um link especifico - filtros mk 6.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="Preferir Facebook pelo link A" prefix=2a03:2880::/32 set-bgp-local-pref=200

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

Como manipular o download

Quando você não está diretamente conectado ao ASN do fornecedor do conteúdo desejado, não existe uma forma fácil de fazer com que o tráfego deste provedor venha por um link específico sem afetar todo o prefixo em questão.

Basicamente para que isto aconteça, seu prefixo precisa estar anunciado mais específico pelo link desejado ou ter um AS-PATH menor. A forma de manipular o download é através de suas rotas anunciadas (filtros de export/OUT).

Para que este artigo seja encurtado e divulgado, não irei explicar um passo-a-passo com screenshots e filtros como fiz na seção anterior. Irei explicar apenas textualmente.

Considerações sobre o cenário explicado:

  • Temos dois Links, chamados de Link A e link B;
  • Temos uma conexão direta com o Facebook (sessão bilateral) pelo IX;
  • Nosso prefixo IPv6 é 2001:db8::/32;
  • Os filtros de export do link A se chamam "LinkA-V6.OUT";
  • Os filtros de export do link B se chamam "LinkB-V6.OUT";

ARTIGO EM CONSTRUÇÃO!!!!