checkpoint

This commit is contained in:
Randy Bush 2019-05-29 11:29:32 -07:00
parent 783bb0dff0
commit ac441e4246

View file

@ -162,8 +162,7 @@
message. A PDU may need to be broken into multiple Datagrams to
make it through MTU or other restrictions.</t>
<t hangText="RouterID:">An 32-bit identifier unique in the
current routing domain, see <xref target="RFC4271"/> updated by
<xref target="RFC6286"/>.</t>
current routing domain, see <xref target="RFC6286"/>.</t>
<t hangText="Session:">An established, via OPEN PDUs, session
between two L3DL capable link end-points,</t>
<t hangText="SPF:">Shortest Path First, an algorithm for finding
@ -193,12 +192,16 @@
<t>L3DL assumes a new IEEE assigned EtherType (TBD).</t>
<t>The number of addresses of the Encapsulations on a link may be
fairly large given a TOR with more than 20 servers, each server
possibly having on the order of a hundred micro-services resulting
in an inordinate number of addresses. And security will further add
to the length of PDUs. PDUs with lengths over 10,000 octets are
likely or quite possible.</t>
<t>The number of addresses of one Encapsulation type on an interface
link may be quite large given a TOR with tens of servers, each
server having o few hundred micro-services, resulting in an
inordinate number of addresses. And highly automated micro-service
migration can cause serious address prefix disaggregation, resulting
in interfaces with thousands of disaggregated prefixes.</t>
<t>Therefore the L3DL protocol is session oriented and uses
incremental announcement and widrawal, a la BGP (<xref
target="RFC4271"/>).</t>
</section>
@ -928,13 +931,13 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
<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="primloop"/>.</t>
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="primloop"/>.</t>
target="eflags"/>.</t>
<t>If there is exactly one non-loopback address for an
encapsulation type on an interface, it SHOULD be marked as
@ -968,23 +971,37 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
</section>
<section anchor="primloop" title="Prim/Loop Flags">
<section anchor="eflags" title="Encapsulaion Flags">
<figure>
<artwork>
0 1 2 3 ... 7
+---------------+---------------+---------------+---------------+
| Primary | Loopback | Reserved ... | |
+---------------+---------------+---------------+---------------+
0 1 2 3 4 ... 7
+------------+------------+------------+------------+------------+
| Ann/With | Primary | Under/Over | Loopback | Reserved ..|
+------------+------------+------------+------------+------------+
</artwork>
</figure>
<t>Each Encapsulation interface address MAY be marked as a primary
address, and/or a loopback, in which case the respective bit is
set to one.</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
SHOULD be 2, suggesting a session restart (see <xref
target="ack"/> so all encapsulations will be resent.</t>
<t>Only one address MAY be marked as primary for an encapsulation
type.</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>An Encapsulation interface address in an Encapsulation PDU MAY
be marked as a loopback, in which case the respective bit is
set.</t>
</section>
@ -995,7 +1012,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,PrimLoop 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,Encaps Flags:8,IPv4 Address:32,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:16"
-->
<figure>
@ -1007,7 +1024,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PrimLoop Flags| IPv4 Address ~
| Encaps Flags | IPv4 Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | PrefixLen | more ... | Sig Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@ -1028,7 +1045,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,PrimLoop 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,Encaps Flags:8,IPv6 Address:128,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:16"
-->
<figure>
@ -1040,7 +1057,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PrimLoop Flags| |
| Encaps Flags | |
+-+-+-+-+-+-+-+-+ +
| |
+ +
@ -1093,7 +1110,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,PrimLoop 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,Encaps Flags:8,MPLS Label List ...:16,IPv4 Address:32,PrefixLen:8,more ...:8,Sig Type:8,Signature Length:16,Signature:32"
-->
<figure>
@ -1105,7 +1122,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PrimLoop Flags| MPLS Label List ... | ~
| Encaps Flags | MPLS Label List ... | ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ IPv4 Address | PrefixLen |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@ -1127,7 +1144,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,PrimLoop 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,Encaps Flags:8,MPLS Label List ...:16,IPv6 Address:128,Prefix Len:8,more ...:8,Sig Type:8,Signature Length:16,Signature ...:32"
-->
<figure>
@ -1139,7 +1156,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PrimLoop Flags| MPLS Label List ... | |
| Encaps Flags | MPLS Label List ... | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
+ +
@ -1493,6 +1510,7 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n)
1 Logical Link Addressing Conflict
2 Authorization Failure in OPEN
3 Signature Failure in PDU
4 Announce/Withdraw Error
</artwork>
</figure>