Page MenuHomeVyOS Platform

DHCPv6 PD configuration doesn't really render an expected behavior
Closed, ResolvedPublicBUG

Description

I'm flipping from securityrouter (Halon) to Vyos. Quite happy so far, except for v6 PD from Comcast.

In the attempt to 'simplify' the config, it looks like the project may have introduced some variability. In short, there is no way to include multiple interfaces in a PD statement, nor is there anyway to set the sla-len in the config language that is offered.

I tried to set two interfaces in a PD, which was bounced as invalid (although perfectly valid in the underlying WIDE-dhcp6c daemon). So, I created two PDs, each with one link. Comcast REALLY didn't do well with that (odd prefix sizes and a rapid exhaustion of my PD pool).

I also was getting /59 prefixes (which is what Comcast offers as max on a PD on business class service out of a /56 pool).

To get things working, I went down to one interface, one PD, and set a prefix request of /59, which then the vyos parser converted into an sla-len of 5 in the underlying config, which worked. It still doesn't make multiple PD internal networks work.

I went in and edited the underlying /run/dhcp6c/dhcp6c.eth0.conf file, and wrote a 'standard' dhcp6c config - one PD (length of /60), two interfaces, each with it's own SLA-ID and SLA-LEN (4) and kicked dhcp6c and everything just worked.

I would suggest adding sla-len as an option, and allowing multiple interfaces per PD statement.

Details

Difficulty level
Unknown (require assessment)
Version
1.3 rolling
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Config syntax change (migratable)
Issue type
Improvement (missing useful functionality)

Event Timeline

Hi @liljenstolpe,

which exact VyOS version are you using? Delegating from one interface to many should be doable and can be configured on the latest rolling version.

 ethernet eth0 {
    ...
     dhcpv6-options {
         pd 0 {
             interface eth1 {
                 address 1
                 sla-id 1
             }
             interface eth2 {
                 address 1
                 sla-id 2
             }
             length 60
         }
     }
    ...
}

Which renders:

$ cat /run/dhcp6c/dhcp6c.eth0.conf
### Autogenerated by interface.py ###

# man https://www.unix.com/man-page/debian/5/dhcp6c.conf/
interface eth0 {
    send ia-pd 0; # prefix delegation #0
};


id-assoc pd 0 {
    prefix ::/60 infinity;
    prefix-interface eth1 {
        sla-len 4;
        sla-id 1;
        ifid 1;
    };
    prefix-interface eth2 {
        sla-len 4;
        sla-id 2;
        ifid 1;
    };
};

The sla-len is actually calculated from the given length statement and length defaults to 64 - hope this helps.

c-po changed the task status from Open to Needs testing.Nov 1 2020, 7:19 AM

I can confirm that this is working.

I can only assume that I must have misconfigured something at some point. I was getting an error when I tried to have two client interfaces in one PD.

Not sure what I did, but the error was un-helpful at the time.

I have tried it again, and it is working.

Version:          VyOS 1.3-rolling-202010231135
Release Train:    equuleus

Built by:         autobuild@vyos.net
Built on:         Fri 23 Oct 2020 11:35 UTC
Build UUID:       e61e3d6c-a17e-4087-ad8f-1db33b201dbf
Build Commit ID:  ace5db49415056

Architecture:     x86_64
Boot via:         installed image
System type:      bare metal

Hardware vendor:  PC Engines
Hardware model:   PC Engines apu4
Hardware S/N:     Unknown
Hardware UUID:    Unknown

Copyright:        VyOS maintainers and contributors
erkin set Issue type to Improvement (missing useful functionality).Aug 29 2021, 12:25 PM
erkin removed a subscriber: Active contributors.