Почему я получаю потерю пакетов при пинге малинового пис в подсети?
У меня есть три малиновых писа, соединенных вместе в подсети через концентратор. Я дал им все статические 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.