Description

L2TP session fails as LCP packet sent to the CPE having l2tp header.

Symptoms

Customer reported that when using MX204 as the L2TP LAC, it failed to establish l2tp session with MX LNS.

TCPDUMP found The LCP packet sending to the CPE has an extra L2TP header as showing below.


No.     Time           Source                Destination           Protocol Length Info
     23 18.011510      192.168.1.5           100.104.0.1           PPP PAP  79     Authenticate-Ack (Message='')

Frame 23: 79 bytes on wire (632 bits), 79 bytes captured (632 bits) on interface \\.\pipe\view_capture_10-219-45-203_8_3_06172024_232827, id 0
Ethernet II, Src: JuniperN_ec:94:56 (f0:4b:3a:ec:94:56), Dst: Performa_00:da:d3 (00:10:94:00:da:d3)
802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 1500
802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 1
PPP-over-Ethernet Session
Point-to-Point Protocol
Internet Protocol Version 4, Src: 192.168.1.5, Dst: 100.104.0.1    <<<<< This is not correct with L2TP header
User Datagram Protocol, Src Port: 1701, Dst Port: 1701
Layer 2 Tunneling Protocol
Point-to-Point Protocol
PPP Password Authentication Protocol


Further Investigation has found the problem is hit under the following conditions.

  1. "ppp-options initiate-ncp ipv6" and dual-stack is configure in the PPPoE dynamic-profile
  2. Radius returned "Framed-IPv6-Prefix" and "IPv6-Delegated-Prefix" attributes

Example of the dynamic-profile as this.

[dynamic-profiles DEMUX-PPPOE]

routing-instances {

  "$junos-routing-instance" {

    interface "$junos-interface-name" {

      any;

    }

    routing-options {

      rib "$junos-ipv6-rib" {

        access {

          route $junos-framed-route-ipv6-address-prefix {

            qualified-next-hop "$junos-interface-name";

            metric "$junos-framed-route-ipv6-cost";

          }

        }            

      }

      access {

        route $junos-framed-route-ip-address-prefix {

          next-hop "$junos-framed-route-nexthop";

          metric "$junos-framed-route-cost";

        }

      }

      access-internal {

        route $junos-subscriber-ip-address {

          qualified-next-hop "$junos-interface-name";

        }

      }

    }

  }

}

interfaces {

  pp0 {

    unit "$junos-interface-unit" {

      actual-transit-statistics;

      no-traps;

      ppp-options {

        chap;

        pap;           

        authentication [ pap chap ];

        initiate-ncp {

          ip;

          ipv6; <<<<<<<<<<<<< Active Mode

        }

      }

      pppoe-options {

        underlying-interface "$junos-underlying-interface";

        server;

      }

      keepalives interval 30;

      family inet {

        unnumbered-address "$junos-loopback-interface";

      }

      family inet6 {

        unnumbered-address "$junos-loopback-interface";

      }

    }

  }

}

protocols {

  router-advertisement {

    interface "$junos-interface-name" {

      managed-configuration;

      other-stateful-configuration;

      link-mtu;

      solicit-router-advertisement-unicast;

      prefix $junos-ipv6-ndra-prefix {

        valid-lifetime 14400;

        on-link;

        preferred-lifetime 14400;

      }

    }

  }

}


Example of the FreeRADIUS configure:

DEFAULT User-Name == "[email protected]", Cleartext-Password := "password"

    Delegated-IPv6-Prefix = 2403:4800:1:100::/56,

    Framed-IPv6-Prefix = 2403:4800:2ff:1::ce01/128,

    Framed-IPv6-Prefix = 2403:4800:2ff:1::/64


Solution

This problem is fixed via PR1817847.

Modification History

2024-10-22 : Article Created