faq обучение настройка
Текущее время: Сб авг 02, 2025 06:41

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: 3526: fdb via snmp broken
СообщениеДобавлено: Пт окт 14, 2005 21:40 
Не в сети

Зарегистрирован: Пт янв 30, 2004 20:23
Сообщений: 61
3526 при выдаче fdb таблицы по snmp выдает часть маков без порта с которого они видны.
Проверяется простейшим скриптом
Код:
    $sess = new SNMP::Session(  DestHost => $sw,
        Community => 'public',
        Version => 2,
        UseSprintValue => 1
    );

    $macs = $sess->gettable('dot1dTpFdbAddress');
    $ports = $sess->gettable('dot1dTpFdbPort');

    foreach $imac (keys %$macs) {
        $mac = $$macs{$imac}{'dot1dTpFdbAddress'};
                if( exists $$ports{$imac}{'dot1dTpFdbPort'} ) {
......


Так вот последний if для части маков не сработает, этикие бомжовые маки получаются. У меня сейчас два 3526 и с обоими такая проблема, тогда как с десятком 3226s все нормально.

Firmware: Build 3.05-B09

Больше 3526 покупать не будем, слишком много вопросов. Надеюсь 3226s с производства снимать не собираются (это было просто саботажем).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 18, 2005 14:28 
Не в сети

Зарегистрирован: Пт янв 30, 2004 20:23
Сообщений: 61
Господа.... Обратите внимание на данное сообщение, мне кажется что я нашел бааагу. Малый уровень мой уверенности не позволяет мне использовать официальные формы связи. Для обсуждения подобных вещей форум лучшее место.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: 3526: fdb via snmp broken
СообщениеДобавлено: Вт окт 18, 2005 14:54 
Не в сети

Зарегистрирован: Вс авг 17, 2003 12:18
Сообщений: 4387
Откуда: Moscow
hmepas писал(а):
3526 при выдаче fdb таблицы по snmp выдает часть маков без порта с которого они видны.
Проверяется простейшим скриптом
Код:
    $sess = new SNMP::Session(  DestHost => $sw,
        Community => 'public',
        Version => 2,
        UseSprintValue => 1
    );

    $macs = $sess->gettable('dot1dTpFdbAddress');
    $ports = $sess->gettable('dot1dTpFdbPort');

    foreach $imac (keys %$macs) {
        $mac = $$macs{$imac}{'dot1dTpFdbAddress'};
                if( exists $$ports{$imac}{'dot1dTpFdbPort'} ) {
......


Так вот последний if для части маков не сработает, этикие бомжовые маки получаются. У меня сейчас два 3526 и с обоими такая проблема, тогда как с десятком 3226s все нормально.

Firmware: Build 3.05-B09

Больше 3526 покупать не будем, слишком много вопросов. Надеюсь 3226s с производства снимать не собираются (это было просто саботажем).

а что значит - слишком много вопросов?
проблему более детально опишите по почте, пожалуйста.

_________________
С уважением, Карагезов Владислав


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: 3526: fdb via snmp broken
СообщениеДобавлено: Вт окт 18, 2005 15:22 
Не в сети

Зарегистрирован: Пт янв 30, 2004 20:23
Сообщений: 61
Vladislav Karagezov писал(а):
а что значит - слишком много вопросов?

Есть сеть построенная на 3226S (для своих денег просто шикарное устройство).
Взяли на пробу пару 3526, столкнулись с проблемой
http://www.dlink.ru/phorum/viewtopic.php?t=16323
в данном случае виной скорее мое недопонимание.

Под "слишком много вопросов" я не имел ввиду "свитч плохой", я имел ввиду "неудобен для перехода с 3226".

Vladislav Karagezov писал(а):
проблему более детально опишите по почте, пожалуйста.


Хорошо.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 18, 2005 16:31 
Не в сети

Зарегистрирован: Пт янв 30, 2004 20:23
Сообщений: 61
D-Link'и умеют отдавать свою fdb-таблицу по snmp параметрами
dot1dTpFdbAddress
dot1dTpFdbPort

1.3.6.1.2.1.17.4.3.<чего-то там> в численном эквиваленте

Пишем простенький скрипт для того чтобы брать FDB по snmp со свитча, готовый скрипт можно посмотреть тут:
http://www.hmepas.yauza.ru/snmp_get_fdb.pl
скачать архив со всеми нужными mib'ами можно по ссылке:
http://www.hmepas.yauza.ru/snmp_get_fdb.tar.gz

Далее смотрим:
Код:
# ifconfig eth0 | grep eth0
eth0      Link encap:Ethernet  HWaddr 00:14:38:50:C0:4C 


Есть два свитча оба висят на eth0 относительно машины с которой ведется лог.
Свитчи
172.19.0.10 -- Des3226S
172.19.0.25 -- Des3526S

Проверяем как работает наша утилита:
Код:
# ./snmp_get_fdb.pl 172.19.0.10 | grep 00:14:38:50:C0:4C
00:14:38:50:C0:4C 8
# ./snmp_get_fdb.pl 172.19.0.23 | grep 00:14:38:50:C0:4C
 Error: no port for 00:14:38:50:C0:4C

При этом данная ситуация воспроизводима для всех наших свитчей, у нас порядка десяти des3226S и все они выдают fdb правильно, тогда как оба купленных 3526 выдают Error.
Т.е. 3526 не для всех dot1dTpFdbAddress (МАК-адресов) выдает
dot1dTpFdbPort (номер порта). Если просто запустить утилиту (без grep) то в выводе будет очень много Error.
snmpwalk'ом продемонстрировать не могу, не наглядно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 21, 2005 09:25 
Не в сети

Зарегистрирован: Ср мар 16, 2005 20:17
Сообщений: 207
Откуда: Трехгорный
Там некоторое различие в запрашиваимых мибах и полусаемых ответах
которые ныдо предварительно устанавливать в зависимости от марки комутатора.
У меня на PHP определяет вот эта функция:

function in_name($ip) {
$mib="1.3.6.1.2.1.1.1";
$comunity="public";
$_snmp_command = "/usr/bin/snmpwalk -v 1 -c $comunity $ip $mib";
$up=in_Snmpwalk_New($_snmp_command);
$string_s=" STRING: ";
$up=explode($string_s, $up[0]);
$n=$up[1];
$name_d=ereg_replace (" Fast-Ethernet Switch", "", $n);
if($name_d == "DES-3226S"){
$s=2048;
$s1="48.1";
}elseif($name_d == "DES-3526"){
$s=5120;
$s1="64";
}
return array ($n,$s,$s1,$name_d);
}


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 01, 2005 17:13 
Не в сети

Зарегистрирован: Пт янв 30, 2004 20:23
Сообщений: 61
T_IgorWW писал(а):
Там некоторое различие в запрашиваимых мибах и полусаемых ответах
которые ныдо предварительно устанавливать в зависимости от марки комутатора.
У меня на PHP определяет вот эта функция:


Спасибо за ответ!
Модель каждого своего свитча я и так, заранее знаю. Не могли бы Вы скриптом проилюстрировать как дальше испльзуются возвращаемые $s и $s1? Я к сожалению не так хорошо разбирюсь в snmp, чтобы понять, что Вы имели ввиду.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 01, 2005 18:08 
Не в сети

Зарегистрирован: Вс авг 17, 2003 12:18
Сообщений: 4387
Откуда: Moscow
hmepas писал(а):
D-Link'и умеют отдавать свою fdb-таблицу по snmp параметрами
dot1dTpFdbAddress
dot1dTpFdbPort

1.3.6.1.2.1.17.4.3.<чего-то там> в численном эквиваленте

Пишем простенький скрипт для того чтобы брать FDB по snmp со свитча, готовый скрипт можно посмотреть тут:
http://www.hmepas.yauza.ru/snmp_get_fdb.pl
скачать архив со всеми нужными mib'ами можно по ссылке:
http://www.hmepas.yauza.ru/snmp_get_fdb.tar.gz

Далее смотрим:
Код:
# ifconfig eth0 | grep eth0
eth0      Link encap:Ethernet  HWaddr 00:14:38:50:C0:4C 


Есть два свитча оба висят на eth0 относительно машины с которой ведется лог.
Свитчи
172.19.0.10 -- Des3226S
172.19.0.25 -- Des3526S

Проверяем как работает наша утилита:
Код:
# ./snmp_get_fdb.pl 172.19.0.10 | grep 00:14:38:50:C0:4C
00:14:38:50:C0:4C 8
# ./snmp_get_fdb.pl 172.19.0.23 | grep 00:14:38:50:C0:4C
 Error: no port for 00:14:38:50:C0:4C

При этом данная ситуация воспроизводима для всех наших свитчей, у нас порядка десяти des3226S и все они выдают fdb правильно, тогда как оба купленных 3526 выдают Error.
Т.е. 3526 не для всех dot1dTpFdbAddress (МАК-адресов) выдает
dot1dTpFdbPort (номер порта). Если просто запустить утилиту (без grep) то в выводе будет очень много Error.
snmpwalk'ом продемонстрировать не могу, не наглядно.

попробуйте для DES-3526 новые MIB, соответсвующие FW 3.05b09, выложены на ftp

_________________
С уважением, Карагезов Владислав


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 01, 2005 18:35 
Не в сети

Зарегистрирован: Пт янв 30, 2004 20:23
Сообщений: 61
Vladislav Karagezov писал(а):
попробуйте для DES-3526 новые MIB, соответсвующие FW 3.05b09, выложены на ftp


Прошивку сразу такую поставил.
Код:
              DES-3526 Fast Ethernet Switch Command Line Interface

                            Firmware: Build 3.05-B09
          Copyright(C) 2000-2004 D-Link Corporation. All rights reserved.   


Новые MIB это какие? Попробовал те, что нашел на сайте:
Код:
lftp ftp.dlink.ru:/pub/Switch/DES-3526/SNMP/MIBs> ls
-rw-rw-r--    1 1022     106        274130 Oct 28 14:32 Mib305B05.rar   

результаты теже что и были.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 02, 2005 11:07 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт май 13, 2005 15:49
Сообщений: 20616
Откуда: D-Link, Moscow
Вы не могли бы точно сообщить сколько MAC-адресов у Вас, на каких портах, сколько не распознаются?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 02, 2005 16:49 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт май 13, 2005 15:49
Сообщений: 20616
Откуда: D-Link, Moscow
Ещё раз проверил считывание уже конкретной ветки - все порты распознаются


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 02, 2005 21:04 
Не в сети

Зарегистрирован: Ср мар 16, 2005 20:17
Сообщений: 207
Откуда: Трехгорный
Вот скрипт с помощью которого в характеристиках порта задаем максимальное кол-во допустимых обучаемых MAC-адресов:

function in_port_mac_max_learn_droplist($ip,$n_port,$ip_m,$s) {
$mib="1.3.6.1.4.1.171.11.".$s.".1.2.14.1.1.2.".$n_port;
$mib2="1.3.6.1.4.1.171.11.64.1.2.14.1.1.2.".$n_port;
$mib3="1.3.6.1.4.1.171.11.48.1.1.2.14.1.1.2.".$n_port;
$comunity="initial";
$st_array=array('0','1','2','3','4','5','6','7','8','9','10');
$_snmp_command = "/usr/bin/snmpwalk -v 1 -c $comunity $ip $mib";
$st=in_Snmpwalk_New($_snmp_command);
$string_s=" INTEGER: ";
$st=explode($string_s, $st[0]);
$b="<select name=\"m_mac_max_learn\" class=\"form_drop_urgent\" onchange='form.submit();'>";
$i=0;
while($i<count($st_array))
{
$selected="";
if ($i==$st[1]) $selected="selected";
$b.="<option value=\"".$i."\" ".$selected.">".$st_array[$i]."</option>";
$i++;
}
$b.="</select>";
return ($b);
}

$mib2 и $mib3 показывают различие между ветками мибов


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 02, 2005 21:19 
Не в сети

Зарегистрирован: Ср мар 16, 2005 20:17
Сообщений: 207
Откуда: Трехгорный
А этот скрипт работает в связке с первым т.е. принимает заданные параметры и устанавливает в коммутаторе эти параметры:

function in_port_mac_max_learn_adjust($ip,$n_port,$vol,$s) {
$mib="1.3.6.1.4.1.171.11.".$s.".1.2.14.1.1.2.".$n_port;
$comunity="initial";
$_snmp_command = "/usr/bin/snmpset -v 1 -c $comunity $ip $mib i $vol";
$r=@in_Snmpset($_snmp_command);
echo $_snmp_command."<br>";
return ($r);
}


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB