diff --git a/draft-ietf-lsvr-l3dl.xml b/draft-ietf-lsvr-l3dl.xml index 4b158e7..2c19af2 100644 --- a/draft-ietf-lsvr-l3dl.xml +++ b/draft-ietf-lsvr-l3dl.xml @@ -162,8 +162,7 @@ message. A PDU may need to be broken into multiple Datagrams to make it through MTU or other restrictions. An 32-bit identifier unique in the - current routing domain, see updated by - . + current routing domain, see . An established, via OPEN PDUs, session between two L3DL capable link end-points, Shortest Path First, an algorithm for finding @@ -193,12 +192,16 @@ L3DL assumes a new IEEE assigned EtherType (TBD). - 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. + 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. + + Therefore the L3DL protocol is session oriented and uses + incremental announcement and widrawal, a la BGP (). @@ -928,13 +931,13 @@ uint32_t sbox_checksum_32(const uint8_t *b, const size_t n) If an LLEI has multiple addresses for an encapsulation type, one and only one address SHOULD be configured to be marked as - primary, see . + primary, see . 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 . + target="eflags"/>. 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) -
+
- 0 1 2 3 ... 7 -+---------------+---------------+---------------+---------------+ -| Primary | Loopback | Reserved ... | | -+---------------+---------------+---------------+---------------+ + 0 1 2 3 4 ... 7 ++------------+------------+------------+------------+------------+ +| Ann/With | Primary | Under/Over | Loopback | Reserved ..| ++------------+------------+------------+------------+------------+
- 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. + 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 ); the EType + SHOULD be 2, suggesting a session restart (see so all encapsulations will be resent. - Only one address MAY be marked as primary for an encapsulation - type. + 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. + + 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. + + An Encapsulation interface address in an Encapsulation PDU MAY + be marked as a loopback, in which case the respective bit is + set.
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -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