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">
<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
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
PDU.</t>
<t hangText="Sig Type:">The type of the Signature. Type 0, a null
signature, is defined in this document.</t>
<t hangText="Sig Type:">The type of the Signature, see <xref
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
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
by switches, the HELLO SHOULD be repeated at a configured interval,
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"
@ -702,8 +705,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
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>
<artwork>
@ -722,6 +725,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Key ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sig Type | Signature Length | Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</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
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
an asymmetric key environment serve as a proof of possession of the
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>
<t>The decimal value of EType gives a strong hint how the receiver
sending the ACK believes things should proceed:
<list style="empty">
<?rfc subcompact="yes"?>
<t>0 - No Error, Error Code and Error Hint MUST be zero</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>
sending the ACK believes things should proceed. The ETypes are
listed in <xref target="iana-error"/>. 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>
@ -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>
<!--
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>
@ -917,6 +920,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encapsulation List... | Sig Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 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
encapsulation type.</t>
<t>An Encapsulation PDU of Type T replaces all previous
encapsulations of Type T.</t>
<t>To remove all encapsulations of Type T, the sender uses a Count
of zero.</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>The Serial Number is a monotonically increasing 32-bit value
representing the sender's state in time. It may be an integer, a
timestamp, etc. On session restart (new OPEN), a receiver MAY
send the last received Session Number to tell the sender to only
send newer data.</t>
<t>If a sender has multiple links on the same interface, separate
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>
</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
either a new encapsulation be announced (Ann/With set to 1) (yes,
a la BGP) or requests one be withdrawn (Ann/With set to 0).
Adding an encapsulation which already exists SHOULD raise an
Announce/Withdraw Error (see <xref target="iana"/>); the EType
either a new encapsulation be announced (Ann/With == 1) (yes, a la
BGP) or requests one be withdrawn (Ann/With == 0). Adding an
encapsulation which already exists SHOULD raise an
Announce/Withdraw Error (see <xref target="iana-error"/>); the EType
SHOULD be 2, suggesting a session restart (see <xref
target="ack"/> so all encapsulations will be resent.</t>
<t>An Encapsulation interface address in an Encapsulation PDU MAY
be marked as a primary address. 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>If an LLEI has multiple addresses for an encapsulation type,
one and only one address SHOULD be configured to be marked as
primary (Primary Flag == 1). Only one address on an interface MAY
be marked as primary for each encapsulation type.</t>
<t>An Encapsulation interface address in an Encapsulation PDU MAY
be marked as a loopback, in which case the respective bit is
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 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>
<!--
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>
@ -1031,6 +1034,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encaps Flags | IPv4 Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | PrefixLen | more ... | Sig Type |
@ -1052,7 +1057,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
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>
@ -1064,6 +1069,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 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>
<!--
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>
@ -1129,6 +1136,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encaps Flags | MPLS Label List ... | ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ 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
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>
@ -1163,6 +1172,8 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 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">
<!--
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>
@ -1203,13 +1214,15 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 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>
</figure>