Hello, all.

I decided to reinstall OpenBSD to a newer version on my VMware ESXi
cluster. So I deleted an old router and start the new one using the old
configuration, except that I add lladdr parameter with the old MAC address
to the external interface to avoid blocking traffic on the port of the
Internet provider.

After applying the configuration and rebooting, I've got packet loss. The
strange thing is that packets started passing when I turned on BPF on
another terminal:

terminal[1]:
router1# uname -a
OpenBSD router1 6.7 GENERIC.MP#182 amd64
router1# pfctl -d
pfctl: pf not enabled
router1# ping -c3 185.1.162.100
PING 185.1.162.100 (185.1.162.100): 56 data bytes

--- 185.1.162.100 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
router1# arping -i vmx2 -c3 185.1.162.100
ARPING 185.1.162.100
Timeout
Timeout
Timeout

--- 185.1.162.100 statistics ---
3 packets transmitted, 0 packets received, 100% unanswered (0 extra)

Now, I run a tcpdump on another terminal and don't turn it off:

terminal[2]:
router1# tcpdump -ni vmx2 -e net 185.1.162.0/24
tcpdump: listening on vmx2, link-type EN10MB
07:55:47.123666 68:b5:99:c5:2a:c0 00:50:56:92:d1:18 0800 85:
185.1.162.100.55992 > 185.1.162.2.179: P 1989291079:1989291098(19) ack
284218081 win 229 <nop,nop,timestamp 448227401 881035409>: BGP (KEEPALIVE)
(DF) [tos 0xc0] [ttl 1]
07:55:47.318977 00:50:56:92:d1:18 68:b5:99:c5:2a:c0 0800 66:
185.1.162.2.179 > 185.1.162.100.55992: . ack 19 win 543 <nop,nop,timestamp
881035415 448227401> [tos 0xc0] [ttl 1]
...

Let's back on terminal[1] and run ping:

router1# ping -c3 185.1.162.100
PING 185.1.162.100 (185.1.162.100): 56 data bytes
64 bytes from 185.1.162.100: icmp_seq=0 ttl=64 time=0.357 ms
64 bytes from 185.1.162.100: icmp_seq=1 ttl=64 time=0.376 ms
64 bytes from 185.1.162.100: icmp_seq=2 ttl=64 time=0.399 ms

--- 185.1.162.100 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.357/0.377/0.399/0.017 ms
router1# arping -i vmx2 -c3 185.1.162.100
ARPING 185.1.162.100
60 bytes from 68:b5:99:c5:2a:c0 (185.1.162.100): index=0 time=320.700 usec
60 bytes from 68:b5:99:c5:2a:c0 (185.1.162.100): index=1 time=368.795 usec
60 bytes from 68:b5:99:c5:2a:c0 (185.1.162.100): index=2 time=381.975 usec

--- 185.1.162.100 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.321/0.357/0.382/0.026 ms

Now if I will stop tcpdump on terminal[2] I'll get packet loss again. This
is a weird behavior. What could be wrong?

This router is a virtual machine on VMware ESXi server with a network
adapter type VMXNET3, which is mapped to the vmx2 interface in guest OS
(OpenBSD 6.7):

router1# grep vmx2 /var/run/dmesg.boot | tail -1
vmx2 at pci19 dev 0 function 0 "VMware VMXNET3" rev 0x01: apic 4 int 16,
address 00:50:56:92:02:51
router1# cat /etc/hostname.vmx2
inet 185.1.162.3 255.255.255.0 NONE description "Linx-IX" lladdr
"00:50:56:92:c7:27"
router1# ifconfig vmx2
vmx2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:50:56:92:c7:27
description: Linx-IX
index 3 priority 0 llprio 3
media: Ethernet autoselect (10GbaseT)
status: active
inet 185.1.162.3 netmask 0xffffff00 broadcast 185.1.162.255
router1#

The VMXNET3 interface belongs to vSwitch which contains allowable policy
ruleset:

[root@esxi5:~] esxcli system version get
   Product: VMware ESXi
   Version: 6.0.0
   Build: Releasebuild-2494585
   Update: 0
   Patch: 0
[root@esxi5:~] esxcli network vswitch standard policy security get -v
vSwitch3
   Allow Promiscuous: true
   Allow MAC Address Change: true
   Allow Forged Transmits: true
[root@esxi5:~]

Don't know if it helps to understand what's going on.
My dmesg.boot is here
https://gist.github.com/dynax60/b1d7e89b0f1b592b2d7bd0fd99b0272b

I removed the lladdr parameter from /etc/hostname.vmx2 and asked the ISP
network engeneer to clear the old MAC address 00:50:56:92:c7:27 on
port-security of the Cisco network switch. After that, I rebooted the
router and it worked as it should.

I think to avoid subsequent contacts with ISP with the request to clear
MAC-address, the best way would be to use lladdr to keep an old MAC address
on interface, because reinstalling the virtual machine on VMware ESXi
server will entail a change in the mac address on the interface. The
strange thing is that this does not work for me. I don't know why.

P.S. offtopic: I turn to the developers: I tearfully ask you to add python
to the base installation. This would allow the configuration to be rolled
automatically using Ansible right after install an OS. It would simplify
the task of configuring OpenBSD on remote hosts.

--
Regards,
Denis

Reply via email to