This article will discuss a simple way to establish a L2 xconnect
between a cisco 2811 and Linux.
This feature uses a newer version of iproute2 and the l2tpv3 tunnels.
Because the Cisco 2811 only does IP and not UDP encapsulation, we
have to specify that during the creation of the tunnel. Also the
L2Spec header has to be specified as "none" during the creation
of the session.
From experimenting around, it seems that the only values that must
match on the endpoints are the L2TPv3 session IDs. The packet
transmitted includes the session ID of the recipient, so each end
must be configured with a local session ID that matches the other
end's remote or peer session ID.
First we set up the Linux machine as follows with a local session
id of 103 and a remote session id of 301.
Then we configure the router with a local session id of 301 and
a remote session id of 103. It appears that the xconnect vcid
does not matter. We also configure the switch connected to f0/1
with an IP address.
It seems that for this type of xconnect, it is always shown as up.
It may be desired to configure some tracking object to ensure that
if access to the remote IP is lost, the xconnected interface is
shown as down.
From the switch, we are able to ping the IP address on the interface
in Linux.
A packet capture shows the captured frame. We can see that the only
L2TPv3 value transmitted is the Session ID of the recipient. There
isn't another field indicating the packet type when using IP
encapsulation in L2TPv3. If the session ID is 0, then it is assumed
the packet type is a control packet, otherwise a data packet. When
the frame goes from Linux to Cisco, the value is 301 and when it
goes from Cisco to Linux the value is 103.