diff --git a/draft-ietf-lsvr-l3dl.xml b/draft-ietf-lsvr-l3dl.xml
index 03e6418..4b158e7 100644
--- a/draft-ietf-lsvr-l3dl.xml
+++ b/draft-ietf-lsvr-l3dl.xml
@@ -493,7 +493,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
Datagrams, see .
@@ -501,13 +501,13 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type | Payload Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Payload ... ~
+| PDU Type | Payload Length ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | Payload ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
+~ Signature |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -540,9 +540,9 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
The type of the Signature. Type 0, a null
signature, is defined in this document.
- Sig Type 0 indicates a null Signature. For very short PDUs,
- the underlying Datagram checksums may be sufficient for integrity,
- if not for authentication.
+ Sig Type 0 indicates a null Signature. For a trivial PDU such
+ as KEEPALIVE, the underlying Datagram checksum may be sufficient
+ for integrity, though it lacks authentication.Other Sig Types may be defined in other documents.
@@ -621,6 +621,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
layer-3 routing protocols as being learned on the corresponding
layer-3 SVI interface for the VLAN.
+ LLEIs are big-endian.
+
@@ -651,7 +653,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
default of 60 seconds.
@@ -659,10 +661,10 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 0 | Payload Length = 0 | Sig Type = 0 |
+| PDU Type = 0 | Payload Length = 0 ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | Sig Type = 0 | Signature Length = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Signature Length = 0 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -690,7 +692,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
frame.
@@ -698,23 +700,19 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 1 | Payload Length | ~
+| PDU Type = 1 | Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Nonce | LLEI Length |
+~ | Nonce ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-~ ~
-~ My LLEI ~
-~ ~
+~ | LLEI Length | My LLEI |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-~
+~ | AttrCount | ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| AttrCount | Attribute List ... |
+~ Attribute List ... | Auth Type | Key Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Auth Type | Key Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Key ... ~
+~ | Key ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+| Sig Type | Signature Length | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -728,8 +726,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
prevent session closure due to a repeated OPEN caused by a race or a
dropped or delayed ACK.
- My LLEI is the sender's LLEI, see . LLEIs
- are big-endian.
+ My LLEI is the sender's LLEI, see .AttrCount is the number of attributes in the Attribute List.
Attributes are single octets whose semantics are user-defined.
@@ -745,8 +742,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
target="tlv"/>.
Key Length is a 16-bit field denoting the length in octets of the
- Key, not including the Auth Type or the Key Lengths. If there is no
- Key, the Auth Type and key Length MUST both be zero.
+ Key itself, not including the Auth Type or the Key Lengths. If
+ there is no Key, the Auth Type and key Length MUST both be zero.
The Key is specific to the operational environment. A failure to
authenticate is a failure to start the L3DL session, an ERROR PDU is
@@ -784,7 +781,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
The ACK PDU acknowledges receipt of a PDU and reports any error
@@ -795,13 +792,13 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 3 | Payload Length = 5 | PDU Type |
+| PDU Type = 3 | Payload Length = 5 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| EType | Error Code | Error Hint |
+~ | ACKed PDU | EType | Error Code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+| Error Hint | Sig Type |Signature Leng.~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -809,8 +806,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
The ACK acknowledges receipt of an OPEN, Encapsulation, VENDOR
PDU, etc.
- The PDU Type is the Type of the PDU being acknowledged, e.g.,
- OPEN or one of the Encapsulations.
+ The ACKed PDU is the PDU Type of the PDU being acknowledged,
+ e.g., OPEN or one of the Encapsulations.If there was an error processing the received PDU, then the EType
is non-zero. If the EType is zero, Error Code and Error Hint MUST
@@ -898,25 +895,26 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
The header for all encapsulation PDUs is as follows:
+ 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type | Payload Length | Count |
+| PDU Type | Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | Encapsulation List... |
+~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+| Encapsulation List... | Sig Type |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Signature Length | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- The 16-bit Count is the number of Encapsulations in the
+ The 24-bit Count is the number of Encapsulations in the
Encapsulation list.An Encapsulation PDU describes zero or more addresses of the
@@ -997,7 +995,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
interface's addresses and the corresponding prefix lengths.
@@ -1005,20 +1003,20 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 4 | Payload Length | Count |
+| PDU Type = 4 | Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | PrimLoop Flags| IPv4 Address |
+~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | PrefixLen | more ... |
+| PrimLoop Flags| IPv4 Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+~ | PrefixLen | more ... | Sig Type |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Signature Length | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- The 16-bit Count is the number of IPv4 Encapsulations.
+ The 24-bit Count is the number of IPv4 Encapsulations.
@@ -1030,7 +1028,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
lengths.
@@ -1038,26 +1036,26 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 5 | Payload Length | Count |
+| PDU Type = 5 | Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | PrimLoop Flags| |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
+~ | Count |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| PrimLoop Flags| |
++-+-+-+-+-+-+-+-+ +
| |
+ +
| |
+ +
| IPv6 Address |
-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| | PrefixLen | more ... |
++ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| | PrefixLen | more ... | Sig Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+| Signature Length | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- The 16-bit Count is the number of IPv6 Encapsulations.
+ The 24-bit Count is the number of IPv6 Encapsulations.
@@ -1095,7 +1093,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
lengths, and the corresponding labels.
@@ -1103,33 +1101,33 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 6 | Payload Length | Count |
+| PDU Type = 6 | Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | PrimLoop Flags| MPLS Label List ... |
+~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | IPv4 Address |
+| PrimLoop Flags| MPLS Label List ... | ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | PrefixLen | more ... |
+~ IPv4 Address | PrefixLen |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+| more ... | Sig Type | Signature Length |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Signature |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- The 16-bit Count is the number of MPLSv6 Encapsulations.
+ The 24-bit Count is the number of MPLSv4 Encapsulations.
- The MPLS IPv6 Encapsulation describes a logical link's ability
- to exchange labeled IPv6 packets on one or more subnets. It does
+ The MPLS IPv4 Encapsulation describes a logical link's ability
+ to exchange labeled IPv4 packets on one or more subnets. It does
so by stating the interface's addresses, the corresponding prefix
lengths, and the corresponding labels.
@@ -1137,32 +1135,75 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 7 | Payload Length | Count |
+| PDU Type = 7 | Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | PrimLoop Flags| MPLS Label List ... |
+~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ... | |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
+| PrimLoop Flags| MPLS Label List ... | |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
+ +
| |
+ +
| IPv6 Address |
-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| | Prefix Len | more ... |
++ +-+-+-+-+-+-+-+-+
+| | Prefix Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
+| more ... | Sig Type | Signature Length |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- The 16-bit Count is the number of MPLSv6 Encapsulations.
+ The 24-bit Count is the number of MPLSv6 Encapsulations.
+ The MPLS IPv6 Encapsulation describes a logical link's ability
+ to exchange labeled IPv6 packets on one or more subnets. It does
+ so by stating the interface's addresses, the corresponding prefix
+ lengths, and the corresponding labels.
+
+
+
+
+
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| PDU Type = 255| Payload Length ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | ... | Enterprise Number ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | Ent Type | Enterprise Data ... ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | Sig Type |Signature Leng.|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| | Signature ... |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+ Vendors or enterprises may define TLVs beyond the scope of L3DL
+ standards. This is done using a Private Enterprise Number followed by Enterprise Data in a format
+ defined for that Enterprise Number and Ent Type.
+
+ Ent Type allows a VENDOR PDU to be sub-typed in the event that
+ the vendor/enterprise needs multiple PDU types.
+
+ As with Encapsulation PDUs, a receiver of a VENDOR PDU MUST
+ respond with an ACK or an ERROR PDU. Similarly, a VENDOR PDU MUST
+ only be sent over an open session.
+
+
+
L3DL devices SHOULD beacon frequent Layer 2 KEEPALIVE PDUs to
@@ -1185,7 +1226,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
new Encapsulation PDUs exchanged.
@@ -1193,53 +1234,15 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 2 | Payload Length = 0 | Sig Type = 0 |
+| PDU Type = 2 | Payload Length = 0 ~
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+~ | Sig Type = 0 | Signature Length = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Signature Length = 0 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Type = 255 | Payload Length | ... |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Enterprise Number | Ent Type |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Enterprise Data ... |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Sig Type | Signature Length | ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~
-~ Signature ... ~
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- Vendors or enterprises may define TLVs beyond the scope of L3DL
- standards. This is done using a Private Enterprise Number followed by Enterprise Data in a format
- defined for that Enterprise Number and Ent Type.
-
- Ent Type allows a VENDOR PDU to be sub-typed in the event that
- the vendor/enterprise needs multiple PDU types.
-
- As with Encapsulation PDUs, a receiver of a VENDOR PDU MUST
- respond with an ACK or an ERROR PDU. Similarly, a VENDOR PDU MUST
- only be sent over an open session.
-
-
-
Layer 2 liveness may be continuously tested by KEEPALIVE PDUs,
@@ -1414,6 +1417,10 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
For these reasons, the OPEN PDU's authentication data exchange
SHOULD be used.
+
+ If the KEEPALIVE PDU is not signed (as suggested in ) to save computation, then a MITM could fake a
+ session being alive.