Top Ad unit 728 × 90

Dê uma olhada

random

O que é CEF (Cisco Express Forwarding)?

É possível que você já tenha ouvido falar de wirespeed ("velocidade do cabo"). Trata-se de um termo que o pessoal de marketing adora usar quando se trata de vender equipamentos de rede. Ele indica se os pacotes podem ser encaminhados sem qualquer atraso perceptível. A propósito, no decorrer deste texto, as expressões "switch multilayer" e "roteador" são a mesma coisa. Tudo o que for dito sobre os switches multilayer também se aplica aos roteadores. Vamos dar uma olhada na diferença entre os switches de camada 2 e os switches multilayer:


Sabemos que os switches de camada 2 encaminham frames Ethernet apenas dentro de uma VLAN, e que é possível filtrar o tráfego com base nas informações de camada 2 (usando o port-security, por exemplo). Os switches multilayer fazem a mesma coisa, mas também são capazes de prover roteamento entre as VLANs e de filtrar tráfego na camada 3 ou 4 usando listas de controle de acesso (ACLs).

O encaminhamento na camada 2 é baseado no endereço MAC de destino. O switch aprende os endereços MAC de origem dos frames que entram por suas portas, preenchendo assim sua tabela de endereços MAC. Sempre que um frame Ethernet entrar em uma de suas interfaces, o switch verificará a tabela de endereços MAC para encontrar alguma correspondência com o endereço MAC de destino do frame, para que desse modo consiga encaminhar o frame para a interface de destino correta.

O encaminhamento na camada 3 é baseado no endereço IP de destino. O encaminhamento ocorre quando o switch multilayer recebe um pacote IP em que o endereço IP de origem está em uma sub-rede diferente do endereço IP de destino.

Quando o switch multilayer recebe um pacote IP contendo seu próprio endereço MAC como o destino no cabeçalho Ethernet, surgem duas possibilidades:

  1. Se o endereço IP de destino for um endereço configurado no switch multilayer, então o pacote IP é destinado ao switch multilayer.

  2. Se o endereço IP de destino for um endereço que não esteja configurado no switch multilayer, o switch agirá como um gateway e fará o roteamento do pacote. Isso significa que o switch multilayer fará um lookup (uma pesquisa) na tabela de roteamento para encontrar a correspondência mais exata. Ele verificará também se o encaminhamento do pacote IP é permitido, caso haja alguma ACL configurada.

Antigamente... o encaminhamento em camada 2 (switching) era feito de acordo com a velocidade do hardware, enquanto que o encaminhamento em camada 3 (roteamento) era feito de acordo com a velocidade do software. Atualmente, ambos são feitos de acordo com a velocidade do hardware. Daqui em diante, você entenderá o motivo.

Vamos dar uma olhada na diferença entre o tratamento de frames Ethernet e de pacotes IP:


O trabalho de um switch de camada 2 é bem simples:

  1. Verifica o checksum do frame Ethernet para garantir que não esteja corrompido;

  2. Adiciona o endereço MAC de origem em sua tabela de endereços MAC;

  3. Encaminha o frame Ethernet para a interface correta, se souber como fazer isso. Caso contrário, faz o flooding.

Não há qualquer alteração no frame Ethernet!

Agora vamos ver o que precisa ser feito quando um switch multilayer recebe um pacote IP:


No exemplo acima, PC1 está enviando um pacote IP para PC2. Note que eles estão em sub-redes diferentes, e por isso o pacote terá que ser roteado. Quando o switch multilayer receber o pacote, ocorrerá o seguinte:

  1. A tabela ARP será checada para verificar se há um mapeamento de camada 2 para camada 3 que corresponda ao PC2. Se não houver, o switch multilayer enviará um ARP Request.

  2. O endereço MAC de destino será alterado de FFF1 (interface Fa0/1 do switch multilayer) para BBBB (PC2).

  3. O endereço MAC de origem será alterado de AAAA (PC1) para FFF2 (interface Fa0/2 do switch multilayer).

  4. O campo TTL (Time To Live) do pacote IP será decrementado em 1. Por isso, o checksum do cabeçalho IP será recalculado.

  5. O checksum do frame Ethernet também deve ser recalculado.

  6. O frame Ethernet que transporta o pacote IP será enviado para fora da interface Fa0/2, em direção a PC2.

