Почему я получаю потерю пакетов при пинге малинового пис в подсети?

У меня есть три малиновых писа, соединенных вместе в подсети через концентратор. Я дал им все статические IP-адреса, и я использую один основной Pi для проверки связи с двумя другими Pis.

Вот моя установка:

Как только основной Пи начинает пинговать другой Пи, каждый пинг возвращается обратно полностью нормально. Но когда я сначала запускаю эхо-запрос, получение первого ответа может занять около 5 секунд. Это приводит к потере + 30% или около того и делает так, что когда я запускаю сценарии, они часто терпят неудачу при передаче сообщений из-за тайм-аутов, пытающихся подключиться.

Вот фото потери пакета при пинге одного пи затем другого:

Я очень плохо знаком с сетью, поэтому, пожалуйста, дайте мне знать, какую информацию я могу предоставить, чтобы лучше диагностировать проблему.

Я пытался заменить Raspberry Pis, Ethernet-кабели и концентратор, но пока не повезло. Мне интересно, есть ли какое-то ограничение на Pis, о котором я не знаю, или это может быть неисправная аппаратная проблема с моим поставщиком концентратора.

РЕДАКТИРОВАТЬ: я побежал IP neighbor show со следующими результатами

pi@raspberrypi:~ $ ip neighbor show
192.168.2.1 dev wlan0 lladdr 40:c7:29:4e:4d:f8 STALE
192.168.3.32 dev enxb827eb9c0ecf lladdr 00:e0:4c:53:44:58 STALE
192.168.2.131 dev wlan0 lladdr 02:0f:b5:87:93:39 REACHABLE
192.168.3.37 dev enxb827eb9c0ecf lladdr 00:e0:4c:53:44:58 STALE

Причина, по которой он показывает две разные сети, заключается в том, что я подключен к Интернету через Wi-Fi на 192.168.2 сеть. И я подключен через Ethernet к другим 2-х пис 192.168.3, Оба Пис IP можно увидеть там как .3.37 а также .3.32 соответственно.

EDIT2: я заметил, поиграв с IP neighbor show что если я пинг пи пи то беги IP neighbor show это говорит REACHABLE рядом с этим пи. Но тогда, если я пингую другой Пи, тогда первый Пинг, который я пингую, покажет STALE и новый будет REACHABLE это происходит каждый раз, когда я пингую другого Пи.

2 ответа

Решение

Проблема связана с тем, что оба ваших Raspberry Pi имеют одинаковый MAC-адрес. Мы можем видеть это из вывода ip neighbor show где оба 3.32 а также 3.37 иметь MAC-адрес 00:e0:4c:53:44:58, Мало того, что вы испытаете то, что вы уже испытывали с эхо-запросами, но любое общение между вашим основным Пи и обоими другими Пи одновременно также будет проблематичным.

Этого не должно быть, поскольку MAC-адреса должны быть глобально уникальными, но, увы, мы здесь. Чтобы это исправить, вам нужно найти способ изменить MAC-адрес вручную. Этот пост с форумов Pi, кажется, предлагает способ сделать это:

По сути, создайте файл "/etc/systemd/network/00-default.link" с содержимым:

[Match]
MACAddress=current MAC address

[Link]
MACAddress=new MAC address

Затем выполните sudo ifdown и ifup для интерфейса, и у него должен быть новый MAC-адрес, и это изменение сохранится после перезагрузки.

Номера MAC-адресов состоят из 12 шестнадцатеричных символов (0-9, af). Они обычно разделяются каждые два символа двоеточиями или тире, но на самом деле они не являются частью адреса. Например:

01:23:45:ab:cd:ef

Да, просто используйте несколько случайных символов. Нам просто нужно что-то уникальное.

При запуске начального пинга введите следующую команду:

ip neighbor show

Это покажет ARP-кеш и даст подсказку, если ARP возобновлено или нет.

Просто отредактируйте свой вопрос и поместите туда вывод, а также добавьте IP-адреса целевых RasPI.

Другие вопросы по тегам