draft-ietf-rift-auto-evpn-00.txt   draft-ietf-rift-auto-evpn-01.txt 
RIFT J. Head, Ed. RIFT J. Head, Ed.
Internet-Draft T. Przygienda Internet-Draft T. Przygienda
Intended status: Standards Track W. Lin Intended status: Standards Track W. Lin
Expires: 24 March 2022 Juniper Networks Expires: 25 April 2022 Juniper Networks
20 September 2021 22 October 2021
RIFT Auto-EVPN RIFT Auto-EVPN
draft-ietf-rift-auto-evpn-00 draft-ietf-rift-auto-evpn-01
Abstract Abstract
This document specifies procedures that allow an EVPN overlay to be This document specifies procedures that allow an EVPN overlay to be
fully and automatically provisioned when using RIFT as underlay by fully and automatically provisioned when using RIFT as underlay by
leveraging RIFT's no-touch ZTP architecture. leveraging RIFT's no-touch ZTP architecture.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 33 skipping to change at page 1, line 33
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 24 March 2022. This Internet-Draft will expire on 25 April 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 2, line 15 skipping to change at page 2, line 15
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
2. Design Considerations . . . . . . . . . . . . . . . . . . . . 3 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 3
3. System ID . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. System ID . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Fabric ID . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. Fabric ID . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5. Auto-EVPN Device Roles . . . . . . . . . . . . . . . . . . . 5 5. Auto-EVPN Device Roles . . . . . . . . . . . . . . . . . . . 5
5.1. All Participating Nodes . . . . . . . . . . . . . . . . . 5 5.1. All Participating Nodes . . . . . . . . . . . . . . . . . 5
5.2. ToF Nodes as Route Reflectors . . . . . . . . . . . . . . 5 5.2. ToF Nodes as Route Reflectors . . . . . . . . . . . . . . 5
5.2.1. Data Center Interconnect Gateway Functions . . . . . 6
5.3. Leaf Nodes . . . . . . . . . . . . . . . . . . . . . . . 6 5.3. Leaf Nodes . . . . . . . . . . . . . . . . . . . . . . . 6
6. Auto-EVPN Variable Derivation . . . . . . . . . . . . . . . . 7 6. Auto-EVPN Variable Derivation . . . . . . . . . . . . . . . . 8
6.1. Auto-EVPN Version . . . . . . . . . . . . . . . . . . . . 8 6.1. Auto-EVPN Version . . . . . . . . . . . . . . . . . . . . 8
6.2. MAC-VRF ID . . . . . . . . . . . . . . . . . . . . . . . 8 6.2. MAC-VRF ID . . . . . . . . . . . . . . . . . . . . . . . 8
6.3. Loopback Address . . . . . . . . . . . . . . . . . . . . 8 6.3. Loopback Address . . . . . . . . . . . . . . . . . . . . 8
6.3.1. Leaf Nodes as Gateways . . . . . . . . . . . . . . . 8 6.3.1. Leaf Nodes as Gateways . . . . . . . . . . . . . . . 9
6.3.2. ToF Nodes as Route Reflectors . . . . . . . . . . . . 9 6.3.2. ToF Nodes as Route Reflectors . . . . . . . . . . . . 9
6.3.2.1. Route Reflector Election Procedures . . . . . . . 9 6.3.2.1. Single Plane Route Reflector Election
6.4. Autonomous System Number . . . . . . . . . . . . . . . . 10 Procedures . . . . . . . . . . . . . . . . . . . . 9
6.5. Router ID . . . . . . . . . . . . . . . . . . . . . . . . 10 6.3.2.2. Multiplane Route Reflector Election Procedures . 10
6.6. Cluster ID . . . . . . . . . . . . . . . . . . . . . . . 10 6.4. Autonomous System Number . . . . . . . . . . . . . . . . 11
6.7. Route Target . . . . . . . . . . . . . . . . . . . . . . 10 6.5. Router ID . . . . . . . . . . . . . . . . . . . . . . . . 11
6.8. Route Distinguisher . . . . . . . . . . . . . . . . . . . 10 6.6. Cluster ID . . . . . . . . . . . . . . . . . . . . . . . 11
6.9. EVPN MAC-VRF Services . . . . . . . . . . . . . . . . . . 11 6.7. Route Target . . . . . . . . . . . . . . . . . . . . . . 12
6.9.1. Untagged Traffic in Multiple Fabrics . . . . . . . . 11 6.8. Route Distinguisher . . . . . . . . . . . . . . . . . . . 12
6.9.1.1. VLAN . . . . . . . . . . . . . . . . . . . . . . 11 6.9. EVPN MAC-VRF Services . . . . . . . . . . . . . . . . . . 12
6.9.1.2. VNI . . . . . . . . . . . . . . . . . . . . . . . 11 6.9.1. Untagged Traffic in Multiple Fabrics . . . . . . . . 12
6.9.1.3. MAC Address . . . . . . . . . . . . . . . . . . . 11 6.9.1.1. VLAN . . . . . . . . . . . . . . . . . . . . . . 13
6.9.1.4. IPv6 IRB Gateway Address . . . . . . . . . . . . 12 6.9.1.2. VNI . . . . . . . . . . . . . . . . . . . . . . . 13
6.9.1.5. IPv4 IRB Gateway Address . . . . . . . . . . . . 12 6.9.1.3. MAC Address . . . . . . . . . . . . . . . . . . . 13
6.9.2. Tagged Traffic in Multiple Fabrics . . . . . . . . . 12 6.9.1.4. IPv6 IRB Gateway Address . . . . . . . . . . . . 13
6.9.2.1. VLAN . . . . . . . . . . . . . . . . . . . . . . 12 6.9.1.5. IPv4 IRB Gateway Address . . . . . . . . . . . . 13
6.9.2.2. VNI . . . . . . . . . . . . . . . . . . . . . . . 12 6.9.2. Tagged Traffic in Multiple Fabrics . . . . . . . . . 14
6.9.2.3. MAC Address . . . . . . . . . . . . . . . . . . . 13 6.9.2.1. VLAN . . . . . . . . . . . . . . . . . . . . . . 14
6.9.2.4. IPv6 IRB Gateway Address . . . . . . . . . . . . 13 6.9.2.2. VNI . . . . . . . . . . . . . . . . . . . . . . . 14
6.9.2.5. IPv4 IRB Gateway Address . . . . . . . . . . . . 13 6.9.2.3. MAC Address . . . . . . . . . . . . . . . . . . . 14
6.9.3. Tagged Traffic in a Single Fabric . . . . . . . . . . 13 6.9.2.4. IPv6 IRB Gateway Address . . . . . . . . . . . . 14
6.9.3.1. VLAN . . . . . . . . . . . . . . . . . . . . . . 13 6.9.2.5. IPv4 IRB Gateway Address . . . . . . . . . . . . 14
6.9.3.2. VNI . . . . . . . . . . . . . . . . . . . . . . . 14 6.9.3. Tagged Traffic in a Single Fabric . . . . . . . . . . 15
6.9.3.3. MAC Address . . . . . . . . . . . . . . . . . . . 14 6.9.3.1. VLAN . . . . . . . . . . . . . . . . . . . . . . 15
6.9.3.4. IPv6 IRB Gateway Address . . . . . . . . . . . . 14 6.9.3.2. VNI . . . . . . . . . . . . . . . . . . . . . . . 15
6.9.3.5. IPv4 IRB Gateway Address . . . . . . . . . . . . 14 6.9.3.3. MAC Address . . . . . . . . . . . . . . . . . . . 15
6.9.4. Traffic Routed to External Destinations . . . . . . . 14 6.9.3.4. IPv6 IRB Gateway Address . . . . . . . . . . . . 15
6.9.4.1. Route Distinguisher . . . . . . . . . . . . . . . 15 6.9.3.5. IPv4 IRB Gateway Address . . . . . . . . . . . . 16
6.9.4.2. Route Target . . . . . . . . . . . . . . . . . . 15 6.9.4. Traffic Routed to External Destinations . . . . . . . 16
6.10. Auto-EVPN Analytics . . . . . . . . . . . . . . . . . . . 15 6.9.4.1. Route Distinguisher . . . . . . . . . . . . . . . 16
6.10.1. Auto-EVPN Global Analytics Key Type . . . . . . . . 16 6.9.4.2. Route Target . . . . . . . . . . . . . . . . . . 16
6.10.2. Auto-EVPN MAC-VRF Key Type . . . . . . . . . . . . . 16
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 7. Operational Considerations . . . . . . . . . . . . . . . . . 16
8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 7.1. RIFT Underlay and Auto-EVPN Overlay . . . . . . . . . . . 16
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 7.2. Auto-EVPN Analytics . . . . . . . . . . . . . . . . . . . 19
9.1. Normative References . . . . . . . . . . . . . . . . . . 18 7.2.1. Auto-EVPN Global Analytics Key Type . . . . . . . . . 20
Appendix A. Thrift Models . . . . . . . . . . . . . . . . . . . 19 7.2.2. Auto-EVPN MAC-VRF Key Type . . . . . . . . . . . . . 21
A.1. RIFT LIE Schema . . . . . . . . . . . . . . . . . . . . . 19 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22
A.1.1. Auto-EVPN Version . . . . . . . . . . . . . . . . . . 19 9. Security Considerations . . . . . . . . . . . . . . . . . . . 22
A.1.2. Fabric ID . . . . . . . . . . . . . . . . . . . . . . 19 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 22
A.2. RIFT Node-TIE Schema . . . . . . . . . . . . . . . . . . 19 10.1. Normative References . . . . . . . . . . . . . . . . . . 22
A.2.1. Auto-EVPN Version . . . . . . . . . . . . . . . . . . 19 Appendix A. Thrift Models . . . . . . . . . . . . . . . . . . . 23
A.2.2. Fabric ID . . . . . . . . . . . . . . . . . . . . . . 19 A.1. common.thrift . . . . . . . . . . . . . . . . . . . . . . 23
A.3. common_evpn.thrift . . . . . . . . . . . . . . . . . . . 19 A.2. encoding.thrift . . . . . . . . . . . . . . . . . . . . . 23
A.4. auto_evpn_kv.thrift . . . . . . . . . . . . . . . . . . . 22 A.3. common_evpn.thrift . . . . . . . . . . . . . . . . . . . 24
Appendix B. Auto-EVPN Variable Derivation . . . . . . . . . . . 24 A.4. auto_evpn_kv.thrift . . . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 Appendix B. Auto-EVPN Variable Derivation . . . . . . . . . . . 29
B.1. Variable Derivation Functions . . . . . . . . . . . . . . 29
B.2. Variable Derivation Results . . . . . . . . . . . . . . . 41
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 86
1. Introduction 1. Introduction
RIFT is a protocol that focuses heavily on operational simplicity. RIFT is a protocol that focuses heavily on operational simplicity.
[RIFT] natively supports Zero Touch Provisioning (ZTP) functionality [RIFT] natively supports Zero Touch Provisioning (ZTP) functionality
that allows each node in an underlay network to automatically derive that allows each node in an underlay network to automatically derive
its place in the topology and configure itself accordingly when its place in the topology and configure itself accordingly when
properly cabled. RIFT can also disseminate Key-Value information properly cabled. RIFT can also disseminate Key-Value information
contained in Key-Value Topology Information Elements (KV-TIEs) contained in Key-Value Topology Information Elements (KV-TIEs)
[RIFT-KV]. These KV-TIEs can contain any information and therefore [RIFT-KV]. These KV-TIEs can contain any information and therefore
skipping to change at page 4, line 45 skipping to change at page 4, line 51
that support Auto-EVPN can interoperate with nodes that do not. The that support Auto-EVPN can interoperate with nodes that do not. The
LIE validation is extended with following clause and if it is not LIE validation is extended with following clause and if it is not
met, miscabling should be declared: met, miscabling should be declared:
(if fabric_id is not advertised by either node OR (if fabric_id is not advertised by either node OR
if fabric_id is identical on both nodes) if fabric_id is identical on both nodes)
AND AND
(if auto_evpn_version is not advertised by either node OR (if auto_evpn_version is not advertised by either node OR
if auto_evpn_version is identical on both nodes) if auto_evpn_version is identical on both nodes)
The appendix details LIE (Appendix A.1.2) and Node-TIE The appendix (Appendix A) details necessary changes to the RIFT LIE
(Appendix A.2.2) schema changes. and Node-TIE thrift schema.
5. Auto-EVPN Device Roles 5. Auto-EVPN Device Roles
Auto-EVPN requires that each node understand its given role within Auto-EVPN requires that each node understand its given role within
the scope of the EVPN implementation so each node derives the the scope of the EVPN implementation so each node derives the
necessary variables and provides the necessary overlay configuration. necessary variables and provides the necessary overlay configuration.
For example, a leaf node performing VXLAN gateway functions does not For example, a leaf node performing VXLAN gateway functions does not
need to derive its own Cluster ID or learn one from the route need to derive its own Cluster ID or learn one from the route
reflector that it peers with. reflector that it peers with.
skipping to change at page 5, line 39 skipping to change at page 5, line 39
*Cluster ID* *Cluster ID*
The Cluster ID for Top-of-Fabric IBGP route reflection. The Cluster ID for Top-of-Fabric IBGP route reflection.
5.2. ToF Nodes as Route Reflectors 5.2. ToF Nodes as Route Reflectors
This section defines an Auto-EVPN role whereby some Top-of-Fabric This section defines an Auto-EVPN role whereby some Top-of-Fabric
nodes act as EVPN route reflectors. It is expected that route nodes act as EVPN route reflectors. It is expected that route
reflectors would establish IBGP sessions with leaf nodes in the same reflectors would establish IBGP sessions with leaf nodes in the same
fabric. The typical route reflector requirements do not change, fabric. The typical route reflector requirements do not change,
however determining which specific values to use requires further however determining which specific values to use requires further
consideration. ToF nodes performing route reflector functionality consideration.
MUST derive the following variables:
ToF nodes performing route reflector functionality MUST derive the
following variables:
*IPv6 RR Loopback Address* *IPv6 RR Loopback Address*
The source address for IBGP sessions with leaf nodes in case The source address for IBGP sessions with leaf nodes in case
ToF won election for one of the route reflectors in the fabric. ToF won election for one of the route reflectors in the fabric.
*IPv6 RR Acceptable Prefix Range* *IPv6 RR Acceptable Prefix Range*
Range of addresses acceptable by the route reflector to form a Range of addresses acceptable by the route reflector to form a
IBGP session. This range covers ALL possible IPv6 Loopback IBGP session. This range covers ALL possible IPv6 Loopback
Addresses derived by other Auto EVPN nodes in the current Addresses derived by other Auto EVPN nodes in the current
fabric and other Auto-EVPN RRs addresses. fabric and other Auto-EVPN RRs addresses.
*Cluster ID*
The Cluster ID for Top-of-Fabric IBGP route reflection.
5.2.1. Data Center Interconnect Gateway Functions
Implementations that require connectivity beyond the EVPN/VXLAN
boundary can leverage Data Center Interconnect Gateway functionality.
This requires additional considerations to ensure the appropriate
reachability is present.
First - new VRFs and accompanying variable derivation is required,
this is decribed below.
Second - additional route reflector election considerations in order
to ensure that route reflectors with DCI gateway functionality are
preferred. This is described later in the document in Section 6.3.2.
If DCI functionality is desired, the Top-of-Fabric nodes MUST be
capable of routing toward the correct leaf node when it receives
traffic from an external destination. Therefore, it MUST be capable
of deriving the following types of variables:
*Route Distinguisher*
The route distinguisher corresponding to a IP-VRF's IP prefix
routes that MUST uniquely identify each node.
*Route Target*
The route target that corresponds to an IP-VRF's IP prefix
routes.
*VNI*
The VNI that corresponds to the Type-5 IP prefix routes within
an IP-VRF.
5.3. Leaf Nodes 5.3. Leaf Nodes
Leaf nodes derive their role from realizing they are at the bottom of Leaf nodes derive their role from realizing they are at the bottom of
the fabric, i.e. not having any southbound adjacencies. Alternately, the fabric, i.e. not having any southbound adjacencies. Alternately,
a node can assume a leaf node if it has only southbound adjacencies a node can assume a leaf node if it has only southbound adjacencies
to nodes with explicit LEAF_LEVEL to allow for scenarios where RIFT to nodes with explicit LEAF_LEVEL to allow for scenarios where RIFT
leaves do NOT participate in Auto-EVPN. leaves do NOT participate in Auto-EVPN.
Leaf nodes MUST derive the following variables: Leaf nodes MUST derive the following variables:
skipping to change at page 7, line 13 skipping to change at page 8, line 5
across all leaves. across all leaves.
*VNI* *VNI*
The VNI that corresponds to the VLAN ID. This will contribute The VNI that corresponds to the VLAN ID. This will contribute
to the EVPN Type-2 route. to the EVPN Type-2 route.
*IRB* *IRB*
Optional variables of the IRB for the VLAN if the leaf performs Optional variables of the IRB for the VLAN if the leaf performs
layer-3 gateway function. layer-3 gateway function.
If a leaf node is required to perform layer-3 VXLAN gateway
functions, it MUST additionally be capable of deriving the following
types of variables:
*IP Gateway MAC Address*
The MAC address associated with IP gateway.
*IP Gateway Subnetted Address*
The IPv4 and/or IPv6 gateway address including its subnet
length.
Type-5 EVPN IP Prefix with ToFs performing gateway functionality can
also be derived and will be described in a future version of this
document.
6. Auto-EVPN Variable Derivation 6. Auto-EVPN Variable Derivation
As previously mentioned, not all nodes are required to derive all As previously mentioned, not all nodes are required to derive all
variables in a given network (e.g. a transit spine node may not need variables in a given network (e.g. a transit spine node may not need
to derive any or participate in Auto-EVPN). Additionally, all to derive any or participate in Auto-EVPN). Additionally, all
derived variables are derived from RIFT's FSM or ZTP mechanism so no derived variables are derived from RIFT's FSM or ZTP mechanism so no
additional flooding beside RIFT flooding is necessary for the additional flooding beside RIFT flooding is necessary for the
functionality. functionality.
It is also important to mention that all variable derivation is in It is also important to mention that all variable derivation is in
some way based on combinations of System ID, MAC-VRF ID, Fabric ID, some way based on combinations of System ID, MAC-VRF ID, Fabric ID,
EVI and VLAN and MUST comply precisely with calculation methods EVI and VLAN and MUST comply precisely with calculation methods
specified in the Auto-EVPN Variable Derivation section to allow specified in the Auto-EVPN Variable Derivation section to allow
interoperability between different implementations. All foundational interoperability between different implementations. All foundational
code elements such as imports, constants, etc. are also mentioned code elements are also mentioned there.
there.
6.1. Auto-EVPN Version 6.1. Auto-EVPN Version
This section describes extensions to both the RIFT LIE packet and This section describes extensions to both the RIFT LIE packet and
Node-TIE schemas in the form of a 16-bit value that identifies the Node-TIE schemas in the form of a 16-bit value that identifies the
Auto-EVPN Version. Auto-EVPN capable nodes MUST support this Auto-EVPN Version. Auto-EVPN capable nodes MUST support this
extension, but MAY choose not to advertise it in LIEs and Node-TIEs extension, but MAY choose not to advertise it in LIEs and Node-TIEs
when Auto-EVPN is not being utilized. The appendix describes LIE when Auto-EVPN is not being utilized.
(Appendix A.1.1) and Node-TIE (Appendix A.2.1) schema changes in
detail. The appendix (Appendix A) details necessary changes to the RIFT LIE
and Node-TIE thrift schema.
6.2. MAC-VRF ID 6.2. MAC-VRF ID
This section describes a variable MAC-VRF ID that uniquely identifies This section describes a variable MAC-VRF ID that uniquely identifies
an instance of EVPN instance (EVI) and is used in variable derivation an instance of EVPN instance (EVI) and is used in variable derivation
procedures. Each EVPN EVI MUST be associated with a unique MAC-VRF procedures. Each EVPN EVI MUST be associated with a unique MAC-VRF
ID, this document does not specify a method for making that ID, this document does not specify a method for making that
association or ensuring that they are coordinated properly across association or ensuring that they are coordinated properly across
fabric(s). fabric(s).
skipping to change at page 8, line 46 skipping to change at page 9, line 14
System ID. Derivation of the System ID varies slightly depending System ID. Derivation of the System ID varies slightly depending
upon the node's location/role in the fabric and will be described in upon the node's location/role in the fabric and will be described in
subsequent sections. subsequent sections.
6.3.1. Leaf Nodes as Gateways 6.3.1. Leaf Nodes as Gateways
Calculation is done using the 6-bytes of reserved ULA space, the Calculation is done using the 6-bytes of reserved ULA space, the
2-byte Fabric ID, and the node's 8-byte System ID. 2-byte Fabric ID, and the node's 8-byte System ID.
In order for leaf nodes to derive IPv6 loopback addresses, algorithms In order for leaf nodes to derive IPv6 loopback addresses, algorithms
shown in both auto_evpn_fidsidv6loopback (Figure 24) and shown in both auto_evpn_fidsidv6loopback (Figure 28) and
auto_evpn_v6prefixfidsid2loopback (Figure 9) are required. auto_evpn_v6prefixfidsid2loopback (Figure 13) are required.
IPv4 addresses MAY be supported, but it should be noted that they IPv4 addresses MAY be supported, but it should be noted that they
have a higher likelihood of collision. The appendix contains the have a higher likelihood of collision. The appendix contains the
required auto_evpn_fidsid2v4loopback (Figure 23) algorithm to support required auto_evpn_fidsid2v4loopback (Figure 27) algorithm to support
IPv4 loopback derivation. IPv4 loopback derivation.
6.3.2. ToF Nodes as Route Reflectors 6.3.2. ToF Nodes as Route Reflectors
ToF nodes acting as route reflectors MUST derive their loopback ToF nodes acting as route reflectors MUST derive their loopback
address according to the specific section describing the algorithm. address according to the specific section describing the algorithm.
Calculation is done using the 6-bytes of reserved ULA space, the Calculation is done using the 6-bytes of reserved ULA space, the
2-byte Fabric ID, and the 8-byte System ID of each elected route 2-byte Fabric ID, and the 8-byte System ID of each elected route
reflector. reflector.
In order for the ToF nodes to derive IPv6 loopbacks, the algorithms In order for the ToF nodes to derive IPv6 loopbacks, the algorithms
shown in both auto_evpn_fidsidv6loopback (Figure 24) and shown in both auto_evpn_fidsidv6loopback (Figure 28) and
auto_evpn_fidrrpref2rrloopback (Figure 10) are required. auto_evpn_fidrrpref2rrloopback (Figure 14) are required.
In order for the ToF derive the necessary prefix range to facilitate In order for the ToF derive the necessary prefix range to facilitate
peering requests from any leaf, the algorithm shown in peering requests from any leaf, the algorithm shown in
"auto_evpn_fid2fabric_prefixes" (Figure 8) is required. "auto_evpn_fid2fabric_prefixes" (Figure 12) is required.
6.3.2.1. Route Reflector Election Procedures A topology MUST elect at least 1 Top-of-Fabric node as an IBGP route
reflector, but SHOULD elect 3. The election method varies depending
upon whether the fabric is comprised of a single plane or multiple
planes or if DCI gateway functionality is desired.
6.3.2.1. Single Plane Route Reflector Election Procedures
Four Top-of-Fabric nodes MUST be elected as an IBGP route reflector.
Each ToF performs the election independently based on system IDs of Each ToF performs the election independently based on system IDs of
other ToFs in the fabric obtained via southbound reflection. The other ToFs in the fabric obtained via southbound reflection. The
route reflector election procedures are defined as follows: route reflector election procedures are defined as follows:
1. ToF node with the highest System ID. 1. ToF node with the highest System ID.
2. ToF node with the lowest System ID. 2. ToF node with the lowest System ID.
3. ToF node with the 2nd highest System ID. 3. ToF node with the 2nd highest System ID.
4. ToF node with the 2nd lowest System ID. 4. etc.
This ordering is necessary to prevent a single node with either the This ordering is necessary to prevent a single node with either the
highest or lowest System ID from triggering changes to route highest or lowest System ID from triggering changes to route
reflector loopback addresses as it would result in all BGP sessions reflector loopback addresses as it would result in all BGP sessions
dropping. dropping.
For example, if two nodes, ToF01 and ToF02 with System IDs For example, if two nodes, ToF01 and ToF02 with System IDs
002c6af5a281c000 and 002c6bf5788fc000 respectively, ToF02 would be 002c6af5a281c000 and 002c6bf5788fc000 respectively, ToF02 would be
elected due to it having the highest System ID of the ToFs elected due to it having the highest System ID of the ToFs
(002c6bf5788fc000). If a ToF determines that it is elected as route (002c6bf5788fc000). If a ToF determines that it is elected as route
reflector, it uses the knowledge of its position in the list to reflector, it uses the knowledge of its position in the list to
derive route reflector v6 loopback address. derive route reflector IPv6 loopback address.
The algorithm shown in "auto_evpn_sids2rrs" (Figure 6) is required to The algorithm shown in "auto_evpn_sids2rrs" (Figure 10) is required
accomplish this. to accomplish this.
Considerations for multiplane route reflector elections will be 6.3.2.1.1. DCI-GW Variations
included in future revisions.
It is beneficial for ToF-RRs requiring DCI-GW functions to be
preferred over ToF-RRs that do not. As such, the
"default_acting_auto_evpn_dci_when_tof" flag described in
Appendix A.1 MUST be factored into election procedures mentioned in
the previous section. Essentially, ToFs flagged as requiring DCI-GW
functions, will be sorted separately from those that do not. That is
to say, that ToFs requiring DCI-GW functions will always be preferred
as RRs.
For example, if a fabric contains 4 ToF nodes where 2 require DCI-GW
functions and the other 2 do not, the election will take place as
follows:
1. ToF node (DCI) with the highest System ID.
2. ToF node (DCI) with the lowest System ID.
3. ToF node (non-DCI) with the 2nd highest System ID.
4. etc.
6.3.2.2. Multiplane Route Reflector Election Procedures
As mentioned in the main RIFT [RIFT] specification, when an
implementation uses multiplane fabrics, inter-ToF rings are
recommended in order to facilitate northbound flooding between ToFs
in different planes.
If a multiplane implementation is using Auto-EVPN, those inter-Tof
rings are REQUIRED to ensure that DCI/RR election works as intended.
Each ToF performs the election independently based on system IDs of
other ToFs in the other fabrics obtained from northbound flooding
across the inter-ToF rings. The highest System ID from each plane
will be considered the Plane ID, which is then factored into the
election as follows:
1. The ToF node with the highest Plane ID, DCI bit, System ID
2. The ToF node with the lowest Plane ID, DCI bit, System ID
3. The ToF node with the 2nd highest Plane ID, DCI bit, System ID
4. etc.
This algorithm allows DCI/RRs to be split across planes for improved
redundancy.
6.4. Autonomous System Number 6.4. Autonomous System Number
Nodes in each fabric MUST derive a private autonomous system number Nodes in each fabric MUST derive a private autonomous system number
based on its Fabric ID so that it is unique across the fabric. based on its Fabric ID so that it is unique across the fabric.
The algorithm shown in auto_evpn_fid2private_AS (Figure 25) is The algorithm shown in auto_evpn_fid2private_AS (Figure 29) is
required to derive the private ASN. required to derive the private ASN.
6.5. Router ID 6.5. Router ID
Nodes MUST drive a Router ID that is based on both its System ID and Nodes MUST drive a Router ID that is based on both its System ID and
Fabric ID so that it is unique to both. Fabric ID so that it is unique to both.
The algorithm shown in auto_evpn_sidfid2bgpid (Figure 11) is required The algorithm shown in auto_evpn_sidfid2bgpid (Figure 15) is required
to derive the BGP Router ID. to derive the BGP Router ID.
6.6. Cluster ID 6.6. Cluster ID
Route reflector nodes in each fabric MUST derive a cluster ID that is Route reflector nodes in each fabric MUST derive a cluster ID that is
based on its Fabric ID so that it is unique across the fabric. based on its Fabric ID so that it is unique across the fabric.
The algorithm shown in auto_evpn_fid2clusterid (Figure 26) is The algorithm shown in auto_evpn_fid2clusterid (Figure 30) is
required to derive the BGP Cluster ID. required to derive the BGP Cluster ID.
6.7. Route Target 6.7. Route Target
Nodes hosting EVPN EVIs MUST derive a route target extended community Nodes hosting EVPN EVIs MUST derive a route target extended community
based on the MAC-VRF ID for each EVI so that it is unique across the based on the MAC-VRF ID for each EVI so that it is unique across the
network. Route targets MUST be of type 0 as per RFC4360. network. Route targets MUST be of type 0 as per RFC4360.
For example, if given a MAC-VRF ID of 1, the derived route target For example, if given a MAC-VRF ID of 1, the derived route target
would be "target:1" would be "target:1"
The algorithm shown in auto_evpn_evi2rt (Figure 12) is required to The algorithm shown in auto_evpn_evi2rt (Figure 16) is required to
derive the Route Target community. derive the Route Target community.
6.8. Route Distinguisher 6.8. Route Distinguisher
Nodes hosting EVPN EVIs MUST derive a type-0 route distinguisher Nodes hosting EVPN EVIs MUST derive a type-0 route distinguisher
based on its System ID and Fabric ID so that it is unique per MAC-VRF based on its System ID and Fabric ID so that it is unique per node
and per node. within a fabric.
The algorithm shown in auto_evpn_sidfid2rd (Figure 18) is required to The algorithm shown in auto_evpn_sidfid2rd (Figure 22) is required to
derive the Route Distinguisher. derive the Route Distinguisher.
6.9. EVPN MAC-VRF Services 6.9. EVPN MAC-VRF Services
It's obvious that applications utilizing Auto-EVPN overlay services It's obvious that applications utilizing Auto-EVPN overlay services
may require a variety of layer-2 and/or layer-3 traffic may require a variety of layer-2 and/or layer-3 traffic
considerations. Variables supporting these services are also derived considerations. Variables supporting these services are also derived
based on some combination of MAC-VRF ID, Fabric ID, and other based on some combination of MAC-VRF ID, Fabric ID, and other
constant values. Integrated Routing and Bridging (IRB) gateway constant values. Integrated Routing and Bridging (IRB) gateway
address derivation also leverages a set of constant RANDOMSEEDS address derivation also leverages a set of constant RANDOMSEEDS
(Figure 5) values that MUST be used to provide additional entropy. (Figure 9) values that MUST be used to provide additional entropy.
In order to ensure that VLAN ID's don't collide, a single deployment In order to ensure that VLAN ID's don't collide, a single deployment
SHOULD NOT exceed 3 fabrics with 3 EVIs where each EVI terminate 15 SHOULD NOT exceed 6 fabrics with 7 EVIs where each EVI terminates 30
VLANs. The algorithms shown in auto_evpn_fidevivlansvlans2desc VLANs. The algorithms shown in auto_evpn_fidevivlansvlans2desc
(Figure 16) and auto_evpn_vlan_description_table (Figure 15) are (Figure 20) and auto_evpn_vlan_description_table (Figure 19) are
required to derive VLANs accordingly. An implementation MAY exceed required to derive VLANs accordingly. An implementation MAY exceed
this, but MUST indicate methods to ensure collision-free derivation this, but MUST indicate methods to ensure collision-free derivation
and describe which VLANs are stretched across fabrics. and describe which VLANs are stretched across fabrics.
Lastly, Table 3 shows example derivation results for the previously
mentioned scaling figures.
6.9.1. Untagged Traffic in Multiple Fabrics 6.9.1. Untagged Traffic in Multiple Fabrics
This section defines methods to derive unique VLAN, VNI, MAC, and This section defines methods to derive unique VLAN, VNI, MAC, and
gateway address values for deployments where untagged traffic is gateway address values for deployments where untagged traffic is
stretched across multiple fabrics. stretched across multiple fabrics.
6.9.1.1. VLAN 6.9.1.1. VLAN
Untagged traffic stretched across multiple fabrics MUST derive VLAN Untagged traffic stretched across multiple fabrics MUST derive VLAN
tags based on MAC-VRF ID in conjunction with a constant value of 1 tags based on MAC-VRF ID in conjunction with a constant value.
(i.e. MAC-VRF ID + 1).
6.9.1.2. VNI 6.9.1.2. VNI
Untagged traffic stretched across multiple fabrics MUST derive VNIs Untagged traffic stretched across multiple fabrics MUST derive VNIs
based on MAC-VRF ID and Fabric ID in conjunction with a constant based on MAC-VRF ID in conjunction with a constant value. These VNIs
value. These VNIs MUST correspond to EVPN Type-2 routes. MUST correspond to EVPN Type-2 routes.
The algorithm shown in auto_evpn_fidevivid2vni (Figure 14) is The algorithm shown in auto_evpn_fidevivid2vni (Figure 18) is
required to derive VNIs for Type-2 EVPN routes. required to derive VNIs for Type-2 EVPN routes.
6.9.1.3. MAC Address 6.9.1.3. MAC Address
The MAC address MUST be a unicast address and also MUST be identical The MAC address MUST be a unicast address and also MUST be identical
for any IRB gateways that belong to an individual bridge-domain for any IRB gateways that belong to an individual bridge-domain
across fabrics. The last 5-bytes MUST be a hash of the MAC-VRF ID across fabrics. The last 5-bytes MUST be a hash of the MAC-VRF ID
and a constant value of 1 that is calculated using the previously and a constant value that is calculated using the previously
mentioned random seed values. mentioned random seed values.
The algorithm shown in auto_evpn_fidevividsid2mac (Figure 22) is The algorithm shown in auto_evpn_fidevividsid2mac (Figure 26) is
required to derive MAC addresses. required to derive MAC addresses.
6.9.1.4. IPv6 IRB Gateway Address 6.9.1.4. IPv6 IRB Gateway Address
The derived IPv6 gateway address MUST be from a ULA-scoped range that The derived IPv6 gateway address MUST be from a ULA-scoped range that
will account for the first 6-bytes. The next 5-bytes MUST be the will account for the first 6-bytes. The next 5-bytes MUST be the
last bytes of the derived MAC address. Finally, the remaining last bytes of the derived MAC address. Finally, the remaining
7-bytes MUST be ::0001. 7-bytes MUST be ::0001.
The algorithm shown in auto_evpn_fidevividsid2v6subnet (Figure 21) is The algorithm shown in auto_evpn_fidevividsid2v6subnet (Figure 25) is
required to derive the IPv6 gateway address. required to derive the IPv6 gateway address.
6.9.1.5. IPv4 IRB Gateway Address 6.9.1.5. IPv4 IRB Gateway Address
The derived IPv4 gateway address MUST be from a RFC1918 range, which The derived IPv4 gateway address MUST be from a RFC1918 range, which
accounts for the first octet. The next octet MUST a hash of the MAC- accounts for the first octet. The next octet MUST a hash of the MAC-
VRF ID and a constant value of 1 that is calculated using the VRF ID and a constant value of 1 that is calculated using the
previously mentioned random seed values. Finally, the remaining 2 previously mentioned random seed values. Finally, the remaining 2
octets MUST be 0 and 1 respectively. octets MUST be 0 and 1 respectively.
The algorithm shown in auto_evpn_v4prefixfidevividsid2v4subnet The algorithm shown in auto_evpn_v4prefixfidevividsid2v4subnet
(Figure 19) is required to derive the IPv4 gateway address. It (Figure 23) is required to derive the IPv4 gateway address. It
should be noted that there is a higher likelihood of address should be noted that there is a higher likelihood of address
collisions when deriving IPv4 addresses. collisions when deriving IPv4 addresses.
6.9.2. Tagged Traffic in Multiple Fabrics 6.9.2. Tagged Traffic in Multiple Fabrics
This section defines methods to derive unique VLAN, VNI, MAC, and This section defines methods to derive unique VLAN, VNI, MAC, and
gateway address values for deployments where tagged traffic is gateway address values for deployments where tagged traffic is
stretched across multiple fabrics. stretched across multiple fabrics.
6.9.2.1. VLAN 6.9.2.1. VLAN
Tagged traffic stretched across multiple fabrics MUST derive VLAN Tagged traffic stretched across multiple fabrics MUST derive VLAN
tags based on MAC-VRF ID in conjunction with a constant value of 16 tags based on MAC-VRF ID in conjunction with a constant value.
(i.e. MAC-VRF ID + 16).
6.9.2.2. VNI 6.9.2.2. VNI
Tagged traffic stretched across multiple fabrics MUST derive VNIs Tagged traffic stretched across multiple fabrics MUST derive VNIs
based on MAC-VRF ID and Fabric ID in conjunction with a constant based on MAC-VRF ID in conjunction with a constant value. These VNIs
value. These VNIs MUST correspond to EVPN Type-2 routes. MUST correspond to EVPN Type-2 routes.
The algorithm shown in auto_evpn_fidevivid2vni (Figure 14) is The algorithm shown in auto_evpn_fidevivid2vni (Figure 18) is
required to derive VNIs for Type-2 EVPN routes. required to derive VNIs for Type-2 EVPN routes.
6.9.2.3. MAC Address 6.9.2.3. MAC Address
The MAC address MUST be a unicast address and also MUST be identical The MAC address MUST be a unicast address and also MUST be identical
for any IRB gateways that belong to an individual bridge-domain for any IRB gateways that belong to an individual bridge-domain
across fabrics. The last 5-bytes MUST be a hash of the MAC-VRF ID across fabrics. The last 5-bytes MUST be a hash of the MAC-VRF ID
and a constant value of 1 that is calculated using the previously and a constant value that is calculated using the previously
mentioned random seed values. mentioned random seed values.
The algorithm shown in auto_evpn_fidevividsid2mac (Figure 22) is The algorithm shown in auto_evpn_fidevividsid2mac (Figure 26) is
required to derive MAC addresses. required to derive MAC addresses.
6.9.2.4. IPv6 IRB Gateway Address 6.9.2.4. IPv6 IRB Gateway Address
The derived IPv6 gateway address MUST be from a ULA-scoped range that The derived IPv6 gateway address MUST be from a ULA-scoped range that
will account for the first 6-bytes. The next 5-bytes MUST be the will account for the first 6-bytes. The next 5-bytes MUST be the
last bytes of the derived MAC address. Finally, the remaining last bytes of the derived MAC address. Finally, the remaining
7-bytes MUST be ::0001. 7-bytes MUST be ::0001.
The algorithm shown in auto_evpn_fidevividsid2v6subnet (Figure 21) is The algorithm shown in auto_evpn_fidevividsid2v6subnet (Figure 25) is
required to derive the IPv6 gateway address. required to derive the IPv6 gateway address.
6.9.2.5. IPv4 IRB Gateway Address 6.9.2.5. IPv4 IRB Gateway Address
The derived IPv4 gateway address MUST be from a RFC1918 range, which The derived IPv4 gateway address MUST be from a RFC1918 range, which
accounts for the first octet. The next octet MUST a hash of the MAC- accounts for the first octet. The next octet MUST a hash of the MAC-
VRF ID and a constant value of 16 that is calculated using the VRF ID and a constant value of 16 that is calculated using the
previously mentioned random seed values. Finally, the remaining 2 previously mentioned random seed values. Finally, the remaining 2
octets MUST be 0 and 1 respectively. octets MUST be 0 and 1 respectively.
The algorithm shown in auto_evpn_v4prefixfidevividsid2v4subnet The algorithm shown in auto_evpn_v4prefixfidevividsid2v4subnet
(Figure 19) is required to derive the IPv4 gateway address. It (Figure 23) is required to derive the IPv4 gateway address. It
should be noted that there is a higher likelihood of address should be noted that there is a higher likelihood of address
collisions when deriving IPv4 addresses. collisions when deriving IPv4 addresses.
6.9.3. Tagged Traffic in a Single Fabric 6.9.3. Tagged Traffic in a Single Fabric
This section defines a method to derive unique VLAN, VNI, MAC, and This section defines a method to derive unique VLAN, VNI, MAC, and
gateway address values for deployments where untagged traffic is gateway address values for deployments where untagged traffic is
contained within a single fabric. contained within a single fabric.
6.9.3.1. VLAN 6.9.3.1. VLAN
Tagged traffic contained to a single fabric MUST derive VLAN tags Tagged traffic contained to a single fabric MUST derive VLAN tags
based on MAC-VRF ID and Fabric ID in conjunction with a constant based on MAC-VRF ID and Fabric ID in conjunction with a constant
value of 17 (i.e. MAC-VRF ID + Fabric ID + 17). value.
6.9.3.2. VNI 6.9.3.2. VNI
Tagged traffic contained to a single fabric MUST derive VNIs based on Tagged traffic contained to a single fabric MUST derive VNIs based on
MAC-VRF ID and Fabric ID in conjunction with a constant value. These MAC-VRF ID and Fabric ID in conjunction with a constant value. These
VNIs MUST correspond to EVPN Type-2 routes. VNIs MUST correspond to EVPN Type-2 routes.
The algorithm shown in auto_evpn_fidevivid2vni (Figure 14) is The algorithm shown in auto_evpn_fidevivid2vni (Figure 18) is
required to derive VNIs for Type-2 EVPN routes. required to derive VNIs for Type-2 EVPN routes.
6.9.3.3. MAC Address 6.9.3.3. MAC Address
The MAC address MUST be a unicast address and also MUST be identical The MAC address MUST be a unicast address and also MUST be identical
for any IRB gateways that belong to an individual bridge-domain for any IRB gateways that belong to an individual bridge-domain
across fabrics. The last 5-bytes MUST be a hash of the MAC-VRF ID across fabrics. The last 5-bytes MUST be a hash of the MAC-VRF ID
and a constant value of 1 that is calculated using the previously and a constant value that is calculated using the previously
mentioned random seed values. mentioned random seed values.
The algorithm shown in auto_evpn_fidevividsid2mac (Figure 22) is The algorithm shown in auto_evpn_fidevividsid2mac (Figure 26) is
required to derive MAC addresses. required to derive MAC addresses.
6.9.3.4. IPv6 IRB Gateway Address 6.9.3.4. IPv6 IRB Gateway Address
The derived IPv6 gateway address MUST be from a ULA-scoped range, The derived IPv6 gateway address MUST be from a ULA-scoped range,
which accounts for the first 6-bytes. The next 5-bytes MUST be the which accounts for the first 6-bytes. The next 5-bytes MUST be the
last bytes of the derived MAC address. Finally, the remaining last bytes of the derived MAC address. Finally, the remaining
7-bytes MUST be ::0001. 7-bytes MUST be ::0001.
The algorithm shown in auto_evpn_fidevividsid2v6subnet (Figure 21) is The algorithm shown in auto_evpn_fidevividsid2v6subnet (Figure 25) is
required to derive the IPv6 gateway address. required to derive the IPv6 gateway address.
6.9.3.5. IPv4 IRB Gateway Address 6.9.3.5. IPv4 IRB Gateway Address
The derived IPv4 gateway address MUST be from a RFC1918 range, which The derived IPv4 gateway address MUST be from a RFC1918 range, which
accounts for the first octet. The next octet MUST a hash of the MAC- accounts for the first octet. The next octet MUST a hash of the MAC-
VRF ID and a constant value of 17 that is calculated using the VRF ID and a constant value of 17 that is calculated using the
previously mentioned random seed values. Finally, the remaining 2 previously mentioned random seed values. Finally, the remaining 2
octets MUST be 0 and 1 respectively. octets MUST be 0 and 1 respectively.
The algorithm shown in auto_evpn_v4prefixfidevividsid2v4subnet The algorithm shown in auto_evpn_v4prefixfidevividsid2v4subnet
(Figure 19) is required to derive the IPv4 gateway address. It (Figure 23) is required to derive the IPv4 gateway address. It
should be noted that there is a higher likelihood of address should be noted that there is a higher likelihood of address
collisions when deriving IPv4 addresses. collisions when deriving IPv4 addresses.
6.9.4. Traffic Routed to External Destinations 6.9.4. Traffic Routed to External Destinations
6.9.4.1. Route Distinguisher 6.9.4.1. Route Distinguisher
Nodes hosting IP Prefix routes MUST derive a type-0 route Nodes hosting IP Prefix routes MUST derive a type-0 route
distinguisher based on its System ID and Fabric ID so that it is distinguisher based on its System ID and Fabric ID so that it is
unique per IP-VRF and per node. unique per IP-VRF and per node.
The algorithm shown in auto_evpn_sidfid2rd (Figure 18) is required to The algorithm shown in auto_evpn_sidfid2rd (Figure 22) is required to
derive the Route Target. derive the Route Target.
6.9.4.2. Route Target 6.9.4.2. Route Target
Nodes hosting IP prefix routes MUST derive a route target extended Nodes hosting IP prefix routes MUST derive a route target extended
community based on the MAC-VRF ID for each IP-VRF so that it is community based on the MAC-VRF ID for each IP-VRF so that it is
unique across the network. Route targets MUST be of type 0. unique across the network. Route targets MUST be of type 0.
The algorithm shown in auto_evpn_evi2rt (Figure 12) is required to The algorithm shown in auto_evpn_evi2rt (Figure 16) is required to
derive the Route Target community. derive the Route Target community.
6.10. Auto-EVPN Analytics 7. Operational Considerations
To fully realize the benefits of Auto-EVPN, it may help to describe
the high-level methodology. Simply put, RIFT automatically
provisions the underlay and Auto-EVPN provisions the overlay. The
goal of this section is to draw clear lines between general fabric
concepts, RIFT, and Auto-EVPN and how they fit into current network
designs and practices.
This section also describes an set of optional Key-Value TIEs that
leverages the variables that have already been derived to provide
further operational enhancement to the operator.
7.1. RIFT Underlay and Auto-EVPN Overlay
+----------------+ +----------------+
| Superspine-01 | | Superspine-02 |
| Top-of-Fabric | | Top-of-Fabric |
| RR/DCI Gateway | | RR/DCI Gateway |
+-+--+------+--+-+ +-+--+------+--+-+
| | | | | | | |
+---------------------+ | | | | | | |
| | | | | | | +---------------------+
| +-----------)------)--)--------+ | | |
| | | | | +-------+ | |
| | | | | | | |
| | | | +---)--------------)-----------+ |
| | | | | | | |
| | +--+ +------)----+ +--+ | |
| | | | | | | |
| | | +---+ | | | |
| | | | | | | |
+-+------------+-+ +-+------------+-+ +-+------------+-+ +-+------------+-+
| Spine-1-1 | | Spine-1-2 | | Spine-2-1 | | Spine-2-2 |
| Top-of-PoD | | Top-of-PoD | | Top-of-PoD | | Top-of-PoD |
| N/A | | N/A | | N/A | | N/A |
+--+----------+--+ +--+----------+--+ +--+----------+--+ +--+----------+--+
| | | | | | | |
| +----------)---+ | | +----------)---+ |
| | | | | | | |
| +----------+ | | | +----------+ | |
| | | | | | | |
+--+----------+--+ +------+------+--+ +--+----------+--+ +------+------+--+
| Leaf-1-1 | | Leaf-1-2 | | Leaf-2-1 | | Leaf-2-2 |
| Leaf +----+ Leaf | | Leaf | | Leaf |
| Leaf Gateway | | Leaf Gateway | | Leaf Gateway | | Leaf Gateway |
+--+-------------+ +--------------+-+ +----------------+ +--------------+-+
| | |
| ESI | |
| (00:00:00:00:00:00:00:00:11:01) | |
| +----------------------+ |
| | |
+--+----------+--+ +--------------+-+
| Server-1-1 | | Server-2-2 |
+----------------+ +----------------+
+-------------- PoD-1 -------------+ +-------------- PoD-2 -------------+
Figure 1: Auto-EVPN Example Topology
Figure 1 illustrates a typical 5-stage Clos IP fabric. Each node is
labelled in such a way that conveys the following:
1. The nodes placement within the generic IP fabric.
2. The nodes role within the RIFT IP underlay.
3. The nodes role within the Auto-EVPN overlay.
Table 1 should also help further align these concepts.
+==================+===============+====================+
| Fabric Placement | RIFT Role | Auto-EVPN Role |
+==================+===============+====================+
| Superspine | Top-of-Fabric | Route Reflector |
| | | and/or DCI Gateway |
+------------------+---------------+--------------------+
| Spine | Spine or Top- | N/A |
| | of-PoD | |
+------------------+---------------+--------------------+
| Leaf | Leaf | Leaf Gateway |
+------------------+---------------+--------------------+
Table 1: Role Associations
It's also important to remember that Auto-EVPN simply takes existing
EVPN overlay deployment scenarios and simplifies the provisioning.
Figure 2 further illustrates the resulting EVPN overlay topology.
+----------------+ +----------------+
| Superspine-01 | | Superspine-02 |
| RR1 | | RR2 |
| | | |
+-+--+---------+-+ +-+--+---------+-+
| | | | | |
+---------------------+ | | | | |
| | | | | +---------------------+
| +-----------)---------)--------+ | |
| | | | +-------+ |
| | | | | |
| | | +---)--------------------------+ |
| | | | | |
| | +--+ | | |
| | | | | |
| | | +---+ | |
| | | | | |
+-+------------+-+ +-+------------+-+ +-+------------+-+
| Leaf-1-1 | | Leaf-1-2 | | Leaf-2-2 |
| Leaf Gateway | | Leaf Gateway | | Leaf Gateway |
| | | | | |
+--+-------------+ +--------------+-+ +--------------+-+
| | |
| ESI | |
| (00:00:00:00:00:00:00:00:11:01) | |
| +----------------------+ |
| | |
+--+----------+--+ +--------------+-+
| Server-1-1 | | Server-2-2 |
+----------------+ +----------------+
+-------------- PoD-1 -------------+ +-------------- PoD-2 -------------+
Figure 2: Auto-EVPN Overlay Topology
7.2. Auto-EVPN Analytics
Leaf nodes MAY optionally advertise analytics information about the Leaf nodes MAY optionally advertise analytics information about the
Auto-EVPN fabric to ToF nodes using RIFT Key-Value TIEs. This may be Auto-EVPN fabric to ToF nodes using RIFT Key-Value TIEs. This may be
advantageous in that overlay validation and troubleshooting advantageous in that overlay validation and troubleshooting
activities can be performed on the ToF nodes. activities can be performed on the ToF nodes.
This section requests suggested values from the RIFT Well-Known Key- This section requests suggested values from the RIFT Well-Known Key-
Type Registry and describes their use for Auto-EVPN. Type Registry and describes their use for Auto-EVPN.
+===================+=======+====================================+ +===================+=======+====================================+
| Name | Value | Description | | Name | Value | Description |
+===================+=======+====================================+ +===================+=======+====================================+
| Auto-EVPN | 3 | Analytics describing a MAC-VRF on | | Auto-EVPN | 3 | Analytics describing a MAC-VRF on |
| Analytics MAC-VRF | | a particular node within a fabric. | | Analytics MAC-VRF | | a particular node within a fabric. |
+-------------------+-------+------------------------------------+ +-------------------+-------+------------------------------------+
| Auto-EVPN | 4 | Analytics describing an Auto-EVPN | | Auto-EVPN | 4 | Analytics describing an Auto-EVPN |
| Analytics Global | | node within a fabric. | | Analytics Global | | node within a fabric. |
+-------------------+-------+------------------------------------+ +-------------------+-------+------------------------------------+
Table 1: Requested RIFT Key Registry Values Table 2: Requested RIFT Key Registry Values
The normative Thrift schema can be found in the appendix The normative Thrift schema can be found in the appendix
(Appendix A.4). (Appendix A.4).
6.10.1. Auto-EVPN Global Analytics Key Type 7.2.1. Auto-EVPN Global Analytics Key Type
This Key Type describes node level information within the context of This Key Type describes node level information within the context of
the Auto-EVPN fabric. The System ID of the advertising leaf node the Auto-EVPN fabric. The System ID of the advertising leaf node
MUST be used to differentiate the node among other nodes in the MUST be used to differentiate the node among other nodes in the
fabric. fabric.
The Auto-EVPN Global Key Type MUST be advertised with the RIFT Fabric The Auto-EVPN Global Key Type MUST be advertised with the RIFT Fabric
ID encoded into the 3rd and 4th bytes of the Key Identifier. ID encoded into the 3rd and 4th bytes of the Key Identifier.
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Well-Known | Auto-EVPN (Global) | | Well-Known | Auto-EVPN (Global) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| (Auto-EVPN Role, | | (Auto-EVPN Role, |
| Established BGP Peer Count, | | Established BGP Peer Count, |
| Total BGP Peer Count,) | | Total BGP Peer Count,) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Auto-EVPN Global Key-Value TIE Figure 3: Auto-EVPN Global Key-Value TIE
where: where:
Auto-EVPN Role: *Auto-EVPN Role:*
The value indicating the node's Auto-EVPN role within the The value indicating the node's Auto-EVPN role within the
fabric. fabric.
0: Illegal value, MUST NOT be used. 0: Illegal value, MUST NOT be used.
1: Auto-EVPN Leaf Gateway 1: Auto-EVPN Leaf Gateway
2: Auto-EVPN Top-of-Fabric Gateway 2: Auto-EVPN Top-of-Fabric Gateway
Established BGP Session Count: *Established BGP Session Count:*
A 16-bit integer indicating the number of BGP sessions in the A 16-bit integer indicating the number of BGP sessions in the
Established state. Established state.
Total BGP Peer Count: *Total BGP Peer Count:*
A 16-bit integer indicating the total number of possible BGP A 16-bit integer indicating the total number of possible BGP
sessions on the local node, regardless of state. sessions on the local node, regardless of state.
6.10.2. Auto-EVPN MAC-VRF Key Type 7.2.2. Auto-EVPN MAC-VRF Key Type
This Key-Value structure contains information about a specific MAC- This Key-Value structure contains information about a specific MAC-
VRF within the Auto-EVPN fabric. VRF within the Auto-EVPN fabric.
The Auto-EVPN MAC-VRF Key Type MUST be advertised with the Auto-EVPN The Auto-EVPN MAC-VRF Key Type MUST be advertised with the Auto-EVPN
MAC-VRF ID encoded into the 3rd and 4th bytes of the Key Identifier. MAC-VRF ID encoded into the 3rd and 4th bytes of the Key Identifier.
All values advertised in a MAC-VRF Key-Value TIE MUST represent only All values advertised in a MAC-VRF Key-Value TIE MUST represent only
state of the local node. state of the local node.
skipping to change at page 17, line 27 skipping to change at page 21, line 40
| Total CE Interface Count, | | Total CE Interface Count, |
| Operational IRB Interface Count, | | Operational IRB Interface Count, |
| Total IRB Interface Count, | | Total IRB Interface Count, |
| EVPN Type-2 MAC Route Count, | | EVPN Type-2 MAC Route Count, |
| EVPN Type-2 MAC/IP Route Count, | | EVPN Type-2 MAC/IP Route Count, |
| Configured VLAN Count, | | Configured VLAN Count, |
| MAC-VRF Name, | | MAC-VRF Name, |
| MAC-VRF Description,) | | MAC-VRF Description,) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Auto-EVPN MAC-VRF Key-Value TIE Figure 4: Auto-EVPN MAC-VRF Key-Value TIE
where: where:
Operational Customer Edge Interface Count: *Operational Customer Edge Interface Count:*
A 16-bit integer indicating the number of CE interfaces A 16-bit integer indicating the number of CE interfaces
associated with the MAC-VRF where both administrative and associated with the MAC-VRF where both administrative and
operational status are "up". operational status are "up".
Total Customer Edge Interface Count: *Total Customer Edge Interface Count:*
A 16-bit integer indicating the total number of CE interfaces A 16-bit integer indicating the total number of CE interfaces
associated with the MAC-VRF regardless of interface status. associated with the MAC-VRF regardless of interface status.
Operational IRB Interface Count: *Operational IRB Interface Count:*
A 16-bit integer indicating the number of IRB interfaces A 16-bit integer indicating the number of IRB interfaces
associated with the MAC-VRF where both administrative and associated with the MAC-VRF where both administrative and
operational status are "up". operational status are "up".
Total IRB Interface Count: *Total IRB Interface Count:*
A 16-bit integer indicating the total number of IRB interfaces A 16-bit integer indicating the total number of IRB interfaces
associated with the MAC-VRF regardless of interface status. associated with the MAC-VRF regardless of interface status.
EVPN Type-2 MAC Route Count: *EVPN Type-2 MAC Route Count:*
A 32-bit integer indicating the total number of EVPN Type-2 MAC A 32-bit integer indicating the total number of EVPN Type-2 MAC
routes. routes.
EVPN Type-2 MAC/IP Route Count: *EVPN Type-2 MAC/IP Route Count:*
A 32-bit integer indicating the total number of EVPN Type-2 A 32-bit integer indicating the total number of EVPN Type-2
MAC/IP routes. MAC/IP routes.
VLAN Count: *VLAN Count:*
A 16-bit integer indicating the total number configured VLANs. A 16-bit integer indicating the total number configured VLANs.
MAC-VRF Name: *MAC-VRF Name:*
A string used to indicate the name of the MAC-VRF on the node. A string used to indicate the name of the MAC-VRF on the node.
MAC-VRF Description: *MAC-VRF Description:*
A string used to describe the MAC-VRF on the node, similar to A string used to describe the MAC-VRF on the node, similar to
that of an interface description. that of an interface description.
7. Acknowledgements 8. Acknowledgements
The authors would like to thank Olivier Vandezande, Matthew Jones, The authors would like to thank Olivier Vandezande, Matthew Jones,
and Michal Styszynski for their contributions. and Michal Styszynski for their contributions.
8. Security Considerations 9. Security Considerations
This document introduces no new security concerns to RIFT or other This document introduces no new security concerns to RIFT or other
specifications referenced in this document. specifications referenced in this document.
9. References 10. References
9.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC7432] Sajassi, A., Aggarwal, R., Bitar, N., Isaac, A., Uttaro, [RFC7432] Sajassi, A., Aggarwal, R., Bitar, N., Isaac, A., Uttaro,
J., Drake, J., and W. Henderickx, "BGP MPLS-Based Ethernet J., Drake, J., and W. Henderickx, "BGP MPLS-Based Ethernet
VPN", February 2015, VPN", February 2015,
<https://www.rfc-editor.org/info/rfc7432>. <https://www.rfc-editor.org/info/rfc7432>.
skipping to change at page 19, line 11 skipping to change at page 23, line 24
[RIFT-KV] Head, J. and T. Przygienda, "RIFT Keys Structure and Well- [RIFT-KV] Head, J. and T. Przygienda, "RIFT Keys Structure and Well-
Known Registry in Key Value TIE", Work in Progress, draft- Known Registry in Key Value TIE", Work in Progress, draft-
head-rift-kv-registry-01, July 2021. head-rift-kv-registry-01, July 2021.
Appendix A. Thrift Models Appendix A. Thrift Models
This section contains the normative Thrift models required to support This section contains the normative Thrift models required to support
Auto-EVPN. Per the main RIFT [RIFT] specification, all signed values Auto-EVPN. Per the main RIFT [RIFT] specification, all signed values
MUST be interpreted as unsigned values. MUST be interpreted as unsigned values.
A.1. RIFT LIE Schema A.1. common.thrift
A.1.1. Auto-EVPN Version This section specifies changes to main RIFT encoding.thrift model.
struct LIEPacket { ...
... /** EVPN Fabric ID */
/** It provides optional version of EVPN ZTP as 256 * MAJOR + MINOR */ typedef i16 FabricIDType
26: optional i16 auto_evpn_version; const bool default_acting_auto_evpn_dci_when_tof = false
...
A.1.2. Fabric ID enum AutoEVPNModel {
ERB_VLAN_BUNDLE,
}
struct LIEPacket { const AutoEVPNModel default_autoevpn_model = AutoEVPNModel.ERB_VLAN_BUNDLE
... ...
/** It provides the optional ID of the configured fabric */
25: optional common.FabricIDType fabric_id;
...
A.2. RIFT Node-TIE Schema Figure 5: RIFT Common Schema for Auto-EVPN
A.2.1. Auto-EVPN Version A.2. encoding.thrift
struct NodeTIEElement { This section specifies changes to main RIFT encoding.thrift model.
...
/** It provides optional version of EVPN ZTP as 256 * MAJOR + MINOR */
13: optional i16 auto_evpn_version;
...
A.2.2. Fabric ID struct LIEPacket {
...
/** provides the optional ID of the configured auto-evpn fabric. */
35: optional common.FabricIDType fabric_id;
/** provides optional version of EVPN ZTP as 256 * MAJOR + MINOR */
36: optional i16 auto_evpn_version;
...
}
struct NodeTIEElement { struct NodeTIEElement {
... ...
/** It provides the optional ID of the Fabric configured */ /** It provides the optional ID of the Fabric configured */
12: optional common.FabricIDType fabric_id; 21: optional common.FabricIDType fabric_id;
... /** It provides optional version of EVPN ZTP as 256 * MAJOR + MINOR */
22: optional i16 auto_evpn_version;
/** ToFs in the same plane. Only carried by ToF. Multiple node TIEs can carry disjoint sets of ToFs.
Used in complex multi-plane elections. */
24: optional set<common.SystemIDType> same_plane_tofs,
/** provides optionally the EVPN model supported */
25: optional common.AutoEVPNModel auto_evpn_model = common.AutoEVPNModel.ERB_VLAN_BUNDLE,
...
}
Figure 6: RIFT Encoding Schema for Auto-EVPN
A.3. common_evpn.thrift A.3. common_evpn.thrift
This section contains the normative Auto-EVPN Thrift schema. This section contains the normative Auto-EVPN Thrift schema.
/** /**
Thrift file for common AUTO EVPN definitions for RIFT Thrift file for common AUTO EVPN definitions for RIFT
Copyright (c) Juniper Networks, Inc., 2016- Copyright (c) Juniper Networks, Inc., 2016-
All rights reserved. All rights reserved.
skipping to change at page 20, line 42 skipping to change at page 25, line 22
5: required ASType autonomous_system, 5: required ASType autonomous_system,
6: required ClusterIDType cluster_id, 6: required ClusterIDType cluster_id,
/** prefixes to be redistributed north */ /** prefixes to be redistributed north */
7: required set<common.IPPrefixType> redistribute_north, 7: required set<common.IPPrefixType> redistribute_north,
/** prefixes to be redistributed south */ /** prefixes to be redistributed south */
8: required set<common.IPPrefixType> redistribute_south, 8: required set<common.IPPrefixType> redistribute_south,
/** group name for evpn auto overlay */ /** group name for evpn auto overlay */
9: required string bgp_group_name, 9: required string bgp_group_name,
/** fabric prefixes to be advertised in rift instead of default */ /** fabric prefixes to be advertised in rift instead of default */
10: required set<common.IPPrefixType> fabric_prefixes, 10: required set<common.IPPrefixType> fabric_prefixes,
/** v6 loopback prefix range, used e.g. to clean up config */
20: required common.IPv6PrefixType v6_loopback_range,
21: required common.IPv6PrefixType rr_loopback_range,
22: required common.IPv6PrefixType type5_loopback_range,
23: required common.IPv4PrefixType type5_v4_loopback_range,
/** v6 addresses of all possible RR loopbacks in this config. Can be used for e.g. cleanup */
24: required set<common.IPv6PrefixType> possible_elected_rrs,
} }
struct PartialEVPNEVI { struct PartialEVPNEVI {
// route target per RFC4360 // route target per RFC4360
1: required CommunityType rt_target, 1: required CommunityType rt_target,
2: required RTDistinguisherType rt_distinguisher, 2: required RTDistinguisherType rt_distinguisher,
3: required RTDistinguisherType rt_type5_distinguisher, 3: required RTDistinguisherType rt_type5_distinguisher,
5: required string mac_vrf_name, 5: required string mac_vrf_name,
6: required VNIType type5_vni, 6: required VNIType type5_vni,
} }
skipping to change at page 22, line 32 skipping to change at page 27, line 20
/// external platform to configure itself accordingly. Presence of /// external platform to configure itself accordingly. Presence of
/// according structure indicates that the role is assumed. /// according structure indicates that the role is assumed.
struct EVPNRoles { struct EVPNRoles {
1: required EVPNAnyRole generic, 1: required EVPNAnyRole generic,
2: optional EVPNRRRole route_reflector, 2: optional EVPNRRRole route_reflector,
3: optional EVPNLeafRole leaf, 3: optional EVPNLeafRole leaf,
} }
const common.TimeIntervalInSecType default_leaf_delay = 120 const common.TimeIntervalInSecType default_leaf_delay = 120
const common.TimeIntervalInSecType default_interface_ce_delay = 180 const common.TimeIntervalInSecType default_interface_ce_delay = 180
/// default delay before EVPNZTP FSM starts to compute anything /// default delay before AUTOEVPN FSM starts to compute anything
const common.TimeIntervalInSecType default_evpnztp_startup_delay = 60 const common.TimeIntervalInSecType default_AUTOEVPN_startup_delay = 60
Figure 7: Auto-EVPN Common Thrift Schema
A.4. auto_evpn_kv.thrift A.4. auto_evpn_kv.thrift
This section contains the normative Auto-EVPN Analytics Thrift This section contains the normative Auto-EVPN Analytics Thrift
schema. schema.
include "common.thrift" include "common.thrift"
namespace py auto_evpn_kv namespace py auto_evpn_kv
namespace rs models namespace rs models
skipping to change at page 24, line 15 skipping to change at page 29, line 4
4: optional AutoEVPNCounterType total_irb_interfaces, 4: optional AutoEVPNCounterType total_irb_interfaces,
/** Local EVPN Type-2 MAC route count /** Local EVPN Type-2 MAC route count
5: optional AutoEVPNLongCounterType local_evpn_type2_mac_routes, 5: optional AutoEVPNLongCounterType local_evpn_type2_mac_routes,
/** Local EVPN Type-2 MAC/IP route count /** Local EVPN Type-2 MAC/IP route count
6: optional AutoEVPNLongCounterType local_evpn_type2_mac_ip_routes, 6: optional AutoEVPNLongCounterType local_evpn_type2_mac_ip_routes,
/** number of configured VLANs */ /** number of configured VLANs */
7: optional i16 configured_vlans, 7: optional i16 configured_vlans,
/** optional human readable name */ /** optional human readable name */
8: optional string name, 8: optional string name,
/** optional human readable string describing the MAC-VRF */ /** optional human readable string describing the MAC-VRF */
9: optional string description, 9: optional string description,
} }
Figure 3: Auto-EVPN Key-Value Thrift Schema Figure 8: Auto-EVPN Key-Value Thrift Schema
Appendix B. Auto-EVPN Variable Derivation Appendix B. Auto-EVPN Variable Derivation
use std::cell::{RefCell, RefMut};
use std::cmp::{max, min};
use std::collections::{BTreeMap, BTreeSet, HashMap};
use std::fmt::Debug;
use std::net::{Ipv4Addr, Ipv6Addr};
use std::str::FromStr;
use itertools::interleave;
use itertools::Itertools;
use rayon::slice::ParallelSliceMut;
use foundation::models::common::{FabricIDType, IPv6PrefixType}; B.1. Variable Derivation Functions
use foundation::models::common::LevelType;
use foundation::models::common::HierarchyIndications;
use foundation::models::common::IPPrefixType;
use foundation::models::common::IPv4Address;
use foundation::models::common::IPv4PrefixType;
use foundation::models::common::IPv6Address;
use foundation::models::common::LEAF_LEVEL;
use foundation::models::common_services::ServiceErrorType;
use foundation::models::common_evpn::{DEFAULT_EVIS, DEFAULT_VLANS_PER_EVI,
DEFAULT_EVPNZTP_STARTUP_DELAY, DEFAULT_FABRIC_ID, DEFAULT_INTERFACE_CE_DELAY,
DEFAULT_LEAF_DELAY, EVPNAnyRole, EVPNLeafRole,
EVPNRoles, EVPNRRRole, UnitType};
use foundation::models::common_evpn::CEInterfaceType;
use foundation::models::common_evpn::CommunityType;
use foundation::models::common_evpn::EVPNEVI;
use foundation::models::common_evpn::IRBType;
use foundation::models::common_evpn::MACVRFNumberType;
use foundation::models::common_evpn::PartialEVPNEVI;
use foundation::models::common_evpn::RTDistinguisherType;
use foundation::models::common_evpn::VLANIDType;
use foundation::models::common_evpn::VLANType;
use foundation::models::common_evpn::VNIType;
use ILLEGAL_SYSTEM_I_D;
use NodeCapabilities;
use UnsignedSystemID;
Figure 4: auto_evpn_imports This section contains the normative derivation procedures required to
support Auto-EVPN.
/// indicates how many RRs we're computing in EVPN ZTP /// indicates how many RRs we're computing in AUTO EVPN
pub const MAX_AUTO_EVPN_RRS: usize = 3; pub const MAX_AUTO_EVPN_RRS: usize = 3;
/// indicates the fabric has no ID, used in computations to omit effects of fabric ID /// indicates the fabric has no ID, used in computations to omit effects of fabric ID
pub const NO_FABRIC_ID: FabricIDType = 0; pub const NO_FABRIC_ID: FabricIDType = 0;
/// invalid MACVRF number, MACVRFs start from 1 /// invalid MACVRF number, MACVRFs start from 1
pub const NO_MACVRF: MACVRFNumberType = 0; pub const NO_MACVRF: MACVRFNumberType = 0;
/// unique v6 prefix for all nodes starts with this /// unique v6 prefix for all nodes starts with this
pub const AUTO_EVPN_V6PREF: &str = "FD00:A1"; pub fn auto_evpn_v6pref(fid: FabricIDType) -> String {
/// how many bytes in a v6pref for RRs format!("FD00:{:04X}:A1", fid)
pub const AUTO_EVPN_V6PREFLEN: usize = 8 * 3; }
/// how many bytes in a v6pref for different purposes
pub const AUTO_EVPN_V6PREFLEN: usize = 8 * 5;
/// unique v6 prefix for route reflector purposes starts like this /// unique v6 prefix for route reflector purposes starts like this
pub const AUTO_EVPN_V6RRPREF: &str = "FD00:A2"; pub fn auto_evpn_v6rrpref(fid: FabricIDType) -> String {
format!("FD00:{:04X}:A2", fid)
}
/// unique v6 prefix for type-5 purposes starts like this /// unique v6 prefix for type-5 purposes starts like this
pub const AUTO_EVPN_V6T5PREF: &str = "FD00:A3"; pub fn auto_evpn_v6t5pref(fid: FabricIDType) -> String {
format!("FD00:{:04X}:A3", fid)
}
/// unique v6 prefix for IRB prefix purposes /// unique v6 prefix for IRB prefix purposes
pub const AUTO_EVPN_V6IRBPREF: &str = "FD00"; pub fn auto_evpn_v6irbpref(fid: FabricIDType) -> String {
/// unique v6 prefix first byte for v6 IRB prefix purposes format!("FD00:{:04X}:A4", fid)
pub const AUTO_EVPN_V6IRBPREFFIRSTBYTE: u8 = 0xA4; }
/// 2 bytes of prefix, then fabric ID, then another byte
pub const AUTO_EVPN_V6_FABPREFIXLEN: usize = 16 + 16 + 8;
/// unique v4 prefix for IRB purposes /// unique v4 prefix for IRB purposes
pub const AUTO_EVPN_V4IRBPREF: &str = "10"; pub const AUTO_EVPN_V4IRBPREF: &str = "10";
/// 3 bytes of prefix type and then we have fabric ID after that
pub const AUTO_EVPN_V6_FABPREFIXLEN: usize = 8 + 8 + 8 + 16;
/// per RFC magic /// per RFC magic
const RT_TARGET_HIGH: CommunityType = 0; const RT_TARGET_HIGH: CommunityType = 0;
const RT_TARGET_LOW: CommunityType = 0; const RT_TARGET_LOW: CommunityType = 0;
/// first available VLAN number /// first available VLAN number
pub const FIRST_VLAN: VLANIDType = 1; pub const FIRST_VLAN: UnsignedVLANIDType = 1;
// maximum vlan number one less than maximum to use as bitmask // maximum vlan number one less than maximum to use as bitmask
pub const MAX_VLAN: VLANIDType = 4095; pub const MAX_VLAN: UnsignedVLANIDType = 4095;
/// constant VLAN shift /// constant VLAN shift
pub const FIRST_VLAN_SHIFT: VLANIDType = 16; pub const FIRST_VLAN_SHIFT: UnsignedVLANIDType = 32;
/// NATIVE VLAN number /// NATIVE VLAN number
pub const NATIVE_VLAN: VLANIDType = 1; pub const NATIVE_VLAN: UnsignedVLANIDType = 1;
/// abstract description of VLAN properties for a derived VLAN /// abstract description of VLAN properties for a derived VLAN
pub struct VLANDescription { pub struct VLANDescription {
pub vlan_id: VLANIDType, pub vlan_id: UnsignedVLANIDType,
pub name: String, pub name: String,
/// can this VLAN be stretched across multiple fabrics /// can this VLAN be stretched across multiple fabrics
pub stretchable: bool, pub stretchable: bool,
pub native: bool, pub native: bool,
} }
/// maximum number of VLANs per MACVRF /// maximum number of VLANs per MACVRF
pub const MAX_VLANS_PER_EVI: usize = 15; pub const MAX_VLANS_PER_EVI: usize = 30;
/// maximum number of EVIs
pub const MAX_EVIS: MACVRFNumberType = 7;
pub type VLANStretchableType = bool; pub type VLANStretchableType = bool;
pub type VLANNativeType = bool; pub type VLANNativeType = bool;
pub type UnsignedVNIType = u32;
pub type UnsignedFabricIDType = u16;
pub type UnsignedUnitType = u16;
pub type UnsignedVLANIDType = u16;
pub type UnsignedRTDistinguisherType = u64;
pub const EXTRATYPE5_RD_DISTINGUISHER: u32 = 0xffff_ffff; pub const EXTRATYPE5_RD_DISTINGUISHER: u32 = 0xffff_ffff;
/// high bits of type 5 VNI /// high bits of type 5 VNI
const TYPE5VNIHIGH: VNIType = 0x0080_0000; const TYPE5VNIHIGH: UnsignedVNIType = 0x0080_0000;
/// bitmask for type 2 VNI /// bitmask for type 2 VNI
const TYPE2VNIMASK: VNIType = 0x00ff_ffff ^ TYPE5VNIHIGH; const TYPE2VNIMASK: UnsignedVNIType = 0x00ff_ffff ^ TYPE5VNIHIGH;
/// random seeds used in several algorithms to increase entropy /// random seeds used in several algorithms to increase entropy
pub const RANDOMSEEDS: [u64; 4] = [ pub const RANDOMSEEDS: [u64; 4] = [
27008318799u64, 27008318799u64,
67438371571, 67438371571,
37087353685, 37087353685,
88675895388, 88675895388,
]; ];
Figure 5: auto_evpn_const_structs_type Figure 9: auto_evpn_const_structs_type
pub(crate) fn auto_evpn_sids2rrs(mut v: Vec<UnsignedSystemID>) -> Vec<UnsignedSystemID> { /// function sorts vector of (is_dci, systemID) first,
v.par_sort_unstable(); /// splits of the DCIs from the non-DCIs and sorts them
let r = if v.len() > 2 { /// followed by a shuffle taking largest/smallest/2nd largest/2nd smallest.
let mut s = v.split_off(v.len() / 2); /// Ultimately both are merged which prefers the DCIs while
s.reverse(); /// still making sure that the election is stable with a system ID joining
interleave(v.into_iter(), s.into_iter()).collect() /// as smallest/largest.
} else { pub(crate) fn auto_evpn_sids2rrs(v: Vec<(bool, UnsignedSystemID)>)
v -> Vec<UnsignedSystemID> {
}; let (dcis, nondcis): (Vec<(bool, UnsignedSystemID)>, Vec<(bool, UnsignedSystemID)>) =
v.into_iter().partition(|(dci, _)| *dci);
r vec![dcis, nondcis]
.into_iter()
.flat_map(|mut v| {
v.par_sort();
if v.len() > 2 {
let mut s = v.split_off(v.len() / 2);
s.reverse();
interleave(v.into_iter(), s.into_iter())
.collect::<Vec<_>>()
.into_iter()
} else {
v.into_iter()
}
})
.map(|(_, sid)| sid)
.collect()
} }
Figure 6: auto_evpn_sids2rrs Figure 10: auto_evpn_sids2rrs
pub(crate) fn auto_evpn_v62octets(a: Ipv6Addr) -> Vec<u8> { pub(crate) fn auto_evpn_v62octets(a: Ipv6Addr) -> Vec<u8> {
a.octets().iter().cloned().collect() a.octets().iter().cloned().collect()
} }
Figure 7: auto_evpn_v62octets Figure 11: auto_evpn_v62octets
/// fabric prefixes derived instead of advertising default on the fabric to allow /// fabric prefixes derived instead of advertising default on the fabric to allow
/// for default route on ToF or leaves /// for default route on ToF or leaves
pub fn auto_evpn_fid2fabric_prefixes(fid: FabricIDType) -> Result<Vec<IPPrefixType>, ServiceErrorType> { pub fn auto_evpn_fid2fabric_prefixes(fid: FabricIDType) -> Result<Vec<IPPrefixType>, ServiceErrorType> {
vec![ vec![
(auto_evpn_fidsidv6loopback(fid, ILLEGAL_SYSTEM_I_D as _), AUTO_EVPN_V6PREFLEN), (auto_evpn_fidsidv6loopback(fid, ILLEGAL_SYSTEM_I_D as _), AUTO_EVPN_V6PREFLEN),
(auto_evpn_fidrrpref2rrloopback(fid, ILLEGAL_SYSTEM_I_D as _), AUTO_EVPN_V6PREFLEN), (auto_evpn_fidrrpref2rrloopback(fid, ILLEGAL_SYSTEM_I_D as _), AUTO_EVPN_V6PREFLEN),
] ]
.into_iter() .into_iter()
.map(|(p, _)| .map(|(p, _)|
skipping to change at page 28, line 27 skipping to change at page 32, line 27
IPv6PrefixType { IPv6PrefixType {
address: auto_evpn_v62octets(p?), address: auto_evpn_v62octets(p?),
prefixlen: AUTO_EVPN_V6PREFLEN as _, prefixlen: AUTO_EVPN_V6PREFLEN as _,
})), })),
Err(e) => Err(e), Err(e) => Err(e),
} }
) )
.collect::<Result<Vec<_>, _>>() .collect::<Result<Vec<_>, _>>()
} }
Figure 8: auto_evpn_fid2fabric_prefixes Figure 12: auto_evpn_fid2fabric_prefixes
/// local address with encoded fabric ID and system ID for collision free identifiers. Basis /// local address with encoded fabric ID and system ID for collision free identifiers. Basis
/// for several different prefixes. /// for several different prefixes.
pub fn auto_evpn_v6prefixfidsid2loopback(v6pref: &str, fid: FabricIDType, pub fn auto_evpn_v6prefixfidsid2loopback(v6pref: &str, fid: FabricIDType,
sid: UnsignedSystemID) -> Result<Ipv6Addr, ServiceErrorType> { sid: UnsignedSystemID) -> Result<Ipv6Addr, ServiceErrorType> {
assert!(fid != 0); assert!(fid != 0);
let a = format!("{}{:02X}::{}", let a = format!("{}00::{}",
v6pref, v6pref,
fid as u16,
sid.to_ne_bytes() sid.to_ne_bytes()
.iter() .iter()
.chunks(2) .chunks(2)
.into_iter() .into_iter()
.map(|chunk| .map(|chunk|
chunk.fold(0u16, |v, n| (v << 8) | *n as u16)) chunk.fold(0u16, |v, n| (v << 8) | *n as u16))
.map(|v| format!("{:04X}", v)) .map(|v| format!("{:04X}", v))
.collect::<Vec<_>>() .collect::<Vec<_>>()
.into_iter() .into_iter()
.join(":") .join(":")
); );
Ipv6Addr::from_str(&a) Ipv6Addr::from_str(&a)
.map_err(|_| ServiceErrorType::INTERNALRIFTERROR) .map_err(|_| ServiceErrorType::INTERNALRIFTERROR)
} }
Figure 9: auto_evpn_v6prefixfidsid2loopback
Figure 13: auto_evpn_v6prefixfidsid2loopback
/// auto evpn V6 loopback for RRs /// auto evpn V6 loopback for RRs
pub fn auto_evpn_fidrrpref2rrloopback(fid: FabricIDType, pub fn auto_evpn_fidrrpref2rrloopback(fid: FabricIDType,
preference: u8) -> Result<Ipv6Addr, ServiceErrorType> { preference: u8) -> Result<Ipv6Addr, ServiceErrorType> {
auto_evpn_v6prefixfidsid2loopback(AUTO_EVPN_V6RRPREF, fid, (1 + preference) as _) auto_evpn_v6prefixfidsid2loopback(&auto_evpn_v6rrpref(fid), fid, (1 + preference) as _)
} }
Figure 10: auto_evpn_fidrrpref2rrloopback Figure 14: auto_evpn_fidrrpref2rrloopback
/// auto evpn BGP router ID /// auto evpn BGP router ID
pub fn auto_evpn_sidfid2bgpid(fid: FabricIDType, sid: UnsignedSystemID) -> u32 { pub fn auto_evpn_sidfid2bgpid(fid: FabricIDType, sid: UnsignedSystemID) -> u32 {
assert!(fid != 0); assert!(fid != 0);
let hs: u32 = ((sid & 0xffff_ffff_0000_0000) >> 32) as _; let hs: u32 = ((sid & 0xffff_ffff_0000_0000) >> 32) as _;
let mut ls: u32 = (sid & 0xffff_ffff) as _; let mut ls: u32 = (sid & 0xffff_ffff) as _;
ls = ls.rotate_right(7) ^ (fid as u32).rotate_right(13); ls = ls.rotate_right(7) ^ (fid as u32).rotate_right(13);
max(1, hs ^ ls) // never a 0 max(1, hs ^ ls) // never a 0
} }
Figure 11: auto_evpn_sidfid2bgpid Figure 15: auto_evpn_sidfid2bgpid
/// route target bytes are type0/0 and then add EVI /// route target bytes are type0/0 and then add EVI
pub fn auto_evpn_evi2rt(evi: MACVRFNumberType) -> CommunityType { pub fn auto_evpn_evi2rt(evi: MACVRFNumberType) -> CommunityType {
let wideevi = (evi + 1) as CommunityType; let wideevi = (evi + 1) as CommunityType;
(RT_TARGET_HIGH << (64 - 8)) | (RT_TARGET_LOW << 64 - 16) | (RT_TARGET_HIGH << (64 - 8)) | (RT_TARGET_LOW << 64 - 16) |
((wideevi) << 17) | ((wideevi) << 17) |
((wideevi)) ((wideevi))
} }
Figure 12: auto_evpn_evi2rt Figure 16: auto_evpn_evi2rt
/// type-5 VNI for an EVI /// type-5 VNI for an EVI
pub fn auto_evpn_fidevi2type5vni(fid: FabricIDType, evi: MACVRFNumberType) -> VNIType { pub fn auto_evpn_fidevi2type5vni(fid: FabricIDType, evi: MACVRFNumberType) -> UnsignedVNIType {
TYPE5VNIHIGH | auto_evpn_fidevivid2vni(fid, evi, 0) TYPE5VNIHIGH | auto_evpn_fidevivid2vni(fid, evi, 0, false)
} }
Figure 13: auto-evpn_fidevi2type5vni Figure 17: auto_evpn_fidevi2type5vni
/// type-2 VNI for a specific VLAN /// type-2 VNI for a specific VLAN
pub fn auto_evpn_fidevivid2vni(fid: FabricIDType, evi: MACVRFNumberType, vlanid: VLANIDType) -> VNIType { pub fn auto_evpn_fidevivid2vni(fid: FabricIDType, evi: MACVRFNumberType, vlanid: VLANIDType, stretchable: bool) -> UnsignedVNIType {
let rfid = fid as i32; let rfid = if stretchable {
let revi = evi as i32; NO_FABRIC_ID as _
let rvlan = vlanid as i32; } else {
fid as UnsignedVNIType
};
let revi = evi as UnsignedVNIType;
let rvlan = vlanid as UnsignedVNIType;
// mask out high bits, VNI is only 24 bits // mask out high bits, VNI is only 24 bits
TYPE2VNIMASK & TYPE2VNIMASK &
( (
rfid.rotate_left(16) ^ rfid.rotate_left(16) ^
revi.rotate_left(12) ^ revi.rotate_left(12) ^
rvlan rvlan
) )
} }
Figure 14: auto_evpn_fidevivid2vni Figure 18: auto_evpn_fidevivid2vni
/// maximum VLANs per EVI supported by auto evpn when deriving /// maximum VLANs per EVI supported by auto evpn when deriving
pub fn auto_evpn_vlan_description_table<'a>(vlans: usize) pub fn auto_evpn_vlan_description_table<'a>(vlans: usize)
-> Result<&'a [(VLANIDType, VLANStretchableType, VLANNativeType)], ServiceErrorType> { -> Result<&'a [(UnsignedVLANIDType, VLANStretchableType, VLANNativeType)], ServiceErrorType> {
// up to 15 vlans can be activated // up to 15 vlans can be activated
const VLANSARRAY: [(i16, bool, bool); MAX_VLANS_PER_EVI] = [ const VLANSARRAY: [(UnsignedVLANIDType, bool, bool); MAX_VLANS_PER_EVI] = [
(NATIVE_VLAN, true, true, ), (NATIVE_VLAN, true, true, ),
(FIRST_VLAN_SHIFT, true, false, ), (FIRST_VLAN_SHIFT, true, false, ),
(FIRST_VLAN_SHIFT + 1, true, false, ), (FIRST_VLAN_SHIFT + 1, true, false, ),
(FIRST_VLAN_SHIFT + 2, true, false, ), (FIRST_VLAN_SHIFT + 2, true, false, ),
(FIRST_VLAN_SHIFT + 3, false, false, ), (FIRST_VLAN_SHIFT + 3, true, false, ),
(FIRST_VLAN_SHIFT + 4, false, false, ), (FIRST_VLAN_SHIFT + 4, true, false, ),
(FIRST_VLAN_SHIFT + 5, false, false, ), (FIRST_VLAN_SHIFT + 5, true, false, ),
(FIRST_VLAN_SHIFT + 6, false, false, ), (FIRST_VLAN_SHIFT + 6, true, false, ),
(FIRST_VLAN_SHIFT + 7, false, false, ), (FIRST_VLAN_SHIFT + 7, true, false, ),
(FIRST_VLAN_SHIFT + 8, false, false, ), (FIRST_VLAN_SHIFT + 8, false, false, ),
(FIRST_VLAN_SHIFT + 9, false, false, ), (FIRST_VLAN_SHIFT + 9, false, false, ),
(FIRST_VLAN_SHIFT +10, false, false, ), (FIRST_VLAN_SHIFT +10, false, false, ),
(FIRST_VLAN_SHIFT +11, false, false, ), (FIRST_VLAN_SHIFT +11, false, false, ),
(FIRST_VLAN_SHIFT +12, false, false, ), (FIRST_VLAN_SHIFT +12, false, false, ),
(FIRST_VLAN_SHIFT +13, false, false, ), (FIRST_VLAN_SHIFT +13, false, false, ),
(FIRST_VLAN_SHIFT +14, false, false, ),
(FIRST_VLAN_SHIFT +15, false, false, ),
(FIRST_VLAN_SHIFT +16, false, false, ),
(FIRST_VLAN_SHIFT +17, false, false, ),
(FIRST_VLAN_SHIFT +18, false, false, ),
(FIRST_VLAN_SHIFT +19, false, false, ),
(FIRST_VLAN_SHIFT +20, false, false, ),
(FIRST_VLAN_SHIFT +21, false, false, ),
(FIRST_VLAN_SHIFT +22, false, false, ),
(FIRST_VLAN_SHIFT +23, false, false, ),
(FIRST_VLAN_SHIFT +24, false, false, ),
(FIRST_VLAN_SHIFT +25, false, false, ),
(FIRST_VLAN_SHIFT +26, false, false, ),
(FIRST_VLAN_SHIFT +27, false, false, ),
(FIRST_VLAN_SHIFT +28, false, false, ),
]; ];
if vlans > VLANSARRAY.len() { if vlans > VLANSARRAY.len() {
return Err(ServiceErrorType::INVALIDPARAMETERVALUE) return Err(ServiceErrorType::INVALIDPARAMETERVALUE)
} }
Ok(&VLANSARRAY[..vlans]) Ok(&VLANSARRAY[..vlans])
} }
Figure 15: auto_evpn_vlan_description_table Figure 19: auto_evpn_vlan_description_table
/// delivers the vlan description that can be used to generate vlans for a /// delivers the vlan description that can be used to generate vlans for a
/// specific fabric ID and a MACVRF number /// specific fabric ID and a MACVRF number
pub fn auto_evpn_fidevivlansvlans2desc(fid: FabricIDType, macvrf: MACVRFNumberType, pub fn auto_evpn_fidevivlansvlans2desc(fid: UnsignedFabricIDType, macvrf: MACVRFNumberType,
vlans: usize) -> Vec<VLANDescription> { vlans: usize) -> Vec<VLANDescription> {
assert!(NO_MACVRF != macvrf); assert!(NO_MACVRF != macvrf);
// abstract description of derived VLANs // abstract description of derived VLANs
let vlan_table = auto_evpn_vlan_description_table(vlans) let vlan_table = auto_evpn_vlan_description_table(vlans)
.expect("vlan table in AUTO EVPN incorrect"); .expect("vlan table in AUTO EVPN incorrect");
let vlanshift = vlan_table let vlanshift = vlan_table
.iter() .iter()
skipping to change at page 31, line 32 skipping to change at page 36, line 32
.expect("vlan table in AUTO EVPN incorrect"); .expect("vlan table in AUTO EVPN incorrect");
assert!(vlan_table.len() < FIRST_VLAN_SHIFT as _); assert!(vlan_table.len() < FIRST_VLAN_SHIFT as _);
vlan_table vlan_table
.iter() .iter()
.map(move |(vid, stretch, native_)| { .map(move |(vid, stretch, native_)| {
let stretchedfid = if !stretch { let stretchedfid = if !stretch {
fid fid
} else { } else {
NO_FABRIC_ID NO_FABRIC_ID as _
}; };
let mut vlan_id = *vid ^ stretchedfid let mut vlan_id = *vid ^ stretchedfid
.rotate_left(max(16, vlanshift as u32 + 8)) as VLANIDType; .rotate_left(max(16, vlanshift as u32 + 9)) as UnsignedVLANIDType;
// leave space for VLANs in the encoding // leave space for VLANs in the encoding
vlan_id ^= macvrf.rotate_left(vlanshift as _) as VLANIDType; vlan_id ^= macvrf.rotate_left(vlanshift as _) as UnsignedVLANIDType;
vlan_id %= MAX_VLAN; vlan_id %= MAX_VLAN;
vlan_id = max(1, vlan_id); vlan_id = max(1, vlan_id);
VLANDescription { VLANDescription {
vlan_id: vlan_id as _, vlan_id: vlan_id as _,
name: format!("V{}", vlan_id), name: format!("V{}", vlan_id),
stretchable: *stretch, stretchable: *stretch,
native: *native_, native: *native_,
} }
}) })
.collect() .collect()
} }
Figure 16: auto_evpn_fidevivlansvlans2desc Figure 20: auto_evpn_fidevivlansvlans2desc
/// IRB interface number. /// IRB interface number.
/// fid/evi combination shifted up to not interfere with the VLAN-ID /// fid/evi combination shifted up to not interfere with the VLAN-ID
/// and then add the VLAN-ID /// and then add the VLAN-ID
pub fn auto_evpn_fidevivid2irb(fid: FabricIDType, evi: MACVRFNumberType, vid: VLANIDType) -> UnitType { pub fn auto_evpn_fidevivid2irb(fid: FabricIDType, evi: MACVRFNumberType, vid: VLANIDType) -> UnsignedUnitType {
assert!(NO_MACVRF != evi); assert!(NO_MACVRF != evi);
let mut v = (fid as UnitType ^ evi.rotate_left(4) as UnitType) << (16 - FIRST_VLAN.leading_zeros()); let mut v = (fid as UnsignedUnitType ^ evi.rotate_left(4) as UnsignedUnitType);
let mut v = v.rotate_left(2);
v = 1 + v.wrapping_add(vid) % MAX_VLAN; v = 1 + v.wrapping_add(vid as UnsignedVLANIDType) % MAX_VLAN;
v % (UnitType::MAX - 1) v % (UnsignedUnitType::MAX - 1)
} }
Figure 17: auto_evpn_fidevivid2irb Figure 21: auto_evpn_fidevivid2irb
/// route distinguisher derivation /// route distinguisher derivation
pub fn auto_evpn_sidfid2rd(sid: UnsignedSystemID, fid: FabricIDType, extra: u32) -> RTDistinguisherType { pub fn auto_evpn_sidfid2rd(sid: UnsignedSystemID, fid: UnsignedFabricIDType, extra: u32) -> UnsignedRTDistinguisherType {
// generate type 0 route distinguisher, first 2 bytes 0 and then 6 bytes // generate type 0 route distinguisher, first 2 bytes 0 and then 6 bytes
assert!(fid != NO_FABRIC_ID); assert!(fid != NO_FABRIC_ID as _);
// shift the 2 bytes we loose // shift the 2 bytes we loose
let convsid = sid as RTDistinguisherType; let convsid = sid as UnsignedRTDistinguisherType;
let hs = ((sid & 0xffff_0000_0000_0000) >> 32) as RTDistinguisherType; let hs = ((sid & 0xffff_0000_0000_0000) >> 32) as UnsignedRTDistinguisherType;
let mut ls: RTDistinguisherType = convsid & 0x0000_ffff_ffff_ffff; let mut ls: UnsignedRTDistinguisherType = convsid & 0x0000_ffff_ffff_ffff;
ls ^= hs; ls ^= hs;
ls ^= (fid as RTDistinguisherType).rotate_left(16); ls ^= (fid as UnsignedRTDistinguisherType).rotate_left(16);
ls ^= extra as RTDistinguisherType; ls ^= extra as UnsignedRTDistinguisherType;
ls ls
} }
Figure 18: auto_evpn_sidfid2rd Figure 22: auto_evpn_sidfid2rd
/// v4 subnet derivation /// v4 subnet derivation
pub fn auto_evpn_v4prefixfidevividsid2v4subnet(v4pref: &str, fid: FabricIDType, pub fn auto_evpn_v4prefixfidevividsid2v4subnet(v4pref: &str, fid: FabricIDType,
evi: MACVRFNumberType, vid: VLANIDType, evi: MACVRFNumberType, vid: VLANIDType,
sid: UnsignedSystemID) -> Result<IPv4PrefixType, ServiceErrorType> { sid: UnsignedSystemID) -> Result<IPv4PrefixType, ServiceErrorType> {
assert!(NO_MACVRF != evi); assert!(NO_MACVRF != evi);
// fid can be 0 for stretched v4subnets // fid can be 0 for stretched v4subnets
let mut sub = evi.to_ne_bytes().iter() let mut sub = evi.to_ne_bytes().iter()
skipping to change at page 33, line 47 skipping to change at page 38, line 47
})? })?
.octets() .octets()
.iter() .iter()
.fold(0u32, |v, nv| v << 8 | (*nv as u32)) as IPv4Address .fold(0u32, |v, nv| v << 8 | (*nv as u32)) as IPv4Address
, ,
prefixlen: 16, prefixlen: 16,
} }
) )
} }
Figure 19: auto_evpn_v4prefixfidevividsid2v4subnet Figure 23: auto_evpn_v4prefixfidevividsid2v4subnet
/// generic v6 bytes derivation used for different purposes /// generic v6 bytes derivation used for different purposes
pub fn auto_evpn_v6hash(fid: FabricIDType, evi: MACVRFNumberType, vid: VLANIDType, sid: UnsignedSystemID) pub fn auto_evpn_v6hash(fid: FabricIDType, evi: MACVRFNumberType, vid: VLANIDType, sid: UnsignedSystemID)
-> [u8; 8] { -> [u8; 8] {
let mut sub = evi.to_ne_bytes().iter() let mut sub = evi.to_ne_bytes().iter()
.fold(RANDOMSEEDS[3], |r, e| r.rotate_left(6) ^ e.rotate_right(4) as u64); .fold(RANDOMSEEDS[3], |r, e| r.rotate_left(6) ^ e.rotate_right(4) as u64);
sub ^= fid.to_ne_bytes().iter() sub ^= fid.to_ne_bytes().iter()
.fold(RANDOMSEEDS[0], |r, e| r.rotate_left(6) ^ e.rotate_right(4) as u64); .fold(RANDOMSEEDS[0], |r, e| r.rotate_left(6) ^ e.rotate_right(4) as u64);
sub ^= vid as u64; sub ^= vid as u64;
sub ^= sid; sub ^= sid;
sub.to_ne_bytes() sub.to_ne_bytes()
} }
Figure 20: auto_evpn_v6hash Figure 24: auto_evpn_v6hash
/// v6 subnet derivation
pub fn auto_evpn_fidevividsid2v6subnet(fid: FabricIDType, evi: MACVRFNumberType, pub fn auto_evpn_fidevividsid2v6subnet(fid: FabricIDType, evi: MACVRFNumberType,
vid: VLANIDType, vid: VLANIDType,
sid: UnsignedSystemID) -> Result<IPv6PrefixType, ServiceErrorType> { sid: UnsignedSystemID) -> Result<IPv6PrefixType, ServiceErrorType> {
assert!(NO_MACVRF != evi); assert!(NO_MACVRF != evi);
let sb = auto_evpn_v6hash(fid, evi, vid, sid); let sb = auto_evpn_v6hash(fid, evi, vid, sid);
let a = format!("{}:{:02X}{:02X}:{:02X}{:02X}:{:02X}{:02X}::1", let a = format!("{}:{:02X}{:02X}:{:02X}{:02X}:{:02X}{:02X}::1",
AUTO_EVPN_V6IRBPREF, auto_evpn_v6irbpref(fid),
AUTO_EVPN_V6IRBPREFFIRSTBYTE,
sb[3] ^ sb[0], sb[3] ^ sb[0],
sb[4] ^ sb[1], sb[4] ^ sb[1],
sb[5] ^ sb[2],
sb[6], sb[6],
sb[7], sb[7],
sb[5],
sb[2],
); );
Ok(IPv6PrefixType { Ok(IPv6PrefixType {
address: Ipv6Addr::from_str( address: Ipv6Addr::from_str(
&a) &a)
.map_err(|_| { .map_err(|_| {
ServiceErrorType::INTERNALRIFTERROR ServiceErrorType::INTERNALRIFTERROR
})? })?
.octets() .octets()
.to_vec(), .to_vec(),
prefixlen: 64, prefixlen: 64,
}) })
} }
Figure 21: auto_evpn_fidevividsid2v6subnet Figure 25: auto_evpn_fidevividsid2v6subnet
/// MAC address derivation for IRB /// MAC address derivation for IRB
pub fn auto_evpn_fidevividsid2mac(fid: FabricIDType, evi: MACVRFNumberType, pub fn auto_evpn_fidevividsid2mac(fid: FabricIDType, evi: MACVRFNumberType,
vid: VLANIDType, sid: UnsignedSystemID) -> Vec<u8> { vid: VLANIDType, sid: UnsignedSystemID) -> Vec<u8> {
let sb = auto_evpn_v6hash(fid, evi, vid, sid); let sb = auto_evpn_v6hash(fid, evi, vid, sid);
vec![0x02, vec![0x02,
sb[3] ^ sb[0], sb[3] ^ sb[0],
sb[4] ^ sb[1], sb[4] ^ sb[1],
sb[5] ^ sb[2],
sb[6], sb[6],
sb[7], sb[7],
sb[5] ^ sb[2],
] ]
} }
Figure 22: auto_evpn_fidevividsid2mac Figure 26: auto_evpn_fidevividsid2mac
/// v4 loopback address derivation for every node in auto-evpn /// v4 loopback address derivation for every node in auto-evpn, returns address and
pub fn auto_evpn_fidsid2v4loopback(fid: FabricIDType, sid: UnsignedSystemID) -> IPv4Address { /// subnet mask length
pub fn auto_evpn_fidsid2v4loopback(fid: FabricIDType, sid: UnsignedSystemID) -> (IPv4Address, u8) {
let mut derived = sid.to_ne_bytes().iter() let mut derived = sid.to_ne_bytes().iter()
.fold(0 as IPv4Address, |p, e| (p << 4) ^ (*e as IPv4Address)); .fold(0 as IPv4Address, |p, e| (p << 4) ^ (*e as IPv4Address));
derived ^= fid as IPv4Address; derived ^= fid as IPv4Address;
// use the byte we loose for entropy // use the byte we loose for entropy
derived ^= derived >> 24; derived ^= derived >> 24;
// and sanitize for loopback range // and sanitize for loopback range, we nuke 9 bits out
derived &= 0x00ff_ffff; derived &= 0x007f_ffff;
let m = ((127 as IPv4Address) << 24) | derived; let m = ((127 as IPv4Address) << 24) | derived;
m as _ (m as _, 9)
} }
Figure 23: auto_evpn_fidsid2v4loopback Figure 27: auto_evpn_fidsid2v4loopback
/// V6 loopback derivation for every node in auto-evpn /// V6 loopback derivation for every node in auto-evpn
pub fn auto_evpn_fidsidv6loopback(fid: FabricIDType, pub fn auto_evpn_fidsidv6loopback(fid: FabricIDType,
sid: UnsignedSystemID) -> Result<Ipv6Addr, ServiceErrorType> { sid: UnsignedSystemID) -> Result<Ipv6Addr, ServiceErrorType> {
auto_evpn_v6prefixfidsid2loopback(AUTO_EVPN_V6PREF, fid, sid) auto_evpn_v6prefixfidsid2loopback(&auto_evpn_v6pref(fid), fid, sid)
} }
Figure 24: auto_evpn_fidsidv6loopback Figure 28: auto_evpn_fidsidv6loopback
#[allow(non_snake_case)] #[allow(non_snake_case)]
pub fn auto_evpn_fid2private_AS(fid: FabricIDType) -> u32 { pub fn auto_evpn_fid2private_AS(fid: FabricIDType) -> u32 {
assert!(fid != NO_FABRIC_ID); assert!(fid != NO_FABRIC_ID);
// range 4200000000-4294967294 // range 4200000000-4294967294
const DIFF: u32 = 4_294_967_294 - 4_200_000_000; const DIFF: u32 = 4_294_967_294 - 4_200_000_000;
64496 + ((fid as u32) << 3) % DIFF 64496 + ((fid as u32) << 3) % DIFF
} }
Figure 25: auto_evpn_fid2private_AS
Figure 29: auto_evpn_fid2private_AS
pub fn auto_evpn_fid2clusterid(fid: FabricIDType) -> u32 { pub fn auto_evpn_fid2clusterid(fid: FabricIDType) -> u32 {
auto_evpn_fid2private_AS(fid) auto_evpn_fid2private_AS(fid)
} }
Figure 26: auto_evpn_fid2clusterid Figure 30: auto_evpn_fid2clusterid
B.2. Variable Derivation Results
This section contains functional variable derviation results that can
be used as a confirmation that an implementation conforms to
procedures in this document.
+===========+============+=========+===========+========+======+
| Fabric ID | MAC-VRF ID | VLAN ID | Stretched | VNI | IRB |
+===========+============+=========+===========+========+======+
| 1 | 1 | 1 | Y | 4097 | 70 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 33 | Y | 4129 | 102 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 32 | Y | 4128 | 101 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 35 | Y | 4131 | 104 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 34 | Y | 4130 | 103 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 37 | Y | 4133 | 106 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 36 | Y | 4132 | 105 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 39 | Y | 4135 | 108 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 38 | Y | 4134 | 107 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 553 | N | 70185 | 622 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 552 | N | 70184 | 621 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 555 | N | 70187 | 624 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 554 | N | 70186 | 623 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 557 | N | 70189 | 626 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 556 | N | 70188 | 625 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 559 | N | 70191 | 628 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 558 | N | 70190 | 627 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 561 | N | 70193 | 630 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 560 | N | 70192 | 629 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 563 | N | 70195 | 632 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 562 | N | 70194 | 631 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 565 | N | 70197 | 634 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 564 | N | 70196 | 633 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 567 | N | 70199 | 636 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 566 | N | 70198 | 635 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 569 | N | 70201 | 638 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 568 | N | 70200 | 637 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 571 | N | 70203 | 640 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 570 | N | 70202 | 639 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 1 | 573 | N | 70205 | 642 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 3 | Y | 8195 | 136 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 34 | Y | 8226 | 167 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 35 | Y | 8227 | 168 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 32 | Y | 8224 | 165 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 33 | Y | 8225 | 166 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 38 | Y | 8230 | 171 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 39 | Y | 8231 | 172 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 36 | Y | 8228 | 169 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 37 | Y | 8229 | 170 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 554 | N | 74282 | 687 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 555 | N | 74283 | 688 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 552 | N | 74280 | 685 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 553 | N | 74281 | 686 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 558 | N | 74286 | 691 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 559 | N | 74287 | 692 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 556 | N | 74284 | 689 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 557 | N | 74285 | 690 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 562 | N | 74290 | 695 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 563 | N | 74291 | 696 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 560 | N | 74288 | 693 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 561 | N | 74289 | 694 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 566 | N | 74294 | 699 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 567 | N | 74295 | 700 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 564 | N | 74292 | 697 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 565 | N | 74293 | 698 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 570 | N | 74298 | 703 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 571 | N | 74299 | 704 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 568 | N | 74296 | 701 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 569 | N | 74297 | 702 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 2 | 574 | N | 74302 | 707 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 2 | Y | 12290 | 199 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 35 | Y | 12323 | 232 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 34 | Y | 12322 | 231 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 33 | Y | 12321 | 230 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 32 | Y | 12320 | 229 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 39 | Y | 12327 | 236 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 38 | Y | 12326 | 235 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 37 | Y | 12325 | 234 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 36 | Y | 12324 | 233 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 555 | N | 78379 | 752 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 554 | N | 78378 | 751 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 553 | N | 78377 | 750 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 552 | N | 78376 | 749 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 559 | N | 78383 | 756 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 558 | N | 78382 | 755 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 557 | N | 78381 | 754 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 556 | N | 78380 | 753 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 563 | N | 78387 | 760 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 562 | N | 78386 | 759 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 561 | N | 78385 | 758 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 560 | N | 78384 | 757 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 567 | N | 78391 | 764 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 566 | N | 78390 | 763 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 565 | N | 78389 | 762 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 564 | N | 78388 | 761 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 571 | N | 78395 | 768 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 570 | N | 78394 | 767 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 569 | N | 78393 | 766 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 568 | N | 78392 | 765 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 3 | 575 | N | 78399 | 772 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 5 | Y | 16389 | 266 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 36 | Y | 16420 | 297 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 37 | Y | 16421 | 298 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 38 | Y | 16422 | 299 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 39 | Y | 16423 | 300 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 32 | Y | 16416 | 293 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 33 | Y | 16417 | 294 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 34 | Y | 16418 | 295 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 35 | Y | 16419 | 296 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 556 | N | 82476 | 817 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 557 | N | 82477 | 818 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 558 | N | 82478 | 819 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 559 | N | 82479 | 820 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 552 | N | 82472 | 813 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 553 | N | 82473 | 814 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 554 | N | 82474 | 815 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 555 | N | 82475 | 816 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 564 | N | 82484 | 825 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 565 | N | 82485 | 826 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 566 | N | 82486 | 827 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 567 | N | 82487 | 828 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 560 | N | 82480 | 821 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 561 | N | 82481 | 822 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 562 | N | 82482 | 823 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 563 | N | 82483 | 824 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 572 | N | 82492 | 833 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 573 | N | 82493 | 834 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 574 | N | 82494 | 835 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 575 | N | 82495 | 836 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 4 | 568 | N | 82488 | 829 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 4 | Y | 20484 | 329 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 37 | Y | 20517 | 362 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 36 | Y | 20516 | 361 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 39 | Y | 20519 | 364 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 38 | Y | 20518 | 363 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 33 | Y | 20513 | 358 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 32 | Y | 20512 | 357 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 35 | Y | 20515 | 360 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 34 | Y | 20514 | 359 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 557 | N | 86573 | 882 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 556 | N | 86572 | 881 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 559 | N | 86575 | 884 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 558 | N | 86574 | 883 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 553 | N | 86569 | 878 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 552 | N | 86568 | 877 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 555 | N | 86571 | 880 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 554 | N | 86570 | 879 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 565 | N | 86581 | 890 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 564 | N | 86580 | 889 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 567 | N | 86583 | 892 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 566 | N | 86582 | 891 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 561 | N | 86577 | 886 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 560 | N | 86576 | 885 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 563 | N | 86579 | 888 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 562 | N | 86578 | 887 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 573 | N | 86589 | 898 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 572 | N | 86588 | 897 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 575 | N | 86591 | 900 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 574 | N | 86590 | 899 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 5 | 569 | N | 86585 | 894 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 7 | Y | 24583 | 396 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 38 | Y | 24614 | 427 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 39 | Y | 24615 | 428 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 36 | Y | 24612 | 425 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 37 | Y | 24613 | 426 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 34 | Y | 24610 | 423 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 35 | Y | 24611 | 424 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 32 | Y | 24608 | 421 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 33 | Y | 24609 | 422 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 558 | N | 90670 | 947 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 559 | N | 90671 | 948 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 556 | N | 90668 | 945 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 557 | N | 90669 | 946 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 554 | N | 90666 | 943 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 555 | N | 90667 | 944 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 552 | N | 90664 | 941 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 553 | N | 90665 | 942 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 566 | N | 90678 | 955 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 567 | N | 90679 | 956 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 564 | N | 90676 | 953 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 565 | N | 90677 | 954 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 562 | N | 90674 | 951 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 563 | N | 90675 | 952 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 560 | N | 90672 | 949 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 561 | N | 90673 | 950 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 574 | N | 90686 | 963 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 575 | N | 90687 | 964 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 572 | N | 90684 | 961 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 573 | N | 90685 | 962 |
+-----------+------------+---------+-----------+--------+------+
| 1 | 6 | 570 | N | 90682 | 959 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1 | Y | 4097 | 74 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 33 | Y | 4129 | 106 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 32 | Y | 4128 | 105 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 35 | Y | 4131 | 108 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 34 | Y | 4130 | 107 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 37 | Y | 4133 | 110 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 36 | Y | 4132 | 109 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 39 | Y | 4135 | 112 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 38 | Y | 4134 | 111 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1065 | N | 136233 | 1138 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1064 | N | 136232 | 1137 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1067 | N | 136235 | 1140 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1066 | N | 136234 | 1139 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1069 | N | 136237 | 1142 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1068 | N | 136236 | 1141 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1071 | N | 136239 | 1144 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1070 | N | 136238 | 1143 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1073 | N | 136241 | 1146 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1072 | N | 136240 | 1145 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1075 | N | 136243 | 1148 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1074 | N | 136242 | 1147 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1077 | N | 136245 | 1150 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1076 | N | 136244 | 1149 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1079 | N | 136247 | 1152 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1078 | N | 136246 | 1151 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1081 | N | 136249 | 1154 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1080 | N | 136248 | 1153 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1083 | N | 136251 | 1156 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1082 | N | 136250 | 1155 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 1 | 1085 | N | 136253 | 1158 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 3 | Y | 8195 | 140 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 34 | Y | 8226 | 171 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 35 | Y | 8227 | 172 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 32 | Y | 8224 | 169 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 33 | Y | 8225 | 170 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 38 | Y | 8230 | 175 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 39 | Y | 8231 | 176 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 36 | Y | 8228 | 173 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 37 | Y | 8229 | 174 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1066 | N | 140330 | 1203 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1067 | N | 140331 | 1204 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1064 | N | 140328 | 1201 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1065 | N | 140329 | 1202 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1070 | N | 140334 | 1207 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1071 | N | 140335 | 1208 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1068 | N | 140332 | 1205 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1069 | N | 140333 | 1206 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1074 | N | 140338 | 1211 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1075 | N | 140339 | 1212 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1072 | N | 140336 | 1209 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1073 | N | 140337 | 1210 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1078 | N | 140342 | 1215 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1079 | N | 140343 | 1216 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1076 | N | 140340 | 1213 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1077 | N | 140341 | 1214 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1082 | N | 140346 | 1219 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1083 | N | 140347 | 1220 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1080 | N | 140344 | 1217 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1081 | N | 140345 | 1218 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 2 | 1086 | N | 140350 | 1223 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 2 | Y | 12290 | 203 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 35 | Y | 12323 | 236 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 34 | Y | 12322 | 235 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 33 | Y | 12321 | 234 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 32 | Y | 12320 | 233 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 39 | Y | 12327 | 240 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 38 | Y | 12326 | 239 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 37 | Y | 12325 | 238 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 36 | Y | 12324 | 237 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1067 | N | 144427 | 1268 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1066 | N | 144426 | 1267 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1065 | N | 144425 | 1266 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1064 | N | 144424 | 1265 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1071 | N | 144431 | 1272 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1070 | N | 144430 | 1271 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1069 | N | 144429 | 1270 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1068 | N | 144428 | 1269 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1075 | N | 144435 | 1276 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1074 | N | 144434 | 1275 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1073 | N | 144433 | 1274 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1072 | N | 144432 | 1273 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1079 | N | 144439 | 1280 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1078 | N | 144438 | 1279 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1077 | N | 144437 | 1278 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1076 | N | 144436 | 1277 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1083 | N | 144443 | 1284 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1082 | N | 144442 | 1283 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1081 | N | 144441 | 1282 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1080 | N | 144440 | 1281 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 3 | 1087 | N | 144447 | 1288 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 5 | Y | 16389 | 270 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 36 | Y | 16420 | 301 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 37 | Y | 16421 | 302 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 38 | Y | 16422 | 303 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 39 | Y | 16423 | 304 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 32 | Y | 16416 | 297 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 33 | Y | 16417 | 298 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 34 | Y | 16418 | 299 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 35 | Y | 16419 | 300 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1068 | N | 148524 | 1333 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1069 | N | 148525 | 1334 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1070 | N | 148526 | 1335 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1071 | N | 148527 | 1336 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1064 | N | 148520 | 1329 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1065 | N | 148521 | 1330 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1066 | N | 148522 | 1331 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1067 | N | 148523 | 1332 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1076 | N | 148532 | 1341 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1077 | N | 148533 | 1342 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1078 | N | 148534 | 1343 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1079 | N | 148535 | 1344 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1072 | N | 148528 | 1337 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1073 | N | 148529 | 1338 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1074 | N | 148530 | 1339 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1075 | N | 148531 | 1340 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1084 | N | 148540 | 1349 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1085 | N | 148541 | 1350 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1086 | N | 148542 | 1351 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1087 | N | 148543 | 1352 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 4 | 1080 | N | 148536 | 1345 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 4 | Y | 20484 | 333 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 37 | Y | 20517 | 366 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 36 | Y | 20516 | 365 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 39 | Y | 20519 | 368 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 38 | Y | 20518 | 367 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 33 | Y | 20513 | 362 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 32 | Y | 20512 | 361 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 35 | Y | 20515 | 364 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 34 | Y | 20514 | 363 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1069 | N | 152621 | 1398 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1068 | N | 152620 | 1397 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1071 | N | 152623 | 1400 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1070 | N | 152622 | 1399 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1065 | N | 152617 | 1394 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1064 | N | 152616 | 1393 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1067 | N | 152619 | 1396 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1066 | N | 152618 | 1395 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1077 | N | 152629 | 1406 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1076 | N | 152628 | 1405 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1079 | N | 152631 | 1408 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1078 | N | 152630 | 1407 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1073 | N | 152625 | 1402 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1072 | N | 152624 | 1401 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1075 | N | 152627 | 1404 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1074 | N | 152626 | 1403 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1085 | N | 152637 | 1414 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1084 | N | 152636 | 1413 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1087 | N | 152639 | 1416 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1086 | N | 152638 | 1415 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 5 | 1081 | N | 152633 | 1410 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 7 | Y | 24583 | 400 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 38 | Y | 24614 | 431 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 39 | Y | 24615 | 432 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 36 | Y | 24612 | 429 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 37 | Y | 24613 | 430 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 34 | Y | 24610 | 427 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 35 | Y | 24611 | 428 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 32 | Y | 24608 | 425 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 33 | Y | 24609 | 426 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1070 | N | 156718 | 1463 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1071 | N | 156719 | 1464 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1068 | N | 156716 | 1461 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1069 | N | 156717 | 1462 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1066 | N | 156714 | 1459 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1067 | N | 156715 | 1460 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1064 | N | 156712 | 1457 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1065 | N | 156713 | 1458 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1078 | N | 156726 | 1471 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1079 | N | 156727 | 1472 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1076 | N | 156724 | 1469 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1077 | N | 156725 | 1470 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1074 | N | 156722 | 1467 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1075 | N | 156723 | 1468 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1072 | N | 156720 | 1465 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1073 | N | 156721 | 1466 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1086 | N | 156734 | 1479 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1087 | N | 156735 | 1480 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1084 | N | 156732 | 1477 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1085 | N | 156733 | 1478 |
+-----------+------------+---------+-----------+--------+------+
| 2 | 6 | 1082 | N | 156730 | 1475 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1 | Y | 4097 | 78 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 33 | Y | 4129 | 110 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 32 | Y | 4128 | 109 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 35 | Y | 4131 | 112 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 34 | Y | 4130 | 111 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 37 | Y | 4133 | 114 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 36 | Y | 4132 | 113 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 39 | Y | 4135 | 116 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 38 | Y | 4134 | 115 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1577 | N | 202281 | 1654 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1576 | N | 202280 | 1653 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1579 | N | 202283 | 1656 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1578 | N | 202282 | 1655 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1581 | N | 202285 | 1658 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1580 | N | 202284 | 1657 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1583 | N | 202287 | 1660 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1582 | N | 202286 | 1659 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1585 | N | 202289 | 1662 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1584 | N | 202288 | 1661 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1587 | N | 202291 | 1664 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1586 | N | 202290 | 1663 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1589 | N | 202293 | 1666 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1588 | N | 202292 | 1665 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1591 | N | 202295 | 1668 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1590 | N | 202294 | 1667 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1593 | N | 202297 | 1670 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1592 | N | 202296 | 1669 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1595 | N | 202299 | 1672 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1594 | N | 202298 | 1671 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 1 | 1597 | N | 202301 | 1674 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 3 | Y | 8195 | 144 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 34 | Y | 8226 | 175 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 35 | Y | 8227 | 176 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 32 | Y | 8224 | 173 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 33 | Y | 8225 | 174 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 38 | Y | 8230 | 179 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 39 | Y | 8231 | 180 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 36 | Y | 8228 | 177 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 37 | Y | 8229 | 178 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1578 | N | 206378 | 1719 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1579 | N | 206379 | 1720 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1576 | N | 206376 | 1717 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1577 | N | 206377 | 1718 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1582 | N | 206382 | 1723 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1583 | N | 206383 | 1724 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1580 | N | 206380 | 1721 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1581 | N | 206381 | 1722 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1586 | N | 206386 | 1727 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1587 | N | 206387 | 1728 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1584 | N | 206384 | 1725 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1585 | N | 206385 | 1726 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1590 | N | 206390 | 1731 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1591 | N | 206391 | 1732 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1588 | N | 206388 | 1729 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1589 | N | 206389 | 1730 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1594 | N | 206394 | 1735 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1595 | N | 206395 | 1736 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1592 | N | 206392 | 1733 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1593 | N | 206393 | 1734 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 2 | 1598 | N | 206398 | 1739 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 2 | Y | 12290 | 207 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 35 | Y | 12323 | 240 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 34 | Y | 12322 | 239 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 33 | Y | 12321 | 238 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 32 | Y | 12320 | 237 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 39 | Y | 12327 | 244 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 38 | Y | 12326 | 243 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 37 | Y | 12325 | 242 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 36 | Y | 12324 | 241 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1579 | N | 210475 | 1784 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1578 | N | 210474 | 1783 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1577 | N | 210473 | 1782 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1576 | N | 210472 | 1781 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1583 | N | 210479 | 1788 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1582 | N | 210478 | 1787 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1581 | N | 210477 | 1786 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1580 | N | 210476 | 1785 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1587 | N | 210483 | 1792 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1586 | N | 210482 | 1791 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1585 | N | 210481 | 1790 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1584 | N | 210480 | 1789 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1591 | N | 210487 | 1796 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1590 | N | 210486 | 1795 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1589 | N | 210485 | 1794 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1588 | N | 210484 | 1793 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1595 | N | 210491 | 1800 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1594 | N | 210490 | 1799 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1593 | N | 210489 | 1798 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1592 | N | 210488 | 1797 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 3 | 1599 | N | 210495 | 1804 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 5 | Y | 16389 | 274 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 36 | Y | 16420 | 305 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 37 | Y | 16421 | 306 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 38 | Y | 16422 | 307 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 39 | Y | 16423 | 308 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 32 | Y | 16416 | 301 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 33 | Y | 16417 | 302 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 34 | Y | 16418 | 303 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 35 | Y | 16419 | 304 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1580 | N | 214572 | 1849 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1581 | N | 214573 | 1850 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1582 | N | 214574 | 1851 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1583 | N | 214575 | 1852 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1576 | N | 214568 | 1845 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1577 | N | 214569 | 1846 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1578 | N | 214570 | 1847 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1579 | N | 214571 | 1848 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1588 | N | 214580 | 1857 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1589 | N | 214581 | 1858 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1590 | N | 214582 | 1859 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1591 | N | 214583 | 1860 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1584 | N | 214576 | 1853 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1585 | N | 214577 | 1854 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1586 | N | 214578 | 1855 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1587 | N | 214579 | 1856 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1596 | N | 214588 | 1865 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1597 | N | 214589 | 1866 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1598 | N | 214590 | 1867 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1599 | N | 214591 | 1868 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 4 | 1592 | N | 214584 | 1861 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 4 | Y | 20484 | 337 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 37 | Y | 20517 | 370 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 36 | Y | 20516 | 369 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 39 | Y | 20519 | 372 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 38 | Y | 20518 | 371 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 33 | Y | 20513 | 366 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 32 | Y | 20512 | 365 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 35 | Y | 20515 | 368 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 34 | Y | 20514 | 367 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1581 | N | 218669 | 1914 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1580 | N | 218668 | 1913 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1583 | N | 218671 | 1916 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1582 | N | 218670 | 1915 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1577 | N | 218665 | 1910 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1576 | N | 218664 | 1909 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1579 | N | 218667 | 1912 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1578 | N | 218666 | 1911 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1589 | N | 218677 | 1922 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1588 | N | 218676 | 1921 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1591 | N | 218679 | 1924 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1590 | N | 218678 | 1923 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1585 | N | 218673 | 1918 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1584 | N | 218672 | 1917 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1587 | N | 218675 | 1920 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1586 | N | 218674 | 1919 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1597 | N | 218685 | 1930 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1596 | N | 218684 | 1929 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1599 | N | 218687 | 1932 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1598 | N | 218686 | 1931 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 5 | 1593 | N | 218681 | 1926 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 7 | Y | 24583 | 404 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 38 | Y | 24614 | 435 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 39 | Y | 24615 | 436 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 36 | Y | 24612 | 433 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 37 | Y | 24613 | 434 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 34 | Y | 24610 | 431 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 35 | Y | 24611 | 432 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 32 | Y | 24608 | 429 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 33 | Y | 24609 | 430 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1582 | N | 222766 | 1979 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1583 | N | 222767 | 1980 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1580 | N | 222764 | 1977 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1581 | N | 222765 | 1978 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1578 | N | 222762 | 1975 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1579 | N | 222763 | 1976 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1576 | N | 222760 | 1973 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1577 | N | 222761 | 1974 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1590 | N | 222774 | 1987 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1591 | N | 222775 | 1988 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1588 | N | 222772 | 1985 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1589 | N | 222773 | 1986 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1586 | N | 222770 | 1983 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1587 | N | 222771 | 1984 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1584 | N | 222768 | 1981 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1585 | N | 222769 | 1982 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1598 | N | 222782 | 1995 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1599 | N | 222783 | 1996 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1596 | N | 222780 | 1993 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1597 | N | 222781 | 1994 |
+-----------+------------+---------+-----------+--------+------+
| 3 | 6 | 1594 | N | 222778 | 1991 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 1 | Y | 4097 | 82 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 33 | Y | 4129 | 114 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 32 | Y | 4128 | 113 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 35 | Y | 4131 | 116 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 34 | Y | 4130 | 115 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 37 | Y | 4133 | 118 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 36 | Y | 4132 | 117 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 39 | Y | 4135 | 120 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 38 | Y | 4134 | 119 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2089 | N | 268329 | 2170 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2088 | N | 268328 | 2169 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2091 | N | 268331 | 2172 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2090 | N | 268330 | 2171 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2093 | N | 268333 | 2174 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2092 | N | 268332 | 2173 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2095 | N | 268335 | 2176 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2094 | N | 268334 | 2175 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2097 | N | 268337 | 2178 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2096 | N | 268336 | 2177 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2099 | N | 268339 | 2180 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2098 | N | 268338 | 2179 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2101 | N | 268341 | 2182 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2100 | N | 268340 | 2181 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2103 | N | 268343 | 2184 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2102 | N | 268342 | 2183 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2105 | N | 268345 | 2186 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2104 | N | 268344 | 2185 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2107 | N | 268347 | 2188 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2106 | N | 268346 | 2187 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 1 | 2109 | N | 268349 | 2190 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 3 | Y | 8195 | 148 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 34 | Y | 8226 | 179 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 35 | Y | 8227 | 180 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 32 | Y | 8224 | 177 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 33 | Y | 8225 | 178 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 38 | Y | 8230 | 183 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 39 | Y | 8231 | 184 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 36 | Y | 8228 | 181 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 37 | Y | 8229 | 182 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2090 | N | 272426 | 2235 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2091 | N | 272427 | 2236 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2088 | N | 272424 | 2233 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2089 | N | 272425 | 2234 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2094 | N | 272430 | 2239 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2095 | N | 272431 | 2240 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2092 | N | 272428 | 2237 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2093 | N | 272429 | 2238 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2098 | N | 272434 | 2243 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2099 | N | 272435 | 2244 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2096 | N | 272432 | 2241 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2097 | N | 272433 | 2242 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2102 | N | 272438 | 2247 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2103 | N | 272439 | 2248 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2100 | N | 272436 | 2245 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2101 | N | 272437 | 2246 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2106 | N | 272442 | 2251 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2107 | N | 272443 | 2252 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2104 | N | 272440 | 2249 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2105 | N | 272441 | 2250 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 2 | 2110 | N | 272446 | 2255 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2 | Y | 12290 | 211 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 35 | Y | 12323 | 244 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 34 | Y | 12322 | 243 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 33 | Y | 12321 | 242 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 32 | Y | 12320 | 241 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 39 | Y | 12327 | 248 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 38 | Y | 12326 | 247 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 37 | Y | 12325 | 246 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 36 | Y | 12324 | 245 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2091 | N | 276523 | 2300 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2090 | N | 276522 | 2299 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2089 | N | 276521 | 2298 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2088 | N | 276520 | 2297 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2095 | N | 276527 | 2304 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2094 | N | 276526 | 2303 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2093 | N | 276525 | 2302 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2092 | N | 276524 | 2301 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2099 | N | 276531 | 2308 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2098 | N | 276530 | 2307 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2097 | N | 276529 | 2306 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2096 | N | 276528 | 2305 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2103 | N | 276535 | 2312 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2102 | N | 276534 | 2311 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2101 | N | 276533 | 2310 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2100 | N | 276532 | 2309 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2107 | N | 276539 | 2316 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2106 | N | 276538 | 2315 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2105 | N | 276537 | 2314 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2104 | N | 276536 | 2313 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 3 | 2111 | N | 276543 | 2320 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 5 | Y | 16389 | 278 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 36 | Y | 16420 | 309 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 37 | Y | 16421 | 310 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 38 | Y | 16422 | 311 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 39 | Y | 16423 | 312 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 32 | Y | 16416 | 305 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 33 | Y | 16417 | 306 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 34 | Y | 16418 | 307 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 35 | Y | 16419 | 308 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2092 | N | 280620 | 2365 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2093 | N | 280621 | 2366 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2094 | N | 280622 | 2367 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2095 | N | 280623 | 2368 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2088 | N | 280616 | 2361 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2089 | N | 280617 | 2362 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2090 | N | 280618 | 2363 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2091 | N | 280619 | 2364 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2100 | N | 280628 | 2373 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2101 | N | 280629 | 2374 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2102 | N | 280630 | 2375 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2103 | N | 280631 | 2376 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2096 | N | 280624 | 2369 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2097 | N | 280625 | 2370 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2098 | N | 280626 | 2371 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2099 | N | 280627 | 2372 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2108 | N | 280636 | 2381 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2109 | N | 280637 | 2382 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2110 | N | 280638 | 2383 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2111 | N | 280639 | 2384 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 4 | 2104 | N | 280632 | 2377 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 4 | Y | 20484 | 341 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 37 | Y | 20517 | 374 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 36 | Y | 20516 | 373 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 39 | Y | 20519 | 376 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 38 | Y | 20518 | 375 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 33 | Y | 20513 | 370 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 32 | Y | 20512 | 369 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 35 | Y | 20515 | 372 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 34 | Y | 20514 | 371 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2093 | N | 284717 | 2430 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2092 | N | 284716 | 2429 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2095 | N | 284719 | 2432 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2094 | N | 284718 | 2431 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2089 | N | 284713 | 2426 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2088 | N | 284712 | 2425 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2091 | N | 284715 | 2428 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2090 | N | 284714 | 2427 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2101 | N | 284725 | 2438 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2100 | N | 284724 | 2437 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2103 | N | 284727 | 2440 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2102 | N | 284726 | 2439 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2097 | N | 284721 | 2434 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2096 | N | 284720 | 2433 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2099 | N | 284723 | 2436 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2098 | N | 284722 | 2435 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2109 | N | 284733 | 2446 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2108 | N | 284732 | 2445 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2111 | N | 284735 | 2448 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2110 | N | 284734 | 2447 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 5 | 2105 | N | 284729 | 2442 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 7 | Y | 24583 | 408 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 38 | Y | 24614 | 439 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 39 | Y | 24615 | 440 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 36 | Y | 24612 | 437 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 37 | Y | 24613 | 438 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 34 | Y | 24610 | 435 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 35 | Y | 24611 | 436 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 32 | Y | 24608 | 433 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 33 | Y | 24609 | 434 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2094 | N | 288814 | 2495 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2095 | N | 288815 | 2496 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2092 | N | 288812 | 2493 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2093 | N | 288813 | 2494 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2090 | N | 288810 | 2491 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2091 | N | 288811 | 2492 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2088 | N | 288808 | 2489 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2089 | N | 288809 | 2490 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2102 | N | 288822 | 2503 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2103 | N | 288823 | 2504 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2100 | N | 288820 | 2501 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2101 | N | 288821 | 2502 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2098 | N | 288818 | 2499 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2099 | N | 288819 | 2500 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2096 | N | 288816 | 2497 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2097 | N | 288817 | 2498 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2110 | N | 288830 | 2511 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2111 | N | 288831 | 2512 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2108 | N | 288828 | 2509 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2109 | N | 288829 | 2510 |
+-----------+------------+---------+-----------+--------+------+
| 4 | 6 | 2106 | N | 288826 | 2507 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 1 | Y | 4097 | 86 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 33 | Y | 4129 | 118 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 32 | Y | 4128 | 117 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 35 | Y | 4131 | 120 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 34 | Y | 4130 | 119 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 37 | Y | 4133 | 122 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 36 | Y | 4132 | 121 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 39 | Y | 4135 | 124 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 38 | Y | 4134 | 123 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2601 | N | 334377 | 2686 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2600 | N | 334376 | 2685 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2603 | N | 334379 | 2688 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2602 | N | 334378 | 2687 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2605 | N | 334381 | 2690 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2604 | N | 334380 | 2689 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2607 | N | 334383 | 2692 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2606 | N | 334382 | 2691 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2609 | N | 334385 | 2694 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2608 | N | 334384 | 2693 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2611 | N | 334387 | 2696 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2610 | N | 334386 | 2695 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2613 | N | 334389 | 2698 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2612 | N | 334388 | 2697 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2615 | N | 334391 | 2700 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2614 | N | 334390 | 2699 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2617 | N | 334393 | 2702 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2616 | N | 334392 | 2701 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2619 | N | 334395 | 2704 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2618 | N | 334394 | 2703 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 1 | 2621 | N | 334397 | 2706 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 3 | Y | 8195 | 152 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 34 | Y | 8226 | 183 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 35 | Y | 8227 | 184 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 32 | Y | 8224 | 181 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 33 | Y | 8225 | 182 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 38 | Y | 8230 | 187 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 39 | Y | 8231 | 188 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 36 | Y | 8228 | 185 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 37 | Y | 8229 | 186 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2602 | N | 338474 | 2751 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2603 | N | 338475 | 2752 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2600 | N | 338472 | 2749 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2601 | N | 338473 | 2750 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2606 | N | 338478 | 2755 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2607 | N | 338479 | 2756 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2604 | N | 338476 | 2753 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2605 | N | 338477 | 2754 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2610 | N | 338482 | 2759 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2611 | N | 338483 | 2760 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2608 | N | 338480 | 2757 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2609 | N | 338481 | 2758 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2614 | N | 338486 | 2763 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2615 | N | 338487 | 2764 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2612 | N | 338484 | 2761 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2613 | N | 338485 | 2762 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2618 | N | 338490 | 2767 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2619 | N | 338491 | 2768 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2616 | N | 338488 | 2765 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2617 | N | 338489 | 2766 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 2 | 2622 | N | 338494 | 2771 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2 | Y | 12290 | 215 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 35 | Y | 12323 | 248 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 34 | Y | 12322 | 247 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 33 | Y | 12321 | 246 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 32 | Y | 12320 | 245 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 39 | Y | 12327 | 252 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 38 | Y | 12326 | 251 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 37 | Y | 12325 | 250 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 36 | Y | 12324 | 249 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2603 | N | 342571 | 2816 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2602 | N | 342570 | 2815 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2601 | N | 342569 | 2814 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2600 | N | 342568 | 2813 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2607 | N | 342575 | 2820 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2606 | N | 342574 | 2819 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2605 | N | 342573 | 2818 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2604 | N | 342572 | 2817 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2611 | N | 342579 | 2824 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2610 | N | 342578 | 2823 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2609 | N | 342577 | 2822 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2608 | N | 342576 | 2821 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2615 | N | 342583 | 2828 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2614 | N | 342582 | 2827 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2613 | N | 342581 | 2826 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2612 | N | 342580 | 2825 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2619 | N | 342587 | 2832 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2618 | N | 342586 | 2831 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2617 | N | 342585 | 2830 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2616 | N | 342584 | 2829 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 3 | 2623 | N | 342591 | 2836 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 5 | Y | 16389 | 282 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 36 | Y | 16420 | 313 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 37 | Y | 16421 | 314 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 38 | Y | 16422 | 315 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 39 | Y | 16423 | 316 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 32 | Y | 16416 | 309 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 33 | Y | 16417 | 310 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 34 | Y | 16418 | 311 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 35 | Y | 16419 | 312 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2604 | N | 346668 | 2881 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2605 | N | 346669 | 2882 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2606 | N | 346670 | 2883 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2607 | N | 346671 | 2884 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2600 | N | 346664 | 2877 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2601 | N | 346665 | 2878 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2602 | N | 346666 | 2879 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2603 | N | 346667 | 2880 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2612 | N | 346676 | 2889 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2613 | N | 346677 | 2890 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2614 | N | 346678 | 2891 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2615 | N | 346679 | 2892 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2608 | N | 346672 | 2885 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2609 | N | 346673 | 2886 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2610 | N | 346674 | 2887 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2611 | N | 346675 | 2888 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2620 | N | 346684 | 2897 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2621 | N | 346685 | 2898 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2622 | N | 346686 | 2899 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2623 | N | 346687 | 2900 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 4 | 2616 | N | 346680 | 2893 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 4 | Y | 20484 | 345 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 37 | Y | 20517 | 378 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 36 | Y | 20516 | 377 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 39 | Y | 20519 | 380 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 38 | Y | 20518 | 379 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 33 | Y | 20513 | 374 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 32 | Y | 20512 | 373 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 35 | Y | 20515 | 376 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 34 | Y | 20514 | 375 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2605 | N | 350765 | 2946 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2604 | N | 350764 | 2945 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2607 | N | 350767 | 2948 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2606 | N | 350766 | 2947 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2601 | N | 350761 | 2942 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2600 | N | 350760 | 2941 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2603 | N | 350763 | 2944 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2602 | N | 350762 | 2943 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2613 | N | 350773 | 2954 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2612 | N | 350772 | 2953 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2615 | N | 350775 | 2956 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2614 | N | 350774 | 2955 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2609 | N | 350769 | 2950 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2608 | N | 350768 | 2949 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2611 | N | 350771 | 2952 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2610 | N | 350770 | 2951 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2621 | N | 350781 | 2962 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2620 | N | 350780 | 2961 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2623 | N | 350783 | 2964 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2622 | N | 350782 | 2963 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 5 | 2617 | N | 350777 | 2958 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 7 | Y | 24583 | 412 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 38 | Y | 24614 | 443 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 39 | Y | 24615 | 444 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 36 | Y | 24612 | 441 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 37 | Y | 24613 | 442 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 34 | Y | 24610 | 439 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 35 | Y | 24611 | 440 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 32 | Y | 24608 | 437 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 33 | Y | 24609 | 438 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2606 | N | 354862 | 3011 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2607 | N | 354863 | 3012 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2604 | N | 354860 | 3009 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2605 | N | 354861 | 3010 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2602 | N | 354858 | 3007 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2603 | N | 354859 | 3008 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2600 | N | 354856 | 3005 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2601 | N | 354857 | 3006 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2614 | N | 354870 | 3019 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2615 | N | 354871 | 3020 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2612 | N | 354868 | 3017 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2613 | N | 354869 | 3018 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2610 | N | 354866 | 3015 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2611 | N | 354867 | 3016 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2608 | N | 354864 | 3013 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2609 | N | 354865 | 3014 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2622 | N | 354878 | 3027 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2623 | N | 354879 | 3028 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2620 | N | 354876 | 3025 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2621 | N | 354877 | 3026 |
+-----------+------------+---------+-----------+--------+------+
| 5 | 6 | 2618 | N | 354874 | 3023 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 1 | Y | 4097 | 90 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 33 | Y | 4129 | 122 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 32 | Y | 4128 | 121 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 35 | Y | 4131 | 124 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 34 | Y | 4130 | 123 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 37 | Y | 4133 | 126 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 36 | Y | 4132 | 125 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 39 | Y | 4135 | 128 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 38 | Y | 4134 | 127 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3113 | N | 400425 | 3202 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3112 | N | 400424 | 3201 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3115 | N | 400427 | 3204 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3114 | N | 400426 | 3203 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3117 | N | 400429 | 3206 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3116 | N | 400428 | 3205 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3119 | N | 400431 | 3208 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3118 | N | 400430 | 3207 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3121 | N | 400433 | 3210 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3120 | N | 400432 | 3209 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3123 | N | 400435 | 3212 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3122 | N | 400434 | 3211 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3125 | N | 400437 | 3214 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3124 | N | 400436 | 3213 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3127 | N | 400439 | 3216 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3126 | N | 400438 | 3215 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3129 | N | 400441 | 3218 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3128 | N | 400440 | 3217 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3131 | N | 400443 | 3220 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3130 | N | 400442 | 3219 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 1 | 3133 | N | 400445 | 3222 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3 | Y | 8195 | 156 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 34 | Y | 8226 | 187 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 35 | Y | 8227 | 188 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 32 | Y | 8224 | 185 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 33 | Y | 8225 | 186 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 38 | Y | 8230 | 191 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 39 | Y | 8231 | 192 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 36 | Y | 8228 | 189 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 37 | Y | 8229 | 190 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3114 | N | 404522 | 3267 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3115 | N | 404523 | 3268 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3112 | N | 404520 | 3265 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3113 | N | 404521 | 3266 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3118 | N | 404526 | 3271 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3119 | N | 404527 | 3272 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3116 | N | 404524 | 3269 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3117 | N | 404525 | 3270 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3122 | N | 404530 | 3275 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3123 | N | 404531 | 3276 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3120 | N | 404528 | 3273 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3121 | N | 404529 | 3274 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3126 | N | 404534 | 3279 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3127 | N | 404535 | 3280 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3124 | N | 404532 | 3277 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3125 | N | 404533 | 3278 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3130 | N | 404538 | 3283 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3131 | N | 404539 | 3284 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3128 | N | 404536 | 3281 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3129 | N | 404537 | 3282 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 2 | 3134 | N | 404542 | 3287 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 2 | Y | 12290 | 219 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 35 | Y | 12323 | 252 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 34 | Y | 12322 | 251 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 33 | Y | 12321 | 250 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 32 | Y | 12320 | 249 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 39 | Y | 12327 | 256 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 38 | Y | 12326 | 255 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 37 | Y | 12325 | 254 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 36 | Y | 12324 | 253 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3115 | N | 408619 | 3332 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3114 | N | 408618 | 3331 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3113 | N | 408617 | 3330 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3112 | N | 408616 | 3329 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3119 | N | 408623 | 3336 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3118 | N | 408622 | 3335 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3117 | N | 408621 | 3334 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3116 | N | 408620 | 3333 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3123 | N | 408627 | 3340 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3122 | N | 408626 | 3339 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3121 | N | 408625 | 3338 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3120 | N | 408624 | 3337 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3127 | N | 408631 | 3344 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3126 | N | 408630 | 3343 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3125 | N | 408629 | 3342 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3124 | N | 408628 | 3341 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3131 | N | 408635 | 3348 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3130 | N | 408634 | 3347 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3129 | N | 408633 | 3346 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3128 | N | 408632 | 3345 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 3 | 3135 | N | 408639 | 3352 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 5 | Y | 16389 | 286 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 36 | Y | 16420 | 317 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 37 | Y | 16421 | 318 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 38 | Y | 16422 | 319 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 39 | Y | 16423 | 320 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 32 | Y | 16416 | 313 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 33 | Y | 16417 | 314 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 34 | Y | 16418 | 315 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 35 | Y | 16419 | 316 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3116 | N | 412716 | 3397 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3117 | N | 412717 | 3398 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3118 | N | 412718 | 3399 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3119 | N | 412719 | 3400 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3112 | N | 412712 | 3393 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3113 | N | 412713 | 3394 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3114 | N | 412714 | 3395 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3115 | N | 412715 | 3396 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3124 | N | 412724 | 3405 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3125 | N | 412725 | 3406 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3126 | N | 412726 | 3407 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3127 | N | 412727 | 3408 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3120 | N | 412720 | 3401 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3121 | N | 412721 | 3402 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3122 | N | 412722 | 3403 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3123 | N | 412723 | 3404 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3132 | N | 412732 | 3413 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3133 | N | 412733 | 3414 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3134 | N | 412734 | 3415 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3135 | N | 412735 | 3416 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 4 | 3128 | N | 412728 | 3409 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 4 | Y | 20484 | 349 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 37 | Y | 20517 | 382 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 36 | Y | 20516 | 381 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 39 | Y | 20519 | 384 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 38 | Y | 20518 | 383 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 33 | Y | 20513 | 378 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 32 | Y | 20512 | 377 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 35 | Y | 20515 | 380 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 34 | Y | 20514 | 379 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3117 | N | 416813 | 3462 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3116 | N | 416812 | 3461 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3119 | N | 416815 | 3464 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3118 | N | 416814 | 3463 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3113 | N | 416809 | 3458 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3112 | N | 416808 | 3457 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3115 | N | 416811 | 3460 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3114 | N | 416810 | 3459 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3125 | N | 416821 | 3470 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3124 | N | 416820 | 3469 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3127 | N | 416823 | 3472 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3126 | N | 416822 | 3471 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3121 | N | 416817 | 3466 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3120 | N | 416816 | 3465 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3123 | N | 416819 | 3468 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3122 | N | 416818 | 3467 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3133 | N | 416829 | 3478 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3132 | N | 416828 | 3477 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3135 | N | 416831 | 3480 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3134 | N | 416830 | 3479 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 5 | 3129 | N | 416825 | 3474 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 7 | Y | 24583 | 416 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 38 | Y | 24614 | 447 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 39 | Y | 24615 | 448 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 36 | Y | 24612 | 445 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 37 | Y | 24613 | 446 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 34 | Y | 24610 | 443 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 35 | Y | 24611 | 444 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 32 | Y | 24608 | 441 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 33 | Y | 24609 | 442 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3118 | N | 420910 | 3527 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3119 | N | 420911 | 3528 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3116 | N | 420908 | 3525 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3117 | N | 420909 | 3526 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3114 | N | 420906 | 3523 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3115 | N | 420907 | 3524 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3112 | N | 420904 | 3521 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3113 | N | 420905 | 3522 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3126 | N | 420918 | 3535 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3127 | N | 420919 | 3536 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3124 | N | 420916 | 3533 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3125 | N | 420917 | 3534 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3122 | N | 420914 | 3531 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3123 | N | 420915 | 3532 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3120 | N | 420912 | 3529 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3121 | N | 420913 | 3530 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3134 | N | 420926 | 3543 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3135 | N | 420927 | 3544 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3132 | N | 420924 | 3541 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3133 | N | 420925 | 3542 |
+-----------+------------+---------+-----------+--------+------+
| 6 | 6 | 3130 | N | 420922 | 3539 |
+-----------+------------+---------+-----------+--------+------+
Table 3: Example Derivation Results
Authors' Addresses Authors' Addresses
Jordan Head (editor) Jordan Head (editor)
Juniper Networks Juniper Networks
1137 Innovation Way 1137 Innovation Way
Sunnyvale, CA Sunnyvale, CA
United States of America United States of America
Email: jhead@juniper.net Email: jhead@juniper.net
 End of changes. 165 change blocks. 
306 lines changed or deleted 2721 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/