Como você pode ver, o processo é bem mais trabalhoso quando roteamos um pacote IP.

Quando olhamos para os switches multilayer, observamos uma "separação de tarefas". Eles precisam construir uma tabela para os endereços MAC, preencher uma tabela de roteamento, enviar ARP Requests, verificar se um pacote IP dará match em uma ACL, etc., além de encaminhar os pacotes IP. Essas tarefas são divididas entre o "plano de controle" (control plane) e o "plano de dados" (data plane). Vamos ilustrar para ficar mais claro:


O plano de controle é responsável por trocar informações de roteamento usando protocolos de roteamento, construindo uma tabela de roteamento e uma tabela ARP. O plano de dados é responsável pelo encaminhamento real dos pacotes IP. A tabela de roteamento não é muito adequada para um encaminhamento rápido porque ela precisa lidar com o roteamento recursivo. O que é roteamento recursivo? Vamos a um exemplo:


No exemplo acima, temos três roteadores. R3 possui uma interface loopback que precisa ser alcançada a partir de R1. Podemos configurar as seguintes rotas estáticas:

R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3
R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2

A primeira rota estática serve para alcançar a interface Loopback0 de R3; ela aponta para a interface FastEthernet0/0 de R3. A segunda rota é necessária para acessar a rede 192.168.23.0/24.

R1#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override

Gateway of last resort is not set

      3.0.0.0/24 is subnetted, 1 subnets
S        3.3.3.0 [1/0] via 192.168.23.3
      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.12.0/24 is directly connected, FastEthernet0/0
L        192.168.12.1/32 is directly connected, FastEthernet0/0
S     192.168.23.0/24 [1/0] via 192.168.12.2

Sempre que R1 quiser alcançar a rede 3.3.3.0/24, três lookups terão que ser feitos na tabela de roteamento:

  1. O primeiro lookup será feito para encontrar uma correspondência para a rede 3.3.3.0/24. Ela existe, e o endereço IP do próximo salto é 192.168.23.3. 

  2. O segundo lookup será feito para 192.168.23.3. Existe uma correspondência, e o endereço IP do próximo salto é 192.168.12.2.

  3. O terceiro e último lookup será feito para 192.168.12.2. Há uma correspondência, e trata-se de uma rota diretamente conectada.

R1 tem que verificar a tabela de roteamento três vezes antes de saber para onde enviar o pacote. Isso não parece muito eficiente, não é mesmo? Realizar vários lookups para alcançar uma determinada rede é o que chamamos de roteamento recursivo.

Na maioria das vezes, todos os pacotes IP incoming e outgoing são processados e encaminhados pelo plano de dados, mas há algumas exceções. Dê uma olhada nesta imagem:


A maioria dos pacotes pode ser encaminhada no plano de dados. Mas existem alguns pacotes IP "especiais" que não podem ser encaminhados imediatamente pelo plano de dados, e por isso são enviados ao plano de controle. Veja alguns exemplos:

  • Pacotes IP destinados a um dos endereços IP do switch multilayer.
  • Tráfego de protocolos de roteamento como OSPF, EIGRP, BGP, etc.
  • Pacotes IP que possuem algumas das opções (campo Options) definidas no cabeçalho IP.
  • Pacotes IP com TTL expirado.

O plano de controle pode encaminhar pacotes IP outgoing para o plano de dados ou usar seu próprio mecanismo de encaminhamento para determinar a interface de saída e o endereço IP do próximo salto. Um exemplo é o roteamento baseado em local policy. Mas isso é assunto para outro texto.

O switch multilayer tem que passar por muito mais etapas do que os switches de camada 2, então, teoricamente, ele deve ser mais lento, certo?

