Networking issues with IPv6, bhyve and rtadvd

Filias Heidt post at filias.name
Sun Nov 15 21:10:27 UTC 2015


Hi list,

I have a bhyve host and various VMs set up. The host is running 11-CURRENT, the guests usually run 10.2.

The networking setup on the host looks as follows:

ifconfig_ix0="inet 149.202.80.18/24"
ifconfig_ix0_ipv6="inet6 2001:41d0:1004:0412::/64 -accept_rtadv"
defaultrouter="149.202.80.254"
ipv6_gateway_enable="YES"
ipv6_defaultrouter="2001:41d0:1004:4ff:ff:ff:ff:ff"

cloned_interfaces="ix0 bridge0 tap0"
ifconfig_bridge0="inet 149.202.132.97/27 addm ix0 addm tap0"
ifconfig_bridge0_ipv6="inet6 2001:41d0:1004:412::100/64 -accept_rtadv"

rtadvd_enable="YES"
rtadvd_interfaces="ix0 bridge0”

and the /etc/rtadv.conf:
ix0: \
	:addr="2001:41d0:1004:412::":prefixlen#64:rltime#0:
bridge0: \
	:addr="2001:41d0:1004:412::":prefixlen#64:rltime#0:

Then, on the guests, I just put
ifconfig_vtnet0_ipv6="inet6 accept_rtadv”
in the rc.conf and would it expect to generate an IPv6 address with the advertised prefix from the host.

Question: The autoconfig takes a while. Manually executing “rtsol -dD -a” does NOT generate an IPv6 address. Instead it just pops up after a couple of minutes. Maybe when the rtadvd on the host decides to retransmit (restarting the rtadvd seems to speed this up)?

After the IP is assigned, the routes look like this:

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::/96                             ::1                           UGRS        lo0
default                           fe80::205:73ff:fea0:1%vtnet0  UG       vtnet0
::1                               link#2                        UH          lo0
::ffff:0.0.0.0/96                 ::1                           UGRS        lo0
2001:41d0:1004:400::/56           link#1                        U        vtnet0
2001:41d0:1004:412:2a0:98ff:fed8:1a5e link#1                        UHS         lo0

I can not ping the 2001:41d0:1004:0412::. Pinging 2001:41d0:1004:412::100 works after the first ping took a while:

PING6(56=40+8+8 bytes) 2001:41d0:1004:412:2a0:98ff:fe7a:c95f --> 2001:41d0:1004:412::100
16 bytes from 2001:41d0:1004:412::100, icmp_seq=0 hlim=64 time=1020.595 ms
16 bytes from 2001:41d0:1004:412::100, icmp_seq=1 hlim=64 time=0.118 ms

After that, pinging 0412:: works, too!

PING6(56=40+8+8 bytes) 2001:41d0:1004:412:2a0:98ff:fe7a:c95f --> 2001:41d0:1004:412::
16 bytes from 2001:41d0:1004:412::, icmp_seq=0 hlim=64 time=0.252 ms
16 bytes from 2001:41d0:1004:412::, icmp_seq=1 hlim=64 time=0.209 ms
16 bytes from 2001:41d0:1004:412::, icmp_seq=2 hlim=64 time=0.201 ms

Now it seems like everything is working. I can use the v6 services, that the vm is providing. But only for a few minutes. After that, I can’t even ping the VMs from the outside anymore.

Notes: I completely disabled pf for testing this and it happens on all the VMs on that host. I haven’t had the opportunity to test it on other bhyve hosts, though.

Any hints on how to debug this further or what I am doing wrong would be greatly appreciated!

Cheerio,
Filias

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20151115/c1cc73b4/attachment.bin>


More information about the freebsd-questions mailing list