Conecte-se conosco

CISCO

Protovolo ARP – Address Resolution Protocol

Como você pergunta para alguém que acabou de conhecer, o seu nome?

Caio Lucas

Publicado

em

ARP é um protocolo de pergunta e resposta utilizado para mapear dinamicamente endereços da camada 3 (rede) com a camada 2 (enlace). Tipicamente, ele é utilizado para mapear endereços IPs (Internet Protocol) em endereços MAC (Media Access Control).

Para controlar esse mapeamento, o protocolo ARP mantém uma tabela chamada ARP Table. Sempre que um novo pacote com endereços MAC ou IP aparecem e ainda não estão na tabela ARP ou precisam se atualizar, o protocolo modifica a tabela com os novos dados.

O protocolo ARP foi originalmente definido pela RFC 826. Nesse artigo vamos abordar as características do protocolo, seu funcionamento com alguns exemplos de código escritos na linguagem C.

Tente entender o seu funcionamento

A imagem acima exemplifica o funcionamento básico do protocolo ARP. O computador da esquerda envia um pergunta ARP querendo saber qual o endereço MAC do computador cujo endereço IP é 10.0.0.5. Essa pergunta é enviada para rede na forma de broadcast.

O computador da direita então responde a pergunta ARP dizendo que endereço MAC do computador com ip 10.0.0.5 é 00:00:00:00:00:02. Cada computador armazena em sua tabela ARP os mapeamentos de endereços aprendidos. Essa informação é utilizada como cache em momentos futuros.

Seu cabeçalho

O protocolo ARP trafega em seus pacotes um conjunto pequeno de dados sobre máquinas de origem e destino. A imagem abaixo mostra cada campo dentro do cabeçalho ARP:

Vamos compreender cada campo do cabeçalho

Tipo de hardware

O Protocolo ARP não é exclusivo de um equipamento. Esse campo de 2 bytes permite guardar um número que define qual o tipo do equipamento daquele pacote. No caso mais comum, com equipamentos Ethernet, temos que o valor desse campo seria: 0x0001

Tipo de protocolo

    Assim como para o campo tipo de hardware o ARP permite mais de um endereço de protocolo. Para tal, esse campo também tem 2 bytes e armazena o tipo do protocolo ao qual será mapeado o endereço de equipamento (hardware). No caso comum, o protocolo IP é utilizado e seu valor para o campo seria: 0x0800

Tamanho endereço hardware

Como o tipo de hardware varia, o tamanho necessário para armazenar o endereço desse hardware também. No nosso exemplo, para colocar no pacote um endereço Ethernet (MAC address) são necessário 6 bytes, então o valor desse campo é 6.

Tamanho endereço protocolo

Com a variação do tipo de protocolo, variamos também o tamanho do endereço do protocolo. Para nosso exemplo utilizando o IP, temos um valor 4 para o campo.

Opções

Esse campo define o tipo do pacote ARP. Ele pode ser um pacote de requisição (request) ou de resposta (response). Para cada um desses tipos, teríamos os valores 0x0001 e 0x0002, respectivamente.

Endereço de hardware de origem

Esse campo recebe o endereço do equipamento de quem está enviando o pacote. Se o hardware for Ethernet, por exemplo, teríamos o seguinte valor: 00:00:00:00:00:01.

Endereço de protocolo de origem

Esse é o endereço do protocolo de origem. Se considerarmos o protocolo IP como exemplo, o valor poderia ser: 10.0.0.2.

Endereço de hardware de destino

Esse campo é reservado para receber o endereço do equipamento de destino. Se o hardware for Ethernet, por exemplo, teríamos o seguinte valor: 00:00:00:00:00:02.

Endereço de protocolo de destino

Esse é o endereço do protocolo de destino. Se considerarmos o protocolo IP como exemplo, o valor poderia ser: 10.0.0.5

Um exemplo de frame do protocolo ARP para o nosso exemplo de ARP reply mostrado na seção FUNCIONAMENTO seria:

SONDAGEM ARP (ARP PROBE)

