пятница, 7 февраля 2014 г.

Сетевая математика. Суммирование маршрутов.

Сетевая математика CCNA
Не смотря на то, что 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. Получаем два адреса. значения третьего октета которых необходимо перевести в двоичную форму:

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 = 00111111
16 = 00010000

У этих двух последовательностей нулей и единиц в левой части есть два бита, значения которых совпадают.   Все что после этих двух бит заполняем нулями, и в результате получаем суммарный адрес сети.  Эти же два общих бита указывают на границу маски сети или число бит в префиксе суммарного адреса. 

140.176.0.0 / 18

Тоже самое, но для другой группы сетей:

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.  Находим старший и младший адреса

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

2. Переводим значения старшего и младшего октетов в двоичную форму

129  = 10000001
156 =  10011100

3. В левой чести двух последовательностей три одинаковых бита.

10000001
10011100

4.  В результате получаем наиболее приемлемый суммарный адрес

140.176.128.0/19

Для того чтобы более уверенно решать подобные задачи на экзамене CCNA можно дополнительно попрактиковаться в Cisco Binary Game. Эта игра дает возможность производить в уме большую часть вычислений, связанных с переводом десятичного числа в двоичную форму. 

Статья взята с отличного блога для будущих цисководов http://ccnastepbystep.blogspot.com
Не поленитесь, прочитайте. Очень полезно!

Комментариев нет:

Отправить комментарий