<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hello,<div class=""><br class=""></div><div class="">Indeed, this network is connected to our physical network (VLAN 51 for testing), xxxx:xxxx:2f1:aaaa::1 is an interface on our physical router.</div><div class=""><br class=""></div><div class="">Finally, we successfully started RADVD by adding a network interface in the subnet to a virtual router in OpenStack. This gave IPs to VMs, they were able to communicate between each other. Obviously, this network topology isn’t making any sense, we can’t route traffic outside. It was just for testing.</div><div class=""><br class=""></div><div class="">Now, the goal is route the traffic of VMs. I see two paradigms. The first one, we use our physical router to send RA directly to VMs. The second one, we use a private subnet (<span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">xxxx:xxxx:2f1:bbbb::/64 for instance) in a non external network of OpenStack. We add a virtual router to that subnet, we now have RADVD. We use that router to route traffic to an external network of OpenStack. What is best ?</span></div><div class=""><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class=""><br class=""></span></font></div><div class=""><font color="#000000" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Marc-Antoine<br class=""></span></font><div><br class=""><blockquote type="cite" class=""><div class="">Le 8 mars 2022 à 23:47, Brian Haley <<a href="mailto:haleyb.dev@gmail.com" class="">haleyb.dev@gmail.com</a>> a écrit :</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Hi Marc-Antoine,</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">See inline...</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 3/8/22 11:18, Marc-Antoine Godde wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Hi,<br class="">Here’s what we’ve done.<br class="">We created a network:<br class="">Name<br class=""> ipv6-testing-network<br class="">ID<br class=""> 9d5ca309-1861-4422-bcff-8818f9762a6f<br class="">Project ID<br class=""> 653f5a2e60d34768a8629e5d4fca0738<br class="">Status<br class=""> Active<br class="">Admin State<br class=""> UP<br class="">Shared<br class=""> Yes<br class="">External Network<br class=""> Yes<br class="">MTU<br class=""> 1500<br class="">Provider Network<br class=""> Network Type: vlan<br class=""> Physical Network: vlan<br class=""> Segmentation ID: 51<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">So this is an external provider network connected to your datacenter network, correct? In the case Slawek was describing I believe he was talking about an internal private network, which when a neutron router is attached will trigger radvd to be spawned, etc.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">In this case VMs booted on this network should be seeing RAs from your datacenter router, if it's sending them. If it's not that would explain why they only have a link-local IPv6 address since the neutron router will not spawn radvd to run on the external network.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">BTW, I'm trying to compare this to my local setup, but since I'm not running Horizon just using 'openstack network show...', 'openstack subnet show...' output, which is slightly different, but looks to match what you're doing.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Is your plan to have private IPv6 subnets that are then routed to your external network or is this just a test?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">-Brian</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">We created a subnet:<br class="">Name<br class=""> ipv6-testing-v6<br class="">ID<br class=""> 763771d4-b9d7-419a-ba04-97ce3abaf152<br class="">Project ID<br class=""> 653f5a2e60d34768a8629e5d4fca0738<br class="">Network Name<br class=""> ipv6-testing-network<br class="">Network ID<br class=""> 9d5ca309-1861-4422-bcff-8818f9762a6f<br class=""> <<a href="https://openstack.viarezo.fr/project/networks/9d5ca309-1861-4422-bcff-8818f9762a6f/detail" class="">https://openstack.viarezo.fr/project/networks/9d5ca309-1861-4422-bcff-8818f9762a6f/detail</a>><br class="">Subnet Pool<br class=""> None<br class="">IP Version<br class=""> IPv6<br class="">CIDR<br class=""> xxxx:xxxx:2f1:aaaa::/64<br class="">IP Allocation Pools<br class=""> Start xxxx:xxxx:2f1:aaaa::2 - End xxxx:xxxx:2f1:aaaa:ffff:ffff:ffff:ffff<br class="">Gateway IP<br class=""> xxxx:xxxx:2f1:aaaa::1<br class="">DHCP Enabled<br class=""> Yes<br class="">IPv6 Address Configuration Mode<br class=""> SLAAC: Address discovered from OpenStack Router<br class="">Additional Routes<br class=""> None<br class="">DNS Name Servers<br class=""> None<br class="">We created Ubuntu and Debian instances. According to Horizon, the instance IPv6 is xxxx:xxxx:2f1:aaaa:f816:3eff:fe6d:c41a. Yet, we only have a link local address which is fe80::f816:3eff:fe6d:c41a/64. TCPdump indicates no Router Advertisement. We tried with and without adding a router on the Network in Horizon. ICMPv6 is authorized in INGRESS from ::/0.<br class="">We checked on the controllers, the computes and in the Neutron containers, systemctl indicated no instance of RADVD. Maybe we checked incorrectly...<br class="">Do you have any suggestions ? I add that we are working with OpenStack Ussuri deployed with OpenStack-ansible.<br class="">Thanks,<br class="">Marc-Antoine<br class=""><blockquote type="cite" class="">Le 8 mars 2022 à 08:59, Slawek Kaplonski <<a href="mailto:skaplons@redhat.com" class="">skaplons@redhat.com</a><span class="Apple-converted-space"> </span><<a href="mailto:skaplons@redhat.com" class="">mailto:skaplons@redhat.com</a>>> a écrit :<br class=""><br class="">Hi,<br class=""><br class="">On poniedziałek, 7 marca 2022 10:36:30 CET Marc-Antoine Godde wrote:<br class=""><blockquote type="cite" class="">Hello,<br class=""><br class="">Thanks for your answer.<br class=""><br class="">If I’m correct, we can just use a virtual router with SLAAC since RADVD can deal with RS and emit RA (with support for RFC6106), right ?<br class=""></blockquote><br class="">Yes, virtual router created in the Neutron is enough there. It will spawn radvd in the qrouter namespace and will send RA to the Vms.<br class="">Please note that Neutron don't supports privacy extension [1] so You will need to make sure that it's disabled it on Your vms.<br class=""><br class=""><blockquote type="cite" class="">More generally, aren’t we suppose to have a virtual router every time, even in DHCPv6 (stateless and statefull), to answer RS ? I have to admit that I’m not very familiar at the moment with the implementations of RFCs in OpenStack.<br class=""><br class="">Currently, we prefer the idea of adding IPv6 through SLAAC to have a uniform network. If we do so, we’d like to avoid sending RA from our physical router to limit its load. Yet, we do not any other arguments to support this choice.<br class="">Do you have any recommendations on what to do in latest versions of OpenStack ? What is usually done ?<br class=""></blockquote><br class="">TBH I don't have such experience. That's more question to operators of OpenStack.<br class=""><br class=""><blockquote type="cite" class=""><br class="">Thanks,<br class="">Marc-Antoine<br class=""><br class=""><blockquote type="cite" class="">Le 7 mars 2022 à 09:12, Slawek Kaplonski <<a href="mailto:skaplons@redhat.com" class="">skaplons@redhat.com</a><span class="Apple-converted-space"> </span><<a href="mailto:skaplons@redhat.com" class="">mailto:skaplons@redhat.com</a>>> a écrit :<br class=""><br class="">Hi,<br class=""><br class="">On poniedziałek, 7 marca 2022 02:36:24 CET Marc-Antoine Godde wrote:<br class=""><blockquote type="cite" class="">Hello.<br class=""><br class="">We are progressively adding support for IPv6 in my company. We decided to use SLAAC only for laptops, phones, … since DHCPv6 isn’t supported on Android. RDNSS support will also increase. We are now planning our deployment on OpenStack. We already know that we'll rely only on neutron but we are not yet fixed between DHCPv6 and SLAAC ? Do you have any arguments for one these for VMs ?<br class=""><br class="">Thanks,<br class="">Marc-Antoine.<br class=""><br class=""></blockquote><br class="">With SLAAC You need to have Your network connected to the router in Neutron and You can only configure IP address on the VM. With DHCPv6 You can configure other things, like some static-routes, etc.<br class="">Neutron supports DHCPv6 in the stateful and stateless variants. With stateless, You are using RA for address configuration and DHCP server for other configation. Please see [1] for more details.<br class=""><br class="">[1]<span class="Apple-converted-space"> </span><a href="https://docs.openstack.org/neutron/latest/admin/config-ipv6.html#address-modes-for-ports" class="">https://docs.openstack.org/neutron/latest/admin/config-ipv6.html#address-modes-for-ports</a><<a href="https://docs.openstack.org/neutron/latest/admin/config-ipv6.html#address-modes-for-ports" class="">https://docs.openstack.org/neutron/latest/admin/config-ipv6.html#address-modes-for-ports</a>><br class=""><br class=""></blockquote><br class=""><br class=""></blockquote><br class="">[1]<a href="https://datatracker.ietf.org/doc/html/rfc4941" class="">https://datatracker.ietf.org/doc/html/rfc4941</a><span class="Apple-converted-space"> </span><<a href="https://datatracker.ietf.org/doc/html/rfc4941" class="">https://datatracker.ietf.org/doc/html/rfc4941</a>><br class=""><br class="">--<br class="">Slawek Kaplonski<br class="">Principal Software Engineer<br class="">Red Hat</blockquote></blockquote></div></blockquote></div><br class=""></div></body></html>