A sondagem ARP acontece quando um computador recebe um endereço IP, manualmente ou via DHCP, para verificar se outra máquina na rede já possui esse IP. A RFC 5227 especifica essa sondagem.

Para enviar pacotes de sonda, é necessário montar um pacote ARP onde o IP de destino é o endereço desejado e o IP de origem deve ser composto por zeros. O zeros evitam que outros nós façam cache desse endereço. Quando recebe-se um reply confirmando o endereço, tem um conflito de endereços.

ARP INVERSO (INARP)

O ARP inverso ou Inverse Address Resolution Protocol (RFC 2390), é uma extensão do protocolo ARP que permite fazer o caminho inverso do ARP padrão. Ele descobre o endereço de protocolo (IP por exemplo) a partir do endereço de hardware (Ethernet por exemplo).

Para permitir isso, ele utiliza o mesmo frame ARP mas com novos códigos de operação: 8 e 9, InARP request e InARP response, respectivamente.

O ARP Inverso não utiliza broadcast, pois o endereço de hardware de destino já é conhecido. O campo Endereço de protocolo de destino é preenchido com zeros. Através dos códigos de operação (8 e 9), o pacote é encaminhado pela rede até o computador de destino.

ARP SPOOFING / ARP POISONING

Spoofing ou Poisoning de ARP é uma técnica de ataque utilizando protocolo ARP. O Poisoning (envenenamento) acontece quando um atacante dispara mensagens ARP na rede dizendo que o computador dele responde pelo endereço IP de alguma outra máquina na rede, o default gatewaypor exemplo. 

Se o ataque funcionar, o computador do atacante passa a receber os pacotes destinados ao computado atacado. Recebendo esses pacotes, ele pode modificá-los, não encaminhá-los, mandar para outros computadores e etc. 

ARP GRATUITO (GRATUITOUS ARP)

O ARP gratuito é uma forma de um computador se anunciar na rede. Esse pacote não é uma resposta a nenhuma requisição ARP.  O computador envia esse pacote na forma de broadcast de forma voluntária e gratuita.

Para construir um frame ARP gratuito é necessário colocar os Endereços de protocolo da origem e do destino como o endereço (IP por exemplo) do computador que irá enviar o ARP gratuito. Além disso, o Endereço de hardware de destino deve ser um endereço de broadcast, no caso do Ethernet, seria ff:ff:ff:ff:ff:ff. Essa requisição não necessita de nenhuma resposta. Os demais campos continuam normais a uma requisição ARP.

Um pacote de ARP gratuito para o nosso exemplo inicial a esse artigo poderia ser:

PROXY ARP

proxy ARP, ou aproximação ARP, é uma forma de fazer com que sub-redes diferentes consigam receber pacotes ARP uma da outra. Esse mecanismo é definido na RFC 1027

Uma forma de implementar o proxy é colocando o default gateway das duas redes apontando para o mesmo computador/gateway . Assim, esse computador sempre que receber pacotes ARP direcionados à uma sub-rede, ele  apenas encaminha para essa rede. A mesma coisa é feita para o caminho inverso.

Para possibilitar o encaminhamento, é necessário modificar os pacotes colocando os endereços do computador/gateway para que as redes locais consigam comunicar-se. Todos os pacotes de uma sub-rede externa à atual, contém como endereços de hardware o endereço do computador/gateway.

CISCO

CISCO – CAM TCAM

Entenda as memorias de Switches e roteadores da cisco

Caio Lucas

Publicado

em

As vezes me pergunto como a tabela CAM e sua irmã mais avançada, a TCAM, são tão fascinantes porque funcionam de maneira diferente da RAM tradicional que conhecemos. E porque era difícil para mim entender isso. E realmente lendo muito encontrei uma forma de entender e vou explicar do meu jeito.

Memoria CAM e TCAM

Quando TCAM – Ternary Content Addressable Memory é usado em roteadores L3, ele é usado para realizar uma pesquisa de endereço mais rápida para permitir o roteamento rápido.