Uma razão pela qual os switches multilayer são capazes de encaminhar frames e pacotes na "velocidade do cabo" (wirespeed) é devido ao hardware especial chamado ASIC presente no plano de dados.

Informações como endereços MAC, tabela de roteamento e ACLs são armazenadas nos ASICs. As tabelas são armazenadas em CAM (content-addressable memory) e TCAM (ternary content addressable memory).

A tabela CAM é usada para armazenar informações de camada 2, como:

  • O endereço MAC de origem.
  • A interface por onde o endereço MAC foi aprendido.
  • A qual VLAN o endereço MAC pertence.

Os lookups nas tabelas são rápidos! Sempre que o switch receber um frame Ethernet, ele usará um algoritmo de hashing para criar uma "chave" para o endereço MAC de destino + VLAN, e comparará esse hash com as informações já contidas na tabela CAM. Desta forma, o switch consegue fazer lookups muito rápidos na tabela CAM.

A tabela TCAM é usada para armazenar informações de camada superior, como:

  • Listas de acesso.
  • Informações de QoS.
  • Tabela de roteamento.

A tabela TCAM pode dar match em três valores diferentes:

  • 0 = deve ser 0.
  • 1 = deve ser 1.
  • X = 0 ou 1, ambos aceitáveis.

O match mais exato retornará um hit. A TCAM é útil para lookups em que não precisamos de uma correspondência exata (tabela de roteamento e ACLs, por exemplo). A TCAM é chamada de "ternary" por causa da possibilidade de três valores.

Então... Por que existem dois tipos de tabelas?

Quando um switch faz lookup por um endereço MAC, a exigência é que ocorra uma correspondência exata. O switch precisa do endereço MAC exato para encaminhar o frame Ethernet. A tabela de endereços MAC é armazenada na CAM.

Sempre que o switch multilayer precisa comparar o pacote IP com a tabela de roteamento ou com uma ACL, nem sempre é necessária uma correspondência exata. Por exemplo, um pacote IP com endereço de destino 192.168.10.20 dará match em:

  • 192.168.10.20/32
  • 192.168.10.0/24
  • 192.168.0.0/16

Por esse motivo, informações como a tabela de roteamento são armazenadas na TCAM. Podemos decidir se todos ou apenas alguns bits devem coincidir.

Vamos a um exemplo de lookup na tabela TCAM:


Se quisermos dar match no endereço IP 192.168.10.22, o switch multilayer verá primeiro se há uma "correspondência mais específica". Não há nada que corresponda a 192.168.10.22/32 (correspondência exata, a mais específica), então o lookup continuará em busca de alguma correspondência. Existe uma entrada que corresponde a 192.168.10.0/24. O exemplo acima se aplica a lookups em tabelas de roteamento, listas de acesso, sentenças de QoS, etc.

Pois bem. Agora você conhece todas as etapas que um switch multilayer deve executar quando precisa encaminhar pacotes IP, além da função dos planos de controle e de dados e também o uso de tabelas armazenadas em um hardware especial chamado ASIC. Vamos dar uma olhada mais de perto no encaminhamento real dos pacotes IP.

Existem diferentes métodos de switching para o encaminhamento de pacotes IP. São eles:

  • Process Switching: Todos os pacotes são examinados pela CPU e todas as decisões de encaminhamento são feitas por software. Muito lento!

  • Fast Switching (também conhecido como Route Caching): O primeiro pacote do fluxo é examinado pela CPU. A decisão de encaminhamento é armazenada em cache (hardware) para os próximos pacotes do mesmo fluxo. Este método é mais rápido que o Process Switching.

  • CEF - Cisco Express Forwarding (também conhecido como Topology-based Switching): Uma tabela de encaminhamento é criada no hardware antecipadamente. Todos os pacotes serão encaminhados usando hardware. Este é o método mais rápido, apesar de algumas limitações. Switches multilayer e roteadores usam CEF.

