Разбиение сети на подсети одинакового размера

Сети необходимо разбивать на подсети меньшего размера для увеличения производительности сетей и обеспечения безопасности. Подробнее об этом можно прочесть в соответствующей статье. Существует два способа такого разбиения: простой и более гибкий (с использованием VLSM) в данной статье речь пойдёт о более простом способе — разбиение сети на подсети одинакового размера. Перед прочтением этого материала я рекомендую посмотреть информацию о структуре IP адреса (сетевой и хостовой частях).

Пример 1

Рассмотрим для начала самый простой пример: имеется сеть 10.10.0.0/16 и стоит задача получить несколько десятков сетей поменьше. В исходной сети два октета (10.10) являются сетевой частью IP адреса и два (0.0) — хостовой. Простейшим вариантом разбиения будет увеличение префикса с /16 до /24. Таким образом, мы получаем в наше распоряжение весть третий октет, теперь мы можем в нём менять значения и получать 256 разных сетей, в каждой из которых будет по 254 хоста. А именно:

10.10.0.0/24 
10.10.1.0/24 
10.10.2.0/24 
... ещё 252 сети ... 
10.10.255.0/24

Важно что эти подсети в сумме образуют нашу исходную сеть 10.10.0.0/16 и не один адрес не выходит за её пределы. Как же произошло такое разбиение? Исходный адрес выглядел в двоичном виде так: 00001010. 00001010.|00000000.00000000 (вертикальная черта означает границу между сетевой и хостовой частями). После изменения префикса с /16 на /24 адрес стал выглядеть так: 00001010. 00001010.|00000000.|00000000 мы меняем третий октет (между двумя вертикальными чертами на любые значения и при этом гарантированно не вылезаем за пределы предоставленной нами сети (для того чтобы вылезти за её пределы надо поменять первые два октета). Сколько подсетей мы получили? Для того чтобы жто посчитать — надо узнать сколько бит мы добваили к префиксу (выделили на подсети): 24-16=8. 8 бит позволяют разместить 28=256 различных подсетей.

Пример 2

Возьмём более сложный пример. У нас есть сеть 192.168.128.0/25 и нам надо во что бы то ни стало получить 10 подсетей. Посчитаем, сколько бит нам надо выделить, чтобы в них влезло 10 подсетей. Для этого найдём минимальную степень двойки, которая была бы больше или равна 10 — это 16, то есть 24. Таким образом, мы можем выделить 4 бита и получим 16 подсетей. Префикс был 25, а стал 25+4=29. Какого же размера окажутся полученные подсети? В хостовой части останется 32-29=3 бита, то есть сети будут на 23-2=8-2=6 IP адресов. Если нас устраивают такие маленькие сети, то давайте вычислим их.

Исходный адрес имеет вид 11000000.10101000.10000000.1|0000000, после выделения подсетей получим адрес 11000000.10101000.10000000.1|0000|000 в котором мы можем расписать все комбинации для выделенных четырёх бит. Получаются сети:

11000000.10101000.10000000.1|0000|000 – 192.168.128.128/29
11000000.10101000.10000000.1|0001|000 – 192.168.128.136/29
11000000.10101000.10000000.1|0010|000 – 192.168.128.144/29
11000000.10101000.10000000.1|0011|000 – 192.168.128.152/29
11000000.10101000.10000000.1|0100|000 – 192.168.128.160/29
11000000.10101000.10000000.1|0101|000 – 192.168.128.168/29
11000000.10101000.10000000.1|0110|000 – 192.168.128.176/29
11000000.10101000.10000000.1|0111|000 – 192.168.128.184/29
11000000.10101000.10000000.1|1000|000 – 192.168.128.192/29
11000000.10101000.10000000.1|1001|000 – 192.168.128.200/29
11000000.10101000.10000000.1|1010|000 – 192.168.128.208/29
11000000.10101000.10000000.1|1011|000 – 192.168.128.216/29
11000000.10101000.10000000.1|1100|000 – 192.168.128.224/29
11000000.10101000.10000000.1|1101|000 – 192.168.128.232/29
11000000.10101000.10000000.1|1110|000 – 192.168.128.240/29
11000000.10101000.10000000.1|1111|000 – 192.168.128.248/29

Благодаря тому что мы нигде не меняли ни одного бита левее первой вертикальной черты (исходного префикса) мы точно не вылезли за пределы предоставленной нам исходной сети. Как видно, этот пример, в отличие от предыдущего не так просто посчитать в уме, надо смотреть на адреса в двоичном виде.

Алгоритм разбиения сети на подсети одинакового размера

Подытожим в общем виде алгоритм резбиения сети на подсети одинакового размера. Сначала нам надо понять сколько бит выделить на подсети. Если у нас стоит задача получить n подсетей, то мы ищем минимальную степень двойки k такую что 2k≥n и делаем новый префикс m (исходный префикс + k). Другая задача, если у нас не задано количество подсетей, но есть требования к их размеру (чтобы в них вмещалось как минимум n хостов), то мы опять же ищем минимальную степень двойки k Такую что 2k≥n+2 (два адреса добавляется потому что сеть ещё должна вместить адрес сети и брудкастовый адрес). И устанавливаем новый префикс m=32-k (чтобы в хостовой части у нас осталось k бит для адресации устройств).

Как бы ни формулировалось исходное требование, после первого шага алгоритма мы получаем новый префикс m. На втором шаге алгоритма мы должны выделить место на подсети. Оно будет находиться в адресе в промежутке между исходным префиксом и новым префиксом m. Далее надо просто в двоичном виде заполнить эти биты (выделенные для подсетей) всеми возможными комбинациями единиц и нулей, перевести адреса в десятичный вид. Разбиение готово.

Рекомендации по разбиению сетей

Если вы не чувствуете в себе силы справиться с этой задачей легко и не имеете достаточного опыта, то у меня есть рекомендация: делайте всё всегда в двоичном виде по приведённому выше алгоритму. Моя практика показывает, что большая часть ошибок возникает, когда студент пытается разбивать сети на глаз, интуитивно, прямо в десятичном виде, считая, что он уже постиг все принципы. Делайте все вычисления в двоичном виде. Со временем вы накопите опыт, поймёте закономерности и сможете решать большую часть таких задач в уме. Но для начала — переводите в двоичный вид и рисуйте вертикальные чёрточки. Всё что получилось между двумя вертикальными чертами (старым и новыми префиксами) — это и есть ваши подсети.

Комментарии

10.10.256.0/24 . WAAAAT?

Аватар пользователя bacek
Спасибо ))))) Сводящая с ума опечатка ))))

как разделить 192.168.0.0/24 на 4 подсети?

Аватар пользователя bacek

На 4 равные подсети - значит надо выделить из хостовой части два бита, потому что два во второй степени даёт 4.

То есть префикс будет 24+2=26

Подсети соответственно получатся

  1. 192.168.0.0/26
  2. 192.168.0.64/26
  3. 192.168.0.128/26
  4. 192.168.0.192/26

Самая интуитивно понятная статья по разбиению . прочел. понял алгоритм. дерзай.
Автору добра!

Как разделить 192.168.102.0/24 на 3 подсети

Аватар пользователя bacek
на 3 равных не дклится - можно на 2,4,8,16,32 и т.п. Поэтому когда задача так формулируется, надо делить на 4. 2-мя коментами выше делю на 4.

Добавить комментарий