[Moscow.pm] Взрыв мозга или занимательная топология
Kaltashkin Eugene
zhecka на gmail.com
Сб Ноя 24 12:51:20 PST 2007
Александр Букреев пишет:
>> Идея Андрея была хороша. проверил её на деле, результаты уже есть.
>> Но с оговорками.
>>
>
> Какие получились оговорки?
>
см. предыдущее письмо.
> Идея Андрея хороша, но проходя последовательно по дереву от оконечных
> устройств ты никогда не получишь полное дерево, т.к. на практике в
> большой сети встречаются ситуации, когда есть пропуски. Т.е. соседние
> коммутаторы не видят друг-друга. Проходя последовательно у вас будет в
> этом месте затык. Проходя по всем связям по очереди, у вас просто
> построится несколько деревьев. Которые уже можно дособрать вручную...
>
дособирать вручную проблематично при огромном количестве хостов.
>> проблема в том, что корневым устройством может быть любое :)
>>
> Эм. Вам и нужно ЛЮБОЕ устройство. Оно требуется только для вычислений.
> К самой топологии сети оно может не иметь отношения, т.е. не являться
> реальным корнем дерева. Проще в качестве него выбрать устройство,
> которое видит максимальное количество адресов коммутаторов на
> максимальном количестве портов.
>
оно в итоге вычисляется само собой.
> Эм. Поясни, что ты именуешь как private и public в данной задачке...
>
легко. private - порт с единственным подключенным устройством.
public(null) - куча адресов на одном порту.
>> select switch,port,count(*) from mactable where status is null group by
>> switch,port;
>> даёт полный список количества устройств на портах up/downлинков.
>> запрос
>> select switch,port,count(*) from mactable where status is null and
>> macaddr not in (select macaddr from mactable where switch='10.6.204.21'
>> and status = 'private') group by switch,port;
>> убирает из этого списка порт с downlinkом.
>>
>
> Хм. Я тут структурами перла оперировал. Проще в памяти поработать, чем
> мускуль напрягать. ;-)
>
с перлом не совсем проще.
когда адресов 8 штук проще, когда 500 уже проблема. count считать
приходится таки и исключения.
> Порядок действий:
> - выбираем корневое устройство
> - получаем список: устройство-порт = список устройств на порту
> - отбрасываем те связки "устройство-порт" у которых в списке устройств
> присутствует корень.
> В итоге получили список даунлинков на связках "устройство-порт".
>
>
> Дальше начинаем строить связи:
> 3 - d9 (однозначная связь), записываем, выкидываем везде d9
>
> После прохода по всем однозначным связям получает картинка:
> 2.8: 3
> 2.1: 1
> Соответственно строим эти связи и все. Полностью все связи получены.
>
это всё понятно. логически и визуально задача решается за пару минут, а
когда скажем топология сети неизвестна и картинки нет ? плясать не от чего.
В данном мной примере всего 14 свичей, из них 4 по 24
порта(23,26,27,28), и 10 по 50 портов. Реально сейчас свичей 25 штук,
через неделю-две будет 29, потом прибавится 3 удалённых офиса и еще 6
свичей разных мастей :) и это не предел. просто я не стал сюда включать
глобальную конфигурацию. Иметь полную структурную схему нарисованную
руками получается просто нерационально, хоть она и есть, но она
устаревает очень быстро. Люди двигаются с места на место. Компы прыгают
со свича на свич.
Вотъ такие пироги.
Подробная информация о списке рассылки Moscow-pm