serial number stiched in

This commit is contained in:
Randy Bush 2019-06-03 14:00:26 -07:00
parent 45b1360e28
commit cacd4323ce

View file

@ -405,7 +405,9 @@
<list style="hanging"> <list style="hanging">
<t hangText="Version:">Seven-bit Version number of the protocol, <t hangText="Version:">Seven-bit Version number of the protocol,
currently 0. Values other than 0 are treated as errors.</t> currently 0. Values other than 0 are treated as errors. The
protocol version nees to be in one and only one place, so it is in
the datagram as opposed to, for example, the PDU.</t>
<t hangText="L:">A bit that set to one if this Datagram is the <t hangText="L:">A bit that set to one if this Datagram is the
last Datagram of the PDU. For a PDU which fits in only one last Datagram of the PDU. For a PDU which fits in only one
@ -534,8 +536,9 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
<t hangText="Payload:">The application layer content of the L3DL <t hangText="Payload:">The application layer content of the L3DL
PDU.</t> PDU.</t>
<t hangText="Sig Type:">The type of the Signature. Type 0, a null <t hangText="Sig Type:">The type of the Signature, see <xref
signature, is defined in this document.</t> target="iana-sigtype"/>. Type 0, a null signature, is defined in
this document.</t>
<t>Sig Type 0 indicates a null Signature. For a trivial PDU such <t>Sig Type 0 indicates a null Signature. For a trivial PDU such
as KEEPALIVE, the underlying Datagram checksum may be sufficient as KEEPALIVE, the underlying Datagram checksum may be sufficient
@ -660,7 +663,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
<t>If the configured destination address is one that is propagated <t>If the configured destination address is one that is propagated
by switches, the HELLO SHOULD be repeated at a configured interval, by switches, the HELLO SHOULD be repeated at a configured interval,
with a default of 60 seconds. This allows discovery by new devices with a default of 60 seconds. This allows discovery by new devices
which come up on the layer two mesh.</t> which come up on the layer-2 mesh.</t>
<!-- <!--
protocol "PDU Type = 0:8,Payload Length = 0:32,Sig Type = 0:8,Signature Length = 0:16" protocol "PDU Type = 0:8,Payload Length = 0:32,Sig Type = 0:8,Signature Length = 0:16"
@ -702,8 +705,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
frame.</t> frame.</t>
<!-- <!--
protocol "PDU Type = 1:8,Payload Length:32,Nonce:32,LLEI Length:8,My LLEI:32,AttrCount:8,Attribute List ...:24,Auth Type:8,Key Length:16,Key ...:24,Sig Type:8,Signature Length:16,Signature ...:8" protocol "PDU Type = 1:8,Payload Length:32,Nonce:32,LLEI Length:8,My LLEI:32,AttrCount:8,Attribute List ...:24,Auth Type:8,Key Length:16,Key ...:24,Serial Number:32,Sig Type:8,Signature Length:16,Signature ...:8"
--> q-->
<figure> <figure>
<artwork> <artwork>
@ -722,6 +725,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Key ... | ~ | Key ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sig Type | Signature Length | Signature ... | | Sig Type | Signature Length | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork> </artwork>
@ -759,6 +764,12 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
authenticate is a failure to start the L3DL session, an ERROR PDU is authenticate is a failure to start the L3DL session, an ERROR PDU is
sent (Error Code 2), and HELLOs MUST be restarted.</t> sent (Error Code 2), and HELLOs MUST be restarted.</t>
<t>The Serial Number is that of the last received and processed
Encapsulation PDU. This allows a receiver sending an OPEN to tell
the sender that it only needs to send data more recent than the
Serial Number. If this OPEN is not trying to restart a lost
session, the Serial Number MUST be set to zero.</t>
<t>The Signature fields are described in <xref target="tlv"/> and in <t>The Signature fields are described in <xref target="tlv"/> and in
an asymmetric key environment serve as a proof of possession of the an asymmetric key environment serve as a proof of possession of the
signing auth data by the sender.</t> signing auth data by the sender.</t>
@ -829,18 +840,10 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
error.</t> error.</t>
<t>The decimal value of EType gives a strong hint how the receiver <t>The decimal value of EType gives a strong hint how the receiver
sending the ACK believes things should proceed: sending the ACK believes things should proceed. The ETypes are
<list style="empty"> listed in <xref target="iana-error"/>. Someone stuck in the 1990s
<?rfc subcompact="yes"?> might think of the error codes as 0x1zzz, 0x2zzz, etc. They might
<t>0 - No Error, Error Code and Error Hint MUST be zero</t> be right. Or not.</t>
<t>1 - Warning, something not too serious happened, continue</t>
<t>2 - Session should not be continued, try to restart</t>
<t>3 - Restart is hopeless, call the operator</t>
<t>4-15 - Reserved</t>
<?rfc subcompact="no"?>
</list>
Someone stuck in the 1990s might think of the error codes as 0x1zzz,
0x2zzz, etc. They might be right. Or not.</t>
<t>The Error Code indicates the type of error.</t> <t>The Error Code indicates the type of error.</t>
@ -905,7 +908,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
<t>The header for all encapsulation PDUs is as follows:</t> <t>The header for all encapsulation PDUs is as follows:</t>
<!-- <!--
protocol "PDU Type:8,Payload Length:32,Count:24,Encapsulation List...:24,Sig Type:8,Signature Length:16,Signature ...:16" protocol "PDU Type:8,Payload Length:32,Count:24,Serial Number:32,Encapsulation List...:24,Sig Type:8,Signature Length:16,Signature ...:16"
--> -->
<figure> <figure>
@ -917,6 +920,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count | ~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encapsulation List... | Sig Type | | Encapsulation List... | Sig Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signature Length | Signature ... | | Signature Length | Signature ... |
@ -930,25 +935,11 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
<t>An Encapsulation PDU describes zero or more addresses of the <t>An Encapsulation PDU describes zero or more addresses of the
encapsulation type.</t> encapsulation type.</t>
<t>An Encapsulation PDU of Type T replaces all previous <t>The Serial Number is a monotonically increasing 32-bit value
encapsulations of Type T.</t> representing the sender's state in time. It may be an integer, a
timestamp, etc. On session restart (new OPEN), a receiver MAY
<t>To remove all encapsulations of Type T, the sender uses a Count send the last received Session Number to tell the sender to only
of zero.</t> send newer data.</t>
<t>If an LLEI has multiple addresses for an encapsulation type,
one and only one address SHOULD be configured to be marked as
primary, see <xref target="eflags"/>.</t>
<t>Loopback addresses are generally not seen directly on an
external interface. One or more loopback addresses MAY be exposed
by configuration on one or more L3DL speaking external interfaces,
e.g. for iBGP peering. They SHOULD be marked as such, see <xref
target="eflags"/>.</t>
<t>If there is exactly one non-loopback address for an
encapsulation type on an interface, it SHOULD be marked as
primary.</t>
<t>If a sender has multiple links on the same interface, separate <t>If a sender has multiple links on the same interface, separate
data, ACKs, etc. must be kept for each peer.</t> data, ACKs, etc. must be kept for each peer.</t>
@ -989,27 +980,39 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
</artwork> </artwork>
</figure> </figure>
<t>An Encapsulation PDU of Type T may announce new and/or withdraw
old encapsulations of Type T. It indicates this with the Add/With
Encapsulation Flag, Announce == 1, Withdraw == 0.</t>
<t>Each Encapsulation interface address in an Encapsulation PDU is <t>Each Encapsulation interface address in an Encapsulation PDU is
either a new encapsulation be announced (Ann/With set to 1) (yes, either a new encapsulation be announced (Ann/With == 1) (yes, a la
a la BGP) or requests one be withdrawn (Ann/With set to 0). BGP) or requests one be withdrawn (Ann/With == 0). Adding an
Adding an encapsulation which already exists SHOULD raise an encapsulation which already exists SHOULD raise an
Announce/Withdraw Error (see <xref target="iana"/>); the EType Announce/Withdraw Error (see <xref target="iana-error"/>); the EType
SHOULD be 2, suggesting a session restart (see <xref SHOULD be 2, suggesting a session restart (see <xref
target="ack"/> so all encapsulations will be resent.</t> target="ack"/> so all encapsulations will be resent.</t>
<t>An Encapsulation interface address in an Encapsulation PDU MAY <t>If an LLEI has multiple addresses for an encapsulation type,
be marked as a primary address. Only one address on an interface one and only one address SHOULD be configured to be marked as
MAY be marked as primary for each encapsulation type.</t> primary (Primary Flag == 1). Only one address on an interface MAY
be marked as primary for each encapsulation type.</t>
<t>Each Encapsulation interface address in an Encapsulation PDU is
that of the direct 'overlay' interface (flag set to 1), or an
'underlay' address (flag set to 0), likely that of a VM or
container guest bridged on to the primary interface.</t>
<t>An Encapsulation interface address in an Encapsulation PDU MAY <t>An Encapsulation interface address in an Encapsulation PDU MAY
be marked as a loopback, in which case the respective bit is be marked as a loopback, in which case the respective bit is
set.</t> set.</t>
<t>Loopback addresses are generally not seen directly on an
external interface. One or more loopback addresses MAY be exposed
by configuration on one or more L3DL speaking external interfaces,
e.g. for iBGP peering. They SHOULD be marked as such, Loopback
Flag == 1.</t>
<t>Each Encapsulation interface address in an Encapsulation PDU is
that of the direct 'underlay interface (Under/Over == 1), or an
'overlay' address (Under/Over == 0), likely that of a VM or
container guest bridged on to an underlay address on the
interface.</t>
</section> </section>
<section anchor="ipv4" title="IPv4 Encapsulation"> <section anchor="ipv4" title="IPv4 Encapsulation">
@ -1019,7 +1022,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
interface's addresses and the corresponding prefix lengths.</t> interface's addresses and the corresponding prefix lengths.</t>
<!-- <!--
protocol "PDU Type = 4:8,Payload Length:32,Count:24,Encaps Flags:8,IPv4 Address:32,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:16" protocol "PDU Type = 4:8,Payload Length:32,Count:24,Serial Number:32,Encaps Flags:8,IPv4 Address:32,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:16"
--> -->
<figure> <figure>
@ -1031,6 +1034,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count | ~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encaps Flags | IPv4 Address ~ | Encaps Flags | IPv4 Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | PrefixLen | more ... | Sig Type | ~ | PrefixLen | more ... | Sig Type |
@ -1052,7 +1057,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
lengths.</t> lengths.</t>
<!-- <!--
protocol "PDU Type = 5:8,Payload Length:32,Count:24,Encaps Flags:8,IPv6 Address:128,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:16" protocol "PDU Type = 5:8,Payload Length:32,Count:24,Serial Number:32,Encaps Flags:8,IPv6 Address:128,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:16"
--> -->
<figure> <figure>
@ -1064,6 +1069,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count | ~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encaps Flags | | | Encaps Flags | |
+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+ +
| | | |
@ -1117,7 +1124,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
lengths, and the corresponding labels.</t> lengths, and the corresponding labels.</t>
<!-- <!--
protocol "PDU Type = 6:8,Payload Length:32,Count:24,Encaps Flags:8,MPLS Label List ...:16,IPv4 Address:32,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature:32" protocol "PDU Type = 6:8,Payload Length:32,Count:24,Serial Number:32,Encaps Flags:8,MPLS Label List ...:16,IPv4 Address:32,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature:32"
--> -->
<figure> <figure>
@ -1129,6 +1136,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count | ~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encaps Flags | MPLS Label List ... | ~ | Encaps Flags | MPLS Label List ... | ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ IPv4 Address | PrefixLen | ~ IPv4 Address | PrefixLen |
@ -1151,7 +1160,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
so by stating the interface's addresses, the corresponding prefix so by stating the interface's addresses, the corresponding prefix
lengths, and the corresponding labels.</t> lengths, and the corresponding labels.</t>
<!-- <!--
protocol "PDU Type = 7:8,Payload Length:32,Count:24,Encaps Flags:8,MPLS Label List ...:16,IPv6 Address:128,Prefix Len:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:32" protocol "PDU Type = 7:8,Payload Length:32,Count:24,Serial Number:32,Encaps Flags:8,MPLS Label List ...:16,IPv6 Address:128,Prefix Len:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:32"
--> -->
<figure> <figure>
@ -1163,6 +1172,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count | ~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encaps Flags | MPLS Label List ... | | | Encaps Flags | MPLS Label List ... | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| | | |
@ -1193,7 +1204,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
<section anchor="vendor" title="VENDOR - Vendor Extensions"> <section anchor="vendor" title="VENDOR - Vendor Extensions">
<!-- <!--
protocol "PDU Type = 255:8,Payload Length:32,...:8,Enterprise Number:24,Ent Type:8,Enterprise Data ...:32,Sig Type:8,Signature Length:16,Signature ...:24" protocol "PDU Type = 255:8,Payload Length:32,Serial Number:32,Enterprise Number:24,Ent Type:8,Enterprise Data ...:32,Sig Type:8,Signature Length:16,Signature ...:32"
--> -->
<figure> <figure>
@ -1203,13 +1214,15 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PDU Type = 255| Payload Length ~ | PDU Type = 255| Payload Length ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | ... | Enterprise Number ~ ~ | Serial Number ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Ent Type | Enterprise Data ... ~ ~ | Enterprise Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Sig Type |Signature Leng.| | Ent Type | Enterprise Data ... ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Signature ... | ~ | Sig Type | Signature Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork> </artwork>
</figure> </figure>