FireBrick

FireBrick - Firewalls, Bonding ADSL, Routers, Traffic Shaping...

FireBrick FB6000
FireBrick FB6000

L2TP interface specification

Please noteThis is a draft document and not yet released

The FireBrick operates as an L2TP/RADIUS LNS supporting incoming connections and termination as well as L2TP relay. Connections are authenticated using RADIUS and provide RADIUS accounting.

L2TP interface

Start-Control-Connection-Request (SCCRQ)

AVPIncomingOutgoing
Protocol VersionMandatory, value 1 expectedValue 1
Host NameUsed to select which incoming L2TP configuration applies.As per config/RADIUS request
Framing CapabilitiesIgnored3
Assigned Tunnel IDMandatoryMandatory, our tunnel ID
Bearer CapabilitiesIgnoredNot sent
Receive Window SizeAccepted, assumed 4 if not present or less than 4 is specifiedValue 4
ChallengeAccepted if a configured secret is defined, a response is sent in the SCCRPNot sent at present
Tie BreakerIgnored as FireBrick only accepts connections for inbound callsNot sent
Firmware RevisionIgnoredFireBrick s/w version string
Vendor NameIgnoredFireBrick Ltd

Start-Control-Connection-Reply (SCCRP)

AVPIncomingOutgoing
Protocol VersionValue 1 expectedValue 1
Framing CapabilitiesIgnored3
Host NameLogged as hostname for tunnelConfigured hostname, if defined
Assigned Tunnel IDExpected as far end IDMandatory, our tunnel ID
Bearer CapabilitiesIgnoredNot sent
Firmware RevisionIgnoredFireBrick s/w version string
Vendor NameIgnoredFireBrick Ltd
Receive Window SizeAccepted, assimed 4 if not present or less than 4Not sent, assume 4
ChallengeAccepted if a configured secret is defined, a response is sent in the SCCCNNot sent at present
Challenge ResponseNot expected at presentSent if SCCRQ contained a channel and we have a secret defined

Start-Control-Connection-Connected (SCCCN)

AVPIncomingOutgoing
Challenge ResponseNot expectedSent if was challenged

Stop-Control-Connection-Notification (StopCCN)

AVPIncomingOutgoing
Assigned Tunnel IDExpected, see noteSent if a tunnel has been allocated
Result CodeIgnored (logged)Sent as appropriate for tunnel close

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.

Hello (HELLO)

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

Incoming-Call-Request (ICRQ)

AVPIncomingOutgoing
Assigned Session IDMandatoryMandatory, our session ID
Call Serial NumberAccepted and passed on if relayingPassed on incoming value
Bearer TypeIgnoredNot sent
Physical Channel IDIgnoredNot sent
Calling NumberAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Called NumberAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Sub-AddressIgnoredNot sent

Incoming-Call-Reply (ICRP)

AVPIncomingOutgoing
Assigned Session IDMandatoryMandatory

Incoming-Call-Connected (ICCN)

AVPIncomingOutgoing
Tx Connect SpeedAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Framing TypeIgnored1
Initial Received LCP CONFREQIgnoredNot sent
Last Sent LCP CONFREQAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Last Received LCP CONFREQAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen TypeAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen NameAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen ChallengeAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen IDAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Proxy Authen ResponseAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Private Group IDIgnoredNot sent
Rx Connect SpeedAccepted, used in RADIUS and passed on if relayingPassed on incoming value
Sequencing RequiredAccepted on honouredNot sent

Outgoing-Call-Request (OCRQ)

Not supported, ignored

Outgoing-Call-Reply (OCRP)

Not supported, ignored

Outgoing-Call-Connected (OCCN)

Not supported, ignored

Call-Disconnect-Notify (CDN)

Note that a CDN may not 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.

AVPIncomingOutgoing
Result CodeIgnored (logged)Sent as appropriate for tunnel close
Assigned Session IDExpected, see noteSent if assigned
Q.931 Cause CodeIgnoredNot sent

WAN-Error-Notify (WEN)

Not supported, ignored

Set-Link-Info (SLI)

Not supported, ignored

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 (FF 03) 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.

Native IPv6 packets sent via some BT 20CN RASs fail if the packet length is under 72 bytes. All short IPv6 native packets are PPP padded to this minimum to work around this bug.