Сетевая математика. Суммирование маршрутов.
Не смотря на то, что IPv4 доживает свои последние дни, вопросы связанные с сетевой адресацией все еще актуальны для всех претендентов на почетное звание CCNA. В прошлой публикации, посвященной сетевой математике, не была затронута одна тема — суммирование маршрутов. Эта тема не намного сложней деления сетей. К сожалению, суммирование маршрутов невозможно делать без перевода адресов суммируемых сетей в двоичную форму. Но это не должно доставить много хлопот, так как есть некоторые методы, позволяющие упростить данную задачу. Рассмотрению данных методов и посвящена данная публикация.
Для того, чтобы более эффективно решать задачи по суммированию маршрутов нужно с самого начала правильно выбрать адреса сетей, на основе которых будет вычисляться суммарный адрес сети. Это абсолютно не сложно. Их всего два: самый младший и самый старший. Для этого анализируем группу предоставленных адресов начиная от старшего октета к младшему, до тех пор пока не находим старший разделяемый октет. Именно на основе старшего разделяемого октета принимается решение. Все что происходит дальше нам не интересно. После того, как будет найден старший разделяемый октет, его максимальное десятичное значение и есть наш старший адрес, а его минимальное десятичное значение — младший. Нет необходимости, как это показано в большинстве примеров по суммированию, переводить все предоставленные адреса сетей в двоичную форму.
Второе что нужно уметь делать — это быстро переводить числа от 0 до 255 в двоичную форму. Тот факт, что диапазон чисел, переводимых из десятичной формы в двоичную, ограничивается этим диапазоном, а также знание значений степени 2 от 0 до 7, позволяет делать это более быстро.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Значения степени 2 от 0 до 7
Перевод десятичного числа от 0 до 255 в двоичную форму наиболее эффективно делается простым вычитанием максимально возможного значения степени 2. С результатом данного вычитания ( остатком ) поступают так же как и с самим числом до тех пор пока остаток не будет равен 0. Каждое «успешное» вычитание показывает нам, какой бит адреса установлен в 1. Если остаток будет равен 0, еще до того как будет произведено вычитание 2 в степени 0, то это будет означать, что все оставшиеся биты равны 0. Возможно это кажется немного запутанным, но на практике это очень просто. Пример перевода числа 187 в двоичную форму.
Вычитание |
Значение бита |
Номер бита |
187 — 128 = 59 |
1 |
7 |
59 — 64 |
0 |
6 |
59 — 32 = 27 |
1 |
5 |
27 — 16 = 11 |
1 |
4 |
11 — 8 = 3 |
1 |
3 |
3 — 4 |
0 |
2 |
3 — 2 = 1 |
1 |
1 |
1 — 1 = 0 |
1 |
0 |
В результате этих вычислений получаем двоичное число 10111011. Это и есть двоичная запись десятичного числа 187. Не так уж сложно. Этот метод граничит с простым перебором, и конечно же не подходит для перевода больших чисел из десятичной формы в двоичную. Но в случае с числами от 0 до 255, это проще и быстрей, чем переводить число методом последовательного деления на 2.
Описанные выше методы не меняют в корне саму идею суммирования, но позволяют делать ее более эффективно. Далее пример суммирования адресов.
Дана группа сетей.
140.176.56.128 / 25
140.176.31.0 / 25
140.176.16.192 / 26
140.176.63.128 / 26
140.176.34.0 / 25
Необходимо эту группу сетей представить одним суммарным адресом.
Для начала необходимо найти старший и младший адрес в этой группе. Третий октет является страшим разделяемым октетом. Максимальное значение 63, минимальное — 16. Получаем два адреса. значения третьего октета которых необходимо перевести в двоичную форму:
Переводим оба числа в двоичную форму.
63 = 00111111
16 = 00010000
У этих двух последовательностей нулей и единиц в левой части есть два бита, значения которых совпадают. Все что после этих двух бит заполняем нулями, и в результате получаем суммарный адрес сети. Эти же два общих бита указывают на границу маски сети или число бит в префиксе суммарного адреса.
Тоже самое, но для другой группы сетей:
140.176.156.128 / 25
140.176.143.192 / 26
140.176.129.128 / 25
140.176.135.128 / 26
140.176.156.192 / 26
1. Находим старший и младший адреса
2. Переводим значения старшего и младшего октетов в двоичную форму
3. В левой чести двух последовательностей три одинаковых бита.
4. В результате получаем наиболее приемлемый суммарный адрес
Для того чтобы более уверенно решать подобные задачи на экзамене CCNA можно дополнительно попрактиковаться в Cisco Binary Game. Эта игра дает возможность производить в уме большую часть вычислений, связанных с переводом десятичного числа в двоичную форму.
- Главная
- Список сервисов
- Калькулятор для суммирования маршрутов IPv4
Суммирование маршрутов IPv4 (supernetting)
Введите список адресов и префиксов
Введите список адресов и префиксов формата 127.0.0.1/24. Каждое значение с новой строки. Без пробелов и запятых.
Описание
Для уменьшения таблицы маршрутизации существует понятие суммирования маршрутов (supernetting). Этот процесс объединяет несколько сетей в одну большего размера, которая называется суперсетью.
Вычисление суперсети аналогичное поиску сети для нескольких хостов. Суперсеть должна описывать максимально приближенное количество сетей.
Ваши замечания и пожелания по работе сервиса
При подготовке к CCIE RS Written есть тема, которая посвящена маскам подсети, и прочему.
Я напишу небольшую заметку о том как разбивать сети на подсети, как суммировать их, как найти адреса сети и широковещательных адресов и так далее.
Нахождение адреса сети, широковещательного адреса, первого и последнего допустимых адресов, которые могут быть назначены хостам.
Допустим нам дан некий IP адрес, с маской подсети, например 152.21.121.37 /26, нам необходимо найти адрес сети и широковещательный адрес, а так же первый и последний адреса которые можно присвоить хосту.
Алгоритм действий такой:
Префикс 26 нам говорит о том, что с последнего октета, под сеть выделено 2 бита, и на хосты у нас осталось 6 бит (64 хоста).
Представим этот префикс в двоичном виде и далее переведем последний октет в IP адресе в двоичную систему (нет смысла переводить весь IP адрес в бинарку)
/26 — 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 0 0 0 0 0 0
x.x.x.37 — x x x x x x x x . x x x x x x x x . x x x x x x x x . 0 0 1 0 0 1 0 1
Теперь можем определить адрес сети.
Для этого проведем линию по нашему префиксу. Теперь это будет выглядеть так.
/26 — 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 | 0 0 0 0 0 0
x.x.x.37 — x x x x x x x x . x x x x x x x x . x x x x x x x x . 0 0 | 1 0 0 1 0 1
И выпишем значения которые могут быть минимальным (все биты равны нулю) и максимальное (когда все биты равны единицы) в хостовой части.
это соответственно — 0 0 0 0 0 0 — что в 10-ной системе равно «0» и 1 1 1 1 1 1 что в 10-ой системе равно 63
Значит адрес нашей сети равен: 152.21.121.0.
Широковещательный адрес: 152.21.121.63
Соответственно первый IP адрес, который можно назначить хосту: 152.21.121.1
Последний IP адрес, который можно назначить хосту: 152.21.121.62
Нахождение IP адреса по номеру подсети и номеру хоста.
Не представляю особо где может понадобиться, но тем не менее 🙂
Дана сеть, скажем 49.0.0.0, которая поделена маской /25 на множество подсетей.
Необходимо найти IP адрес, если известно что он принадлежит 429 подсети и имеет номер 41.
Итак приступим:
49.0.0.0 согласно классификации сетей принадлежит классу А, следовательно префикс такой сети равен /8, Запишем его в бинарном виде.
8/ — 1 1 1 1 1 1 1 1 . 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0
Представим префикс /25 так же в бинарном виде:
/25 — 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 0 0 0 0 0 0 0
Так как разрешено использовать для подсети все единицы и нули, то из требуемой подсети 429 вычитаем 1. Получаем 428, это число нам нужно представить в бинарном ввиде, на том месте где у нас «единички» в подсети.
428 — 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 1 1 0 1 0 1 1 0 . 0 0 0 0 0 0 0 0
Представим в бинарном виде 41 (номер нашего искомого хоста в нужной подсети).
41 — 0 0 1 0 1 0 0 0
Что у нас получилось?
49.0.1 1 0 1 0 1 1 0 . 0 0 1 0 1 0 0 1
Переведем весь адрес в десятичный вид:
49.0.214.41
Суммирование сетей.
Суммирование сетей очень важно уметь делать, ибо применяется в маршрутизации повсеместно, а именно там, где нам нужно объединить кучу сетей, в одну, тоесть иными словами «суммировать».
Давайте также разберемся на примере.
Дано:
Сети адреса которых:
* 140.176.2.128 / 25
* 140.176.3.0 / 25
* 140.176.3.192 / 26
* 140.176.3.128 / 26
* 140.176.2.0 / 25
Необходимо заменить все эти подсети — одной, которая будет объеденять все вышеуказанные, с наименьшей потерей адресов. Можно конечно не сильно присматриваясь сделать так: 140.176.0.0 /16 , да, это будет работать, но это грубое суммирование и не корректное.
Для правильного суммирования нам необходимо опять же поработать с бинарными числами, а именно перевести изменяемые части адреса в двоичный код.
В данном примере 140.176. является статичной, поэтому ее трогать не будем, будем переводить последние два октета:
2.128 / 25 — 0 0 0 0 0 0 1 0 . 1 0 0 0 0 0 0 0
3.0 / 25 — 0 0 0 0 0 0 1 1 . 0 0 0 0 0 0 0 0
3.192 / 26 — 0 0 0 0 0 0 1 1 . 1 1 0 0 0 0 0 0
3.128 / 26 — 0 0 0 0 0 0 1 1 . 1 0 0 0 0 0 0 0
2.0 / 25 — 0 0 0 0 0 0 1 0 . 0 0 0 0 0 0 0 0
Далее нам необходимо найти неизменяемые не в одной подсети значения, я отметил их жирным.
Таким образом получается что префикс новой сумированной сети будет: /23
Полностью суммированная сеть будет выглядеть так: 140.176.2.0/23
Разбиение сети на подсети.
Например, есть у нас сеть класса С, 192.168.0.0 / 24
Нам необходимо разбить эту сеть на две одинаковые подсети.
Разбиение осуществляется путем заимствования бита из поля, которое предназначено для хоста, в поле которое предназначено для маски.
Наша основная сеть имеет префикс 24 бита, мы добавляем к нему 1, и получаем новый префикс /25
Так как мы взяли всего один бит, следовательно и сетей у нас может быть только две (бит может принимать значение 1 или 0).
В каждой такой сети есть 128 адреса (2 в 7 степени (32 — 25 = 7 ) ).
Итак у нас получилось две подсети с адресами:
192.168.0.0 — 192.168.0.127 /25 (Доступные адреса для хостов: 192.168.0.1 — 192.168.0.126)
192.168.0.128 — 192.168.0.255/25 (Доступные адреса для хостов: 192.168.0.129 — 192.168.0.254)
Это был очень простой пример.
Так же каждую такую сеть вы можете еще разбить на несколько подсетей, не обязательно поровну, но и на различное количество хостов в каждой подсети.
Например, мы хотим разбить сеть 192.168.0.128/25 на одну сеть которая бы имела не менее 30 адресов, и другую сеть, которая имела бы не менее 60 адресов.
Находим необходимые префиксы наших новых сетей.
30 адресов, ищим ближайшее значение степени двойки, 2^5 = 32. Это то, что нужно.
Тоесть для этой сети нам достаточно сети пяти бит. (32 -5 = 27), итак префикс нашей новой подсети будет /27
Для второй сети, 60 адресов, ближайшая степень двойки — 64, 2^6 = 64.
Тоесть для новой сети нам необходимо 6 бит (32-6 = 26), префикс будет /26
Ну и запишем что у нас получилось:
1. 192.168.0.128 — 192.168.0.159/27
2. 192.168.0.160 — 192.168.0.123/26
Когда перед нами стоят такие задачи, то нужно начинать разбиение сети с наибольшего количества, адресов, и так по убыванию (в моем примере наоборот).
Надеюсь данная заметка кому-то будет полезной.
p.s. В ходе повторения материала, набрел на очень полезный ресурс, с точки зрения пратики: http://tests.proseti.com/
Рекомендую 🙂
Просмотров:
8 563
Курс по сетевым технологиям
Задания по расчету IP адресов и масок подсетей
Задание
№1. Найти 2-ю и 4-ю подсети в классовой сети 175.100.0.0 при
использовании маски 255.255.224.0 (префикс 19).
Ответ:
175.100.32.0
175.100.96.0
Задание
№2. К какой подсети относится адрес 172.17.90.63/21?
Ответ: 172.17.88.0
Задание
№3. Определить адрес 6-й подсети в 67.90.0.0/27
Ответ: 67.90.0.160
Задание
№4. Для адреса 198.146.70.176/19 найти следующее:
·
Сетевой адрес
·
Широковещательный адрес
·
Маску подсети
Ответ:
198.146.64.0
198.146.95.255
255.255.224.0
Задание
№5. Для адреса 52.92.25.205/19 найти следующее:
·
Сетевой адрес
·
Широковещательный адрес
·
Маску подсети
Ответ:
52.92.0.0
52.92.31.255
255.255.224.0
Задание
№6. Найти общий суммаризированный адрес для адресов 17.89.133.56/17,
17.89.142.90/18, 17.89.252.2/17, 17.89.166.18/17.
Ответ: 17.89.128.0/17
Задание
№7. Найти общий суммаризированный адрес для адресов
187.63.224.12/21, 187.63.1.85/21, 187.63.131.100/22, 187.63.148.71/20.
Ответ: 187.63.0.0/16
Задание
№8. Даны адреса 23.149.22.3/28 и 23.149.55.1/26 с
масками 255.255.255.240 и 255.255.255.192 соответственно. Вашей задачей
является определить последние подсети при использовании указанных масок. Также
определите следующие параметры этих найденных подсетей:
·
Сетевой адрес
·
Широковещательный адрес
·
Маску подсети
·
Количество хостов в каждой подсети
Ответ:
23.149.22.240
23.149.22.255
255.255.255.240
14
————————
23.149.55.192
23.149.55.255
255.255.255.192
62
Задание
№9. Для адреса 60.190.185.79 с маской 255.255.248.0 определить
максимальное количество возможных хостов.
Ответ: 2046
Задание
№10. Администратору поручено выбрать сеть, которая бы удовлетворяла
следующим требованиям:
·
Количество подсетей — не менее 27
·
Количество хостов в каждой подсети — не менее 200
Какую
маску выберет администратор?
Ответ: 255.255.255.0
Задание
№11. Какие из ниже перечисленных IP адресов принадлежат к
хостам сети 10.1.160.0/20?
·
10.1.168.0
·
10.1.176.1
·
10.1.174.255
·
10.1.160.255
·
10.1.160.0
·
10.1.175.255
Ответ:
10.1.168.0
10.1.174.255
10.1.160.255
Задание
№12. К какой сети принадлежит IP адрес 192.168.23.61/28?
Ответ: 192.168.23.48
Задание
№13. Определить последний адрес хоста в сети с маской
255.255.255.224:
·
192.168.2.63
·
192.168.2.62
·
192.168.2.61
·
192.168.2.60
·
192.168.2.32
Ответ: 192.168.2.62
Задание
№14. Адреса 34.23.89.190 и 34.23.101.190 принадлежат одной
подсети. Определить минимально возможную подсеть для данных адресов, а также их
маску.
Ответ:
34.23.64.0
255.255.192.0
Суммарные маршруты IPv4
Суммирование маршрутов используется, чтобы уменьшить размер таблицы маршрутизации.
Если один статический маршрут может использоваться вместо нескольких статических маршрутов, размер таблицы маршрутизации будет уменьшен. Во многих случаях единственный статический маршрут может использоваться, чтобы представить десятки, сотни или даже тысячи маршрутов.
Мы можем использовать единственный сетевой адрес, чтобы представить несколько подсетей. Например, сети 10.0.0.0/16, 10.1.0.0/16, 10.2.0.0/16, 10.3.0.0/16, 10.4.0.0/16, 10.5.0.0/16 на всем пути к 10.255.0.0/16 могут быть представлены единственным сетевым адресом: 10.0.0.0/8.
Суммирование маршрутов
Многократные статические маршруты могут быть суммированы в единственный статический маршрут если:
• Целевые сети могут быть суммированы в единственный сетевой адрес, и
• Многократные статические маршруты все используют тот же самый интерфейс выхода или IP-адрес следующего транзитного участка
В нашем примере у R3 есть три статических маршрута. Все три маршрута передают трафик через тот же самый интерфейс Serial0/0/1. Три статических маршрута на R3:
ip route 172.16.1.0 255.255.255.0 Serial0/0/1
ip route 172.16.2.0 255.255.255.0 Serial0/0/1
ip route 172.16.3.0 255.255.255.0 Serial0/0/1
Если возможно, мы хотели бы суммировать все эти маршруты в единственный статический маршрут. 172.16.1.0/24, 172.16.2.0/24 и 172.16.3.0/24 могут быть суммированы в сеть 172.16.0.0/22. Поскольку все три маршрута используют тот же самый интерфейс выхода, они могут быть суммированы в одну сеть 172.16.0.0 255.255.252.0 сети, и мы можем создать единственный суммарный маршрут.
Вычисление суммарного маршрута
Вот процесс создания суммарного маршрута 172.16.0.0/22, как показано на рисунке:
1. Выпишите сети, которые Вы хотите суммировать в двоичном виде.
2. Чтобы найти маску подсети для суммирования, начните с крайнего левого бита.
3. Двигайтесь последовательно вправо, находя все биты, которые соответствуют.
4. Когда Вы находите столбец битов, которые не соответствуют, остановитесь. Вы на границе суммирования.
5. Теперь, сосчитайте число крайних левых соответствующих битов, которое в нашем примере равняется 22. Это число становится Вашей маской подсети для итогового маршрута, /22 или 255.255.252.0
6. Чтобы найти сетевой адрес для суммирования, скопируйте соответствующие 22 бита и добавьте все нулевые биты в конец, чтобы сделать 32 бита.
Следуя этим шагам, мы можем обнаружить, что три статических маршрута на R3 могут быть суммированы в единственный статический маршрут, использующий суммарный адрес сети 172.16.0.0 255.255.252.0:
ip route 172.16.0.0 255.255.252.0 Serial0/0/1
Суммарный маршрут IPv6
Суммарных маршрут IPv6 находится также как и маршрут IPv4, за исключением того, что IPv6 записывается в 16-ой форме.
Допустим есть три сети:
2001:db8:0:30::0/64
2001:db8:0:31::0/64
2001:db8:0:32::0/64
Для нахождения суммарного маршрута нужно найти различающиеся биты идентификатора сети. Первые три хекстета очевидно одинаковые, берём четвёртый и переводим числа 30 31 и 32 из 16 в 2 систему счисления:
00110000
00110001
00110010
Находим старший бит, после которого биты уже не совпадают – это 14-ый бит, значит маска сети будет 64 -2 = 62. Чтобы получить идентификатор сети нужно взять не совпадающие биты и перевести их в ноль. получившееся число будет адресом сети:
00110000 – в 16-ой системе это будет 30. Получаем суммарный маршрут:
2001:db8:0:30::/62