Em switches, CAM (Content Addressable Memory) é usado para construir e consultar a tabela de endereços MAC para tomar decisões de encaminhamento L2. Ao implementar a pesquisa de prefixo de roteador no TCAM, estamos movendo o processo de pesquisa da Base de Informações de Encaminhamento do software para o hardware.

CAM é um tipo especial de memória usado pelos switches Cisco. No caso da RAM, o IOS utiliza um endereço de memória para obter os dados armazenados neste local de memória, enquanto no CAM o IOS faz o contrário. Ele usa os dados e o CAM retorna o endereço onde os dados estão armazenados. O CAM também é considerado mais rápido que o RAM, pois o CAM pesquisa toda a memória em uma única operação.

No CAM é usada a representação binária exata de uma palavra, em um aplicativo de rede essa palavra provavelmente será um endereço IP, por exemplo 11000000.10101000.01110001.00000000 (192.168.1.0). Embora isso seja definitivamente útil, as redes operam com uma grande coleção de endereços IP, e armazenar cada um individualmente exigiria uma quantidade significativa de memória.

Na rede, essas palavras de dados sequenciais são prefixos IP. Portanto, para o exemplo acima, se quisermos armazenar a coleção desse endereço IP e os 254 IPs que o seguem, no TCAM ficaria assim: 11000000.10101000.01110001.XXXXXXXXXX (192.168.1.0/24).

Este método de armazenamento significa que podemos fazer perguntas ao ASIC como “para onde devo enviar pacotes com endereço IP de destino 192.168.1.19?”, para o qual o ASIC pode ter uma resposta pronta em um único ciclo de clock, pois não precisa percorre toda a memória, mas pode referenciar diretamente key(chave). Essa resposta geralmente é uma referência a um endereço de memória na RAM tradicional, onde mais dados podem ser armazenados, como a porta de saída.

Ao implementar o TCAM, permitimos que o processo de busca de endereços não dependa do número de entradas de prefixo, pois a principal característica do TCAM é que ele é capaz de buscar todas as suas entradas em paralelo. Isso significa que não importa quantos prefixos de endereço sejam armazenados no TCAM, o roteador encontrará a correspondência de prefixo mais longa em uma única operação. Um pouco confuso, então vamos ver a próxima foto.

A Fig 1 mostra como a pesquisa FIB funciona e aponta para uma entrada na tabela de adjacências. O processo de pesquisa passa por todas as entradas na tabela TCAM em uma única operação.

CAM VS TCAM

Os switches multicamadas encaminham quadros e pacotes em velocidade de fio através do uso de hardware ASIC (Application Specific Integrated Circuits). Componentes específicos da camada 2 e da camada 3, como tabelas de roteamento (para onde esse pacote vai), listas de controle de acesso (ACLs) (este pacote é permitido), são armazenados em cache no hardware. As tabelas de roteamento, comutação, ACL e QoS (qual prioridade deve ser dada a este pacote), são armazenadas na memória de tabela de alta velocidade para que decisões e restrições de encaminhamento possam ser feitas em hardware de alta velocidade. Os switches consultam essas tabelas para obter informações de resultados, como determinar se um pacote com um endereço IP de destino específico deve ser descartado com base em uma ACL. Como resultado do uso do TCAM, a aplicação de ACLs não afeta o desempenho do switch.

O Router

Em roteadores, como roteadores Cisco high-end, o TCAM é usado para habilitar o CEF – Cisco Express Forwarding em hardware. O CEF está construindo a tabela FIB da tabela RIB (tabela de roteamento) e a tabela de adjacência da tabela ARP para construir cabeçalhos L2 pré-preparados para cada próximo vizinho de salto.

O TCAM encontra, em uma tentativa, cada prefixo de destino dentro do FIB. Cada prefixo em FIB aponta para o cabeçalho L2 da tabela de adjacências previamente preparada para cada interface de saída. O roteador cola o cabeçalho do pacote em questão e o envia por essa interface. Parece rápido fazer assim? É tão rápido!

SWITCH

