Using MPD 5.3 as an LNS with IPv6

Terry Froy
  • Terry Froy

    Terry Froy - 2009-09-06


    First-time MPD (and FreeBSD!) user here but lots of extensive experience with Linux which appears to have carried over well to FreeBSD so far.

    I own and operate a small ISP in the United Kingdom which provides ADSL services among other things - reason for testing out MPD is because our current software, l2tpns, is no longer actively maintained and the multilink support is something which we want to utilize.

    Anyway, obligatory version information:

    FreeBSD 8.0-BETA3 (this is pre-production machine - will be doing a clean install of 8.0 when it is released)
    MPD 5.3

    I am hesitant to say that I have found 'bugs' in MPD as I am far too new to the software and the FreeBSD way of doing things to say otherwise; although, I am also aware that after searching the forums and Google for various combinations of the terms 'mpd ipv6' that very few people use it with IPv6 and even less are likely to be using it as a PPTP server/LNS supplying IPv6 connectivity to users.

    My primary question is the 'set iface enable ipv6cp' functionality - from my tests, it hands out a link-local IPv6 address based on the prefix assigned to the ng0 interface; my IPv6-enabled CPE can ping the FreeBSD box so this works fine.

    l2tpns allows the server admin to allocate a globally-routable IPv6 address to the WAN interface of the CPE; for example, in l2tpns' config, you can do the following:

    set ipv6_prefix 2a01:568:10::

    Upon successful PPP negotiation, it will send an IPv6 RA to the users' CPE which will then place the IPv6 address that is advertised via an RA on its' WAN interface.

    Using 'set ipv6_prefix', l2tpns allows the router to be accessed via its' WAN interface but with the current MPD way of doing things it means that the router only gets a link-local address.

    Is there any possibility of implementing such a feature so an IPv6 prefix can be specified in mpd.conf (and ideally via RADIUS using Framed-IPv6-Prefix) and a globally-routable IPv6 address based on that prefix is advertised to the CPE - this is what the results would look like on a Cisco 837 w/ IPv6-enabled IOS:

    noc-adsl#show ipv6 interface Dialer0
    Dialer0 is up, line protocol is up
      IPv6 is enabled, link-local address is FE80::4F62:2300:0:0
      Global unicast address(es):
        2A01:568:12:0:4F62:2300::, subnet is 2A01:568:12::/64 [PRE]
          valid lifetime 2591892 preferred lifetime 604692

    As you can see, the global address is based on the IPv4 address handed out by RADIUS or the IP pool; so, code-wise, I would consider it a very simple feature to implement.

    In an attempt to replicate this functionality, I tried to hard-code a 'set iface addrs 2a01:568:12::1 2a01:568:12:0:4f62:2300::' in mpd.conf to see if that could produce functionally-similar results - as I guessed, it did not - which makes me wonder why the ChangeLog says that the 'set iface addrs' command now supports IPv6 when it didn't assign the remote address to the IPv6 CPE nor did it assign the local address to the 'ng0' interface on the FreeBSD box.

    That may be because I am running 8.0-BETA3 but then again, it may not be - thought I ought to mention it anyway.

    Alexander: I am happy to spend time on this and work with you on improving the IPv6 support in MPD to include this feature; as it stands, it is very nearly there - only IPv6 RA support is missing!

    If you wish to communicate via e-mail on this topic, let me know via reply to this thread and I will contact you using your e-mail address published in the MPD source.

    Thanks in advance!

    Terry Froy
    Spilsby Internet Solutions

    • Alexander Motin

      Alexander Motin - 2009-09-06

      I am not an IPv6 expert, but AFAIR IPv6CP RFC told that only thing required to be implemented, is a link-level addresses negotiation. It is actually what mpd does.
      AFAIK IPv6 interface addresses on PPP interface should be negotiated same way as for LAN. Correct me if I am wrong, but it looks like not mpd business to do that.

      PS: If you prefer email, welcome. I am reading both.

  • mike tancsa

    mike tancsa - 2010-07-28

    Hi, just starting to look at mpd as an LNS handing out ipv6 as well.  Did you ever make any progress ?

  • Roland Pope

    Roland Pope - 2011-07-04

    While strictly speaking, MPD is only responsible for bringing up the PPP link with Link Local addressing, there seems to currently be no easy way to configure the PPP endpoint Public IPV6  addressing under FreeBSD.

    The two current options RADV and DHCP6 both have limitations in that they require static configuration for address prefix allocation, which does not fit well with the dynamic 'user' based authentication mechanisms in PPP, plus they have to be specifically configured to listen on an interface, which again, is a real issue with dynamic netgraph interfaces.

    What would be ideal from my perspective would be if MPD5 could have the option to function as a DHCP6 server for any PPP interfaces that have negotiated IPV6, and then dish out a prefix based on an MPD user configuration (as is does with IPV4), or use the radius 'Framed-IPV6-Prefix' and 'Framed-Interface-ID' attributes to configure the client via DHCP6 as well as adding static IPV6 routes using the radius 'Framed-IPv6-Route'.
    This would allow ISPs to use radius and mpd together to supply static IPV6 Addressing and routed IPv6 blocks to IPV6 subscribers without needing to run up thousands of copied of staticly configured RADVD or DHCPDS.



Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.

No, thanks