domingo, 1 de fevereiro de 2015

Calculando Sub-Redes de Tamanho Variável (VLSM)

Olá Pessoal.

Poucas horas depois que publiquei o último artigo sobre a matemática por trás das Wildcard Masks (veja o artigo aqui) um ex-aluno me pediu para escrever no blog um artigo sobre VLSM (Variable Length Subnet Masks), um dos assuntos mais comuns no exame CCNA da Cisco e que traz grande dificuldade para os estudantes no primeiro momento. 

Aqueles que estão estudando VLSM certamente já estudaram cálculo de sub-redes de tamanho fixo, portanto estou partindo do princípio de que o leitor tem esse conhecimento como pré-requisito. Antes de entrar na discussão de VLSM, façamos uma revisão "relâmpago" do conceito de sub-redes.

Quando se estuda cálculo de sub-redes pela primeira vez, é explicado que o endereço IP está associado a uma máscara de rede que é um número de 32 bits composto por uma sequência de 1s (prefixo que representa a rede) + 0s (sufixo que representa um host na rede), nessa ordem, da esquerda para a direita. Além disso, os valores padrões das máscaras de rede podem ser modificados para atender às necessidades de determinados ambientes que possuem redes mais complexas, criando diversas sub-redes. Ou seja, é possível "emprestar" bits que identificam hosts para identificar e criar sub-redes. Basicamente, no cálculo de sub-redes há duas regras básicas para seguir:

  • 1a. Regra: Em relação aos bits "emprestados" para criar sub-redes, temos que: 
             2bits   = Quantidade de Sub-Redes

  • 2a. Regra: Em relação aos bits remanescentes que identificam hosts, temos que: 
             2bits-2 = Quantidade de Hosts

Por exemplo, 160.30.0.0/16 é um endereço de Classe B que permite 65.534 hosts (216-2) em uma única rede, o que seria ruim do ponto de vista de desempenho por causa do tamanho do domínio de broadcast. Ao invés de ter uma única rede com muitos hosts, seria mais interessante ter mais redes com menos hosts, conforme figura abaixo onde emprestamos 8 bits do sufixo de host para identificar sub-redes menores (/24). Então passamos a ter 256 sub-redes (28) com 254 hosts cada uma (28-2). 

No cálculo de sub-redes de tamanho variável os requisitos irão variar e teremos que criar novas sub-redes com tamanhos diferentes. Deve-se começar o processo de cálculo das sub-redes a partir dos segmentos com maior quantidade de hosts. Para isso, primeiro deve ser verificada a quantidade de hosts necessários por sub-rede usando a fórmula:

2bits-2  ≥ Quantidade de Hosts no Segmento

Obs.: Reparem que esse processo é inverso ao do cálculo de sub-redes de tamanho fixo. No cálculo tradicional de sub-redes de tamanho fixo a primeira coisa a fazer é determinar a quantidade de sub-redes necessárias.

Para praticar e entender melhor esses conceitos, vamos resolver um exercício juntos. Considerando a topologia apresentada na figura abaixo, através de uma Rede Classe C 192.168.2.0 (/24) você deve criar um plano de endereçamento para acomodar suas sub-redes que possuem requisitos distintos.

Fonte: CCNA Study Guide. Richard Deal. Editora McGraw Hill. 2008.

Nesse tipo de exercício a primeira coisa a ser feita é uma leitura da topologia para identificar quais são os requisitos exigidos pelo exercício, afinal temos que saber o que precisamos fazer antes de calcular qualquer coisa. Observando a figura é possível identificar uma topologia hub-and-spoke em que existe uma matriz conectada com outras 7 filiais através de links ponto-a-ponto (/30). Além disso, cada segmento de rede local nas filiais deve acomodar 30 hosts. Assim sendo, já temos nossos requisitos:

  • 7 Sub-Redes de 02 Hosts (Links P2P)
  • 7 Sub-Redes de 30 Hosts (LANs das Filiais)

Se temos mais de um requisito, ou seja, precisamos criar sub-redes com tamanhos diferentes, pode ter certeza de que o exercício é sobre VLSM. Se tivéssemos um único requisito com redes de mesmo tamanho, qualquer que fosse a quantidade de redes solicitadas, seria um exercício de sub-redes de tamanho fixo. Primeiramente vamos escrever a rede que temos e sua respectiva máscara de rede:

Endereço de Rede  : 192.168.2.0 
Máscara em Decimal: 255.255.255.0 (/24)
Máscara em Binário: 11111111.11111111.11111111.00000000

