Как узнать mac адрес в Linux
Иногда бывает необходимо узнать mac адрес сетевой карты. В этом нет ничего сложного! Даже если вы используете Linux.
Для того, чтобы узнать mac адрес в Linux, вам необходимо выполнить несколько простых действий:
Первый способ:
- Откройте Терминал.
- В командной строке выполните следующую команду (если вы работаете под учетной записью root, слово sudo набирать не надо и вам следует также пропустить действия пункта 2):
- Введите пароль суперпользователя.

В моем примере я отметил mac адрес сетевого интерфейса eth0:
Второй способ (добавлено stalker209):
В Терминале выполнить команду: sudo dmesg | grep eth0
Как видим, узнать mac адрес в Linux очень просто!
Остались вопросы?
Если у Вас что-то не получилось или остались вопросы по данной проблеме — обратитесь к автору и он Вам поможет.
Станьте одним из экспертов!
Мы будем рады видеть в своих рядах людей, которые могут поделиться своим опытом с другими!
Linux (любые дистрибутивы), MS Windows, Cisco, Python и многое другое.
Более чем 20-летний опыт в IT позволяет мне давать Вам мудрые советы.
Сетевой адаптер Microsoft Azure (MANA) и DPDK в Linux
Сетевой адаптер Microsoft Azure (MANA) — это новое оборудование для виртуальных машин Azure, которое обеспечивает более высокую пропускную способность и надежность. Чтобы использовать MANA, пользователи должны изменить процедуры инициализации DPDK. MANA требует двух изменений по сравнению с устаревшим оборудованием:
- Аргументы MANA EAL для драйвера режима опроса (PMD) отличаются от предыдущего оборудования.
- Ядро Linux должно освободить управление сетевыми интерфейсами MANA до начала инициализации DPDK.
Процедура установки ДЛЯ MANA DPDK описана в примере кода.
Введение
Устаревшие виртуальные машины Linux Azure используют драйверы mlx4 или mlx5 и соответствующее оборудование для ускорения сети. Пользователи Azure DPDK выбирают определенные интерфейсы для включения или исключения путем передачи адресов шины в DPDK EAL. Процедура настройки ДЛЯ MANA DPDK немного отличается, так как предположение об одном адресе шины для каждого интерфейса ускоренной сети больше не является верным. Вместо того чтобы использовать адрес шины PCI, PMD MANA использует MAC-адрес, чтобы определить, к какому интерфейсу она должна привязаться.
Аргументы EAL МАНА DPDK
MANA PMD проверяет все устройства и порты в системе, если аргумент отсутствует —vdev . —vdev Аргумент не является обязательным. В средах тестирования часто желательно оставить один (основной) интерфейс для обслуживания SSH-подключения к виртуальной машине. Чтобы использовать DPDK с подмножеством доступных виртуальных машин, пользователи должны передать адрес шины устройства MANA и MAC-адрес интерфейсов в аргументе —vdev . Дополнительные сведения см. в примере кода для демонстрации инициализации DPDK EAL в MANA.
Общие сведения о слое абстракции среды DPDK (EAL):
- Аргументы DPDK EAL для Linux
- Обзор DPDK EAL
Требования DPDK для MANA
Для использования DPDK на оборудовании MANA требуется ядро Linux версии 6.2 или более поздней версии или задний порт драйверов Ethernet и InfiniBand из ядра Linux последней версии. Для этого также требуются определенные версии DPDK и драйверов пользовательского пространства.
ДЛЯ MANA DPDK требуется следующий набор драйверов:
- Драйвер Ethernet ядра Linux (ядро 5.15 и более поздние версии)
- Драйвер InfiniBand ядра Linux (ядро 6.2 и более поздние версии)
- Драйвер DPDK MANA в режиме опроса (DPDK 22.11 и более поздние версии)
- Драйверы пространства пользователя Libmana (rdma-core версии 44 и более поздних версий)
MANA DPDK недоступен для Windows; он будет работать только на виртуальных машинах Linux.
Пример. Проверка на наличие MANA
В этой статье предполагается, что в системе установлен пакет pciutils, содержащий команду lspci.
# check for pci devices with ID: # vendor: Microsoft Corporation (1414) # class: Ethernet Controller (0200) # device: Microsft Azure Network Adapter VF (00ba) if [[ -n `lspci -d 1414:00ba:0200` ]]; then echo "MANA device is available." else echo "MANA was not detected." fi
Пример: установка DPDK (Ubuntu 22.04)
В этой статье предполагается, что в системе установлены совместимые ядра и rdma-core.
DEBIAN_FRONTEND=noninteractive sudo apt-get install -q -y build-essential libudev-dev libnl-3-dev libnl-route-3-dev ninja-build libssl-dev libelf-dev python3-pip meson libnuma-dev pip3 install pyelftools # Try latest LTS DPDK, example uses DPDK tag v23.07-rc3 git clone https://github.com/DPDK/dpdk.git -b v23.07-rc3 --depth 1 pushd dpdk meson build cd build ninja sudo ninja install popd
Пример: настройка Testpmd и тест netvsc
Обратите внимание на следующий пример кода для запуска DPDK с MANA. Для максимальной производительности с помощью MANA рекомендуется использовать конфигурацию «netvsc» напрямую в vf в Azure.
ДЛЯ DPDK требуется включить огромные страницы объемом 2 МБ или 1 ГБ.
# Enable 2MB hugepages. echo 1024 | tee /sys/devices/system/node/node*/hugepages/hugepages-2048kB/nr_hugepages # Assuming use of eth1 for DPDK in this demo PRIMARY="eth1" # $ ip -br link show master eth1 # > enP30832p0s0 UP f0:0d:3a:ec:b4:0a '`" # Get mac address for MANA interface (should match primary) MANA_MAC="`ip -br link show master $PRIMARY | awk '< print $3 >'`" # $ ethtool -i enP30832p0s0 | grep bus-info # > bus-info: 7870:00:00.0 # get MANA device bus info to pass to DPDK BUS_INFO="`ethtool -i $SECONDARY | grep bus-info | awk '< print $2 >'`" # Set MANA interfaces DOWN before starting DPDK ip link set $PRIMARY down ip link set $SECONDARY down ## Move synthetic channel to user mode and allow it to be used by NETVSC PMD in DPDK DEV_UUID=$(basename $(readlink /sys/class/net/$PRIMARY/device)) NET_UUID="f8615163-df3e-46c5-913f-f2d2f965ed0e" modprobe uio_hv_generic echo $NET_UUID > /sys/bus/vmbus/drivers/uio_hv_generic/new_id echo $DEV_UUID > /sys/bus/vmbus/drivers/hv_netvsc/unbind echo $DEV_UUID > /sys/bus/vmbus/drivers/uio_hv_generic/bind # MANA single queue test dpdk-testpmd -l 1-3 --vdev="$BUS_INFO,mac=$MANA_MAC" -- --forward-mode=txonly --auto-start --txd=128 --rxd=128 --stats 2 # MANA multiple queue test (example assumes > 9 cores) dpdk-testpmd -l 1-9 --vdev="$BUS_INFO,mac=$MANA_MAC" -- --forward-mode=txonly --auto-start --nb-cores=8 --txd=128 --rxd=128 --txq=8 --rxq=8 --stats 2
Устранение неполадок
Не удается настроить интерфейс.
Если устройство, привязанное к MANA, не удается установить значение DOWN, это может привести к низкой или нулевой пропускной способности пакетов. Сбой при освобождении устройства может привести к сообщению об ошибке EAL, связанному с очередями передачи.
mana_start_tx_queues(): Failed to create qp queue index 0 mana_dev_start(): failed to start tx queues -19
Сбой включения огромных страниц.
Попробуйте включить огромные страницы и убедиться, что информация отображается в meminfo.
EAL: No free 2048 kB hugepages reported on node 0 EAL: FATAL: Cannot get hugepage information. EAL: Cannot get hugepage information. EAL: Error - exiting with code: 1 Cause: Cannot init EAL: Permission denied
Низкая пропускная способность при использовании —vdev=»net_vdev_netvsc0,iface=eth1″
Настройка отработки отказа драйверов net_failsafe или net_vdev_netvsc poll-mode не рекомендуется для высокой производительности в Azure. Конфигурация netvsc с DPDK версии 20.11 или более поздней может дать лучшие результаты. Для обеспечения оптимальной производительности убедитесь, что пакеты ядра Linux, rdma-core и DPDK соответствуют перечисленным требованиям для DPDK и MANA.
Настройка DPDK в виртуальной машине Linux
Набор Data Plane Development Kit (DPDK) в Azure предоставляет более быструю платформу пакетной обработки в пользовательском пространстве для высокопроизводительных приложений. Эта платформа обходит сетевой стек ядра виртуальной машины.
В типичной обработке пакетов с использованием сетевого стека ядра применяется процесс на основе прерываний. Когда сетевой интерфейс получает входящие пакеты, происходит прерывание ядра для обработки пакета и переключение контекста из пространства ядра в пользовательское пространство. DPDK устраняет переключение контекста и метод взаимодействия на основе прерываний в пользу реализации в пользовательском пространстве с использованием драйверов режима опроса (PMD) для быстрой обработки пакетов.
DPDK состоит из наборов пользовательских библиотек, которые предоставляют доступ к ресурсам нижнего уровня. Эти ресурсы могут включать оборудование, логические ядра, управление памятью и драйверы режима опроса для сетевых карт.
DPDK может работать на виртуальных машинах Azure, поддерживающих несколько дистрибутивов операционной системы. Ключевое отличие DPDK с точки зрения производительности — реализация виртуализации сетевых функций. Эти реализации могут принять форму сетевых виртуальных модулей (NVA), таких как виртуальный маршрутизатор, брандмауэр, VPN, подсистема балансировки нагрузки, развитое пакетное ядро и приложения типа «отказ в обслуживании» (DDoS).
Список инструкций по настройке DPDK на виртуальных машинах MANA доступен здесь: Сетевой адаптер Microsoft Azure (MANA) и DPDK на Linux.
Преимущество
Большее количество пакетов в секунду (PPS) . Обход ядра и управление пакетами в пространстве пользователя уменьшают количество циклов за счет исключения переключения контекста. Благодаря этому также повышается скорость обработки пакетов в секунду на виртуальных машинах Linux в Azure.
Поддерживаемые операционные системы — минимальные версии
Поддерживаются следующие дистрибутивы из Azure Marketplace:
| ОС Linux | Версия ядра |
|---|---|
| Ubuntu 18.04 | 4.15.0-1014-azure+ |
| SLES 15 SP1 | 4.12.14-8.19-azure и более поздние |
| RHEL 7.5 | 3.10.0-862.11.6.el7.x86_64+ |
| CentOS 7.5 | 3.10.0-862.11.6.el7.x86_64+ |
| Debian 10 | 4.19.0-1-cloud+ |
Указанные версии являются минимальными. Более новые версии тоже поддерживаются.
Список требований к DPDK на виртуальных машинах MANA доступен здесь: Сетевой адаптер Microsoft Azure (MANA) и DPDK на Linux.
Поддержка настраиваемого ядра
Любую версию ядра Linux, не указанную в списке, можно найти в репозитории GitHub. Чтобы получить дополнительные сведения, обратитесь по адресу aznetdpdk@microsoft.com.
Поддержка регионов
Все регионы Azure поддерживают DPDK.
Предварительные требования
На виртуальной машине Linux необходимо включить ускоренную работу в сети. Виртуальная машина должна иметь по крайней мере два сетевых интерфейса с одним интерфейсом для управления. Не рекомендуется включать ускорение сети в интерфейсе управления. Сведения о создании виртуальной машины Linux с ускоренной сетью см. в этой статье.
Кроме того, DPDK использует команды RDMA для создания очередей данных на сетевом адаптере. Убедитесь, что на виртуальной машине загружены правильные драйверы ядра RDMA. Они могут быть mlx4_ib, mlx5_ib или mana_ib в зависимости от размера виртуальной машины.
Установка DPDK вручную (рекомендуется)
Инструкции по установке DPDK для виртуальных машин MANA доступны здесь: Сетевой адаптер Microsoft Azure (MANA) и DPDK на Linux
Установка зависимостей сборки
- RHEL, CentOS
- openSUSE, SLES
- Ubuntu, Debian
RHEL7.5/CentOS 7.5
yum -y groupinstall "Infiniband Support" sudo dracut --add-drivers "mlx4_en mlx4_ib mlx5_ib" -f yum install -y gcc kernel-devel-`uname -r` numactl-devel.x86_64 librdmacm-devel libmnl-devel meson
SLES 15 SP1
Ядро Azure
zypper \ --no-gpg-checks \ --non-interactive \ --gpg-auto-import-keys install kernel-azure kernel-devel-azure gcc make libnuma-devel numactl librdmacm1 rdma-core-devel meson
Ядро по умолчанию
zypper \ --no-gpg-checks \ --non-interactive \ --gpg-auto-import-keys install kernel-default-devel gcc make libnuma-devel numactl librdmacm1 rdma-core-devel meson
Ubuntu 18.04
sudo add-apt-repository ppa:canonical-server/server-backports -y sudo apt-get update sudo apt-get install -y build-essential librdmacm-dev libnuma-dev libmnl-dev meson
Ubuntu 20.04/Debian 10 и более поздней версии
sudo apt-get install -y build-essential librdmacm-dev libnuma-dev libmnl-dev meson
Компиляция и установка DPDK вручную
- Скачайте последнюю версию DPDK. Для Azure рекомендуется использовать LTS версии 22.11 или более поздней.
- Создайте конфигурацию по умолчанию с помощью команды meson builddir .
- Выполните сборку с помощью команды ninja -C builddir .
- Выполните установку с помощью команды DESTDIR= ninja -C builddir install .
Настройка среды выполнения
После перезагрузки выполните один раз следующие команды:
- Hugepages.
- Настройте функцию больших страниц, выполнив следующую команду (один раз для каждого узла NUMA):
echo 1024 | sudo tee /sys/devices/system/node/node*/hugepages/hugepages-2048kB/nr_hugepages
- Создайте каталог для подключения с помощью команды mkdir /mnt/huge .
- Подключите большие страницы с помощью команды mount -t hugetlbfs nodev /mnt/huge .
- Проверьте, зарезервированы ли большие страницы, с помощью команды grep Huge /proc/meminfo .
- Приведенный выше пример предназначен для 2 МЛН огромных страниц. Также можно использовать огромные страницы 1G.
Вы можете изменить файл grub, чтобы большие страницы были зарезервированы при загрузке, выполнив эти инструкции для DPDK. Инструкции находятся в нижней части страницы. При использовании виртуальной машины Linux Azure измените файлы в разделе /etc/config/grub.d, чтобы резервировать большие страницы при перезагрузках.
- Узнайте, какой PCI-адрес нужно использовать для VF, с помощью команды ethtool -i .
- Если eth0 имеет ускоренную сеть, убедитесь, что testpmd случайно не использует устройство PCI VF для eth0. Если приложение DPDK случайно захватило сетевой интерфейс управления, что привело к потери SSH-подключения, используйте последовательную консоль для прекращения работы приложения DPDK. Последовательную консоль также можно использовать для остановки или запуска виртуальной машины.
Главный PMD
Приложения DPDK должны выполняться через master PMD, который предоставляется в Azure. Если приложение работает непосредственно через VF PMD, оно не получает все пакеты, предназначенные для виртуальной машины, так как некоторые из них отображаются в синтетическом интерфейсе. DPDK поддерживает два типа master PMD: NetVSC PMD и Отказоустойчивый PMD. Master PMD гарантирует, что приложение получит все пакеты, которые ему предназначены. Это также гарантирует, что приложение продолжает работать в режиме DPDK в течение master PMD, даже если VF отозван при обслуживании узла.
NetVSC PMD
NetVSC — это рекомендуемый PMD для запуска в качестве master PMD в Azure. Это гарантирует, что приложение получит все пакеты, которые ему предназначены. Это также позволяет убедиться, что приложение продолжает выполняться в режиме DPDK, даже если VF отменяется при обслуживании узла. Дополнительные сведения об использовании и настройке NetVSC PMD см. в разделе (https://doc.dpdk.org/guides/nics/netvsc.html).
Отказоустойчивый драйвер PMD
Примечание. Запуск с отказоустойчивым PMD не рекомендуется в Azure. Если dpdk версии 22.11 LTS или более поздней, рекомендуется использовать NetVSC PMD.
В качестве альтернативы можно запустить приложение DPDK по отказоустойчивой PMD. Дополнительные сведения о отказоустойчивом PMD см. в статье Отказоустойчивая библиотека драйверов режима опроса.
Запуск testpmd
Чтобы запустить testpmd в режиме root, выполните сначала команду sudo .
Базовый уровень: проверка работоспособности, инициализация отказоустойчивого адаптера
- Выполните следующие команды, чтобы запустить приложение testpmdс с одним портом:
testpmd -w \ -- -i \ --port-topology=chained
testpmd -w \ -w \ -- -i
После запуска testpmd выполните команду show port info all , чтобы проверить сведения о порте. Вы увидите один или два порта DPDK, которые net_netvsc.
- Используйте команду start /stop для запуска трафика.
Предыдущие команды запускают testpmd в интерактивном режиме, что и рекомендуется, чтобы попробовать выполнить команды testpmd.
Базовый уровень: одиночные отправитель и получатель
Следующие команды периодически выводят статистику пакетов в секунду:
-
Выполните приведенную ниже команду на стороне отправки:
testpmd \ -l \ -n \ -w \ -- --port-topology=chained \ --nb-cores \ --forward-mode=txonly \ --eth-peer=, \ --stats-period
testpmd \ -l \ -n \ -w \ -- --port-topology=chained \ --nb-cores \ --forward-mode=rxonly \ --eth-peer=, \ --stats-period
При выполнении предыдущих команд в виртуальной машине измените адреса IP_SRC_ADDR и IP_DST_ADDR в app/test-pmd/txonly.c , чтобы они соответствовали фактическому IP-адресу виртуальных машин перед сборкой. В противном случае пакеты будут удалены, прежде чем они достигнут получателя.
Дополнительно: одиночные отправитель и сервер пересылки
Следующие команды периодически выводят статистику пакетов в секунду:
-
Выполните приведенную ниже команду на стороне отправки:
testpmd \ -l \ -n \ -w \ -- --port-topology=chained \ --nb-cores \ --forward-mode=txonly \ --eth-peer=, \ --stats-period
testpmd \ -l \ -n \ -w \ -w \ -- --nb-cores \ --forward-mode=io \ --eth-peer=, \ --stats-period
При выполнении предыдущих команд в виртуальной машине измените адреса IP_SRC_ADDR и IP_DST_ADDR в app/test-pmd/txonly.c , чтобы они соответствовали фактическому IP-адресу виртуальных машин перед сборкой. В противном случае пакеты будут удалены, прежде чем они достигнут сервера пересылки. Вы не можете использовать третий компьютер для получения перенаправленного трафика, так как сервер пересылки testpmd не изменяет адреса уровня 3, если не внести некоторые изменения в код.
Установка DPDK с помощью системного пакета (не рекомендуется)
- RHEL, CentOS
- openSUSE, SLES
- Ubuntu, Debian
sudo yum install -y dpdk
sudo zypper install -y dpdk
Ubuntu 18.04
sudo add-apt-repository ppa:canonical-server/server-backports -y sudo apt-get update sudo apt-get install -y dpdk
Ubuntu 20.04/Debian 10 и более поздней версии
sudo apt-get install -y dpdk
Ссылки
- Параметры командной строки EAL
- Параметры командной строки testpmd
- Пакеты для создания дампа пакетов
Как найти MAC адрес
Введите команду “ ip a | grep ether “ в Терминал.
Первое значение это ваш MAC адрес для кабельного подключения.
Второе значение это ваш MAC адрес для беспроводного подключения.
Как найти MAC адрес на Windows:
Откройте окно Командной Строки (Win + R –> cmd).
Введите команду “ getmac –v ” в Командную Строку.
Mac адрес напротив Ethernet для кабельного подключения
Mac адрес напротив Wi-Fi для беспроводного подключения.
Как найти MAC адрес на MacOs:
Выберите пункт «System Preferences»

Выберите «Network»

Выберите свой переходник после чего нажмите «Advanced»

Тут есть ваш Mac адрес.

ВНИМАНИЕ
Перед поиском MAC адреса убедитесь, что у вас есть разъём для Ethernet кабеля.

Если его нет, вам следует купить адаптер.