Ao usar Process Switching, o roteador remove o cabeçalho de cada frame Ethernet e busca por uma correspondência com o endereço IP de destino do pacote na tabela de roteamento. Em seguida, encaminha para a interface de saída o frame Ethernet com os endereços MAC e o CRC (FCS) reescritos. Tudo é feito em software, o que exige muita CPU.

O Fast Switching é mais eficiente por fazer o lookup apenas do primeiro pacote IP do fluxo e armazenar a decisão de encaminhamento na memória cache. Quando o roteador receber frames Ethernet contendo pacotes IP do mesmo fluxo, ele usará as informações presentes na cache para encaminhá-los à interface de saída correta.

O método padrão para roteadores é o CEF (Cisco Express Forwarding). Vamos analisar esse método com mais detalhes:


O switch multilayer utilizará as informações das tabelas criadas pelo plano de controle para construir tabelas de hardware. Ele usará a tabela de roteamento para construir a FIB (Forwarding Information Base), e a tabela ARP será usada para construir a tabela de adjacência. Este é o método de switching mais rápido, pois agora todas as informações das camadas 2 e 3 necessárias para encaminhar pacotes IP estão presentes no hardware.

 É preciso mencionar que alguns roteadores "inferiores" não têm hardware dedicado para encaminhamento. Eles armazenam essas tabelas em software.

Está conseguindo me acompanhar até aqui? Vamos dar uma olhada na FIB e na tabela de adjacência:


Usaremos a mesma topologia de antes: três roteadores, e R3 possui uma interface loopback.

Também vamos usar rotas estáticas nos três roteadores:

R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3
R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2
R2(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3
R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.23.2

Agora vamos analisar a tabela de roteamento e a FIB:

R1#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override

Gateway of last resort is not set

      3.0.0.0/24 is subnetted, 1 subnets
S        3.3.3.0 [1/0] via 192.168.23.3
      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.12.0/24 is directly connected, FastEthernet0/0
L        192.168.12.1/32 is directly connected, FastEthernet0/0
S     192.168.23.0/24 [1/0] via 192.168.12.2
R1#show ip cef
Prefix               Next Hop             Interface
0.0.0.0/0            drop                 Null0 (default route handler entry)
0.0.0.0/32           receive
3.3.3.0/24           192.168.12.2         FastEthernet0/0
192.168.12.0/24      attached             FastEthernet0/0
192.168.12.0/32      receive              FastEthernet0/0
192.168.12.1/32      receive              FastEthernet0/0
192.168.12.2/32      attached             FastEthernet0/0
192.168.12.255/32    receive              FastEthernet0/0
192.168.23.0/24      192.168.12.2         FastEthernet0/0
192.168.23.3/32      192.168.12.2         FastEthernet0/0
224.0.0.0/4          drop
224.0.0.0/24         receive
255.255.255.255/32   receive

O comando show ip cef é usado para visualizar a FIB. Vamos entender alguns pontos presentes no output:

  • 0.0.0.0/0 é para a interface null0. Quando o roteador recebe pacotes IP que dão match com essa regra, esses pacotes são descartados.

  • 0.0.0.0/32 é para all-zero broadcasts. Pode esquecer isso, pois não é mais usado.

  • 3.3.3.0/24 é a entrada para a interface Loopback0 de R3. Observe que o próximo salto é 192.168.12.2 e não 192.168.23.3, como na tabela de roteamento.

  • 192.168.12.0/24 é a rede diretamente conectada.

  • 192.168.12.0/32 é reservado (endereço da rede).

  • 192.168.12.1/32 é o endereço IP da interface FastEthernet0/0.

  • 192.168.12.2/32 é o endereço IP da interface FastEthernet0/0 de R2.

  • 192.168.12.255/32 é o endereço de broadcast da rede 192.168.12.0/24.

  • 224.0.0.0/4 corresponde a todo tráfego multicast. Os pacotes que derem match com essa regra serão descartados se o suporte a multicast estiver desativado globalmente.

  • 224.0.0.0/24 corresponde a todo tráfego multicast reservado para controle da rede local (por exemplo, OSPF, EIGRP, etc.).

  • 255.255.255.255/32 é o endereço de broadcast.

Vamos analisar detalhadamente a entrada para a rede 3.3.3.0/24:

R1#show ip cef 3.3.3.0 
3.3.3.0/24, version 8, epoch 0, cached adjacency 192.168.12.2
0 packets, 0 bytes
  via 192.168.23.3, 0 dependencies, recursive
    next hop 192.168.12.2, FastEthernet0/0 via 192.168.23.0/24
    valid cached adjacency

O número da versão nos informa a quantidade de vezes que essa entrada CEF foi atualizada desde que a tabela foi gerada. Podemos ver que, para chegar a 3.3.3.0/24, precisamos ir para 192.168.23.3 e que um lookup recursivo é necessário. O próximo salto é 192.168.12.2. O output também nos diz que se trata de uma valid cached adjacency. Existem diversas adjacências:

  • Null adjacency: usada para enviar pacotes para a interface null0.

  • Drop adjacency: essa adjacência é observada em pacotes que não podem ser encaminhados devido a erros de encapsulamento, rotas que não podem ser resolvidas ou protocolos não suportados.

  • Discard adjacency: observada em pacotes que precisam ser descartados por causa de uma ACL ou outras regras.

  • Punt adjacency: usada para pacotes que não podem ser encaminhados pelo CEF. Eles serão "chutados" para o próximo método de switching (Fast Switching e Process Switching).

  • Glean adjacency: usada para rotas diretamente conectadas. Serve para informar ao roteador que ele deve verificar a tabela ARP, pois ele pode alcançar o dispositivo diretamente.

Pacotes que não são encaminhados pelo CEF são manipulados pela CPU. Se houver muitos pacotes nessa condição, o roteador pode começar a apresentar problemas de desempenho.

Podemos verificar quantos pacotes foram manipulados pela CPU da seguinte forma:

R1#show cef not-cef-switched
IPv4 CEF Packets passed on to next switching layer
Slot  No_adj No_encap Unsupp'ted Redirect  Receive  Options   Access     Frag
RP         0       0           0        0       0         0        0        0

As razões são as seguintes:

  • No_adj: a adjacência está incompleta.

  • No_encap: a informação do ARP está incompleta.

  • Unsupp'ted: o pacote contém recursos que não são suportados.

  • Redirect: redirecionamento de ICMP.

  • Receive: pacotes que foram destinados a um endereço IP configurado numa interface de camada 3, ou seja, pacotes destinados ao roteador.

  • Options: existem opções (campo Options) definidas no cabeçalho IP.

  • Access: falha na avaliação da lista de acesso.

  • Frag: erro de fragmentação do pacote.

Também podemos verificar a tabela de adjacência que armazena as informações de camada 2 para cada entrada:

R1#show adjacency summary
Adjacency table has 1 adjacency:
  each adjacency consumes 292 bytes (0 bytes platform extension)
  1 complete adjacency
  0 incomplete adjacencies
  1 adjacency of linktype IP
    1 complete adjacency of linktype IP
    0 incomplete adjacencies of linktype IP
    0 adjacencies with fixups of linktype IP
    1 adjacency with IP redirect of linktype IP
    0 adjacencies post encap punt capable of linktype IP

Adjacency database high availability:
  Database epoch:        0 (1 entry at this epoch)

Adjacency manager summary event processing:
 Summary events epoch is 0
 Summary events queue contains 0 events (high water mark 0 events)

Podemos usar o comando show adjacency summary para dar uma olhada rápida em quantas adjacências existem. Uma adjacência é um mapeamento da camada 2 para a camada 3, oriunda da tabela ARP.

R1#show adjacency
Protocol Interface                 Address
IP       FastEthernet0/0           192.168.12.2(16)

R1 tem apenas uma interface conectada a R2. Podemos ver a entrada para 192.168.12.2, que é a interface FastEthernet0/0 de R2. Vamos ampliar essa entrada:

R1#show adjacency detail
Protocol Interface                 Address
IP       FastEthernet0/0           192.168.12.2(16)
                                   0 packets, 0 bytes
                                   epoch 0
                                   sourced in sev-epoch 0
                                   Encap length 14
                                   AABBCC007A00AABBCC006A000800
                                   ARP

A entrada para 192.168.12.2 nos diz o seguinte:

AABBCC007A00AABBCC006A000800

O que esse número significa? Ele reúne os endereços MAC que precisamos, e também o Ethertype.

AABBCC007A00 é o endereço MAC da interface FastEthernet0/0 de R2:

R2#show interfaces FastEthernet0/0
FastEthernet0/0 is up, line protocol is up
  Hardware is AmdP2, address is aabb.cc00.7a00 (bia aabb.cc00.7a00)

AABBCC006A00 é o endereço MAC da interface FastEthernet0/0 de R1:

R1#show interfaces FastEthernet0/0
FastEthernet0/0 is up, line protocol is up
  Hardware is AmdP2, address is aabb.cc00.6a00 (bia aabb.cc00.6a00)

0800 é o Ethertype. 0x0800 significa IPv4.

Graças à FIB e à tabela de adjacência, temos todas as informações das camadas 2 e 3 necessárias para reescrever e encaminhar os pacotes IP. Não se esqueça que, antes de realmente encaminhar o pacote, o roteador precisa reescrever as informações dos cabeçalhos:

  • Endereço MAC de origem.
  • Endereço MAC de destino.
  • Checksum do frame Ethernet.
  • TTL do pacote IP.
  • Checksum do pacote IP.

Feito isso, o roteador pode encaminhar o pacote. Agora você tem uma ideia do que é o CEF e como os pacotes são tratados.

De vez em quando (quase sempre) os alunos me perguntam qual é a diferença entre roteadores e switches, já que um switch multilayer pode prover roteamento e um roteador pode fazer o switching, se você quiser.

A diferença está ficando cada vez menor, mas geralmente os switches só falam Ethernet. Se você comprar um switch Cisco Catalyst 3560 ou 3750, terá apenas interfaces Ethernet. Eles possuem ASICs, de modo que o encaminhamento de frames pode ser feito em wirespeed. Os roteadores, por outro lado, possuem outras interfaces, como as seriais, por exemplo, e podem ser atualizados com módulos para VPN, VoIP, Wireless, etc. Além disso, você não pode configurar algumas features como NAT/PAT em um switch tradicional...

Aqui estão os comandos de configuração usados neste texto, caso você queira testar as atividades em laboratório. Tenha em mente que, dependendo da versão de IOS que você esteja usando, alguns comandos podem não estar disponíveis. Além disso, o simulador Packet Tracer, da Cisco, limita os comandos que podem ser inseridos na CLI dos dispositivos.
hostname R1
!
ip cef
!
interface FastEthernet0/0
 ip address 192.168.12.1 255.255.255.0
 no shutdown
!
ip route 3.3.3.0 255.255.255.0 192.168.23.3
ip route 192.168.23.0 255.255.255.0 192.168.12.2
!
end
hostname R2
!
interface FastEthernet0/0
 ip address 192.168.12.2 255.255.255.0
 no shutdown
!
interface FastEthernet0/1
 ip address 192.168.23.2 255.255.255.0
 no shutdown
!
ip route 3.3.3.0 255.255.255.0 192.168.23.3
!
end
hostname R3
!
interface Loopback0
 ip address 3.3.3.1 255.255.255.0
 no shutdown
!
interface FastEthernet0/0
 ip address 192.168.23.3 255.255.255.0
 no shutdown
!
ip route 192.168.12.0 255.255.255.0 192.168.23.2
!
end

Hope this helps!

O que é CEF (Cisco Express Forwarding)? Reviewed by Carlos Wolkartt on dezembro 26, 2018 Rating: 5
Todos os direitos reservados a Wolkartt.com © 2019
Hospedado no Blogger.

Mande sua mensagem

Nome

E-mail *

Mensagem *

Tecnologia do Blogger.