Что такое mac address table
Поиск по MAC-адресу на коммутаторах Juniper
В локальной сети часто нужно узнать, на каком порту коммутатора находится определенный MAC-адрес устройства. Задача решается легко, если в сети несколько коммутаторов, но, когда их больше 30, всё значительно усложняется. Хочу поделиться небольшим скриптом на Python, который ищет нужный MAC-адрес в сети и возвращает имя и порт коммутатора, на котором зарегистрирован этот MAC.
Конструктивная критика приветствуется. Подробности под катом.
Если дизайн сети выполнен правильно, то есть корневой коммутатор CORE, к которому подключены коммутаторы распределения DS (Distribution Switch), а к ним, в свою очередь, коммутаторы уровня доступа AS (Access Switch). Это правило не всегда выполняется, коммутаторы доступа могут быть подключены последовательно. В любом случае, на порту вышестоящего коммутатора находятся все MAC-адреса устройств, подключенных к нижестоящему коммутатору.
Например, если интересующее нас устройство подключено к коммутатору AS3, то, начав поиск с CORE, мы найдем этот адрес на порту, ведущему к DS1. Зайдя на DS1, мы обнаружим этот MAC на порту, ведущему к AS2, зайдя на AS2, мы увидим, что он ведет нас к AS3, и только на AS3 мы найдем конкретный порт, к которому подключено интересующее нас устройство.
Делать это всё руками не хотелось, перебирать все коммутаторы в цикле и определять, где аплинк, а где нет тоже, поэтому родилось следующее решение, которым и хочу поделиться.
Немного теории.
Чтобы найти MAC 08:62:66:c7:b3:45 на коммутаторе Juniper, нужно выполнить следующую команду:
Если такой MAC есть, ответ будет следующим:
В последней колонке будет имя интерфейса коммутатора, на котором зарегистрирован MAC. Но как понять, куда ведет этот интерфейс? И тут на помощь приходят Interface Descriptions. Это строки в конфигурационном файле коммутатора, которые позволяют назначить текстовые метки интерфейсам.
При конфигурации мы указываем, что этот интерфейс ведет к нижестоящему коммутатору:
Реализация
Предлагаемый скрипт будет делать следующее:
Таким образом, скрипт пройдет по всем коммутаторам сети, начиная с ядра, и попытается найти нужный MAC. Для успешной работы достаточно поддерживать в актуальном состоянии descriptions на интерфейсах, а топология может быть практически любой сложности.
Пример работы скрипта:
Если MAC отсутствует, получим
Последняя строка – интересующий нас коммутатор и порт, но при этом мы можем отследить весь путь поиска.
Полный код – под спойлером, благодарю за внимание.
10. Конфигурирование таблицы MAC-адресов
Возможны 2 операции с таблицей MAC-адресов:
1. Поиск MAC-адреса;
2. Пересылка или фильтрация кадра данных в соответствии с таблицей.
10.1.1. Получение таблицы MAC-адресов
Топология на Рисунке 28.1: 4 ПК подключены к коммутатору. ПК1 и ПК2 подключены из одного физического сегмента (домена коллизий) подключены к порту коммутатора Ethernet 1/0/5, а ПК3 и ПК4, также из одного физического сегмента, подключены к порту Ethernet 1/0/12.
Начальная таблица MAC-адресов не содержит записей. Рассмотрим пример обмена кадрами между ПК1 и ПК3 и процесс обучения MAC-адресов:
Когда ПК1 отправляет кадр к ПК3, MAC-адрес источника 00-01-11-11-11-11 из этого сообщения, а также порт коммутатора Ethernet 1/0/5 заносятся в MAC-таблицу;
В это же время коммутатор определяет, что сообщение предназначено для 00-01-33-33-33-33, а поскольку MAC-таблица содержит только запись соответствия MAC-адреса 00-01-11-11-11-11 и порта Ethernet 1/0/5, коммутатор передает это сообщение всем портам коммутатора (при условии, что все порты принадлежат VLAN 1 по-умолчанию);
ПК3 и ПК4, подключенные к порту Ethernet 1/0/12, получают кадр, отправленный ПК1, но так как MAC-адрес назначения 00-01-33-33-33-33, ПК4 не отвечает, только ПК3 отвечает ПК1. Когда порт Ethernet 1/0/12 принимает кадр от ПК3, в таблице MAC-адресов создается запись соответствия адреса 00-01-33-33-33-33 порту Ethernet 1/0/12.
После обмена кадрами между ПК1 и ПК3, коммутатор больше не получает кадры от ПК1 и ПК3. Поэтому записи соответствия MAC-адресов в MAC-таблице удаляются через 300 или 600 секунд (простое или двойне время жизни). По-умолчанию выбрано время жизни в 300 секунд, но оно может быть изменено на коммутаторе.
10.1.2. Пересылка или фильтрация
Коммутатор может переслать или отфильтровать принятые кадры данных в соответствии с таблицей MAC-адресов. Рассмотрим пример на рисунке 28.1: допустим, что коммутатор изучил MAC-адреса ПК1 и ПК3, а пользователь вручную добавил соответствия для MAC-адресов ПК2 и ПК4. Таблица MAC-адресов будет выглядеть следующим образом:
MAC-адрес
Номер порта
Способ добавления
Пересылка данных в соответствии с таблицей MAC-адресов:
Если ПК 1 отправит кадр к ПК 3, коммутатор пересылает принятый кадр данных с порта 1/0/5 в порт 1/0/12.
Коммутатором могут пересылаться 3 типа кадров:
Широковещательные. Коммутатор может определять коллизии в домене, но не в широковещательном. Если VLAN не определена, все устройства, подключенные к коммутатору, находятся в одном широковещательном домене. Когда коммутатор получает широковещательный кадр, он передает кадр во все порты. Если на коммутаторе настроены VLAN, таблица MAC-адресов соответствующим образом адаптирована для добавления информации о VLAN и широковещательные кадры будут пересылаться только в те порты, в которых настроена данная VLAN.
Многоадресные. Если многоадресный домен неизвестен, коммутатор пересылает многоадресный кадр как широковещательный. Если на коммутаторе включен IGMP-snooping и сконфигурирована многоадресная группа, коммутатор будет пересылать многоадресный кадр только портам этой группы.
Одноадресные. Если на коммутаторе не настроена VLAN, коммутатор ищет MAC-адрес назначения в таблице MAC-адресов и отправляет кадр на соответствующий порт. Если соответствие MAC-адреса и порта не найдено в таблице MAC-адресов, коммутатор пересылает одноадресный кадр как широковещательный. Если на коммутаторе настроен VLAN, коммутатор пересылает кадр только в этом VLAN. Если в таблице MAС-адресов найдено соответствие для VLAN, отличного от того, в котором был принят кадр, коммутатор пересылает кадр широковещательно в том VLAN, в котором кадр был принят.
10.2. Конфигурация таблицы MAC-адресов.
Настройка времени жизни MAC-адреса
Настройка статической пересылки и фильтрации
Очистка таблицы MAС-адресов
Обучение таблицы MAС-адресов через CPU
Настройка времени жизни MAC-адреса
Команда
Описание
no mac-address-table aging-time
! В режиме глобальной конфигурации
Настройка времени жизни MAC-адреса
Применение настроек по-умолчанию
2. Настройка статической пересылки и фильтрации
Команда
Описание
mac-address-table
no mac-address-table
! В режиме глобальной конфигурации
Настройка статических записей и фильтрации
Удаление статических записей и фильтрации
l2-address-table static-multicast address < | >vlan no l2-address-table static-multicast address < | >vlan ! В режиме глобальной конфигурации Настройка статической записи Многоадресного MAC-адреса Удаление статической записи Многоадресного MAC-адреса 3. Очистка таблицы MAС-адресов Команда Описание clear mac-address-table dynamic [address ] [vlan ] [interface [ethernet | portchannel] ] ! В режиме глобальной конфигурации Очистка динамических записей в таблице MAC-адресов. 4. Обучение таблицы MAС-адресов через CPU Команда Описание no mac-address-learning cpu-control ! В режиме глобальной конфигурации Включение функции обучения MAC-адресов через CPU. Отключение функции обучения MAC-адресов через CPU. ! В привилегированном режиме Отображение коллизий в таблице MAC-адресов ! В режиме глобальной конфигурации Очистка коллизий в таблице MAC-адресов 1. Настроить MAC-адрес как фильтруемый: 2. Настроить статические соответствия ПК 2 и ПК 3 портам 1/0/7 и 1/0/9 Если с помощью команды ‘show mac-address-table’ обнаруживается, что коммутатор не смог создать динамическое соответствие между MAC-адресом и портом, возможные причины: Подключенный кабель поврежден; На порту включен Spanning Tree и порт находится в состоянии “discarding” или устройство только что подключено к порту, а Spanning Tree находится в состоянии вычисления дерева; В остальных случаях проверьте порт коммутатора и обратитесь в техническую поддержку для решения проблемы Данная функция позволяет уведомлять администратора об изменениях в таблице MAC-адресов с помощью SNMP trap. Включение SNMP-функции уведомления об изменениях в MAC-таблице глобально Включение уведомления об изменениях в MAC-таблице глобально Настройка интервала отправки уведомления об изменениях в MAC-таблице Настройка размера истории таблицы Настройка типа события для отправки SNMP-trap Просмотр конфигурации и данных Включение SNMP-функции уведомления об изменениях в MAC-таблице глобально Команда Описание snmp-server enable traps mac-notification no snmp-server enable traps mac-notification ! В режиме глобальной конфигурации Включение SNMP-функции уведомления об изменениях в MAC-таблице Выключение SNMP-функции уведомления об изменениях в MAC-таблице 2. Включение уведомления об изменениях в MAC-таблице глобально Команда Описание no mac-address-table notification ! В режиме глобальной конфигурации Включение уведомления об изменениях в MAC-таблице Выключение уведомления об изменениях в MAC-таблице 3. Настройка интервала отправки уведомления об изменениях в MAC-таблице Команда Описание mac-address-table notification interval no mac-address-table notification interval ! В режиме глобальной конфигурации Настройка интервала отправки уведомления об изменениях в MAC-таблице Возврат значений по-умолчанию (30 секунд) 4. Настройка размера истории таблицы Команда Описание mac-address-table notification history-size no mac-address-table notification history-size ! В режиме глобальной конфигурации Настройка размера истории таблицы Возврат значений по-умолчанию (10 записей) 5. Настройка типа события для отправки SNMP-trap Команда Описание ! В режиме конфигурации порта Выбор типа события для отправки SNMP-trap Выключение отправки по событию с данного интерфейса 6. Просмотр конфигурации и данных Команда Описание show mac-notification summary ! В привилегированном режиме Просмотр конфигурации и данных 7. Очистка статистики Команда Описание clear mac-notification statistics ! В привилегированном режиме cisco-01-TEST#sh ver ROM: Bootstrap program is C3750 boot loader cisco-01-TEST uptime is 4 weeks, 5 days, 1 hour, 11 minutes This product contains cryptographic features and is subject to United A summary of U.S. laws governing Cisco cryptographic products may be found at: If you require further assistance please contact us by sending email to cisco WS-C3750G-16TD (PowerPC405) processor (revision F0) with 118784K/12280K bytes of memory. 512K bytes of flash-simulated non-volatile configuration memory. Switch Ports Model SW Version SW Image Configuration register is 0xF cisco-01-TEST#show mac address-table count Total Mac Address Space Available: 5507 interface GigabitEthernet1/0/1 cisco-01-TEST#show mac address-table count Mac Entries for Vlan 20: Total Mac Address Space Available: 5496 cisco-01-TEST#sh mac- vl 20 cisco-01-TEST#show mac address-table count Mac Entries for Vlan 20: Total Mac Address Space Available: 1219 cisco-01-TEST#show mac address-table count Mac Entries for Vlan 20: Total Mac Address Space Available: 192 Mac Entries for Vlan 20: Total Mac Address Space Available: 3 cisco-01-TEST#show mac address-table count Рандомный тест: Mac Entries for Vlan 20: Total Mac Address Space Available: 1499 cisco-01-TEST#sh mac address-table count Mac Entries for Vlan 20: Total Mac Address Space Available: 1 Итог zyxel-01-T# show version zyxel-01-T# show system-information Итог DGS-3426:admin#show tech_support Boot Time: 31 Dec 1999 23:59:59 DGS-3426:admin#show fdb vlan TEST VID VLAN Name MAC Address Port Type DGS-3426:admin#show fdb vlan TEST VID VLAN Name MAC Address Port Type Итог x10-00002# show version report Итог Если ваша сеть построена таким образом, что домен L2 включает множество устройств, то можно ждать беды. Странным оказалось то, что самый весомый вендор показал худшие результаты. Отсюда мораль — доверяй только собственным глазам и тесту, а не маркетинговым заявлениям с мелким шрифтом в сноске. Коммутатор создает таблицу MAC-адресов динамически, проверяя MAC-адрес источника в кадрах, принимаемых портом. Он пересылает кадры на основе совпадения между MAC-адресом назначения в кадре и записью в таблице MAC-адресов. При каждом поступлении кадра Ethernet в коммутатор выполняется следующий процесс. Получение информации: проверка MAC-адреса источника Рисунок 1 — Получение информации: проверка MAC-адреса источника. При каждом поступлении кадра в коммутатор выполняется проверка на наличие новой информации. Проверяются MAC-адрес источника, указанный в кадре, и номер порта, по которому кадр поступает в коммутатор. Примечание: Если MAC-адрес источника указан в таблице, но с другим портом, коммутатор считает эту запись новой. Запись заменяется на тот же MAC-адрес, но с более актуальным номером порта. Пересылка: проверка MAC-адреса назначения Рисунок 2 — Пересылка: проверка MAC-адреса назначения. Если MAC-адрес назначения является индивидуальным адресом, коммутатор ищет совпадение между MAC-адресом назначения в кадре и записью в таблице MAC-адресов. Примечание: Если MAC-адрес назначения является широковещательным или групповым адресом, коммутатор также пересылает кадр через все порты, кроме входящего порта. Источник: Академия Cisco. Чтобы подсчитать количество подсетей, которые могут быть созданы на основании заимствованных бит, используют специальную формулу. Подсеть может заимствовать биты из любой позиции бит в узловой части для создания других масок. Рассмотрим следующий пример, чтобы понять как использовать границы октетов для разделения на подсети. Допустим, предприятие выбрало частный адрес 10.0.0.0/8 в качестве адреса внутренней сети. Этот сетевой адрес может связать 16 777 214 узлов в один широковещательный домен. Однако это не лучший вар Каждый интерфейс маршрутизатора подключается к одной сети. IP-адрес и маска подсети, настроенные на интерфейсе маршрутизатора, идентифицируют определенный широковещательный домен. Разделение на подсети снижает общий объем сетевого трафика и повышает производительность сети. Кроме того, это дает возможность администраторам применять меры безопасности. Крупный широковещательный домен представляет собой сеть, соединяющую множество узлов. Проблема крупного широковещательного домена заключается в следующем: узлы могут генерировать избыточную рассылку и негативно влиять на работу сети.10.3. Пример конфигурации таблицы MAC-адресов
10.4. Решение проблем при конфигурации таблицы MAC-адресов
10.5. Уведомления об изменениях в MAC-таблице
10.5.1. Настройка уведомлений об изменениях в MAC-таблице
10.5.2. Пример настройки уведомлений об изменениях в MAC-таблице
Про MAC-таблицы в коммутаторах
Привет, Хабр!
Случается так, что иногда хочется отойти от скупой теории и перейти к практике. Сейчас как раз такой случай. Желание возникло на фоне воспоминаний того, как мы делали коммутатор. Он — вещь довольно простая, делов-то — пересылай пакеты с порта на порт, да статистику веди. Все оказалось немного сложнее.cisco 3750G-16TD-S
Cisco IOS Software, C3750 Software (C3750-ADVIPSERVICESK9-M), Version 12.2(46)SE, RELEASE SOFTWARE (fc2)
Copyright 1986-2008 by Cisco Systems, Inc.
Compiled Thu 21-Aug-08 15:43 by nachen
Image text-base: 0x00003000, data-base: 0x01940000
BOOTLDR: C3750 Boot Loader (C3750-HBOOT-M) Version 12.2(18)SE1, RELEASE SOFTWARE (fc2)
System returned to ROM by power-on
System image file is «flash:c3750-advipservicesk9-mz.122-46.SE»
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.
www.cisco.com/wwl/export/crypto/tool/stqrg.html
export@cisco.com.
Processor board ID CSG0921P0EB
Last reset from power-on
1 Virtual Ethernet interface
16 Gigabit Ethernet interfaces
1 Ten Gigabit Ethernet interface
The password-recovery mechanism is enabled.
Base ethernet MAC Address: 00:14:1C:D7:33:80
Motherboard assembly number: 73-9143-08
Power supply part number: 341-0045-01
Motherboard serial number: CAT091916AM
Power supply serial number: LIT09130942
Model revision number: F0
Motherboard revision number: A0
Model number: WS-C3750G-16TD-S
System serial number: CSG0921P0EB
Top Assembly Part Number: 800-24591-04
Top Assembly Revision Number: A0
CLEI Code Number: COM1D10ARB
Hardware Board Revision Number: 0x01
— — — — —
* 1 17 WS-C3750G-16TD 12.2(46)SE C3750-ADVIPSERVICESK9-M
switchport access vlan 20
switchport mode access
end
— Dynamic Address Count: 11
Static Address Count: 0
Total Mac Addresses: 11
Mac Address Table
— Vlan Mac Address Type Ports
— — — — 20 0001.0203.0001 DYNAMIC Gi1/0/1
20 0001.0203.0002 DYNAMIC Gi1/0/1
20 0001.0203.0003 DYNAMIC Gi1/0/1
20 0001.0203.0004 DYNAMIC Gi1/0/1
20 0001.0203.0005 DYNAMIC Gi1/0/1
20 0001.0203.0006 DYNAMIC Gi1/0/1
20 0001.0203.0007 DYNAMIC Gi1/0/1
20 0001.0203.0008 DYNAMIC Gi1/0/1
20 0001.0203.0009 DYNAMIC Gi1/0/1
20 0001.0203.000a DYNAMIC Gi1/0/1
20 50af.7312.8435 DYNAMIC Gi1/0/1
— Dynamic Address Count: 4281
Static Address Count: 0
Total Mac Addresses: 4281
— Dynamic Address Count: 5724
Static Address Count: 0
Total Mac Addresses: 5724
— Dynamic Address Count: 5945
Static Address Count: 0
Total Mac Addresses: 5945
cisco-01-TEST#sh mac address-table count
— Dynamic Address Count: 4417
Static Address Count: 0
Total Mac Addresses: 4417
— Dynamic Address Count: 5947
Static Address Count: 0
Total Mac Addresses: 5947
Получается, что заявленная производителем характеристика не соответствует действительности (если я не прав, например влияет IOS и для него есть особые заметки, дайте знать с пруфом). Разница почти в два раза. Даже если опираться на сведения, выводимые самой системой (5507), то им тоже не стоит верить: в быстром режиме таблица недозаполнилась на 1219 адресов, а в медленном постоянно перестраивалась и показания суммарного счетчика менялись, от режима генерации (последовательно/случайно) не зависит.ZyXEL GS-3012F
Current ZyNOS version: V3.80(LR.2) | 03/04/2008
System Name: zyxel-01-TEST
System Contact:
System Location:
Ethernet Address: 00:19:cb:2d:d8:49
ZyNOS F/W Version: V3.80(LR.2) | 03/04/2008
RomRasSize: 3234952
System up Time: 837:37:39 (11f939d5 ticks)
Bootbase Version: V3.00 | 01/14/2005
ZyNOS CODE: RAS Mar 4 2008 11:51:18
Product Model: GS-3012F
В целом, хорошие результаты. Коммутатор не “теряет” адреса, генерируемые на скорости порта. Размер таблицы и ее заполнение соответствует заявленному.D-Link DGS-3426
Command: show tech_support
RTC Time: 2000/01/01 00:07:51
Boot PROM Version: Build 1.00-B13
Firmware Version: Build 2.70.B56
Hardware Version: 2A1
MAC Address: 00-17-9A-10-CD-AA
[STACKING 2000-1-1 00:07:51]
Command: show fdb vlan TEST
— — — — — 20 TEST 00-01-02-03-00-01 1 Dynamic
20 TEST 00-01-02-03-00-02 1 Dynamic
20 TEST 00-01-02-03-00-03 1 Dynamic
20 TEST 00-01-02-03-00-04 1 Dynamic
20 TEST 00-01-02-03-00-05 1 Dynamic
20 TEST 00-01-02-03-00-06 1 Dynamic
20 TEST 00-01-02-03-00-07 1 Dynamic
20 TEST 00-01-02-03-00-08 1 Dynamic
20 TEST 00-01-02-03-00-09 1 Dynamic
20 TEST 00-01-02-03-00-0A 1 Dynamic
20 TEST 00-01-02-03-00-0B 1 Dynamic
20 TEST 00-01-02-03-00-0C 1 Dynamic
20 TEST 00-01-02-03-00-0D 1 Dynamic
Command: show fdb vlan TEST
— — — — — 20 TEST 00-00-01-33-82-27 1 Dynamic
20 TEST 00-00-03-43-5A-66 1 Dynamic
20 TEST 00-00-03-66-C4-5D 1 Dynamic
20 TEST 00-00-05-32-86-B1 1 Dynamic
20 TEST 00-00-07-6D-3A-40 1 Dynamic
20 TEST 00-00-0A-0F-E0-AE 1 Dynamic
20 TEST 00-00-22-3A-81-2B 1 Dynamic
20 TEST 00-00-24-68-E9-70 1 Dynamic
20 TEST 00-00-35-00-B0-93 1 Dynamic
20 TEST 00-00-3F-04-BE-95 1 Dynamic
20 TEST 00-00-43-01-A4-A4 1 Dynamic
20 TEST 00-00-71-27-41-8A 1 Dynamic
20 TEST 00-00-92-3C-2A-5A 1 Dynamic
20 TEST 00-00-92-5B-94-62 1 Dynamic
20 TEST 00-00-95-26-49-3D 1 Dynamic
20 TEST 00-00-9F-2E-45-DF 1 Dynamic
20 TEST 00-00-9F-6D-BE-1E 1 Dynamic
20 TEST 00-00-A7-75-72-4F 1 Dynamic
20 TEST 00-00-A9-17-38-DD 1 Dynamic
20 TEST 00-00-AF-5A-8C-54 1 Dynamic
У этого коммутатора тоже все в порядке. Таблица заполняется как заявлено, на случайных данных показатели незначительно хуже. А в качестве “фишки” таблица маков при просмотре сортируется (возможно потому, что никакого строкового процессора нет, например как у cisco).Metrotek X10-24
Origin: Metrotek
Label: Metrotek
Codename: oxygen
Version: 1.0.1
Date: Wed, 4 Mar 2015 11:04:37 UTC
Architectures: armel i386
Components: contrib non-free
Description: Metrotek X10-24 Gigabit Ethernet Switch
Для инкрементарных адресов таблица полностью соответствует заявленной, а вот для случайных показатели ухудшаются, хотя и лежат в довольно близком к заявленному диапазоне.Вывод
Я был так удивлен положением вещей, что решил об этом написать. Если есть возможность провести такой же тест, то прошу опубликовать результаты в комментариях.Что такое mac address table
Разделение IPv4-сети на подсети. Формулы разделения на подсети. CCNA Routing and Switching.
Разделение IPv4-сети на подсети. Разделение IPv4-сети на подсети. CCNA Routing and Switching.
Разделение IPv4-сети на подсети. Разделение на подсети на границе октетов. CCNA Routing and Switching.
Разделение IPv4-сети на подсети. Границы октетов. CCNA Routing and Switching.
Сегментация сети. Причины для разделения на подсети. CCNA Routing and Switching.
Сегментация сети. Проблемы с крупными широковещательными доменами. CCNA Routing and Switching.