I've spent a few hours in the near past to analyse a problem in which pinging a server results in duplicated packages if the package size is specified to be less than 1473.
I get the same reply when performing the ping using different clients. I also connected client and the server using a different switch, the DUPs persist.
The server is running a few jails and a single bhyve vm. Pinging the jails or the vm does not result in DUP replies.
I need help figuring out what why the server is sending out duplicates.
The following listing shows a default ping with two duplicate replies.
The following listing shows a partial result of pinging with package size 1472, a single ping with a duplicate reply.
The following listing shows the use of package size 1473. No duplicates are returned if the package size is set to an equal or larger value than 1473.
The following listing shows the result of executing ifconfig.
The following listing shows the output of vm switch info
The following listing shows the output of vm info.
The following listing shows the result of executing jls.
The above listing relates to the listing for ifconfig -v by the following rule: A jail on the lo1 IP 127.0.x.1 has the em0 IP 129.168.2.15x.
The following listing shows the result of executing netstat -r.
I get the same reply when performing the ping using different clients. I also connected client and the server using a different switch, the DUPs persist.
The server is running a few jails and a single bhyve vm. Pinging the jails or the vm does not result in DUP replies.
I need help figuring out what why the server is sending out duplicates.
The following listing shows a default ping with two duplicate replies.
Code:
petur:~ petur$ ping server
PING server (192.168.2.150): 56 data bytes
64 bytes from 192.168.2.150: icmp_seq=0 ttl=64 time=1.943 ms
64 bytes from 192.168.2.150: icmp_seq=0 ttl=255 time=2.673 ms (DUP!)
64 bytes from 192.168.2.150: icmp_seq=1 ttl=64 time=2.169 ms
64 bytes from 192.168.2.150: icmp_seq=1 ttl=255 time=2.447 ms (DUP!)
64 bytes from 192.168.2.150: icmp_seq=2 ttl=64 time=1.434 ms
Code:
PING server (192.168.2.150): 1472 data bytes
1480 bytes from 192.168.2.150: icmp_seq=0 ttl=64 time=2.123 ms
1480 bytes from 192.168.2.150: icmp_seq=0 ttl=255 time=2.361 ms (DUP!)
Code:
PING server (192.168.2.150): 1473 data bytes
1481 bytes from 192.168.2.150: icmp_seq=0 ttl=64 time=2.399 ms
1481 bytes from 192.168.2.150: icmp_seq=1 ttl=64 time=2.552 ms
The following listing shows the result of executing ifconfig.
Code:
server# ifconfig
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=40098<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWTSO>
ether 6c:0b:84:a9:ba:cd
hwaddr 6c:0b:84:a9:ba:cd
inet 192.168.2.150 netmask 0xffffff00 broadcast 192.168.2.255
inet 192.168.2.153 netmask 0xffffffff broadcast 192.168.2.153
inet 192.168.2.151 netmask 0xffffffff broadcast 192.168.2.151
inet 192.168.2.156 netmask 0xffffffff broadcast 192.168.2.156
inet 192.168.2.152 netmask 0xffffffff broadcast 192.168.2.152
inet 192.168.2.158 netmask 0xffffffff broadcast 192.168.2.158
inet 192.168.2.157 netmask 0xffffffff broadcast 192.168.2.157
inet 192.168.2.159 netmask 0xffffffff broadcast 192.168.2.159
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
groups: lo
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet 127.0.3.1 netmask 0xffffffff
inet 127.0.1.1 netmask 0xffffffff
inet 127.0.6.1 netmask 0xffffffff
inet 127.0.2.1 netmask 0xffffffff
inet 127.0.8.1 netmask 0xffffffff
inet 127.0.7.1 netmask 0xffffffff
inet 127.0.9.1 netmask 0xffffffff
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
groups: lo
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: vm-public
ether 02:29:95:a2:a2:00
nd6 options=1<PERFORMNUD>
groups: bridge
id 00:00:00:00:00:00 priority 0 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 5 priority 128 path cost 2000000
member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 priority 128 path cost 2000000
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: vmnet-host4-0-public
options=80000<LINKSTATE>
ether 00:bd:b0:05:f7:00
hwaddr 00:bd:b0:05:f7:00
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
groups: tap
Opened by PID 4287
The following listing shows the output of vm switch info
Code:
server# vm switch info
------------------------
Virtual Switch: public
------------------------
type: auto
ident: bridge0
vlan: -
nat: -
physical-ports: em0
bytes-in: 640685796800 (596.685G)
bytes-out: 658414895272 (613.196G)
virtual-port
device: tap0
vm: host4
The following listing shows the output of vm info.
Code:
server# vm info
------------------------
Virtual Machine: host4
------------------------
state: running (4287)
datastore: default
loader: grub
uuid: f7b16519-32c4-11e8-a944-6c0b84a9bacd
uefi: no
cpu: 4
memory: 4196M
memory-resident: 4309463040 (4.013G)
console-ports
com1: /dev/nmdm0B
network-interface
number: 0
emulation: virtio-net
virtual-switch: public
fixed-mac-address: 58:9c:fc:06:dd:24
fixed-device: -
active-device: tap0
desc: vmnet-host4-0-public
mtu: 1500
bridge: bridge0
bytes-in: 623346114398 (580.536G)
bytes-out: 45182855038 (42.079G)
virtual-disk
number: 0
device-type: sparse-zvol
emulation: virtio-blk
options: -
system-path: /dev/zvol/zroot/vm/host4/disk0
bytes-size: 21474836480 (20.000G)
bytes-used: 3713544192 (3.458G)
The following listing shows the result of executing jls.
Code:
server# jls
JID IP Address Hostname Path
1 127.0.3.1 host3 /usr/jails/host3
2 127.0.1.1 host1 /usr/jails/host1
3 127.0.6.1 host6 /usr/jails/host6
4 127.0.2.1 host2 /usr/jails/host2
155 127.0.8.1 host8 /usr/jails/host8
156 127.0.7.1 host7 /usr/jails/host7
185 127.0.9.1 host9 /usr/jails/host9
The following listing shows the result of executing netstat -r.
Code:
server# netstat -r
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default USG UGS em0
localhost link#2 UH lo0
127.0.1.1 link#3 UH lo1
127.0.2.1 link#3 UH lo1
127.0.3.1 link#3 UH lo1
127.0.6.1 link#3 UH lo1
127.0.7.1 link#3 UH lo1
127.0.8.1 link#3 UH lo1
127.0.9.1 link#3 UH lo1
192.168.2.0/24 link#1 U em0
server link#1 UHS lo0
host1 link#1 UHS lo0
192.168.2.151/32 link#1 U em0
host2 link#1 UHS lo0
192.168.2.152/32 link#1 U em0
host3 link#1 UHS lo0
192.168.2.153/32 link#1 U em0
host6 link#1 UHS lo0
192.168.2.156/32 link#1 U em0
host7 link#1 UHS lo0
192.168.2.157/32 link#1 U em0
host8 link#1 UHS lo0
192.168.2.158/32 link#1 U em0
host9 link#1 UHS lo0
192.168.2.159/32 link#1 U em0
Internet6:
Destination Gateway Flags Netif Expire
::/96 localhost UGRS lo0
localhost link#2 UH lo0
::ffff:0.0.0.0/96 localhost UGRS lo0
fe80::/10 localhost UGRS lo0
fe80::%lo0/64 link#2 U lo0
fe80::1%lo0 link#2 UHS lo0
ff02::/16 localhost UGRS lo0