Hi Ahbishek,

Yes, the message should include the subnet.

The message should be sent when the IPv6 subnets are allocated or released,
right ? If so, there will not be multiple subnets/routes in the message.

-Wei

On Thu, 12 May 2022 at 09:56, Abhishek Kumar <abhishek.ku...@shapeblue.com>
wrote:

> Hi Wido,
>
> I do not understand what you mean by WAB address but
> fd23:313a:2f53:3000:1c00:baff:fe00:4 is the public IP of the network (IPv6
> of the public NIC of the network VR) in the sample.
> Yes, route for fd23:313a:2f53:3cbf::/64 need to be added to this IP.
> fd23:313a:2f53:3cbf::/64 is guest IPv6 CIDR of the network here.
>
> Currently, the message on event bus does not include subnet. Should that
> be included?
> In case of VPCs, there could be multiple tiers which will need multiple
> routes to be added. Will that be an issue if we include current
> network/tier subnet in the event message?
>
> Regards,
> Abhishek
> ________________________________
> From: Wido den Hollander <w...@widodh.nl>
> Sent: 10 May 2022 19:01
> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>; Abhishek Kumar
> <abhishek.ku...@shapeblue.com>
> Subject: Re: IPV6 in Isolated/VPC networks
>
> Hi,
>
> Op 10-05-2022 om 11:42 schreef Abhishek Kumar:
> > Yes. When a public IPv6 is assigned or released, CloudStack will publish
> event with type NET.IP6ASSIGN, NET.IP6RELEASE.
> > These event notifications can be tracked. And with improvements in
> events framework, these event messages will have network uuid as entityuuid
> and Network as entitytype. Using this network can be queried using to list
> IPv6 routes that need to be added.
> >
> > Sample event message,
> >
> > {"eventDateTime":"2022-05-10 09:32:12
> +0000","entityuuid":"14658b39-9d20-4783-a1bc-12fb58bcbd98","Network":"14658b39-9d20-4783-a1bc-12fb58bcbd98","description":"Assigned
> public IPv6 address: fd23:313a:2f53:3000:1c00:baff:fe00:4 for network ID:
> 14658b39-9d20-4783-a1bc-12fb58bcbd98","event":"NET.IP6ASSIGN","user":"bde866ba-c600-11ec-af19-1e00320001f3","account":"bde712c9-c600-11ec-af19-1e00320001f3","entity":"Network","status":"Completed"}
> >
> >
> > ?Sample API call,
> >> list networks id=14658b39-9d20-4783-a1bc-12fb58bcbd98
> filter=id,name,ip6routes
> > {
> >    "count": 1,
> >    "network": [
> >      {
> >        "id": "14658b39-9d20-4783-a1bc-12fb58bcbd98",
> >        "ip6routes": [
> >          {
> >            "gateway": "fd23:313a:2f53:3000:1c00:baff:fe00:4",
> >            "subnet": "fd23:313a:2f53:3cbf::/64"
> >          }
>
> Looking at this JSON, does this mean that
> fd23:313a:2f53:3000:1c00:baff:fe00:4 is the WAB address of the VR?
>
> And that I would need to (statically) route fd23:313a:2f53:3cbf::/64 to
> that IP?
>
> The event message does not include the subnet, that makes it a bit more
> difficult as you would then also need to do a API-call to gather that
> information.
>
> Wido
>
> P.S.: Who controls the DNS of qa.cloudstack.cloud? It lacks an
> AAAA-record for IPv6!
>
> >        ],
> >        "name": "routing_test"
> >      }
> >    ]
> > }
> >
> >
> >
> >
> > ________________________________
> > From: Wido den Hollander <w...@widodh.nl>
> > Sent: 10 May 2022 13:59
> > To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>; Abhishek
> Kumar <abhishek.ku...@shapeblue.com>
> > Subject: Re: IPV6 in Isolated/VPC networks
> >
> > Op 10-05-2022 om 10:19 schreef Abhishek Kumar:
> >> Hi all,
> >>
> >> IPv6 Support in Isolated Network and VPC with Static Routing based on
> the design doc [1] has been implemented and is available in 4.17.0 RC2. I
> hope while testing 4.17.0 RC2 you will also try to test it ?
> >> Documentation for it is available at
> http://qa.cloudstack.cloud/docs/WIP-PROOFING/pr/262/plugins/ipv6.html#isolated-network-and-vpc-tier
> (will be available in the official docs once 4.17.0 version of docs is
> built).
> >>
> >
> > Great work!
> >
> > I see only static routing is supported. But do we publish something on
> > the message bus once a new VR/VPC is created?
> >
> > This way you could pick up these messages and have the network create a
> > (static) route based on those.
> >
> > ExaBGP for example could be used to inject such routes.
> >
> > Wido
> >
> >> [1]
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/IPv6+Support+in+Isolated+Network+and+VPC+with+Static+Routing
> >>
> >> Regards,
> >> Abhishek
> >>
> >> ________________________________
> >> From: Rohit Yadav <rohit.ya...@shapeblue.com>
> >> Sent: 13 September 2021 14:30
> >> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> >> Subject: Re: IPV6 in Isolated/VPC networks
> >>
> >> Thanks Alex, Wei. I've updated the docs here:
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/IPv6+Support+in+Isolated+Network+and+VPC+with+Static+Routing
> >>
> >> I'll leave the thread open for futher discussion/ideas/feedback. I
> think we've completed the phase1 design doc including all feedback comments
> for adding IPv6 support in CloudStack and some initial poc/work can be
> started. My colleagues and I will keep everyone posted on this thread
> and/or on a Github PR as and when we're able to start our work on the same
> (after 4.16, potentially towards 4.17).
> >>
> >>
> >> Regards.
> >>
> >> ________________________________
> >> From: Wei ZHOU <ustcweiz...@gmail.com>
> >> Sent: Friday, September 10, 2021 20:22
> >> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> >> Subject: Re: IPV6 in Isolated/VPC networks
> >>
> >> Agree with Alex.
> >> We only need to know how many /64 are allocated. We do not care how many
> >> ipv6 addresses are used by VMs.
> >>
> >> -Wei
> >>
> >> On Fri, 10 Sept 2021 at 16:36, Alex Mattioli <
> alex.matti...@shapeblue.com>
> >> wrote:
> >>
> >>> Hi Rohit,
> >>>
> >>> I'd go for option 2, don't see a point tracking anything smaller than a
> >>> /64 tbh.
> >>>
> >>> Cheers
> >>> Alex
> >>>
> >>>
> >>>
> >>>
> >>> -----Original Message-----
> >>> From: Rohit Yadav <rohit.ya...@shapeblue.com>
> >>> Sent: 09 September 2021 12:44
> >>> To: dev@cloudstack.apache.org
> >>> Subject: Re: IPV6 in Isolated/VPC networks
> >>>
> >>> Thanks Alex, Kristaps. I've updated the design doc to reflect two
> >>> agreements:
> >>>
> >>>     *   Allocate /64 for both isolated network and VPC tiers, no large
> >>> allocation of prefixes to VPC (cons: more static routing rules for
> upstream
> >>> router/admins)
> >>>     *   All systemvms (incl. ssvm, cpvm, VRs) get IPv6 address if zone
> has a
> >>> dedicated /64 prefix/block for systemvms
> >>>
> >>> The only outstanding question now is:
> >>>
> >>>     *   How do we manage IPv6 usage? Can anyone advise how we do IPv6
> usage
> >>> for shared network (design, implementation and use-cases?)
> >>> Option1: We don't do it, all user VMs nics have ipv4 address which
> whose
> >>> usage we don't track. For public VR/nics/networks, we can simply add
> the
> >>> IPv6 details for a related IPv4 address.
> >>> Option2: Implement a separate, first-class IPv6 address or /64 prefix
> >>> tracking/management and usage for all VMs and systemvms nic (this means
> >>> account/domain level limits and new billing/records)
> >>> Option3: other thoughts?
> >>>
> >>>
> >>> Regards.
> >>>
> >>> ________________________________
> >>> From: Alex Mattioli <alex.matti...@shapeblue.com>
> >>> Sent: Wednesday, September 8, 2021 23:24
> >>> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> >>> Subject: RE: IPV6 in Isolated/VPC networks
> >>>
> >>> Hi Rohit, Kristaps,
> >>>
> >>> I'd say option 1 as well,  it does create a bit more overhead with
> static
> >>> routes but if that's automated for a VPC it can also be easily
> automated
> >>> for several tiers of a VPC.  We also don't constrain the amount of
> tiers in
> >>> a  VPC.
> >>> It has the added advantage to be closer to the desired behaviour with
> >>> dynamic routing in the future, where a VPC VR can announce several
> subnets
> >>> upstream.
> >>>
> >>> Cheers
> >>> Alex
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> -----Original Message-----
> >>> From: Rohit Yadav <rohit.ya...@shapeblue.com>
> >>> Sent: 08 September 2021 19:04
> >>> To: dev@cloudstack.apache.org
> >>> Subject: Re: IPV6 in Isolated/VPC networks
> >>>
> >>> Hi Kristaps,
> >>>
> >>> Thanks for sharing, I suppose that means individual tiers should be
> >>> allocated /64 instead of larger ipv6 blocks to the whole VPC which
> could
> >>> cause wastage.
> >>>
> >>> Any objection from anybody?
> >>>
> >>> Regards.
> >>> ________________________________
> >>> From: Kristaps Cudars <kristaps.cud...@gmail.com>
> >>> Sent: Wednesday, September 8, 2021 9:24:01 PM
> >>> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> >>> Subject: Re: IPV6 in Isolated/VPC networks
> >>>
> >>> Hello,
> >>>
> >>> I asked networking team to comment on "How should the IPv6
> >>> block/allocation work in VPCs?"
> >>> Option1: They haven't seen lately devices with limits on how many
> static
> >>> routes can be created.
> >>> Option2: With /60 and /62 assignments and big quantity of routers IPv6
> >>> assignment from RIPE NNC can be drained fast.
> >>>
> >>> /48 contains 64000 /64
> >>> /60 contains 16 /64
> >>> 64000 / 16 = 4000 routers
> >>>
> >>>
> >>> On 2021/09/07 11:59:09, Rohit Yadav <rohit.ya...@shapeblue.com> wrote:
> >>>> All,
> >>>>
> >>>> After another iteration with Alex, I've updated the design doc. Kindly
> >>> review:
> >>>>
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/IPv6+Support+in
> >>>> +Isolated+Network+and+VPC+with+Static+Routing
> >>>>
> >>>>
> >>>> ... and advise on some outstanding questions:
> >>>>
> >>>>     *   How should the IPv6 block/allocation work in VPCs?
> >>>> Option1: Should this be simply /64 allocation on any new tier, the
> >>>> cons of this option is one static route/rule per VPC tier. (many
> >>>> upstream routers may have limit on no. of static routes?)
> >>>> Option2: Let user ask/specify tier size, say /60 (for 16 tiers) or /62
> >>> (4 tiers) for the VPC, this can be filtered based on the
> vpc.max.networks
> >>> global setting (3 is default). The pros of this option are less no. of
> >>> static route/rule and easy programming, but potential wastage of
> multiple
> >>> /64 prefix blocks for unused/uncreated tiers.
> >>>>     *   How do we manage IPv6 usage? Can anyone advise how we do IPv6
> >>> usage for shared network (design, implementation and use-cases?)
> >>>> Option1: We don't do it, all user VMs nics have ipv4 address which
> whose
> >>> usage we don't track. For public VR/nics/networks, we can simply add
> the
> >>> IPv6 details for a related IPv4 address.
> >>>> Option2: Implement a separate, first-class IPv6 address or /64 prefix
> >>> tracking/management and usage for all VMs and systemvms nic (this means
> >>> account/domain level limits and new billing/records)
> >>>>     *   Enable IPv6 on systemvms (specifically SSVM and CPVM) by
> default
> >>> if zone has a IPv6 address block allocated/assigned for use for
> systemvms
> >>> (this was mainly thought for VRs, but why no ssvm and cpvms too - any
> cons
> >>> of this?)
> >>>>     *
> >>>>
> >>>> Regards.
> >>>>
> >>>> ________________________________
> >>>> From: Rohit Yadav <rohit.ya...@shapeblue.com>
> >>>> Sent: Thursday, August 19, 2021 15:45
> >>>> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> >>>> Subject: Re: IPV6 in Isolated/VPC networks
> >>>>
> >>>> Hi all,
> >>>>
> >>>> I've taken feedback from this thread and wrote this design doc:
> >>>>
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/IPv6+Support+in
> >>>> +Isolated+Network+and+VPC+with+Static+Routing
> >>>>
> >>>> Kindly review and advise if I missed anything or anything that needs
> to
> >>> be changed/updated. You may comment on the wiki directly too.
> >>>>
> >>>> Kindly suggest your views on the following (also in the design doc
> >>> above):
> >>>>
> >>>> Outstanding Questions:
> >>>>
> >>>>     *   Should admin or user be able to specify how VPC super CIDRs
> are
> >>> created/needed; for example a user can ask for VPC with /60 super
> CIDR? Or
> >>> should CloudStack automatically find/allocate a /64 for a new VPC tier
> from
> >>> the root-admin configured /64-/48 block?
> >>>>     *   Should we explore FRR and iBGP or other strategies to do
> dynamic
> >>> routing which may not require advance/complex configuration in the VR
> or
> >>> for the users/admin?
> >>>>     *   With SLAAC and no dhcpv6, is there a way to support secondary
> IPv6
> >>> addresses (or floating IPv6 addresses for VR/public traffic) for guest
> VM's
> >>> nics?
> >>>>     *   Any thoughts on UI/UX for firewall/routing management?
> >>>>     *   Any other feature/support for isolated network or VPC feature
> that
> >>> must be explored or supported such as PF, VPN, LB, vpc static routes,
> vpc
> >>> gateway etc.
> >>>>     *   For usage - should we have any consideration, or should we
> assume
> >>> that IPv4 and IPv6 address will go together for every nic; so IPv6
> usage
> >>> for a nic is in tandem with Ipv4 address for a nic, i.e. no
> explicit/new
> >>> biling/usage needed?
> >>>>     *   For smoketests, local dev-test should we explore ULA? Unique
> Local
> >>> Address - in the range fc00::/7. Typically only within the 'local' half
> >>> fd00::/8. ULA for IPv6 is analogous to IPv4 private network addressing.
> >>> This prefix can be randomly generated at first install by CloudStack
> in a
> >>> zone using zoneid etc?
> >>>>     *   Should we expand support for VR diagnostic feature to include
> >>> support for ipv6, traceroute6?
> >>>>     *   Discuss - expand support/ability to allocate a /60, or /56 etc
> >>> prefix to an individual VM in shared network (Wido's suggestion)
> >>>>
> >>>>
> >>>> Regards.
> >>>>
> >>>> ________________________________
> >>>> From: Wei ZHOU <ustcweiz...@gmail.com>
> >>>> Sent: Tuesday, August 17, 2021 21:16
> >>>> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> >>>> Subject: Re: IPV6 in Isolated/VPC networks
> >>>>
> >>>> Thanks Kristaps, Wido, Rohit and Alex for your replies.
> >>>>
> >>>> I am fine with not having stateful dhcpv6 and privacy
> >>>> extension/temporary address in phase 1. If community decides not to do
> >>>> eventually , it is also ok to me.
> >>>>
> >>>> We could explore how to better use secondary ipv6 addresses as Wido
> >>>> advised. It would be great if anyone share some user experience.
> >>>>
> >>>> -Wei
> >>>>
> >>>>
> >>>> On Tuesday, 17 August 2021, Kristaps Cudars
> >>>> <kristaps.cud...@gmail.com>
> >>>> wrote:
> >>>>
> >>>>> Hi Wei,
> >>>>>
> >>>>> Published this month's RFC 9099 and explains in different
> >>>>> words/perspective what has been written by Alex, Rohit and Wido.
> >>>>> https://www.rfc-editor.org/rfc/rfc9099.html
> >>>>>
> >>>>>
> >>>>> On 2021/08/17 09:20:21, Wei ZHOU <ustcweiz...@gmail.com> wrote:
> >>>>>> Hi Wido,
> >>>>>>
> >>>>>> (cc to Rohit and Alex)
> >>>>>>
> >>>>>> It is a good suggestion to use FRR for ipv6. The configuration is
> >>>>>> quite simple and the VMs can get SLAAC, routes, etc.
> >>>>>>
> >>>>>> Privacy extension looks not the same as what you mentioned. see
> >>>>>> https://datatracker.ietf.org/doc/html/rfc4941
> >>>>>>
> >>>>>> You are right. To use static routing, the admins need to configure
> >>>>>> the routes in the upstream router, and add some ipv6 ranges (eg
> >>>>>> /56 for VPCs and /64 for isolated networks) and their next-hop
> >>>>>> (which will be configured in VRs) in CloudStack. CloudStack will
> >>>>>> pick up an IPv6 range
> >>>>> and
> >>>>>> assign it to an isolated network or vpc. @Rohit, correct me if I'm
> >>> wrong.
> >>>>>>
> >>>>>> I have a question, it looks stateless dhcpv6 (SLAAC from
> >>>>>> router/VR, router/dns etc via RA messages) will be the only option
> >>>>>> for now (related
> >>>>> to
> >>>>>> your pr https://github.com/apache/cloudstack/pull/3077) . Would it
> >>>>>> be
> >>>>> good
> >>>>>> to provide stateful dhcpv6 (which can be implemented by dnsmasq)
> >>>>>> as an option in cloudstack ? The advantages are
> >>>>>> (1) support other ipv6 cidr sizes than /64.
> >>>>>> (2) we can assign a specified Ipv6 address to a vm. vm Ipv6
> >>>>>> addresses can be changed
> >>>>>> (4) an Ipv6 addresses can be re-used by multiple vms.
> >>>>>> The problem is, stateful dhcpv6 does not support
> >>>>>> routers,nameservers,
> >>>>> etc.
> >>>>>> we need to figure it out (probably use radvd/frr and dnsmasq both).
> >>>>>>
> >>>>>> -Wei
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
>
>
> > On Fri, 13 Aug 2021 at 12:19, Wido den Hollander <w...@widodh.nl> wrote:
> >>>>>>
> >>>>>>> Hi,
> >>>>>>>
> >>>>>>> See my inline responses:
> >>>>>>>
> >>>>>>> Op 11-08-2021 om 14:26 schreef Rohit Yadav:
> >>>>>>>> Hi all,
> >>>>>>>>
> >>>>>>>> Thanks for your feedback and ideas, I've gone ahead with
> >>>>>>>> discussing
> >>>>> them
> >>>>>>> with Alex and came up with a PoC/design which can be implemented
> >>>>>>> in the following phases:
> >>>>>>>>
> >>>>>>>>      *   Phase1: implement ipv6 support in isolated networks and
> >>> VPC
> >>>>> with
> >>>>>>> static routing
> >>>>>>>>      *   Phase2: discuss and implement support for dynamic routing
> >>>>> (TBD)
> >>>>>>>>
> >>>>>>>> For Phase1 here's the high-level proposal:
> >>>>>>>>
> >>>>>>>>      *   IPv6 address management:
> >>>>>>>>         *   At the zone level root-admin specifies a /64 public
> >>> range
> >>>>> that
> >>>>>>> will be used for VRs, then they can add a /48, or /56 IPv6 range
> >>>>>>> for
> >>>>> guest
> >>>>>>> networks (to be used by isolated networks and VPC tiers)
> >>>>>>>>         *   On creation of any IPv6 enabled isolated network or
> VPC
> >>>>> tier,
> >>>>>>> from the /48 or /56 block a /64 network is allocated/used
> >>>>>>>>         *   We assume SLAAC and autoconfiguration, no DHCPv6 in
> the
> >>>>> zone
> >>>>>>> (discuss: is privacy a concern, can privacy extensions rfc4941
> >>>>>>> of
> >>>>> slaac be
> >>>>>>> explored?)
> >>>>>>>
> >>>>>>> Privacy Extensions are only a concern for client devices which
> >>>>>>> roam between different IPv6 networks.
> >>>>>>>
> >>>>>>> If you IPv6 address of a client keeps the same suffix (MAC
> >>>>>>> based) and switches network then only the prefix (/64) will change.
> >>>>>>>
> >>>>>>> This way a network like Google, Facebook, etc could track your
> >>>>>>> device moving from network to network if they only look at the
> >>>>>>> last 64-bits of the IPv6 address.
> >>>>>>>
> >>>>>>> For servers this is not a problem as you already know in which
> >>>>>>> network they are.
> >>>>>>>
> >>>>>>>>      *   Network offerings: root-admin can create new network
> >>> offerings
> >>>>>>> (with VPC too) that specifies a network stack option:
> >>>>>>>>         *   ipv4 only (default, for backward compatibility all
> >>>>>>> networks/offerings post-upgrade migrate to this option)
> >>>>>>>>         *   ipv4-and-ipv6
> >>>>>>>>         *   ipv6-only (this can be phase 1.b)
> >>>>>>>>         *   A new routing option: static (phase1), dynamic
> (phase2,
> >>>>> with
> >>>>>>> multiple sub-options such as ospf/bgp etc...)
> >>>>>>>
> >>>>>>> This means that the network admin will need to statically route
> >>>>>>> the
> >>>>> IPv6
> >>>>>>> subnet to the VR's outside IPv6 address, for example, on a JunOS
> >>>>> router:
> >>>>>>>
> >>>>>>> set routing-options rib inet6.0 static route 2001:db8:500::/48
> >>>>>>> next-hop
> >>>>>>> 2001:db8:100::50
> >>>>>>>
> >>>>>>> I'm assuming that 2001:db8:100::50 is the address of the VR on
> >>>>>>> the outside (/64) network. In reality this will probably be a
> >>>>>>> longer address, but this is for just the example.
> >>>>>>>
> >>>>>>>>      *   VR changes:
> >>>>>>>>         *   VR gets its guest and public nics set to inet6 auto
> >>>>>>>>         *   For each /64 allocated to guest network and VPC tiers,
> >>>>> radvd
> >>>>>>> is configured to do RA
> >>>>>>>
> >>>>>>> radvd is fine, but looking at phase 2 with dynamic routing you
> >>>>>>> might already want to look into FRRouting. FRR can also
> >>>>>>> advertise RAs while not doing any routing.
> >>>>>>>
> >>>>>>> interface ens4
> >>>>>>>      no ipv6 nd suppress-ra
> >>>>>>>      ipv6 nd prefix 2001:db8:500::/64
> >>>>>>>      ipv6 nd rdnss 2001:db8:400::53 2001:db8:200::53
> >>>>>>>
> >>>>>>> See: http://docs.frrouting.org/en/latest/ipv6.html
> >>>>>>>
> >>>>>>>>         *   Firewall: a new ipv6 zone/chain is created for ipv6
> >>> where
> >>>>> ipv6
> >>>>>>> firewall rules (ACLs, ingress, egress) are implemented; ACLs
> >>>>>>> between
> >>>>> VPC
> >>>>>>> tiers are managed/implemented by ipv6 firewall on VR
> >>>>>>>
> >>>>>>> Please take a look at the existing security_group.py script
> >>>>>>> which implements RFC4890
> >>>>>>>
> >>>>>>> https://datatracker.ietf.org/doc/html/rfc4890
> >>>>>>>
> >>>>>>> ICMPv6 is a vital part of IPv6 and certain packets should always
> >>>>>>> be allowed.
> >>>>>>>
> >>>>>>>>         *   It is assumed that static routes are created on the
> >>>>> core/main
> >>>>>>> router by the admin or automated using some scripts/tools; for
> >>>>>>> this CloudStack will announce events with details of /64
> >>>>>>> networks and VR's public IPv6 address that can be consumed by a
> >>>>>>> rabbitmq/message bus
> >>>>> client
> >>>>>>> (for example), or a custom cron job or script as part of
> >>> orchestration.
> >>>>>>> (this wouldn't be necessary for dynamic routing bgp with
> >>>>>>> phase2)\\
> >>>>>>>
> >>>>>>> You would only need to announce the /48 or /56 allocated to the
> >>>>>>> VR, that's all. You don't need to inform the upstream router
> >>>>>>> about the /64 subnets created within that larger subnet.
> >>>>>>>
> >>>>>>>>      *   Guest Networking: With SLAAC, it's easy for CloudStack to
> >>>>>>> calculate allocate and use a /64 and determine the IPv6 address
> >>>>>>> of VR
> >>>>> nics
> >>>>>>> and guest VM nics
> >>>>>>>>         *   A user create an isolated network/VPC with an offering
> >>>>> that is
> >>>>>>> ipv6 enabled
> >>>>>>>>         *   A user can manage firewall for the IPv6 address/guest
> >>> nics;
> >>>>>>> there'll be no port forward and LB feature though for IPv6
> >>>>>>>>         *   A users can run workloads in the guest VMs that listen
> >>> on
> >>>>>>> publically routable ipv6 addresses
> >>>>>>>>         *   Usage/billing etc continue to work, no change needed
> >>>>>>>>
> >>>>>>>> Network layout:
> >>>>>>>>
> >>>>>>>> [core/ISP router] -> [VR] -> [guest netwokr or VPC tier on a
> >>>>>>>> VLAN] ->
> >>>>>>> [guest VMs/nics]
> >>>>>>>> *core/ISP router needs static routes to be added (manually or
> >>>>>>> automated), assumes a /48 or /56 configured for the zone
> >>>>>>>>
> >>>>>>>> Thoughts, feedback?
> >>>>>>>
> >>>>>>> Looks doable!
> >>>>>>>
> >>>>>>> Side-note: It would be very cool if you could use parts of this
> >>>>>>> implementation to also route /48, /56, or /60 subnets to
> >>>>>>> individual VMs in Shared networks.
> >>>>>>>
> >>>>>>> Why? This allows for running Docker containers with native IPv6
> >>>>>>> inside the VM or running a (Open)VPN server inside a VM which
> >>>>>>> then assigns public IPv6 addresses to clients connected.
> >>>>>>>
> >>>>>>> Instead of routing the subnet to a VR we route the subnet to a
> >>>>>>> single instance in a shared network.
> >>>>>>>
> >>>>>>> If we could then also move these subnets between Instances
> >>>>>>> easily one can quickly migrate to a different instance while
> >>>>>>> keeping the same IPv6 subnet.
> >>>>>>>
> >>>>>>> Wido
> >>>>>>>
> >>>>>>>>
> >>>>>>>> Proof-of-concept commentary: here's what I did to test the idea:
> >>>>>>>>
> >>>>>>>>      *   Created an isolated network and deployed a VM in my home
> >>> lab
> >>>>>>>> The VR running on KVM has following nics
> >>>>>>>> eth0 - guest network
> >>>>>>>> eth1 - link local
> >>>>>>>> eth2 - public network
> >>>>>>>>
> >>>>>>>>      *   I setup a custom openwrt router on a RPi4 to serve as a
> >>>>> toy-core
> >>>>>>> router where I create a wan6 IPv6 tunnel using tunnel broker and
> >>>>>>> I got
> >>>>> a
> >>>>>>> /48 allocated. My configuration looks like:
> >>>>>>>> /48 - 2001:470:ed36::/48 (allocated by tunnel broker)
> >>>>>>>> /64 - 2001:470:36:3e2::/64 (default allocated by)
> >>>>>>>>
> >>>>>>>> I create a LAN ipv6 (public network for CloudStack VR): at
> >>>>> subnet/prefix
> >>>>>>> 0:
> >>>>>>>> LAN IPv6 address: 2001:470:ed36:0::1/64 Address mode:
> >>>>>>>> SLAAC+stateless DHCP (no dhcpv6)
> >>>>>>>>      *
> >>>>>>>>      *
> >>>>>>>> In the isolated VR, I enabled ipv6 as:
> >>>>>>>> net.ipv6.conf.all.disable_ipv6 = 0
> >>>>>>>> net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.all.accept_ra =
> >>>>>>>> 1 net.ipv6.conf.all.accept_redirects = 1
> >>>>>>>> net.ipv6.conf.all.autoconf = 1
> >>>>>>>>
> >>>>>>>> Set up a IPv6 nameserver/dns in /etc/resolve.conf And
> >>>>>>>> configured the nics:
> >>>>>>>> echo iface eth0 inet6 auto >> /etc/network/interfaces echo
> >>>>>>>> iface eth2 inet6 auto >> /etc/network/interfaces
> >>>>>>>> /etc/init.d/networking restart Next, restart ACS isolated
> >>>>>>>> network without cleanup to have it
> >>>>>>> reconfigure IPv4 nics, firewall, NAT etc
> >>>>>>>>
> >>>>>>>>      *
> >>>>>>>> Next, I created a /64 network for the isolated guest network
> >>>>>>>> on eth0
> >>>>> of
> >>>>>>> VR using radvd:
> >>>>>>>>
> >>>>>>>> # cat /etc/radvd.conf
> >>>>>>>> interface eth0
> >>>>>>>> {
> >>>>>>>>        AdvSendAdvert on;
> >>>>>>>>        MinRtrAdvInterval 5;
> >>>>>>>>        MaxRtrAdvInterval 15;
> >>>>>>>>        prefix 2001:470:ed36:1::/64
> >>>>>>>>        {
> >>>>>>>>            AdvOnLink on;
> >>>>>>>>            AdvAutonomous on;
> >>>>>>>>        };
> >>>>>>>> };
> >>>>>>>> systemctl restart radvd
> >>>>>>>> All guest VMs nics and VR's eth0 gets IPv6 address (SLAAC) in
> >>>>>>>> this
> >>>>>>> ...:1::/64 network
> >>>>>>>>      *   Finally I added a static route in toy core-router for the
> >>> new
> >>>>> /64
> >>>>>>> IPv6 range in the isolated network
> >>>>>>>> 2001:470:ed36:1::/64 via <public IPv6 address of the VR on
> >>>>>>>> eth2> dev
> >>>>>>> <local lan nic>
> >>>>>>>>      *
> >>>>>>>> ... and I enabled firewall rules to allow any traffic to pass
> >>>>>>>> for the
> >>>>>>> new /64 network
> >>>>>>>>
> >>>>>>>> And voila all done! I create a domain AAAA record that points
> >>>>>>>> to my
> >>>>>>> guest VM IPv6 address a test webserver on
> >>>>>>>> http://ipv6-isolated-ntwk-demo.yadav.cloud/
> >>>>>>>>
> >>>>>>>> (Note: I'll get rid of the tunnel and request a new /48 block
> >>>>>>>> after a
> >>>>>>> few days, sharing this solely for testing purposes)
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Regards.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>>
> >>
> >
>

Reply via email to