Lembrem-se, então, que devemos começar o processo de cálculo VLSM a partir dos segmentos com maior quantidade de hosts. No nosso caso, tratam-se das sub-redes com 30 hosts, então devemos aplicar a seguinte fórmula para determinar quantos bits devemos usar para garantir 30 hosts:

2bits-2  ≥ 30 => Bits = 5 (já que 2= 32)

Como tínhamos 8 bits para hosts e precisamos de 5 para assegurar segmentos de 30, sobraram 3 bits que utilizamos no novo prefixo para ter o máximo possível de sub-redes. Assim nossa nova máscara de rede passa a ser /27, veja abaixo os bits emprestados com destaque em amarelo:

Nova Máscara em Binário: 11111111.11111111.11111111.11100000

Nesse momento a antiga rede 192.168.2.0/24 não existe mais e temos 8 novas sub-redes (23) com 30 hosts (25-2). Abaixo relacionamos todas essas 8 novas sub-redes e já reservamos as 7 primeiras para atender o requisito das LANs das filiais:

  1. 192.168.2.0   /27 OK
  2. 192.168.2.32  /27 OK
  3. 192.168.2.64  /27 OK
  4. 192.168.2.96  /27 OK
  5. 192.168.2.128 /27 OK
  6. 192.168.2.160 /27 OK
  7. 192.168.2.192 /27 OK
  8. 192.168.2.224 /27 **

A essência do VLSM consiste em trabalhar com as "sobras" refazendo sucessivamente os cálculos. Reparem que originalmente tínhamos 1 rede /24 (uma pizza completa) que dividimos em 8 pedaços menores. Da pizza total, consumimos 7 pedaços, mas ainda sobrou um. Ou seja, tudo que nos resta agora é uma sub-rede 192.168.2.224 /27, então vamos a partir dela tentar atender o próximo requisito. Novamente, primeiramente vamos escrever a rede que temos e sua respectiva máscara de rede:

Endereço de Rede  : 192.168.2.224
Máscara em Decimal: 255.255.255.224 (/27)
Máscara em Binário: 11111111.11111111.11111111.11100000

Nosso próximo requisito é criar sub-redes com 2 hosts para os links ponto-a-ponto entre a matriz e as filiais, então devemos reaplicar a seguinte fórmula para determinar quantos bits devemos usar para garantir 2 hosts:

2bits-2  ≥ 2 => Bits = 2 (já que 2= 4)

Como tínhamos 5 bits para hosts e precisamos de 2 para assegurar segmentos de 2, sobraram 3 bits que utilizamos no novo prefixo para ter o máximo possível de sub-redes. Assim, nossa nova máscara de rede passa a ser /30, veja abaixo os bits emprestados com destaque em amarelo:

Nova Máscara em Binário: 11111111.11111111.11111111.11111100

Nesse momento a antiga sub-rede 192.168.2.224/27 não existe mais e temos 8 (23) novas sub-redes com 2 hosts (22-2). Abaixo relacionamos todas essas 8 novas sub-redes e já reservamos as 7 primeiras para atender o requisito dos links ponto-a-ponto:

  1. 192.168.2.224 /30 OK
  2. 192.168.2.228 /30 OK
  3. 192.168.2.232 /30 OK
  4. 192.168.2.236 /30 OK
  5. 192.168.2.240 /30 OK
  6. 192.168.2.244 /30 OK
  7. 192.168.2.248 /30 OK
  8. 192.168.2.252 /30 **

Agora sim atendemos os requisitos do exercício e criamos 7 sub-redes /30 para os links ponto-a-ponto entre a matriz e as filiais, além de 7 sub-redes /27 para as LANs das filiais (vide figura). Pensem que da pizza toda que anteriormente foi dividida em oito pedaços havia sobrado um único pedaço que, por sua vez, foi dividido em novos 8 pedaços menores. Ainda nos sobrou um "pedacinho" bem pequeno que permite uma nova sub-rede /30.

Fonte: CCNA Study Guide. Richard Deal. Editora McGraw Hill. 2008.

Por fim, aproveito para deixar um exercício extra e na sequência trago o plano de endereçamento da topologia com sua resposta, assim vocês podem verificar se acertaram. Para dominar esse tópico é crucial praticar, bons estudos!

Samuel.



Exercício Extra: Considerando a topologia apresentada na figura abaixo, através de uma Rede Classe C 192.168.3.0 (/24) você deve criar um plano de endereçamento para acomodar as seguintes sub-redes que possuem requisitos distintos.

Fonte: CCNA Study Guide. Richard Deal. Editora McGraw Hill. 2008.

Resposta:

Fonte: CCNA Study Guide. Richard Deal. Editora McGraw Hill. 2008.

