Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jun 2016 02:27:23 +0200
From:      Michael Gmelin <freebsd@grem.de>
To:        freebsd-net@freebsd.org
Subject:   ARP table entries / ifconfig needs to be issued twice when moving IP
Message-ID:  <20160621022723.5e785573@bsd64.grem.de>

next in thread | raw e-mail | index | archive | help
Hi,

I'm not sure if it's just me being tired, but I'm facing the following
problem on 10.3-RELEASE when moving an IPv4 alias from one host to
the other. This is an example of what I'm seeing:

Configuration:

Box 1:
ifconfig_bge0_name="uplink"
ifconfig_uplink="inet 10.1.1.253/24 description 'uplink'"
ifconfig_uplink_ipv6="inet6 fd8e:1111:1111:1f::fd"
mac: 14:18:77:11:22:33

Box 2:
ifconfig_bge0_name="uplink"
ifconfig_uplink="inet 10.1.1.254/24 description 'uplink'"
ifconfig_uplink_ipv6="inet6 fd8e:1111:1111:1f::fe"
mac: 14:18:77:44:55:66

Test:

Box 1: Configure alias address
# ifconfig uplink alias 10.1.1.33/32
# arp -an | grep 10.1.1.33
? (10.1.1.33) at 14:18:77:11:22:33 on uplink permanent [ethernet]

Box 2: Ping, check it's in the ARP table
# ping 10.1.1.33
...
# arp -an | grep 10.1.1.33
? (10.1.1.33) at 14:18:77:11:22:33 on uplink expires in 1188 seconds
[ethernet]

Box 1: Remove alias
# ifconfig uplink -alias 10.1.1.33   

Box 2: Add alias
# ifconfig uplink alias 10.1.1.33/32
# arp -an | grep 33
? (10.1.1.33) at 14:18:77:11:22:33 on uplink expires in 1156 seconds
[ethernet]

It's still in the arp table as a non-permanent entry, pointing to the
Box 1.

Box 2: Issue ifconfig once more:
# ifconfig uplink alias 10.1.1.33/32
# arp -an | grep 33
? (10.1.1.33) at 14:18:77:44:55:66 on uplink permanent [ethernet]

Now it's set to the local ethernet address in the arp table
permanently.

This is not a big deal in case of a simple setup (packets still flow
correctly), but as soon as you add multiple FIBs and interface routes
into the mix, things get problematic[1].

Is this intended behaviour, am I missing something?

- Michael

[1] While the example above was done on two separate boxes, the FIB
setup in production is something like this:

sysctl net.add_addr_allfibs=0
vlan1: fib 1
vlan2: fib 2
route add -host 10.1.1.33 -interface vlan2 -fib 1
route add -host 10.2.1.32 -interface vlan1 -fib 2
...

-- 
Michael Gmelin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160621022723.5e785573>