Я пытаюсь решить проблему с сетью. Во время этого процесса я заметил, что когда я пытаюсь выполнить arping, полученные пакеты arp больше, чем отправленные пакеты arp, как выводит tcpdump.
(Обратите внимание, что оба конца имеют br100
мост к eth1
интерфейс).
Команда:
# arping 10.40.0.5 -I br100 -c1
ARPING 10.40.0.5 from 10.40.0.1 br100
Sent 1 probes (1 broadcast(s))
Received 0 response(s)
tcpdump (отправитель):
# tcpdump -nnvvXSs 1514 arp -i eth1
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 1514 bytes
21:32:29.529106 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.40.0.5 (ff:ff:ff:ff:ff:ff) tell 10.40.0.1, length 28
0x0000: 0001 0800 0604 0001 5478 1a86 50c9 0a28 ........Tx..P..(
0x0010: 0001 ffff ffff ffff 0a28 0005 .........(..
tcpdump (получатель):
# tcpdump -nnvvXSs 1514 arp -i eth1
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 1514 bytes
21:32:29.532966 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.40.0.5 (ff:ff:ff:ff:ff:ff) tell 10.40.0.1, length 46
0x0000: 0001 0800 0604 0001 5478 1a86 50c9 0a28 ........Tx..P..(
0x0010: 0001 ffff ffff ffff 0a28 0005 0000 0000 .........(......
0x0020: 0000 0000 0000 0000 0000 dac7 07ed ..............
Полученный пакет arp на 18 байт больше отправленного пакета arp. Пытаюсь разобраться, нормально это или нет, или проблема. (Этот пакет в конечном итоге привязан к экземпляру виртуальной машины, который неправильно его получает).
Кто складывает эти 18 байтов и почему? Это отправитель, коммутатор или получатель? А что они означают?
Я подозреваю, что это коммутатор (Cisco Nexus 3000), и он связан с инкапсуляцией 802.1Q.
46 байт - это минимальный объем пользовательских данных, разрешенный в пакете Ethernet.
Имеется 8-байтовая преамбула, 6-байтовый MAC-адрес назначения, 6-байтовый исходный MAC-адрес, 2-байтовый тип / длина, пользовательские данные и 4-байтовая контрольная последовательность кадра. Поскольку минимум пакет составляет 64 байта, это означает, что размер пользовательских данных не может быть меньше 46 байтов.
Каждый протокол поверх Ethernet должен иметь дело с этим. ARP справляется с этим, игнорируя «мусор» после данных.
Просто хочу добавить дополнительную информацию (с точки зрения сети), почему маршрутизатор не принимает пакеты в каком состоянии
Если размер пакетов меньше 64 байтов, маршрутизатор примет пакеты как RUNT и отклонит эти пакеты.
(Пакеты <= 64 отклонить пакеты RUNT)
Поскольку размер заголовка пакетов равен 64, поэтому кажется, что пакеты не включаются в данные по какой-то причине повреждения пакетов.
Если размер пакетов превышает MTU порта (маршрутизатора) (по умолчанию 1500 для FastEthernet, 9000 для гигабитного интерфейса), то пакеты считаются гигантскими и отклоняются. Поскольку MTU порта составляет 1500, он не будет принимать эти пакеты.
(Пакеты> MTU порта (1500) Отклонить как GIANT)
Если размер пакетов 1519-1564, эти пакеты называются младшими пакетами Jambo и принимаются только тогда, когда MTU порта равен 9000.
Если все условия выполнены, маршрутизатор выполнит циклическую проверку избыточности (CRC).