Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Агрегация сетей / 19 сообщений из 19, страница 1 из 1
26.03.2015, 19:10
    #38918079
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
собственно вопрос. ищу весь день способ агрегации сетей.
http://forum.ru-board.com/topic.cgi?forum=8&topic=43635 здесь пишут как это легко, но написать как они не могут.
КАК ЭТО СДЕЛАТЬ! хоть один маленький писюльчатый капуситечный пример хотя бы. сдержал в себе мат и ненависть.
Пишу в программировании потому что пишу программу по алгоритму, которого не могу найти.
...
Рейтинг: 0 / 0
26.03.2015, 19:25
    #38918091
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Нашли границы и подровняли на степени двойки.
...
Рейтинг: 0 / 0
26.03.2015, 20:08
    #38918113
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Перевести ip в int так
Код: plaintext
1.
unsigned int ip = ntohl(inet_addr("192.168.0.0"));


а дальше битовые операции

Например два IP в одной подсети класса С (т.е. /24)
Код: sql
1.
if((ip1 & 0xFFFFFF00) == (ip2 & 0xFFFFFF00))



что именно не получается?
...
Рейтинг: 0 / 0
26.03.2015, 20:30
    #38918130
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Basil A. SidorovНашли границы и подровняли на степени двойки.
Можно поподробнее? нужно ведь по наименьшей битовой маске определить границу диапазона, я правильно понял?
т.е. если маска 24 то 192.168.1.ххх - одна сеть, если 16 то 192.168.ххх.ххх - одна сеть. Я таким способом считаю получается не так как в калькуляторах, на листочке считаю. мож ччего из виду упустил
...
Рейтинг: 0 / 0
26.03.2015, 20:37
    #38918133
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Dima TПеревести ip в int так
Код: plaintext
1.
unsigned int ip = ntohl(inet_addr("192.168.0.0"));


а дальше битовые операции

Например два IP в одной подсети класса С (т.е. /24)
Код: sql
1.
if((ip1 & 0xFFFFFF00) == (ip2 & 0xFFFFFF00))



что именно не получается?

также считаю, но как их агрегировать, нужно на 255 бит влево айпи сдвигать например если они находяться в разных сетях.
если 192.168.10.0/24 и 192.168.12.0/24 к примеру не агрегируются в 192.168.10.0/22, а 192.168.10.0/24 и 192.168.11.0/24 агрегируются 192.168.11.0/23. как понять этот момент.
...
Рейтинг: 0 / 0
26.03.2015, 20:39
    #38918135
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
сори 256 бит)
...
Рейтинг: 0 / 0
26.03.2015, 20:44
    #38918138
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
а вот это 192.168.10.0/22,192.168.12.0/22 агрегируется в 192.168.10.0/21. не пойму логику)
...
Рейтинг: 0 / 0
26.03.2015, 20:44
    #38918139
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
rxr2сори 256 бит)
Бит всего 32. Может в этом непонимание?
...
Рейтинг: 0 / 0
26.03.2015, 20:48
    #38918143
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Dima Trxr2сори 256 бит)
Бит всего 32. Может в этом непонимание?
сори путаюсь уже 256 хостов, а не бит. делаю пока все на листочке. НЕТ НИ ОДНОГО НОРМАЛЬНОГО ОБЪЯСНЕНИЯ. если вам не сложно объясните сам принцип.
...
Рейтинг: 0 / 0
26.03.2015, 20:51
    #38918144
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
rxr2а вот это 192.168.10.0/22,192.168.12.0/22 агрегируется в 192.168.10.0/21. не пойму логику)
Логика проста:
маска всего 32 бита, из которых значимы 21, т.е. в двоичном виде 11111111111111111111100000000000, т.е. 21 единица и 11 нулей. или 0xFFFFF800 в шестнадцатеричной (так короче и в двоичной синтаксис не знаю :) )
дальше сравниваем
Код: sql
1.
if((ntohl(inet_addr("192.168.10.0")) & 0xFFFFF800) == (ntohl(inet_addr("192.168.12.0")) & 0xFFFFF800)) одна подсеть.
...
Рейтинг: 0 / 0
26.03.2015, 20:55
    #38918149
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Что-то я уже из-за этой агрегации и вправду запутался во всех банальных определениях.
остался один вопрос почему
192.168.10.0/22
192.168.12.0/22
агрегируется в
192.168.10.0/21,