No mundo dos switches de camada 2, a memória CAM é mais comumente usada, pois permite que o switch construa e pesquise tabelas de endereços MAC. O endereço MAC é sempre exclusivo, portanto, a arquitetura CAM e o recurso de pesquisa têm apenas correspondências exatas e são perfeitos para pesquisa de endereços MAC. Isso dá ao switch a capacidade de verificar todos os endereços MAC de todos os hosts conectados a todas as portas em uma operação e descobrir para onde enviar os pacotes recebidos.

As tabelas CAM fornecem apenas dois resultados: 0 (verdadeiro) ou 1 (falso). O CAM é mais útil para construir tabelas que procuram correspondências exatas, como tabelas de endereços MAC. A tabela CAM é a tabela principal usada para tomar decisões de encaminhamento da camada 2. No caso das tabelas de encaminhamento da camada 2, o switch deve encontrar uma correspondência exata para um endereço MAC de destino ou o switch enviará o pacote para todos. a VLAN.

Quando um quadro chega ao switch com um endereço MAC de destino de uma entrada na tabela CAM, o quadro é encaminhado apenas para fora da porta associada a esse endereço MAC específico. As informações que um switch usa para realizar uma pesquisa em uma tabela CAM são chamadas de key (chave). Por exemplo, uma pesquisa de camada 2 usaria um endereço MAC de destino e um ID de VLAN como chave.

Para visualizar o conteúdo da tabela CAM, você pode usar o seguinte comando EXEC:

Switch# show mac address-table dynamic [address mac-address | interface type mod/num | vlan vlan-id]


Nota: O problema com a tabela CAM é que ela só pode fazer correspondências exatas em uns e zeros (CAM binário), e aqui vem o TCAM.

MAIS QUE UM SIMPLES ROTEAMENTO E COMUTAÇÃO

Além do mapeamento de prefixo mais longo, o TCAM nos roteadores multicamadas e dispositivos de comutação de hoje é usado para armazenar ACLs, QoS e outras coisas de processamento de camada superior. Dispositivos com esta capacidade geralmente têm mais módulos de memória TCAM para poder implementar Access-List em ambas as direções e QoS ao mesmo tempo na mesma porta sem qualquer impacto no desempenho do Roteador/Switch. Todas essas diferentes funções e seu processo de busca para uma decisão são feitos em paralelo.

Continue lendo

CISCO

Cálculo de Sub-redes

Caio Lucas

Publicado

em

Você acha difícil calcular sub-redes e queria muito ter mais praticidade nisso?

Muito se vê hoje em dia que diversas empresas usam a rede como ela está, alguns têm o hábito de dizerem ” Se está funcionando , deixe como está!”

É difícil encontrar uma empresa que enxergue realmente a necessidade de “periciar” campos passíveis de reparos, e empresa nenhuma possui uma má internet , em vez disso possuem uma má configuração de ativos onde assim há também uma distribuição ruim de hosts por rede, isso é o que de fato pesa a rede, então não culpe a operadora, faça uma boa configuração.

E falando em “boa configuração” há uma em especial que têm ajudado diversas empresas a se darem bem na distribuição de dispositivos pela rede de forma que ela fique estável o suficiente para atender a todos o que inclui qualquer setor ou departamento.

Estamos falando então do …

Calculo de Sub-rede

O calculo de sub rede é algo extremamente útil embora seja um pouco difícil de entender, por enquanto (durante esse post) eu vou apresentar esse tipo de calculo de uma maneira simples diferente do que você encontra em sites a fora.

Funciona assim, você possui uma rede tipo:

192.168.2.1

Pelos primeiros 2 octetos eu sei que se trata de um IP de classe (C), então a minha máscara vai ser :

255.255.255.0

Visto que cada octeto (bloco de 255) significa que eu tenho 1 bloco de 8 Bits ligados eu consigo formar uma soma onde o (CIDR) me mostra quantas possibilidades eu posso ter de endereçamento:

Minha soma então ficaria assim:

255.255.255.0/24

