Dlink Cable Tester
Кабельный тестер
В коммутаторы DES-3526 и DES-3550 (возможно DES-3028 и DES-3052) встроен кабельный тестер который позволяет определять (уточнить точность измерений) длинну кабеля.
Использование из CLI
Комманда не требует админских полномочий (повторяющиеся строки удалены):
DES3526:user#cable_diag ports 1-24 Command: cable_diag ports 1-24 Perform Cable Diagnostics ... Port Type Link Status Test Result Cable Length (M) ---- ------ ------------- ----------------------------- ---------------- 1 FE Link Down OK - 2 FE Link Down No Cable - ... 10 FE Link Down Pair1 Open at 22 M - Pair2 Open at 22 M 11 FE Link Down Pair1 Open at 25 M - Pair2 Open at 25 M 12 FE Link Down Pair1 Open at 88 M - Pair2 Open at 88 M 14 FE Link Up OK 40 15 FE Link Down Pair1 Open at 18 M - Pair2 Open at 18 M 16 FE Link Up OK 69 18 FE Link Down Pair1 Open at 4 M - Pair2 Open at 4 M 19 FE Link Up OK 34 20 FE Link Down OK - 21 FE Link Up OK 40 22 FE Link Down Pair1 Open at 29 M - Pair2 Open at 29 M 24 FE Link Down Pair1 Open at 22 M - Pair2 Open at 22 M
Возможные значения:
Pair Open - обрыв на растоянии ХХ метров.
Link Up, длинна ХХ метров.
Link Down, OK - нельзя измерить длинну кабеля (но нагрузка есть)
Link Down, No Cable - нет кабеля.
Использование с SNMP
Есть длинковские MIBы на ftp://dlink.ru, но более универсальый способ - использовать цифровую запись. (не нужно следить за наличием MIBов на всех точках откуда будет работать скрипт, проще интегрировать в NMS, и .д.)
Опсание OID-ов
1.3.6.1.4.1.171.12.58.1.1.1.2 - swEtherCableDiagPortType OBJECT-TYPE SYNTAX INTEGER { fastEthernet(0), gigaEthernet(1), other(2) }
Имеем, порты 1-24 поддерживают нужный функционал.
Проверить состояние линков:
1.3.6.1.4.1.171.12.58.1.1.1.3 - swEtherCableDiagLinkStatus OBJECT-TYPE SYNTAX INTEGER { link-down(0), link-up(1), other(2) }
Все OID с результатом имеют валидные значения только после выполнения теста.
Далее - OIDы для состояния пар
1.3.6.1.4.1.171.12.58.1.1.1.4 - cтатус первой пары 1.3.6.1.4.1.171.12.58.1.1.1.5 - cтатус второй пары 1.3.6.1.4.1.171.12.58.1.1.1.6 - cтатус третьей пары 1.3.6.1.4.1.171.12.58.1.1.1.7 - cтатус четвертой пары
Возможные значения:
ok(0), open(1), short(2), open-short(3), crosstalk(4), unknown(5), count(6), no-cable(7), other(8)
И, соответвенно, длины пар:
1.3.6.1.4.1.171.12.58.1.1.1.8 - длинна первой пары 1.3.6.1.4.1.171.12.58.1.1.1.11 - длинна четвертой пары
OID, предназначенный для запуска теста
1.3.6.1.4.1.171.12.58.1.1.1.12
Это единственный OID предназначенный как для чтения так и для записи.
action(1) processing(2) other(3)
Тестирование
Работа с кабельным тестером вцелом совершенно стандартна (что есть несомненный плюс)
Общий подход:
- Запустить тест (запись нужного значения в соответвующий OID
- Дождаться завершения (проверить стением OID со статусом)
- Считать интересующие значения.
Попробую проверить работу этой ф-и на портах с различными длинами и состоянием кабеля.
Линк есть, работающий абонент
DES3526:user#cable_diag ports 21 Command: cable_diag ports 21 Perform Cable Diagnostics ... Port Type Link Status Test Result Cable Length (M) ---- ------ ------------- ----------------------------- ---------------- 21 FE Link Up OK 40
Запустить тест:
Проверить что он завершился (cтатус != 2):
Проверить состояние линка (1 - есть линк)
Проверить состояние 1-й пары (0 - ОК)
Проверить состояние 2-й пары (0 - ОК)
Проверить состояние 3-й пары (8 - Нет кабеля, что естественно для 100-мбитного порта)
Проверить состояние 4-й пары (8 - Нет кабеля, что естественно для 100-мбитного порта)
Определить длинну 1-й пары (40 метров)
Определить длинну 2-й пары (40 метров, что логично, т.к. пары одинаковые)
Определить длинну 3-й пары (0 метров, фактически - не используется, не включена)
Определить длинну 4-й пары (0 метров, фактически - не используется, не включена)
Кабель не подключен
DES3526:user#cable_diag ports 2 Command: cable_diag ports 2 Perform Cable Diagnostics ... Port Type Link Status Test Result Cable Length (M) ---- ------ ------------- ----------------------------- ---------------- 2 FE Link Down No Cable -
Запустить тест, убедиться что при запросе ответе - "нет кабеля" (8)
Кабель есть, отключен
Подключаю 2-х метровый патч-корд к коммутатору (второй конец висит в воздухе):
3526-sirmax:user#cable_diag ports 2 Command: cable_diag ports 2 Perform Cable Diagnostics ... Port Type Link Status Test Result Cable Length (M) ---- ------ ------------- ----------------------------- ---------------- 2 FE Link Down Pair1 Open at 3 M - Pair2 Open at 2 M
Кабель имеет статус open:
"Обрыв" (в реальности - просто конец кабеля) на расстоянии 3 метра по одной и 2 метра по другой паре.
Насколько я могу судить, точности измерения вполне достаточня (плюс-минус метр).
Короткое на нескольких парах
Сделал тестовый кабель с "коротким" на первой и третьей парах.
Коммутатор показал правильные результаты для используемых пар:
3526-sirmax:user#cable_diag ports 3 Command: cable_diag ports 3 Perform Cable Diagnostics ... Port Type Link Status Test Result Cable Length (M) ---- ------ ------------- ----------------------------- ---------------- 3 FE Link Down Pair1 Short at 3 M - Pair2 Open at 3 M
При проверке через SNMP соответвующих OID результат такой же, останавливаться подробнее нет смысла.
ToDo
Проверить работу тестера на "полуживых" линках с потерями и очень длинных линках (более 150М).
Вывод
Отмечу несомненную полежность данного функционала, позволяющяя как локализовать проблему с кабелем, так и контролировать работу монтажных бригад. Аналогичный функционал заявлен и другими производителями коммутаторов (вероятно, завист от чипсета), однако нормальной реализации на данный момент я не видел, что на данный момент выгодно выделяет DES-3526(3550) среди конкурентов. Однако, ситуация вероятно измениться с обновлением ПО (Edge-Core обещает аналогичный функционал в ближайшее время)
Благодарности
Отдельное спасибо Ивану Демину (Длинк) за предоставленную информацию об OIDах.