Appendix F. Supported L2TP Attribute/Value Pairs

This appendix details the L2TP protocol messages supported, and the attribute/value pairs (AVPs) which are sent and expected for each message.

F.1. Start-Control-Connection-Request

Table F.1. SCCRQ

AVPNo.IncomingOutgoing
Message Type0Value 1Value 1
Protocol Version2Mandatory, value 1 expectedValue 1
Framing Capabilities3IgnoredValue 3
Bearer Capabilities4IgnoredNot sent
Tie Breaker5Ignored as FireBrick only accepts connections for inbound callsNot sent
Firmware Revision6IgnoredFireBrick s/w version string
Host Name7Used to select which incoming L2TP configuration applies.As per config/RADIUS request
Vendor Name8IgnoredFireBrick Ltd
Assigned Tunnel ID9MandatoryMandatory, our tunnel ID
Receive Window Size10Accepted, assumed 4 if not present or less than 4 is specifiedValue 4
Challenge11Accepted if a configured secret is defined, a response is sent in the SCCRPNot sent at present

F.2. Start-Control-Connection-Reply

Table F.2. SCCRP

AVPNo.IncomingOutgoing
Message Type0Value 2Value 2
Protocol Version2Value 1 expectedValue 1
Framing Capabilities3IgnoredValue 3
Bearer Capabilities4IgnoredNot sent
Firmware Revision6IgnoredFireBrick s/w ID number
Host Name7Logged as hostname for tunnelConfigured hostname, if defined
Vendor Name8IgnoredFireBrick Ltd
Assigned Tunnel ID9Expected as far end IDMandatory, our tunnel ID
Receive Window Size10Accepted, assimed 4 if not present or less than 4Not sent, assume 4
Challenge11Accepted if a configured secret is defined, a response is sent in the SCCCNNot sent at present
Challenge Response13Not expected at presentSent if SCCRQ contained a challenge and we have a secret defined

F.3. Start-Control-Connection-Connected

Table F.3. SCCCN

AVPNo.IncomingOutgoing
Message Type0Value 3Value 3
Challenge Response13Not expectedSent if was challenged

F.4. Stop-Control-Connection-Notification

Table F.4. StopCCN

AVPNo.IncomingOutgoing
Message Type0Value 4Value 4
Result Code1Ignored (logged)Sent as appropriate for tunnel close
Assigned Tunnel ID9Expected, see noteSent if a tunnel has been allocated

Note that a StopCCN may not have a zero tunnel ID in the header. If this is the case the source IP, port and assigned tunnel are used to identify the tunnel.

If an unknown tunnel ID is received on any any incoming packet a StopCCN is generated (once per 10 seconds) with header tunnel ID 0 and specified assigned tunnel ID.

F.5. Hello

Table F.5. HELLO

AVPNo.IncomingOutgoing
Message Type0Value 6Value 6

Always responded to. Sent periodically if no other messages sent.

F.6. Incoming-Call-Request

Table F.6. ICRQ

AVPNo.IncomingOutgoing
Message Type0Value 10Value 10
Assigned Session ID14MandatoryMandatory, our session ID
Call Serial Number15Accepted and passed on if relayingPassed on incoming value
Bearer Type18IgnoredNot sent
Called Number21Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Calling Number22Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Sub-Address23IgnoredNot sent
Physical Channel ID25IgnoredNot sent

F.7. Incoming-Call-Reply

Table F.7. ICRP

AVPNo.IncomingOutgoing
Message Type0Value 11Value 11
Assigned Session ID14MandatoryMandatory

F.8. Incoming-Call-Connected

Table F.8. ICCN

AVPNo.IncomingOutgoing
Message Type0Value 12Value 12
Framing Type19Ignored1
Tx Connect Speed24Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Initial Received LCP CONFREQ26IgnoredNot sent
Last Sent LCP CONFREQ27Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Last Received LCP CONFREQ28Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen Type29Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen Name30Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen Challenge31Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen ID32Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen Response33Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Private Group ID37IgnoredNot sent
Rx Connect Speed38Accepted, used in RADIUS and passed on if relayingPassed on incoming value
Sequencing Required39Accepted on honouredNot sent

F.9. Outgoing-Call-Request

Table F.9. OCRQ

AVPNo.IncomingOutgoing
Message Type0Value 7Value 7

Not supported, ignored.

F.10. Outgoing-Call-Reply

Table F.10. OCRP

AVPNo.IncomingOutgoing
Message Type0Value 8Value 8

Not supported, ignored.

F.11. Outgoing-Call-Connected

Table F.11. OCCN

AVPNo.IncomingOutgoing
Message Type0Value 9Value 9

Not supported, ignored.

F.12. Call-Disconnect-Notify

Table F.12. CDN

AVPNo.IncomingOutgoing
Message Type0Value 14Value 14
Result Code1Ignored (logged)Sent as appropriate for tunnel close
Q.931 Cause Code12IgnoredNot sent
Assigned Session ID14Expected, see noteSent if assigned

Note that a CDN may have a zero session ID in the header. If this is the case the tunnel ID and assigned session ID are used to identify the session.

If an unknown session ID on a known tunnel ID is received on any any incoming packet a CDN is generated with header session ID 0 and specified assigned session ID.

F.13. WAN-Error-Notify

Table F.13. WEN

AVPNo.IncomingOutgoing
Message Type0Value 15Value 15

Not supported, ignored.

F.14. Set-Link-Info

Table F.14. SLI

AVPNo.IncomingOutgoing
Message Type0Value 16Value 16

Not supported, ignored.

F.15. Notes

F.15.1. BT specific notes

The L2TP and PPP specifications are clear that the HDLC framing bytes are not sent or received within the L2TP packet. However, BT send type bytes (FF03) on the start of all PPP frames. This is silently discarded. Also, BT will not process packets if these type bytes are not included in outgoing packets. Sending the HDLC framing can be controlled in the config and on a per session basis using a Filter-Id in RADIUS authentication response.

BT sometimes negotiate incorrect MRUs on behalf of the LNS. Where the L2TP proxy details indicate and incorrect MRU has been negotiated then LCP negotiation is restarted and the correct MRU negotiates. This helps avoid various issues with fragmentation on some services on the internet when the broadband fully supports 1500 byte MTU. This is also relevant where the FB6000 is deliberately configured to use a smaller MRU for example when the L2TP connection is remote via a 1500 MTU link.

There are options using Filter-Id from RADIUS to force LCP restart. However this does confuse some ppp implementations as it is after authentication is complete. This can be useful where BT have provided an incorrect MRU for the end user (another bug). There is also an option to forward 1500 byte packets rather than fragmenting them. When enabled ICMP is still generated for DF and IPv6.

F.15.2. IP over LCP

IP over LCP is a non standard coding of PPP packets for IPv4 and IPv6. The coding uses the LCP code (C021) instead of the IPv4 (0021) or IPv6 (0057) code. The first byte which would normally be the LCP type is 0x4X (IPv4) or 0x6X (IPv6). The FireBrick assumes any such LCP codes are IPv4/IPv6 when received, and using a RADIUS response can send IP packets using LCP. This is specifically to bypass any carrier IP specific shaping or DPI.