Eu separo cada bloco(octeto) de 255 e substituo por “1”, algo que ficaria em torno de :

11111111.11111111.11111111.00000000

Notou que acima eu usei “/24”? afinal oque é isso? é apenas uma maneira resumida de representar a soma de todos os bits 1 juntos ,

11111111.11111111.11111111.00000000

/24

Para descobrir quantos IP’s eu consigo ter só nessa rede , eu elevo os 8 bits (zeros) do último octeto em base 2.

2^8= 256-2=254

Por isso toda vez que quiser descobrir quantos IP,s cabem em uma rede , use a fórmula :

2^ao número de bits (zeros) 0 desligados da máscara.

2^BZ-2=H

2^- Base 2

BZ = Bits Zeros

-2 = Subtração do endereço da rede e do Broadcast dela.

H = Número de Hosts possíveis após o cálculo

Eu tiro -2 números porque eu preciso isoladamente dos endereços IP’s ter também na rede alguém que identifique todo mundo, trabalho feito pelo Broadcast e no final dessa soma você descobrirá como podemos saber qual é o endereço de broadcast dessa rede que estamos calculando..

Voltando…

Na rede 192.168.2.1 eu possuo a possibilidade de endereçamento de 254 dispositivos ativos.

Agora e se eu quisesse particionar essa rede em por exemplo 4 Sub-redes a partir da minha rede 192.168.2.1?

Vamos lá..

O endereço IP de uma rede identifica a rede e partir disso os Hosts que logo vão se conectar nela, mas se eu quiser mexer para aumentar a quantidade acima de 254 hosts eu teria que utilizar uma máscara diferente da que termina com /24.

Eu elaborei uma tabela onde pode servir de referência e estudo dentro desse campo para que você consiga tanto estudar ela quanto memorizar ..

Antes de qualquer coisa eu preciso te responder algumas perguntas antes que você as faça..

  • Para que vai servir essa tabela?

R: Quando você se perguntar ” quantas sub-rede eu crio dentro de uma rede 10.0.0.12 por exemplo…

R:Quantas sub-rede eu consigo criar no total dentro de uma rede 172.16.0.1 por exemplo…

R:Quantas sub-rede eu consigo criar dentro de uma rede 192.168.2.1 ou 192.168.100.1?

Então essa tabelinha servirá para que você consiga criar desde uma rede onde você defina que quer têr apenas 50 computadores até uma rede onde você queira ter 100 por exemplo..

Vamos lá , a tabela é uma tabela de 3 Blocos das classes a/b/c

Do /8 (Que é padrão de um IP de classe A)

Até o /15 é tudo classe (A)

Quantos IPS cabem em cada máscara ?

/8 255.0.0.0 (Mascara padrão como mencionado acima)

H: 2^24-2= 16.777.214 Possibilidades de endereçamento.

/9 255.0.0.128

H: 256-128 = 128 H Por rede

/10 255.0.0.192

H: 256-192 = 64 H Por rede

/11 255.0.0.224

H: 256-224 = 32 H Por rede

/12 255.0.0.240

H: 256-240 = 16 Por rede

/13 255.0.0.248

H: 256-248 = 8 Por rede

/14 255.0.0.252

H: 256-252 = 4 Por rede

/15 255.0.0.254

H: 256-254 = 2 Por rede

___________________________________________________________________________________________________

BLOCO DE MASCARAS DE CLASSE (B)

Do /16 Ao /23 é tudo classe B

/16 255.255.0.0 ( Máscara padrão classe B)

H: 2^16-2= 65.534 Possibilidades de endereçamento.

/17 255.255.0.128

H: 256-128 = 128 H Por rede

/18 255.255.0.192

H: 256-192 = 64 H Por rede

/19 255.255.0.224

H: 256-224 = 32 H Por rede

/20 255.255.0.240

H: 256-240 = 16 Por rede

/21 255.255.0.248

H: 256-248 = 8 Por rede

/22 255.255.0.252

H: 256-252 = 4 Por rede

/23 255.255.0.254