а 192.168.10.0/22
192.168.16.0/22
агрегируется в
192.168.8.0/22
192.168.16.0/22
...
Рейтинг: 0 / 0
26.03.2015, 21:01
    #38918152
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Dima Trxr2а вот это 192.168.10.0/22,192.168.12.0/22 агрегируется в 192.168.10.0/21. не пойму логику)
Логика проста:
маска всего 32 бита, из которых значимы 21, т.е. в двоичном виде 11111111111111111111100000000000, т.е. 21 единица и 11 нулей. или 0xFFFFF800 в шестнадцатеричной (так короче и в двоичной синтаксис не знаю :) )
дальше сравниваем
Код: sql
1.
if((ntohl(inet_addr("192.168.10.0")) & 0xFFFFF800) == (ntohl(inet_addr("192.168.12.0")) & 0xFFFFF800)) одна подсеть.


ваш пример мне понятен, но он не объясняет почему же тогда нельзя с маской в 23 бита сделать тоже самое агрегировав 192.168.10.0/23,192.168.16.0/23 в сеть с маской 21 бит?
...
Рейтинг: 0 / 0
26.03.2015, 21:08
    #38918156
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
rxr2ваш пример мне понятен, но он не объясняет почему же тогда нельзя с маской в 23 бита сделать тоже самое агрегировав 192.168.10.0/23,192.168.16.0/23 в сеть с маской 21 бит?
Если чесно - задачу не совсем понял. Как понимаю тут вопрос поиска наибольшей маски. Маской 0 агрегируются все сети. Сделай просто перебор всех возможных масок, их всего 32, нет смысла заморачиваться на сложные алгоритмы.
Бит маска0010x8000000020xC0000000......
...
Рейтинг: 0 / 0
26.03.2015, 21:18
    #38918162
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
rxr2нужно ведь по наименьшей битовой маске определить границу диапазона, я правильно понял?Задача агрегации строго обратная - подобрать наибольшую маску и сеть, в которую влазит данный диапазон.
Разность границ округлённая вверх до ближайшей степени двойки определяет хостовую (все нули) часть маски. Берём то, что получилось, вычитаем единицу, инвертируем и получаем собственно маску - вначале "все единицы", в конце "все нули". Логическое И маски с любым адресом диапазона даёт сеть.
В результате можем получить "хвосты сверху и снизу". Устраивает это или надо взять маску подлиннее и сделать несколько сетей - воспрос отдельный.
"По моему - так" (ц) Винни-Пух, голосом Евгения Леонова.
...
Рейтинг: 0 / 0
26.03.2015, 21:32
    #38918166
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
спасибо! Остался только один вопрос касательно выбора маски для агрегации сети, например:
192.168.10.0/21,192.168.16.0/21 агрегируется соответственно в 2 сети: 192.168.8.0/21, 192.168.16.0/21, если брать сеть с маской 21. Но в каком случае мне брать битовую маску ниже, для данного примера 20, ведь в этом случае получится 1 сеть?
...
Рейтинг: 0 / 0
26.03.2015, 21:44
    #38918173
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
rxr2Но в каком случае мне брать битовую маску ниже, для данного примера 20, ведь в этом случае получится 1 сеть?
ХЗ. Ты бы для начала описал что за задачу ты решаешь. Ее условия определяют можно объединять две сети в одну или нет. Мы откуда это можем знать?
PS Маска 0 объединяет все сети.
...
Рейтинг: 0 / 0
26.03.2015, 21:46
    #38918174
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
реализовать на скрипте вот это - http://ip-calculator.ru/, все кроме агрегации сделано.
...
Рейтинг: 0 / 0
26.03.2015, 21:55
    #38918180
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
rxr2реализовать на скрипте вот это - http://ip-calculator.ru/, все кроме агрегации сделано.
Ищи максимальную маску. Перебор 32 вариантов. Можно битовые хитрости, тоже написали выше. Что не понятно? Мин-макс. значения в подсети?

PS Сформулируй четко вопрос, иначе ни один ответ тебя не устроит.
...
Рейтинг: 0 / 0
26.03.2015, 22:36
    #38918202
rxr2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Агрегация сетей
Dima T,

Да вроде разобрался. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Агрегация сетей / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]