22 comentários:

  1. Só confirmando então, na resposta fica assim :
    1 rede /25 para a porção maior, 3 redes /27 e 3 redes /29 sendo que ainda sobram 9 endereços sem utilização. É isso mesmo ??? Se for parece que agora o assunto ficou claro. Grato pela ajuda.

    ResponderExcluir
    Respostas
    1. Isso, Alexandre. Só que sobram 8 endereços e não 9.

      Excluir
    2. Poutz, na trave, esqueci do broadcast !!! Valeu ai mesmo !!!

      Excluir
  2. Excelente explicação! grato pelas informações.

    ResponderExcluir
  3. Obrigado Professor ,valeu mesmo !

    Salvou meu raciocínio \o/ kkkk !

    ResponderExcluir
  4. ... Me corrija se eu estiver enganado, mas.. Eu precisava de 7 redes de 30 hosts, para isso elevei o 2 a 5 e consegui 32. Sendo assim, tenho 5 bits.
    Endereço de Rede : 192.168.2.0
    Máscara em Decimal: 255.255.255.0 (/24)
    Máscara em Binário: 11111111.11111111.11111111.00000000
    Nova Máscara em Binário: 11111111.11111111.11111111.11100000 /27
    Emprestei 3 bits para assegurar a rede, me sobraram 2, certo?
    Então como é possível eu emprestar mais 3 bits para criar as outras 7 redes de 2 hosts?
    Nova Máscara em Binário: 11111111.11111111.11111111.11111100 /30

    ResponderExcluir
    Respostas
    1. Preste atenção na resolução comentada que você vai entender e refaça a leitura do texto e a resolução do exercício até que o processo fique claro. Quando você cria as novas sub-redes /27 e passa a dividir a última delas para criar novas sub-redes menores, basicamente você está começando um novo cálculo de sub-redes. Nesse caso, em uma sub-rede /27 você tem 5 bits de hosts para manipular, inclusive para emprestar para criar novas sub-redes. Para criar novas sub-redes ponto-a-ponto são necessários apenas 2 bits para hosts (/30), ou seja, de /27 para /30 você ainda tem 3 bits para emprestar, o que irá permitir 8 novas sub-redes /30.

      Excluir
    2. Você terá que, basicamente, calcular as /30 consciente de que as sub-redes e hosts a serem disponibilizados terão o calculo da máscara invariavelmente proporcional ao número de hosts disponíveis na /27 ou /28. Por isso eu recomendaria do fundo do coração que utilize uma /22 pra que você possa dimensionar sua sub-rede de forma uniforme e agradável. Obrigado.

      Excluir
    3. como faço pra dividir a rede 100.10.10.0/52 em 4 partes de mesmo tamanho.

      Excluir
    4. Fácil. É só multiplicar por 2 o número de bits que sofreram overflow. Nesse caso seria 52-32 = 20 bits * 2 = 40. Assim, sua rede terá duas partes de 40 computadores e dois access points cada. Me desculpa se eu estiver errado.

      Excluir
  5. Fez um tempo que tinha estudado esse assunto, obrigado pela explicação, simples e direta.

    ResponderExcluir
  6. como faço pra dividir a rede 100.10.10.0/52 em 4 partes de mesmo tamanho.

    ResponderExcluir
    Respostas
    1. Fácil. É só multiplicar por 2 o número de bits que sofreram overflow. Nesse caso seria 52-32 = 20 bits * 2 = 40. Assim, sua rede terá duas partes de 40 computadores e dois access points cada. Me desculpa se eu estiver errado.

      Excluir
  7. Mas, e se no caso for 172.19.0.0 /24 ??

    ResponderExcluir
  8. Professor, muito obrigado faz um tempão que este assunto meche com a minha cabeça, mas com este conteudo tudo ficou esclarecido!!! Valeu.
    Professor pode me ajudar a criar um ID na netacad???

    ResponderExcluir
    Respostas
    1. Você tem que se matricular em alguma academia oficial da Cisco para ter acesso ao NetAcad. Ao fazer sua matrícula, o instrutor irá ajudá-lo a criar sua conta.

      Excluir
  9. Boa tarde , eu tenho uma duvida gostaria de saber como devo proceder uma quebra quando as mascaras não seguem uma ordem por exemplo , tenho o endereço 192.168.0.0/24 ae tenho que quebrar ela na ordem de /30 , /30 , /29 , /25 , como devo fazer . obrigado

    ResponderExcluir
  10. Gente seis sabe dessa conta? 2001:DB8:0800::/39 variação de 2?qual e a continuação?

    ResponderExcluir