H: 256-254 = 2 Por rede

______________________________________________________________________________________________________

BLOCO DE MÁSCARAS DE CLASSE (C)

Do /24 ao /31 é tudo classe C

/24 255.255.255.0 ( Máscara padrão classe B)

H: 2^8-254 Possibilidades de endereçamento.

/25 255.255.255.128

H: 256-128 = 128 H Por rede

/26 255.255.255.192

H: 256-192 = 64 H Por rede

/27 255.255.255.224

H: 256-224 = 32 H Por rede

/28 255.255.255.240

H: 256-240 = 16 Por rede

/29 255.255.255.248

H: 256-248 = 8 Por rede

/30 255.255.255.252

H: 256-252 = 4 Por rede

/31 255.255.255.254

H: 256-254 = 2 Por rede

Quando a mascará não é padrão (EX: 255.0.0.0/172.16.0.0/192.168.0.0) eu uso maior IP para subtrair e me dar a quantidade de IP por rede que nesse caso é o 256.

Esse número que muda no Octeto (ex: 128/192/224/240/248/252/254) chamamos de octeto misto porque nem é “0” zero e nem “255” como na mascara padrão.

Vamos subdividir uma rede na prática, o cenário será o seguinte:

Uma rede primaria e mais 4 redes separadas para 4 setores diferentes em uma empresa.

RH – VENDAS – FATURAMENTO – GESTÃO

Para o RH temos que ter 25 Computadores

Para o Vendas temos que ter 52 Computadores

Para o Faturamento temos que ter 100 Computadores

Para o setor de Administração temos que ter 89 computadores

A pergunta é, olhando para nossa tabela , qual máscara eu vou utilizar e que seja compatível com a quantidade de host requerida em cada departamento?

Vamos lá…

Vamos pegar o IP da rede de exemplo que vimos no inicio

192.168.2.1 255.255.255.0/24

Por padrão ai eu só teria 254 H de possibilidades,,,

Para mudar isso eu teria que usar uma máscara com alguns dos octetos mistos acima que fosse compatível com a quantidade de host que eu quero.

Vamos olhar a tabela :

A quantidade de computadores requerida no exemplo ficam dentro de um Pool de IP de 50 Hosts.

Que máscara seria capaz de suprir essa minha necessidade?

Um /27, podemos usar uma máscara 255.255.255.224 = 32 IPs por sub-rede.

CALCULO DE SUB REDE COM ENDEREÇO DE CLASSE (B)

Aqui seguimos a mesma lógica

Imagina que eu tenha uma rede classe A e que ela tenha esse IP:

10.0.0.1 -> 255.0.0.0/16

Essa máscara por padrão me dá uma porrada de endereços se deixada livre , por mais que consigamos diminuí-la no Pool.

Preciso de 3 Sub-rede a partir ela, o que fazer?

Escolha uma máscara , converta de Decimal para Binário e vamos nessa!

255.0.0.192 subtraindo teremos um intervalo de endereçamento , só para lembrar ..esse intervalo de endereçamento chamamos de Salto!

255.0.0.192 –> 11111.00000000.00000000.192

Porém como você pode reparar , meu 192 não está em binário , mas em formato decimal ainda , como converter esse octeto para formato binário?

Para isso , nós usamos uma tabela de números múltiplos de 2..

EX: 1 / 2 / 4 / 8 / 16 / 32 /64 / 128 /

E eu seleciono um alguns desses números para que eu tenha como soma no final da conta , o número 192, então ficaria mais ou menos assim:

255.0.0.192

11111111.00000000.00000000.xxxxxxxx ?

1 / 2 / 4 / 8 / 16 / 32 /64 / 128 /

0 0 0 0 0 0 1 1 = 192 !

11111111.00000000.00000000.00000011

255.0.0.192

NO final das contas eu consigo converter o último octeto da minha máscara de formato decimal para binário e assim formar a minha mascara de sub-rede!

256-192 = 64 IP’s por rede

Gostou ? Compartilha com geral!

Continue lendo

EM ALTA