Мда.Задача очень не тривиальна.По сути как я понимаю&nbsp;нужно&nbsp;придумать&nbsp;алгоритм&nbsp;обхода&nbsp;&nbsp;ориентировано графа&nbsp;с&nbsp;повторами&nbsp;и&nbsp;пропусками.В&nbsp;понедельник&nbsp;пойду&nbsp;штурмовать&nbsp;математиков&nbsp;по&nbsp;дискретке&nbsp;пусть&nbsp;предложат<br> решение :) <br>
<br><div><span class="gmail_quote">24.11.07, <b class="gmail_sendername">Kaltashkin Eugene</b> &lt;<a href="mailto:zhecka@gmail.com">zhecka@gmail.com</a>&gt; написал(а):</span><blockquote class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-left: 1ex">
Александр Букреев пишет:<br>&gt;&gt; Идея Андрея была хороша. проверил её на деле, результаты уже есть.<br>&gt;&gt; Но с оговорками.<br>&gt;&gt;<br>&gt;<br>&gt; Какие получились оговорки?<br>&gt;<br>см. предыдущее письмо.
<br>&gt; Идея Андрея хороша, но проходя последовательно по дереву от оконечных<br>&gt; устройств ты никогда не получишь полное дерево, т.к. на практике в<br>&gt; большой сети встречаются ситуации, когда есть пропуски. Т.е
. соседние<br>&gt; коммутаторы не видят друг-друга. Проходя последовательно у вас будет в<br>&gt; этом месте затык. Проходя по всем связям по очереди, у вас просто<br>&gt; построится несколько деревьев. Которые уже можно дособрать вручную...
<br>&gt;<br>дособирать вручную проблематично при огромном количестве хостов.<br>&gt;&gt; проблема в том, что корневым устройством может быть любое :)<br>&gt;&gt;<br>&gt; Эм. Вам и нужно ЛЮБОЕ устройство. Оно требуется только для вычислений.
<br>&gt; К самой топологии сети оно может не иметь отношения, т.е. не являться<br>&gt; реальным корнем дерева. Проще в качестве него выбрать устройство,<br>&gt; которое видит максимальное количество адресов коммутаторов на
<br>&gt; максимальном количестве портов.<br>&gt;<br>оно в итоге вычисляется само собой.<br>&gt; Эм. Поясни, что ты именуешь как private и public в данной задачке...<br>&gt;<br>легко. private - порт с единственным подключенным устройством.
<br>public(null) - куча адресов на одном порту.<br>&gt;&gt; select switch,port,count(*) from mactable where status is null group by<br>&gt;&gt; switch,port;<br>&gt;&gt; даёт полный список количества устройств на портах up/downлинков.
<br>&gt;&gt; запрос<br>&gt;&gt; select switch,port,count(*) from mactable where status is null and<br>&gt;&gt; macaddr not in (select macaddr from mactable where switch=&#39;<a href="http://10.6.204.21">10.6.204.21</a>&#39;
<br>&gt;&gt; and status = &#39;private&#39;) group by switch,port;<br>&gt;&gt; убирает из этого списка порт с downlinkом.<br>&gt;&gt;<br>&gt;<br>&gt; Хм. Я тут структурами перла оперировал. Проще в памяти поработать, чем<br>
&gt; мускуль напрягать. ;-)<br>&gt;<br>с перлом не совсем проще.<br>когда адресов 8 штук проще, когда 500 уже проблема. count считать<br>приходится таки и исключения.<br><br>&gt; Порядок действий:<br>&gt; - выбираем корневое устройство
<br>&gt; - получаем список: устройство-порт = список устройств на порту<br>&gt; - отбрасываем те связки &quot;устройство-порт&quot; у которых в списке устройств<br>&gt; присутствует корень.<br>&gt; В итоге получили список даунлинков на связках &quot;устройство-порт&quot;.
<br>&gt;<br>&gt;<br>&gt; Дальше начинаем строить связи:<br>&gt; 3 - d9 (однозначная связь), записываем, выкидываем везде d9<br>&gt;<br>&gt; После прохода по всем однозначным связям получает картинка:<br>&gt; 2.8: 3<br>&gt; 
2.1: 1<br>&gt; Соответственно строим эти связи и все. Полностью все связи получены.<br>&gt;<br>это всё понятно. логически и визуально задача решается за пару минут, а<br>когда скажем топология сети неизвестна и картинки нет ? плясать не от чего.
<br>В данном мной примере всего 14 свичей, из них 4 по 24<br>порта(23,26,27,28), и 10 по 50 портов. Реально сейчас свичей 25 штук,<br>через неделю-две будет 29, потом прибавится 3 удалённых офиса и еще 6<br>свичей разных мастей :) и это не предел. просто я не стал сюда включать
<br>глобальную конфигурацию. Иметь полную структурную схему нарисованную<br>руками получается просто нерационально, хоть она и есть, но она<br>устаревает очень быстро. Люди двигаются с места на место. Компы прыгают<br>со свича на свич.
<br>Вотъ такие пироги.<br><br>______________________________________________________________________<br><a href="http://Moscow.pm">Moscow.pm</a> mailing list<br><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org">
http://moscow.pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/moscow-pm">http://mail.pm.org/mailman/listinfo/moscow-pm</a></blockquote></div><br>