draft-ietf-trill-directory-assist-mechanisms-12v3.original | draft-ietf-trill-directory-assist-mechanisms-12v3.txt | |||
---|---|---|---|---|
INTERNET-DRAFT Donald Eastlake | Network Working Group D. Eastlake | |||
Intended status: Proposed Standard Linda Dunbar | Internet-Draft L. Dunbar | |||
Huawei | Intended status: Standards Track Huawei | |||
Radia Perlman | Expires: September 3, 2017 R. Perlman | |||
EMC | EMC | |||
Yizhou Li | Y. Li | |||
Huawei | Huawei | |||
Expires: September 1, 2017 March 2, 2017 | March 2, 2017 | |||
TRILL: Edge Directory Assist Mechanisms | TRILL: Edge Directory Assist Mechanisms | |||
<draft-ietf-trill-directory-assist-mechanisms-12.txt> | draft-ietf-trill-directory-assist-mechanisms-12.txt | |||
Abstract | Abstract | |||
This document describes mechanisms for providing directory service to | This document describes mechanisms for providing directory service to | |||
TRILL (Transparent Interconnection of Lots of Links) edge switches. | TRILL (Transparent Interconnection of Lots of Links) edge switches. | |||
The directory information provided can be used in reducing multi- | The directory information provided can be used in reducing multi- | |||
destination traffic, particularly ARP/ND and unknown unicast | destination traffic, particularly ARP/ND and unknown unicast | |||
flooding. It can also be used to detect traffic with forged source | flooding. It can also be used to detect traffic with forged source | |||
addresses. | addresses. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Distribution of this document is unlimited. Comments should be sent | ||||
to the TRILL working group mailing list. | ||||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF). Note that other groups may also distribute | |||
other groups may also distribute working documents as Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts. | Drafts is at http://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." | |||
The list of current Internet-Drafts can be accessed at | This Internet-Draft will expire on September 3, 2017. | |||
http://www.ietf.org/1id-abstracts.html. The list of Internet-Draft | ||||
Shadow Directories can be accessed at | ||||
http://www.ietf.org/shadow.html. | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Table of Contents | ||||
1. Introduction............................................4 | ||||
1.1 Uses of Directory Information..........................5 | ||||
1.2 Terminology............................................5 | ||||
2. Push Model Directory Assistance Mechanisms..............7 | ||||
2.1 Requesting Push Service................................7 | ||||
2.2 Push Directory Servers.................................7 | ||||
2.3 Push Directory Server State Machine....................8 | ||||
2.3.1 Push Directory States................................9 | ||||
2.3.2 Push Directory Events and Conditions................11 | ||||
2.3.3 State Transition Diagram and Table..................12 | ||||
2.4 End Stations and Push Directories.....................13 | ||||
2.5 Additional Push Details...............................14 | ||||
2.6 Primary to Secondary Server Push Service..............15 | ||||
2.7 Push Directory Configuration..........................16 | ||||
3. Pull Model Directory Assistance Mechanisms.............17 | ||||
3.1 Pull Directory Message Common Format..................18 | ||||
3.1.1 Version Negotiation.................................19 | ||||
3.2 Pull Directory Query and Response Messages............20 | ||||
3.2.1 Pull Directory Query Message Format.................20 | ||||
3.2.2 Pull Directory Responses............................23 | ||||
3.2.2.1 Pull Directory Response Message Format............23 | ||||
3.2.2.2 Pull Directory Forwarding.........................26 | ||||
3.3 Cache Consistency.....................................27 | ||||
3.3.1 Update Message Format...............................30 | ||||
3.3.2 Acknowledge Message Format..........................31 | ||||
3.4 Summary of Records Formats in Messages................32 | ||||
3.5 End Stations and Pull Directories.....................32 | ||||
3.5.1 Pull Directory Hosted on an End Station.............33 | ||||
3.5.2 Use of Pull Directory by End Stations...............34 | ||||
3.5.3 Native Pull Directory Messages......................35 | ||||
3.6 Pull Directory Message Errors.........................35 | ||||
3.6.1 Error Codes.........................................36 | ||||
3.6.2 Sub-Errors Under Error Codes 1 and 3................37 | ||||
3.6.3 Sub-Errors Under Error Codes 128 and 131............37 | ||||
3.7 Additional Pull Details...............................38 | ||||
3.8 The No Data Flag......................................38 | ||||
3.9 Pull Directory Service Configuration..................39 | ||||
4. Directory Use Strategies and Push-Pull Hybrids.........41 | ||||
5. TRILL ES-IS............................................43 | ||||
5.1 PDUs and System IDs...................................43 | ||||
5.2 Adjacency, DRB Election, Hellos, TLVs, Etc............44 | ||||
5.3 Link State............................................44 | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Table of Contents Continued | ||||
6. Security Considerations................................45 | Copyright Notice | |||
6.1 Directory Information Security........................45 | ||||
6.2 Directory Confidentiality and Privacy.................45 | ||||
6.3 Directory Message Security Considerations.............45 | ||||
7. IANA Considerations....................................47 | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
7.1 ESADI-Parameter Data Extensions.......................47 | document authors. All rights reserved. | |||
7.2 RBridge Channel Protocol Numbers......................48 | ||||
7.3 The Pull Directory (PUL) and No Data (NOD) Bits.......48 | ||||
7.4 TRILL Pull Directory QTYPEs...........................49 | ||||
7.5 Pull Directory Error Code Registries..................49 | ||||
7.6 TRILL-ES-IS MAC Address...............................49 | ||||
Normative References......................................50 | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Informational References..................................51 | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with respect | ||||
to this document. Code Components extracted from this document must | ||||
include Simplified BSD License text as described in Section 4.e of | ||||
the Trust Legal Provisions and are provided without warranty as | ||||
described in the Simplified BSD License. | ||||
Acknowledgments...........................................53 | Table of Contents | |||
Authors' Addresses........................................54 | ||||
Copyright, Disclaimer, and Additional IPR Provisions......55 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Uses of Directory Information . . . . . . . . . . . . . . 4 | ||||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | ||||
2. Push Model Directory Assistance Mechanisms . . . . . . . . . 6 | ||||
2.1. Requesting Push Service . . . . . . . . . . . . . . . . . 7 | ||||
2.2. Push Directory Servers . . . . . . . . . . . . . . . . . 7 | ||||
2.3. Push Directory Server State Machine . . . . . . . . . . . 8 | ||||
2.3.1. Push Directory States . . . . . . . . . . . . . . . . 8 | ||||
2.3.2. Push Directory Events and Conditions . . . . . . . . 10 | ||||
2.3.3. State Transition Diagram and Table . . . . . . . . . 12 | ||||
2.4. End Stations and Push Directories . . . . . . . . . . . . 13 | ||||
2.5. Additional Push Details . . . . . . . . . . . . . . . . . 14 | ||||
2.6. Primary to Secondary Server Push Service . . . . . . . . 15 | ||||
2.7. Push Directory Configuration . . . . . . . . . . . . . . 16 | ||||
3. Pull Model Directory Assistance Mechanisms . . . . . . . . . 16 | ||||
3.1. Pull Directory Message Common Format . . . . . . . . . . 17 | ||||
3.1.1. Version Negotiation . . . . . . . . . . . . . . . . . 19 | ||||
3.2. Pull Directory Query and Response Messages . . . . . . . 19 | ||||
3.2.1. Pull Directory Query Message Format . . . . . . . . . 20 | ||||
3.2.2. Pull Directory Responses . . . . . . . . . . . . . . 23 | ||||
3.3. Cache Consistency . . . . . . . . . . . . . . . . . . . . 27 | ||||
3.3.1. Update Message Format . . . . . . . . . . . . . . . . 31 | ||||
3.3.2. Acknowledge Message Format . . . . . . . . . . . . . 32 | ||||
3.4. Summary of Records Formats in Messages . . . . . . . . . 32 | ||||
3.5. End Stations and Pull Directories . . . . . . . . . . . . 33 | ||||
3.5.1. Pull Directory Hosted on an End Station . . . . . . . 33 | ||||
3.5.2. Use of Pull Directory by End Stations . . . . . . . . 35 | ||||
3.5.3. Native Pull Directory Messages . . . . . . . . . . . 35 | ||||
3.6. Pull Directory Message Errors . . . . . . . . . . . . . . 36 | ||||
3.6.1. Error Codes . . . . . . . . . . . . . . . . . . . . . 37 | ||||
3.6.2. Sub-Errors Under Error Codes 1 and 3 . . . . . . . . 38 | ||||
3.6.3. Sub-Errors Under Error Codes 128 and 131 . . . . . . 38 | ||||
3.7. Additional Pull Details . . . . . . . . . . . . . . . . . 38 | ||||
3.8. The No Data Flag . . . . . . . . . . . . . . . . . . . . 38 | ||||
3.9. Pull Directory Service Configuration . . . . . . . . . . 39 | ||||
4. Directory Use Strategies and Push-Pull Hybrids . . . . . . . 40 | ||||
5. TRILL ES-IS . . . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
5.1. PDUs and System IDs . . . . . . . . . . . . . . . . . . . 43 | ||||
5.2. Adjacency, DRB Election, Hellos, TLVs, Etc. . . . . . . . 43 | ||||
5.3. Link State . . . . . . . . . . . . . . . . . . . . . . . 44 | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 44 | |||
6.1. Directory Information Security . . . . . . . . . . . . . 44 | ||||
6.2. Directory Confidentiality and Privacy . . . . . . . . . . 45 | ||||
6.3. Directory Message Security Considerations . . . . . . . . 45 | ||||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | ||||
7.1. ESADI-Parameter Data Extensions . . . . . . . . . . . . . 45 | ||||
7.2. RBridge Channel Protocol Numbers . . . . . . . . . . . . 46 | ||||
7.3. The Pull Directory (PUL) and No Data (NOD) Bits . . . . . 47 | ||||
7.4. TRILL Pull Directory QTYPEs . . . . . . . . . . . . . . . 47 | ||||
7.5. Pull Directory Error Code Registries . . . . . . . . . . 48 | ||||
7.6. TRILL-ES-IS MAC Address . . . . . . . . . . . . . . . . . 48 | ||||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 | ||||
8.1. Normative References . . . . . . . . . . . . . . . . . . 48 | ||||
8.2. Informative References . . . . . . . . . . . . . . . . . 51 | ||||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 51 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51 | ||||
1. Introduction | 1. Introduction | |||
[RFC7067] gives a problem statement and high level design for using | [RFC7067] gives a problem statement and high level design for using | |||
directory servers to assist TRILL [RFC6325] [RFC7780] edge nodes in | directory servers to assist TRILL [RFC6325] [RFC7780] edge nodes in | |||
reducing multi-destination ARP/ND [ARPND], reducing unknown unicast | reducing multi-destination ARP/ND [ARPND], reducing unknown unicast | |||
flooding traffic, and improving security against address spoofing | flooding traffic, and improving security against address spoofing | |||
within a TRILL campus. Because multi-destination traffic becomes an | within a TRILL campus. Because multi-destination traffic becomes an | |||
increasing burden as a network scales up in number of nodes, reducing | increasing burden as a network scales up in number of nodes, reducing | |||
ARP/ND and unknown unicast flooding improves TRILL network | ARP/ND and unknown unicast flooding improves TRILL network | |||
scalability. This document describes specific mechanisms for TRILL | scalability. This document describes specific mechanisms for TRILL | |||
directory servers. | directory servers. | |||
The information held by the Directory(s) is address mapping and | The information held by the Directory(s) is address mapping and | |||
reachability information. Most commonly, what MAC (Media Access | reachability information. Most commonly, what MAC (Media Access | |||
Control) address [RFC7042] corresponds to an IP address within a Data | Control) address [RFC7042] corresponds to an IP address within a Data | |||
Label (VLAN or FGL (Fine Grained Label [RFC7172])) and the egress | Label (VLAN or FGL (Fine Grained Label [RFC7172])) and the egress | |||
TRILL switch (RBridge), and optionally what specific port on that | TRILL switch (RBridge), and optionally what specific port on that | |||
TRILL switch, from which that MAC address is reachable. But it could | TRILL switch, from which that MAC address is reachable. But it could | |||
be what IP address corresponds to a MAC address or possibly other | be what IP address corresponds to a MAC address or possibly other | |||
address mapping or reachability information. | address mapping or reachability information. | |||
The mechanism used to initially populate directory data in primary | The mechanism used to initially populate directory data in primary | |||
servers is beyond the scope of this document. A primary server can | servers is beyond the scope of this document. A primary server can | |||
use the Push Directory service to provide directory data to secondary | use the Push Directory service to provide directory data to secondary | |||
servers as described in Section 2.6. In the data center environment, | servers as described in Section 2.6. In the data center environment, | |||
it is common for orchestration software to know and control where all | it is common for orchestration software to know and control where all | |||
the IP addresses, MAC addresses, and VLANs/tenants are in a data | the IP addresses, MAC addresses, and VLANs/tenants are in a data | |||
center. Thus such orchestration software can be appropriate for | center. Thus such orchestration software can be appropriate for | |||
providing the directory function or for supplying the Directory(s) | providing the directory function or for supplying the Directory(s) | |||
with directory information. | with directory information. | |||
Efficient routing of unicast traffic in a TRILL campus assumes that | Efficient routing of unicast traffic in a TRILL campus assumes that | |||
the mapping of destination MAC addresses to edge RBridges is stable | the mapping of destination MAC addresses to edge RBridges is stable | |||
enough that the default data plane learning of TRILL and/or the use | enough that the default data plane learning of TRILL and/or the use | |||
of directories reduces to an acceptable level the need to flood | of directories reduces to an acceptable level the need to flood | |||
packets where the location of the destination is unknown. Although | packets where the location of the destination is unknown. Although | |||
not prohibited, "Ephemeral" MAC addresses are unlikely to be used in | not prohibited, "Ephemeral" MAC addresses are unlikely to be used in | |||
such an environment. Directories need not be complete and in the case | such an environment. Directories need not be complete and in the | |||
that any ephemeral MAC addresses were in use, they would probably not | case that any ephemeral MAC addresses were in use, they would | |||
be included in directory information. | probably not be included in directory information. | |||
Directory services can be offered in a Push Mode, Pull Mode, or both | Directory services can be offered in a Push Mode, Pull Mode, or both | |||
[RFC7067] at the option of the server. Push Mode, in which a | [RFC7067] at the option of the server. Push Mode, in which a | |||
directory server pushes information to TRILL switches indicating | directory server pushes information to TRILL switches indicating | |||
interest, is specified in Section 2. Pull Mode, in which a TRILL | interest, is specified in Section 2. Pull Mode, in which a TRILL | |||
switch queries a server for the information it wants, is specified in | switch queries a server for the information it wants, is specified in | |||
Section 3. More detail on modes of operation, including hybrid | Section 3. More detail on modes of operation, including hybrid Push/ | |||
Push/Pull, are provided in Section 4. | Pull, are provided in Section 4. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
1.1 Uses of Directory Information | 1.1. Uses of Directory Information | |||
A TRILL switch can consult Directory information whenever it wants, | A TRILL switch can consult Directory information whenever it wants, | |||
by (1) searching through information that has been retained after | by (1) searching through information that has been retained after | |||
being pushed to it or pulled by it or (2) by requesting information | being pushed to it or pulled by it or (2) by requesting information | |||
from a Pull Directory. However, the following are expected to be the | from a Pull Directory. However, the following are expected to be the | |||
most common circumstances leading to directory information use. All | most common circumstances leading to directory information use. All | |||
of these are cases of ingressing (or originating) a native frame. | of these are cases of ingressing (or originating) a native frame. | |||
1. ARP requests and replies [RFC826] are normally broadcast. But a | 1. ARP requests and replies [RFC826] are normally broadcast. But a | |||
directory assisted edge TRILL switch could intercept ARP messages | directory assisted edge TRILL switch could intercept ARP messages | |||
and reply if the TRILL switch has the relevant information | and reply if the TRILL switch has the relevant information | |||
[ARPND]. | [ARPND]. | |||
2. IPv6 ND (Neighbor Discovery [RFC4861]) requests and replies are | 2. IPv6 ND (Neighbor Discovery [RFC4861]) requests and replies are | |||
normally multicast. Except in the case of Secure ND [RFC3971], | normally multicast. Except in the case of Secure ND [RFC3971], | |||
where possession of the right keying material might be required, a | where possession of the right keying material might be required, | |||
directory assisted edge TRILL switch could intercept ND messages | a directory assisted edge TRILL switch could intercept ND | |||
and reply if the TRILL switch has the relevant information. | messages and reply if the TRILL switch has the relevant | |||
[ARPND] | information. [ARPND] | |||
3. Unknown destination MAC addresses normally cause a native frame to | 3. Unknown destination MAC addresses normally cause a native frame | |||
be flooded. An edge TRILL switch ingressing a native frame | to be flooded. An edge TRILL switch ingressing a native frame | |||
necessarily has to determine if it knows the egress RBridge from | necessarily has to determine if it knows the egress RBridge from | |||
which the destination MAC address of the frame (in the frame's | which the destination MAC address of the frame (in the frame's | |||
VLAN or FGL) is reachable. It might have learned that information | VLAN or FGL) is reachable. It might have learned that | |||
from the directory or could query the directory if it does not | information from the directory or could query the directory if it | |||
know it. Furthermore, if the edge TRILL switch has complete | does not know it. Furthermore, if the edge TRILL switch has | |||
directory information, it can detect a forged source MAC or IP | complete directory information, it can detect a forged source MAC | |||
address in any native frame and discard the frame if it finds such | or IP address in any native frame and discard the frame if it | |||
a forged address. | finds such a forged address. | |||
4. RARP [RFC903] (Reverse ARP) is similar to ARP as above. | 4. RARP [RFC903] (Reverse ARP) is similar to ARP as above. | |||
1.2 Terminology | 1.2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
The terminology and acronyms of [RFC6325] are used herein along with | The terminology and acronyms of [RFC6325] are used herein along with | |||
the following: | the following: | |||
AFN: Address Family Number, (http://www.iana.org/assignments/address- | AFN: Address Family Number, (http://www.iana.org/assignments/address- | |||
family-numbers/) | family-numbers/) | |||
CSNP Time: Complete Sequence Number PDU Time. See ESDADI [RFC7357] | CSNP Time: Complete Sequence Number PDU Time. See ESDADI [RFC7357] | |||
and Section 7.1 below. | and Section 7.1 below. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Data Label: VLAN or FGL. | Data Label: VLAN or FGL. | |||
ESADI: End Station Address Distribution Information [RFC7357]. | ESADI: End Station Address Distribution Information [RFC7357]. | |||
FGL: Fine Grained Label [RFC7172]. | FGL: Fine Grained Label [RFC7172]. | |||
FR: Flood Record flag bit. See Section 3.2.1. | FR: Flood Record flag bit. See Section 3.2.1. | |||
Host: A physical server or a virtual machine. A host must have a MAC | Host: A physical server or a virtual machine. A host must have a MAC | |||
address and usually has at least one IP address. | ||||
address and usually has at least one IP address. | ||||
Interested Labels sub-TLV: Short for "Interested Labels and Spanning | Interested Labels sub-TLV: Short for "Interested Labels and Spanning | |||
Tree Roots sub-TLV" [RFC7176]. | ||||
Tree Roots sub-TLV" [RFC7176]. | ||||
Interested VLANs sub-TLV: Short for "Interested VLANs and Spanning | Interested VLANs sub-TLV: Short for "Interested VLANs and Spanning | |||
Tree Roots sub-TLV" [RFC7176]. | Tree Roots sub-TLV" [RFC7176]. | |||
IP: Internet Protocol. In this document, IP includes both IPv4 and | IP: Internet Protocol. In this document, IP includes both IPv4 and | |||
IPv6. | IPv6. | |||
MAC: Media Access Control address [RFC7042] | MAC: Media Access Control address [RFC7042] | |||
MacDA: Destination MAC address. | MacDA: Destination MAC address. | |||
MacSA: Source MAC address. | MacSA: Source MAC address. | |||
OV: Overflow flag bit. See Section 3.2.2.1. | OV: Overflow flag bit. See Section 3.2.2.1. | |||
PDSS: Push Directory Server Status. See Sections 2 and 7.1. | PDSS: Push Directory Server Status. See Sections 2 and 7.1. | |||
PUL: Pull Directory flag bit. See Sections 3 and 7.3. | PUL: Pull Directory flag bit. See Sections 3 and 7.3. | |||
primary server: A Directory server that obtains the information it is | primary server: A Directory server that obtains the information it is | |||
serving up by a reliable mechanism outside the scope of this | ||||
document designed to assure the freshness of that information. | serving up by a reliable mechanism outside the scope of this document | |||
(See secondary server.) | designed to assure the freshness of that information. (See secondary | |||
server.) | ||||
RBridge: An alternative name for a TRILL switch. | RBridge: An alternative name for a TRILL switch. | |||
secondary server: A Directory server that obtains the information it | secondary server: A Directory server that obtains the information it | |||
is serving up from one or more primary servers. | is serving up from one or more primary servers. | |||
TLV: Type, Length, Value | TLV: Type, Length, Value | |||
TRILL: Transparent Interconnection of Lots of Links or Tunneled | TRILL: Transparent Interconnection of Lots of Links or Tunneled | |||
Routing in the Link Layer. | Routing in the Link Layer. | |||
TRILL switch: A device that implements the TRILL protocol. | TRILL switch: A device that implements the TRILL protocol. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 2. Push Model Directory Assistance Mechanisms | |||
2. Push Model Directory Assistance Mechanisms | ||||
In the Push Model [RFC7067], one or more Push Directory servers | In the Push Model [RFC7067], one or more Push Directory servers | |||
reside at TRILL switches and push down the address mapping | reside at TRILL switches and push down the address mapping | |||
information for the various addresses associated with end station | information for the various addresses associated with end station | |||
interfaces and the TRILL switches from which those interfaces are | interfaces and the TRILL switches from which those interfaces are | |||
reachable [RFC7961]. This service is scoped by Data Label (VLAN or | reachable [RFC7961]. This service is scoped by Data Label (VLAN or | |||
FGL [RFC7172]). A Push Directory advertises when, for a Data Label, | FGL [RFC7172]). A Push Directory advertises when, for a Data Label, | |||
it both is configured to be a directory having complete information | it both is configured to be a directory having complete information | |||
and has actually pushed all the information it has. It might be | and has actually pushed all the information it has. It might be | |||
pushing only a subset of the mapping and/or reachability information | pushing only a subset of the mapping and/or reachability information | |||
for a Data Label. The Push Model uses the ESADI [RFC7357] (End | for a Data Label. The Push Model uses the ESADI [RFC7357] (End | |||
Station Address Distribution Information) protocol as its | Station Address Distribution Information) protocol as its | |||
distribution mechanism. | distribution mechanism. | |||
With the Push Model, if complete address mapping information for a | With the Push Model, if complete address mapping information for a | |||
Data Label is being pushed, a TRILL switch (RBridge) that has that | Data Label is being pushed, a TRILL switch (RBridge) that has that | |||
complete information and is ingressing a native frame can simply drop | complete information and is ingressing a native frame can simply drop | |||
the frame if the destination unicast MAC address can't be found in | the frame if the destination unicast MAC address can't be found in | |||
the mapping information available, instead of flooding the frame | the mapping information available, instead of flooding the frame | |||
(ingressing it as an unknown MAC destination TRILL Data frame). But | (ingressing it as an unknown MAC destination TRILL Data frame). But | |||
this will result in lost traffic if ingress TRILL switch's directory | this will result in lost traffic if ingress TRILL switch's directory | |||
information is incomplete. | information is incomplete. | |||
2.1 Requesting Push Service | 2.1. Requesting Push Service | |||
In the Push Model, it is necessary to have a way for a TRILL switch | In the Push Model, it is necessary to have a way for a TRILL switch | |||
to subscribe to information from the directory server(s). TRILL | to subscribe to information from the directory server(s). TRILL | |||
switches simply use the ESADI [RFC7357] protocol mechanism to | switches simply use the ESADI [RFC7357] protocol mechanism to | |||
announce, in their core IS-IS LSPs, the Data Labels for which they | announce, in their core IS-IS LSPs, the Data Labels for which they | |||
are participating in ESADI by using the Interested VLANs and/or | are participating in ESADI by using the Interested VLANs and/or | |||
Interested Labels sub-TLVs [RFC7176]. This will cause the Directory | Interested Labels sub-TLVs [RFC7176]. This will cause the Directory | |||
information to be pushed to them for all such Data Labels that are | information to be pushed to them for all such Data Labels that are | |||
being served by the one or more Push Directory servers. | being served by the one or more Push Directory servers. | |||
2.2 Push Directory Servers | 2.2. Push Directory Servers | |||
Push Directory servers advertise, through ESADI, their availability | Push Directory servers advertise, through ESADI, their availability | |||
to push the mapping information for a particular Data Label by | to push the mapping information for a particular Data Label by | |||
setting the PDSS (Push Directory Server Status) in their ESADI | setting the PDSS (Push Directory Server Status) in their ESADI | |||
Parameter APPsub-TLV for that ESADI instance (see [RFC7357] and | Parameter APPsub-TLV for that ESADI instance (see [RFC7357] and | |||
Section 7.1) to a non-zero value. This PDSS field setting is visible | Section 7.1) to a non-zero value. This PDSS field setting is visible | |||
to other ESADI participants, including other Push Directory servers, | to other ESADI participants, including other Push Directory servers, | |||
for that Data Label. Each Push Directory server MUST participate in | for that Data Label. Each Push Directory server MUST participate in | |||
ESADI for the Data Labels for which it will push mappings and set the | ESADI for the Data Labels for which it will push mappings and set the | |||
PDSS field in its ESADI-Parameters APPsub-TLV for that Data Label. | PDSS field in its ESADI-Parameters APPsub-TLV for that Data Label. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
For increased robustness, increased bandwidth capability, and | For increased robustness, increased bandwidth capability, and | |||
improved locality, it is useful to have multiple Push Directory | improved locality, it is useful to have multiple Push Directory | |||
Servers for each Data Label. Each Push Directory server is configured | Servers for each Data Label. Each Push Directory server is | |||
with a number N in the range 1 to 8, which defaults to 2, for each | configured with a number N in the range 1 to 8, which defaults to 2, | |||
Data Label for which it can push directory information (see | for each Data Label for which it can push directory information (see | |||
PushDirServers, Section 2.7). If the Push Directory servers for a | PushDirServers, Section 2.7). If the Push Directory servers for a | |||
Data Label are configured consistently with the same N and at least N | Data Label are configured consistently with the same N and at least N | |||
servers are available, then N copies of that directory will be | servers are available, then N copies of that directory will be | |||
pushed. | pushed. | |||
Each Push Directory server also has a configurable 8-bit priority | Each Push Directory server also has a configurable 8-bit priority | |||
(PushDirPriority) to be Active, which defaults to 0x3F (see Section | (PushDirPriority) to be Active, which defaults to 0x3F (see | |||
2.7). This priority is treated as an unsigned integer where larger | Section 2.7). This priority is treated as an unsigned integer where | |||
magnitude means higher priority. This priority appears in its ESADI | larger magnitude means higher priority. This priority appears in its | |||
Parameter APPsub-TLV (see Section 7.1). In case of a tie in this | ESADI Parameter APPsub-TLV (see Section 7.1). In case of a tie in | |||
configurable priority, the System ID of the TRILL switch acting as | this configurable priority, the System ID of the TRILL switch acting | |||
the server is used as an unsigned 6-byte integer where larger | as the server is used as an unsigned 6-byte integer where larger | |||
magnitude indicates higher priority. | magnitude indicates higher priority. | |||
For each Data Label it can serve, each Push Directory server checks | For each Data Label it can serve, each Push Directory server checks | |||
to see if there appear to be enough higher priority servers to push | to see if there appear to be enough higher priority servers to push | |||
the desired number of copies. It does this by ordering, by priority, | the desired number of copies. It does this by ordering, by priority, | |||
the Push Directory servers whose advertisements are present in the | the Push Directory servers whose advertisements are present in the | |||
ESADI link state database for that Data Label and that are data | ESADI link state database for that Data Label and that are data | |||
reachable [RFC7780] as indicated by its IS-IS link state database. | reachable [RFC7780] as indicated by its IS-IS link state database. | |||
The Push Directory server then determines its own position in that | The Push Directory server then determines its own position in that | |||
order. If a Push Directory server's configuration indicates that N | order. If a Push Directory server's configuration indicates that N | |||
copies of the mappings for a Data Label should be pushed and the | copies of the mappings for a Data Label should be pushed and the | |||
server finds that it is number K in the priority ordering (where | server finds that it is number K in the priority ordering (where | |||
number 1 in the ordered list is highest priority and the last is | number 1 in the ordered list is highest priority and the last is | |||
lowest priority), then if K is less than or equal to N the Push | lowest priority), then if K is less than or equal to N the Push | |||
Directory server is Active. If K is greater than N it is Stand-By. | Directory server is Active. If K is greater than N it is Stand-By. | |||
Active and Stand-By behavior are specified below in Section 2.3. | Active and Stand-By behavior are specified below in Section 2.3. | |||
For a Push Directory to reside on an end station, one or more TRILL | For a Push Directory to reside on an end station, one or more TRILL | |||
switches locally connected to that end station must proxy for the | switches locally connected to that end station must proxy for the | |||
Push Directory server and advertise themselves in ESADI as Push | Push Directory server and advertise themselves in ESADI as Push | |||
Directory servers. It appears to the rest of the TRILL campus that | Directory servers. It appears to the rest of the TRILL campus that | |||
these TRILL switches (that are proxying for the end station) are the | these TRILL switches (that are proxying for the end station) are the | |||
Push Directory server(s). The protocol between such a Push Directory | Push Directory server(s). The protocol between such a Push Directory | |||
end station and the one or more proxying TRILL switches acting as | end station and the one or more proxying TRILL switches acting as | |||
Push Directory servers is beyond the scope of this document. | Push Directory servers is beyond the scope of this document. | |||
2.3 Push Directory Server State Machine | 2.3. Push Directory Server State Machine | |||
The subsections below describe the states, events, and corresponding | The subsections below describe the states, events, and corresponding | |||
actions for Push Directory servers. | actions for Push Directory servers. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
The meaning of the value of the PDSS field in a Push Directory's | The meaning of the value of the PDSS field in a Push Directory's | |||
ESADI Parameter APPsub-TLV is summarized in the table below. | ESADI Parameter APPsub-TLV is summarized in the table below. | |||
PDSS Meaning | PDSS Meaning | |||
---- ---------- | ---- ---------- | |||
0 Not a Push Directory Server | 0 Not a Push Directory Server | |||
1 Push Directory Server in Stand-By Mode | 1 Push Directory Server in Stand-By Mode | |||
2 Push Directory Server in Active Mode but not complete | 2 Push Directory Server in Active Mode but not complete | |||
3 Push Directory Server in Active Mode that has pushed | 3 Push Directory Server in Active Mode that has pushed | |||
complete data | complete data | |||
2.3.1 Push Directory States | 2.3.1. Push Directory States | |||
A Push Directory Server is in one of seven states, as listed below, | A Push Directory Server is in one of seven states, as listed below, | |||
for each Data Label it can serve. The name of each state is followed | for each Data Label it can serve. The name of each state is followed | |||
by a symbol that starts and ends with an angle bracket and represents | by a symbol that starts and ends with an angle bracket and represents | |||
the state. The value that the Push Directory Server advertises in | the state. The value that the Push Directory Server advertises in | |||
PDSS is determined by the state. In addition, it has an internal | PDSS is determined by the state. In addition, it has an internal | |||
State-Transition-Time variable for each Data Label it serves that is | State-Transition-Time variable for each Data Label it serves that is | |||
set at each state transition and which enables it to determine how | set at each state transition and which enables it to determine how | |||
long it has been in its current state for that Data Label. | long it has been in its current state for that Data Label. | |||
Down <S1>: A completely shut down virtual state defined for | Down <S1>: A completely shut down virtual state defined for | |||
convenience in specifying state diagrams. A Push Directory Server | convenience in specifying state diagrams. A Push Directory Server | |||
in this state does not advertise any Push Directory data. It may | in this state does not advertise any Push Directory data. It may | |||
be participating in ESDADI [RFC7357] with the PDSS field zero in | be participating in ESDADI [RFC7357] with the PDSS field zero in | |||
its ESADI-Parameters or might be not participating in ESADI at | its ESADI-Parameters or might be not participating in ESADI at | |||
all. All states other than the Down state are considered to be Up | all. All states other than the Down state are considered to be Up | |||
states and imply a non-zero PDSS field. | states and imply a non-zero PDSS field. | |||
Stand-By <S2>: No Push Directory data is advertised. Any outstanding | Stand-By <S2>: No Push Directory data is advertised. Any | |||
outstanding | ||||
EASDI-LSP fragments containing directory data are updated to | EASDI-LSP fragments containing directory data are updated to | |||
remove that data and, if the result is an empty fragment (contains | remove that data and, if the result is an empty fragment (contains | |||
nothing except possibly an Authentication TLV), the fragment is | nothing except possibly an Authentication TLV), the fragment is | |||
purged. The Push Directory participates in ESDADI [RFC7357] and | purged. The Push Directory participates in ESDADI [RFC7357] and | |||
advertises its ESADI fragment zero that includes an ESADI- | advertises its ESADI fragment zero that includes an ESADI- | |||
Parameters APPsub-TLV with the PDSS field set to 1. | Parameters APPsub-TLV with the PDSS field set to 1. | |||
Active <S3>: The Push Directory participates in ESDADI [RFC7357] and | Active <S3>: The Push Directory participates in ESDADI [RFC7357] and | |||
advertises its ESADI fragment zero that includes an ESADI- | advertises its ESADI fragment zero that includes an ESADI- | |||
Parameters APPsub-TLV with the PDSS field set to 2. It also | Parameters APPsub-TLV with the PDSS field set to 2. It also | |||
advertises its directory data and any changes through ESADI | advertises its directory data and any changes through ESADI | |||
[RFC7357] in its ESADI-LSPs using the Interface Addresses | [RFC7357] in its ESADI-LSPs using the Interface Addresses | |||
[RFC7961] APPsub-TLV and updates that information as it changes. | [RFC7961] APPsub-TLV and updates that information as it changes. | |||
Active Completing <S4>: Same behavior as the Active state except | Active Completing <S4>: Same behavior as the Active state except | |||
that the server responds differently to events. The purpose of | that the server responds differently to events. The purpose of | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
this state is to be sure there has been enough time for directory | this state is to be sure there has been enough time for directory | |||
information to propagate to subscribing edge TRILL switches (see | information to propagate to subscribing edge TRILL switches (see | |||
the Time Condition, Section 2.3.2) before the Directory Server | the Time Condition, Section 2.3.2) before the Directory Server | |||
advertises that the information is complete. | advertises that the information is complete. | |||
Active Complete <S5>: The same behavior as Active except that the | Active Complete <S5>: The same behavior as Active except that the | |||
PDSS field in the ESADI-Parameters APPsub-TLV is set to 3 and the | PDSS field in the ESADI-Parameters APPsub-TLV is set to 3 and the | |||
server responds differently to events. | server responds differently to events. | |||
Going Stand-By Was Complete <S6>: The same behavior as Active except | Going Stand-By Was Complete <S6>: The same behavior as Active except | |||
that the server responds differently to events. The purpose of | that the server responds differently to events. The purpose of | |||
this state is to be sure that the information, that the directory | this state is to be sure that the information, that the directory | |||
will no longer be complete, has enough time to propagate to edge | will no longer be complete, has enough time to propagate to edge | |||
TRILL switches (see the Time Condition, Section 2.3.2) before the | TRILL switches (see the Time Condition, Section 2.3.2) before the | |||
Directory Server stops advertising updates to the information. | Directory Server stops advertising updates to the information. | |||
(See note below.) | (See note below.) | |||
Active Uncompleting <S7>: The same behavior as Active except that it | Active Uncompleting <S7>: The same behavior as Active except that it | |||
responds differently to events. The purpose of this state is to be | responds differently to events. The purpose of this state is to | |||
sure that the information, that the directory will no longer be | be sure that the information, that the directory will no longer be | |||
complete, has enough time to propagate to edge TRILL switches (see | complete, has enough time to propagate to edge TRILL switches (see | |||
the Time Condition, Section 2.3.2) before the Directory Server | the Time Condition, Section 2.3.2) before the Directory Server | |||
might stop advertising updates to the information. (See note | might stop advertising updates to the information. (See note | |||
below.) | below.) | |||
Note: It might appear that a Push Directory could transition | Note: It might appear that a Push Directory could | |||
directly from Active Complete to Active, since Active state | transition | |||
continues to advertise updates, eliminating the need for the | directly from Active Complete to Active, since Active | |||
Active Uncompleting transition state. But consider the case of | state continues to advertise updates, eliminating the | |||
the Push Directory that was complete being configured to be | need for the Active Uncompleting transition state. | |||
incomplete and then the Stand-By Condition (see Section 2.3.2) | But consider the case of the Push Directory that was | |||
occurring shortly thereafter. If the first of these two events | complete being configured to be incomplete and then | |||
caused the server to transition directly to the Active state | the Stand-By Condition (see Section 2.3.2) occurring | |||
then, when the Stand-By Condition occurred, it would | shortly thereafter. If the first of these two events | |||
immediately transition to Stand-By and stop advertising updates | caused the server to transition directly to the | |||
even though there might not have been enough time for knowledge | Active state then, when the Stand-By Condition | |||
of its incompleteness to have propagated to all edge TRILL | occurred, it would immediately transition to Stand-By | |||
switches. | and stop advertising updates even though there might | |||
not have been enough time for knowledge of its | ||||
incompleteness to have propagated to all edge TRILL | ||||
switches. | ||||
The following table summarizes PDSS value for each state: | The following table summarizes PDSS value for each state: | |||
State PDSS | State PDSS | |||
---------- ------ | ---------- ------ | |||
Down <S1> 0 | Down <S1> 0 | |||
Stand-By <S2> 1 | Stand-By <S2> 1 | |||
Active <S3> 2 | Active <S3> 2 | |||
Active Completing <S4> 2 | Active Completing <S4> 2 | |||
Active Complete <S5> 3 | Active Complete <S5> 3 | |||
Going Stand-By <S6> 2 | Going Stand-By <S6> 2 | |||
Active Uncompleting <S7> 2 | Active Uncompleting <S7> 2 | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 2.3.2. Push Directory Events and Conditions | |||
2.3.2 Push Directory Events and Conditions | ||||
Three auxiliary conditions referenced later in this section are | Three auxiliary conditions referenced later in this section are | |||
defined as follows for convenience: | defined as follows for convenience: | |||
The Activate Condition: In order to have the desired number of Push | The Activate Condition: In order to have the desired number of Push | |||
Directory servers pushing data for Data Label X, this Push | Directory servers pushing data for Data Label X, this Push | |||
Directory server should be active. This is determined by the | Directory server should be active. This is determined by the | |||
server finding that (A) it is priority K among the data reachable | server finding that (A) it is priority K among the data reachable | |||
Push Directory servers (where highest priority server is 1) for | Push Directory servers (where highest priority server is 1) for | |||
Data Label X, (B) it is configured that there should be N copies | Data Label X, (B) it is configured that there should be N copies | |||
pushed for Data Label X, and (C) K is less than or equal to N. For | pushed for Data Label X, and (C) K is less than or equal to N. | |||
example, if the Push Directory server is configured so that 2 | For example, if the Push Directory server is configured so that 2 | |||
copies should be pushed and finds that it is priority 1 or 2 among | copies should be pushed and finds that it is priority 1 or 2 among | |||
the Push Directory servers that are visible in its ESADI link | the Push Directory servers that are visible in its ESADI link | |||
state database and that are data reachable as indicated by its IS- | state database and that are data reachable as indicated by its IS- | |||
IS link state database. | IS link state database. | |||
The Stand-By Condition: In order to have the desired number of Push | The Stand-By Condition: In order to have the desired number of Push | |||
Directory servers pushing data for Data Label X, this Push | Directory servers pushing data for Data Label X, this Push | |||
Directory server should be stand-by (not active). This is | Directory server should be stand-by (not active). This is | |||
determined by the server finding that (A) it is priority K among | determined by the server finding that (A) it is priority K among | |||
the data reachable Push Directory servers (where highest priority | the data reachable Push Directory servers (where highest priority | |||
server is 1) for Data Label X, (B) it is configured that there | server is 1) for Data Label X, (B) it is configured that there | |||
should be N copies pushed for Data Label X, and (C) K is greater | should be N copies pushed for Data Label X, and (C) K is greater | |||
than N. For example, the Push Directory server is configured that | than N. For example, the Push Directory server is configured that | |||
2 copies should be pushed and finds that it is priority 3 or lower | 2 copies should be pushed and finds that it is priority 3 or lower | |||
priority (higher number) among the available Push directory | priority (higher number) among the available Push directory | |||
servers. | servers. | |||
The Time Condition: The Push Directory server has been in its current | The Time Condition: The Push Directory server has been in its current | |||
state for a configurable amount of time (PushDirTimer) that | state for a configurable amount of time (PushDirTimer) that | |||
defaults to twice its CSNP (Complete Sequence Number PDU) time | defaults to twice its CSNP (Complete Sequence Number PDU) time | |||
(see Sections 2.7 and 7.1).) | (see Sections 2.7 and 7.1).) | |||
The events and conditions listed below cause state transitions in | The events and conditions listed below cause state transitions in | |||
Push Directory servers. | Push Directory servers. | |||
1. Push Directory server comes Up. | 1. Push Directory server comes Up. | |||
2. The Push Directory server or the TRILL switch on which it resides | ||||
is being shut down. This is a persistent condition unless the shut | ||||
down is canceled. So, for example, a Push Directory server in the | ||||
Going Stand-By Was Complete state does not transition out of that | ||||
state due to this condition but, after the Time Condition is met | ||||
and the directory transitions to Stand-By and performs the actions | ||||
required there (such as purging LSPs) continues to the Down state | ||||
if this condition is still true. Similar comments apply to | ||||
events/conditions 3, 4, and 5. | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 2. The Push Directory server or the TRILL switch on which it resides | |||
is being shut down. This is a persistent condition unless the | ||||
shut down is canceled. So, for example, a Push Directory server | ||||
in the Going Stand-By Was Complete state does not transition out | ||||
of that state due to this condition but, after the Time Condition | ||||
is met and the directory transitions to Stand-By and performs the | ||||
actions required there (such as purging LSPs) continues to the | ||||
Down state if this condition is still true. Similar comments | ||||
apply to events/conditions 3, 4, and 5. | ||||
3. The Activate Condition is met and the server's configuration | 3. The Activate Condition is met and the server's configuration | |||
indicates it does not have complete data. | indicates it does not have complete data. | |||
4. The Stand-By Condition is met. | 4. The Stand-By Condition is met. | |||
5. The Activate Condition is met and the server's configuration | 5. The Activate Condition is met and the server's configuration | |||
indicates it has complete data. | indicates it has complete data. | |||
6. The server's configuration is changed to indicate it does not have | 6. The server's configuration is changed to indicate it does not | |||
complete data. | have complete data. | |||
7. The Time Condition is met. | 7. The Time Condition is met. | |||
2.3.3 State Transition Diagram and Table | 2.3.3. State Transition Diagram and Table | |||
The state transition table is as follows: | The state transition table is as follows: | |||
State|Down|Stand-By|Active| Active | Active | Going | Active | State|Down|Stand-By|Active| Active | Active | Going | Active | |||
-----+ | | |Completing|Complete|Stand-By|Uncompleting | -----+ | | |Completing|Complete|Stand-By|Uncompleting | |||
Event|<S1>| <S2> | <S3> | <S4> | <S5> | <S6> | <S7> | Event|<S1>| <S2> | <S3> | <S4> | <S5> | <S6> | <S7> | |||
-----+----+--------+------+----------+--------+---------+------------ | -----+----+--------+------+----------+--------+---------+------------ | |||
1 |<S2>| N/A | N/A | N/A | N/A | N/A | N/A | 1 |<S2>| N/A | N/A | N/A | N/A | N/A | N/A | |||
2 |<S1>| <S1> | <S2> | <S2> | <S6> | <S6> | <S7> | 2 |<S1>| <S1> | <S2> | <S2> | <S6> | <S6> | <S7> | |||
3 |<S1>| <S3> | <S3> | <S3> | <S7> | <S3> | <S7> | 3 |<S1>| <S3> | <S3> | <S3> | <S7> | <S3> | <S7> | |||
4 |<S1>| <S2> | <S2> | <S2> | <S6> | <S6> | <S6> | 4 |<S1>| <S2> | <S2> | <S2> | <S6> | <S6> | <S6> | |||
5 |<S1>| <S4> | <S4> | <S4> | <S5> | <S5> | <S5> | 5 |<S1>| <S4> | <S4> | <S4> | <S5> | <S5> | <S5> | |||
6 |<S1>| <S2> | <S3> | <S3> | <S7> | <S6> | <S7> | 6 |<S1>| <S2> | <S3> | <S3> | <S7> | <S6> | <S7> | |||
7 |<S1>| <S2> | <S3> | <S5> | <S5> | <S2> | <S3> | 7 |<S1>| <S2> | <S3> | <S5> | <S5> | <S2> | <S3> | |||
The above state table is equivalent to the following transition | The above state table is equivalent to the following transition | |||
diagram: | diagram: | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
+-----------+ | +-----------+ | |||
| Down <S1> |<---------+ | | Down <S1> |<---------+ | |||
+-----------+ | | +-----------+ | | |||
|1 ^ | 3,4,5,6,7 | | |1 ^ | 3,4,5,6,7 | | |||
| | +------------+ | | | +------------+ | |||
V |2 | V |2 | |||
+---------------+ | +---------------+ | |||
| Stand-By <S2> |<--------------------------------------+ | | Stand-By <S2> |<--------------------------------------+ | |||
+---------------+ ^ ^ ^ | | +---------------+ ^ ^ ^ | | |||
|5 |3 |1,4,6,7 | | | | | |5 |3 |1,4,6,7 | | | | | |||
skipping to change at page 13, line 48 | skipping to change at page 13, line 46 | |||
| Active |------->| Active |--->| Going Stand-By | | | Active |------->| Active |--->| Going Stand-By | | |||
| Complete | | Uncompleting | | Was Complete | | | Complete | | Uncompleting | | Was Complete | | |||
| <S5> |<-------| <S7> | | <S6> | | | <S5> |<-------| <S7> | | <S6> | | |||
+-------------+ 5 +----------------+ +----------------+ | +-------------+ 5 +----------------+ +----------------+ | |||
|1,5,7 ^ |2,4 |1,2,3,6 ^ ^ |1,2,4,6 ^ | |1,5,7 ^ |2,4 |1,2,3,6 ^ ^ |1,2,4,6 ^ | |||
| | | | | | | | | | | | | | | | | | |||
+-------+ | +------------+ | +--------+ | +-------+ | +------------+ | +--------+ | |||
| | | | | | |||
+----------------------------------+ | +----------------------------------+ | |||
Figure 1. Push Server State Diagram | Figure 1: Push Server State Diagram | |||
2.4 End Stations and Push Directories | 2.4. End Stations and Push Directories | |||
End station hosting or use of Push Directories is outside of the | End station hosting or use of Push Directories is outside of the | |||
scope of this document. Push Directory information distribution is | scope of this document. Push Directory information distribution is | |||
accomplished using ESADI [RFC7357], which does not operate to end | accomplished using ESADI [RFC7357], which does not operate to end | |||
stations. In the future, ESADI might be extended to operate to end | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
stations. In the future, ESADI might be extended to operate to end | ||||
stations or some other method, such as BGP, might be specified as a | stations or some other method, such as BGP, might be specified as a | |||
way to support end station hosting or use of Push Directories. | way to support end station hosting or use of Push Directories. | |||
2.5 Additional Push Details | 2.5. Additional Push Details | |||
Push Directory mappings can be distinguished from other data | Push Directory mappings can be distinguished from other data | |||
distributed through ESADI because mappings are distributed only with | distributed through ESADI because mappings are distributed only with | |||
the Interface Addresses APPsub-TLV [RFC7961] and are flagged in that | the Interface Addresses APPsub-TLV [RFC7961] and are flagged in that | |||
APPsub-TLV as being Push Directory data. | APPsub-TLV as being Push Directory data. | |||
TRILL switches, whether or not they are Push Directory servers, MAY | TRILL switches, whether or not they are Push Directory servers, MAY | |||
continue to advertise any locally learned MAC attachment information | continue to advertise any locally learned MAC attachment information | |||
in ESADI [RFC7357] using the Reachable MAC Addresses TLV [RFC6165]. | in ESADI [RFC7357] using the Reachable MAC Addresses TLV [RFC6165]. | |||
However, if a Data Label is being served by complete Push Directory | However, if a Data Label is being served by complete Push Directory | |||
servers, advertising such locally learned MAC attachment generally | servers, advertising such locally learned MAC attachment generally | |||
SHOULD NOT be done as it would not add anything and would just waste | SHOULD NOT be done as it would not add anything and would just waste | |||
bandwidth and ESADI link state space. An exception might be when a | bandwidth and ESADI link state space. An exception might be when a | |||
TRILL switch learns local MAC connectivity and that information | TRILL switch learns local MAC connectivity and that information | |||
appears to be missing from the directory mapping. | appears to be missing from the directory mapping. | |||
Because a Push Directory server needs to advertise interest in one or | Because a Push Directory server needs to advertise interest in one or | |||
more Data Labels even though it might not want to receive multi- | more Data Labels even though it might not want to receive multi- | |||
destination TRILL Data packets in those Data Labels, the No Data | destination TRILL Data packets in those Data Labels, the No Data | |||
(NOD) flag bit is provided as discussed in Section 3.8. | (NOD) flag bit is provided as discussed in Section 3.8. | |||
When a Push Directory server is no longer data reachable [RFC7780] as | When a Push Directory server is no longer data reachable [RFC7780] as | |||
indicated by the IS-IS link state database, other TRILL switches MUST | indicated by the IS-IS link state database, other TRILL switches MUST | |||
ignore any Push Directory data from that server because it is no | ignore any Push Directory data from that server because it is no | |||
longer being updated and may be stale. | longer being updated and may be stale. | |||
The nature of dynamic distributed asynchronous systems is such that | The nature of dynamic distributed asynchronous systems is such that | |||
it is impossible for a TRILL switch receiving Push Directory | it is impossible for a TRILL switch receiving Push Directory | |||
information to be absolutely certain that it has complete | information to be absolutely certain that it has complete information. | |||
information. However, it can obtain a reasonable assurance of | However, it can obtain a reasonable assurance of complete information | |||
complete information by requiring two conditions to be met: | by requiring two conditions to be met: | |||
1. The PDSS field is 3 in the ESADI zero fragment from the server | ||||
for the relevant Data Label. | ||||
2. In so far as it can tell, it has had continuous data | ||||
connectivity to the server for a configurable amount of time | ||||
that defaults to twice the server's CSNP time (PushDirTimer, | ||||
see Section 2.7). | ||||
Condition 2 is necessary because a client TRILL switch might be just | ||||
coming up and receive an EASDI LSP meeting the requirement in | ||||
condition 1 above but has not yet received all of the ESADI LSP | ||||
fragments from the Push Directory server. | ||||
Likewise, due to various delays, when an end station connects to or | 1. The PDSS field is 3 in the ESADI zero fragment from the server | |||
for the relevant Data Label. | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 1. In so far as it can tell, it has had continuous data connectivity | |||
to the server for a configurable amount of time that defaults to | ||||
twice the server's CSNP time (PushDirTimer, see Section 2.7). | ||||
Condition 2 is necessary because a client TRILL switch might be just | ||||
coming up and receive an EASDI LSP meeting the requirement in | ||||
condition 1 above but has not yet received all of the ESADI LSP | ||||
fragments from the Push Directory server. | ||||
Likewise, due to various delays, when an end station connects to or | ||||
disconnects from the campus there are timing differences between such | disconnects from the campus there are timing differences between such | |||
connection or disconnection, the update of directory information at | connection or disconnection, the update of directory information at | |||
the directory, and the update of directory information at any | the directory, and the update of directory information at any | |||
particular RBridge in the TRILL campus. Thus, there is commonly a | particular RBridge in the TRILL campus. Thus, there is commonly a | |||
small window during which an RBridge using directory information | small window during which an RBridge using directory information | |||
might either (1) drop or unnecessarily flood a frame as having an | might either (1) drop or unnecessarily flood a frame as having an | |||
unknown unicast destination or (2) encapsulate a frame to an edge | unknown unicast destination or (2) encapsulate a frame to an edge | |||
RBridge where the end station is not longer connected when the frame | RBridge where the end station is not longer connected when the frame | |||
arrives at that edge RBridge. | arrives at that edge RBridge. | |||
There may be conflicts between mapping information from different | There may be conflicts between mapping information from different | |||
Push Directory servers or conflicts between locally learned | Push Directory servers or conflicts between locally learned | |||
information and information received from a Push Directory server. In | information and information received from a Push Directory server. | |||
case of such conflicts, information with a higher confidence value | In case of such conflicts, information with a higher confidence value | |||
[RFC6325] [RFC7961] is preferred over information with a lower | [RFC6325] [RFC7961] is preferred over information with a lower | |||
confidence. In case of equal confidence, Push Directory information | confidence. In case of equal confidence, Push Directory information | |||
is preferred to locally learned information and if information from | is preferred to locally learned information and if information from | |||
Push Directory servers conflicts, the information from the higher | Push Directory servers conflicts, the information from the higher | |||
priority Push Directory server is preferred. | priority Push Directory server is preferred. | |||
2.6 Primary to Secondary Server Push Service | 2.6. Primary to Secondary Server Push Service | |||
A secondary Push or Pull Directory server is one that obtains its | A secondary Push or Pull Directory server is one that obtains its | |||
data from a primary directory server. Such mechanisms, where some | data from a primary directory server. Such mechanisms, where some | |||
directory servers can be populated from others, have been found | directory servers can be populated from others, have been found | |||
useful for multiple-server directory applications, for example in the | useful for multiple-server directory applications, for example in the | |||
DNS where it is the normal case that some authoritative servers | DNS where it is the normal case that some authoritative servers | |||
(secondary servers) are populated with data from other authoritative | (secondary servers) are populated with data from other authoritative | |||
servers (primary servers). | servers (primary servers). | |||
Other techniques MAY be used but, by default, this data transfer | Other techniques MAY be used but, by default, this data transfer | |||
occurs through the primary server acting as a Push Directory server | occurs through the primary server acting as a Push Directory server | |||
for the Data Labels involved while the secondary directory server | for the Data Labels involved while the secondary directory server | |||
takes the pushed data it receives from the highest priority Push | takes the pushed data it receives from the highest priority Push | |||
Directory server and re-originates it. Such a secondary server may be | Directory server and re-originates it. Such a secondary server may | |||
a Push Directory server or a Pull Directory server or both for any | be a Push Directory server or a Pull Directory server or both for any | |||
particular Data Label. Because the data from a secondary server will | particular Data Label. Because the data from a secondary server will | |||
necessarily be at least a little less fresh than that from a primary | necessarily be at least a little less fresh than that from a primary | |||
server, it is RECOMMENDED that the re-originated secondary server | server, it is RECOMMENDED that the re-originated secondary server | |||
data be given a confidence level at least one less than that of the | data be given a confidence level at least one less than that of the | |||
data as received from the primary (or unchanged if it is already of | data as received from the primary (or unchanged if it is already of | |||
minimum confidence). | minimum confidence). | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 2.7. Push Directory Configuration | |||
2.7 Push Directory Configuration | ||||
The following per Data Label configuration parameters are available | The following per Data Label configuration parameters are available | |||
for controlling Push Directory behavior: | for controlling Push Directory behavior: | |||
Name Range Default Section | Name Range Default Section | |||
--------------- -------- ------- ------- | --------------- -------- ------- ------- | |||
PushDirService T/F F 2.2 | PushDirService T/F F 2.2 | |||
PushDirServers 1 - 8 2 2.2 | PushDirServers 1 - 8 2 2.2 | |||
PushDirPriority 0 - 255 0x3F 2.2 | PushDirPriority 0 - 255 0x3F 2.2 | |||
PushDirComplete T/F F 2.3.1, 2.3.2 | PushDirComplete T/F F 2.3.1, 2.3.2 | |||
PushDirTimer 1 - 511 2*CSNP 2.3.2, 2.5 | PushDirTimer 1 - 511 2*CSNP 2.3.2, 2.5 | |||
PushDirService is a boolean. When false, Push Directory service is | PushDirService is a boolean. When false, Push Directory service is | |||
not provided; when true, it is. | not provided; when true, it is. | |||
PushDirComplete is a boolean. When false, the server never indicates | PushDirComplete is a boolean. When false, the server never indicates | |||
that the information it has pushed is complete; when true, it does so | that the information it has pushed is complete; when true, it does so | |||
indicate after pushing all the information it knows. | indicate after pushing all the information it knows. | |||
PushDirTimer defaults to two times the ESADI CSNP configuration value | PushDirTimer defaults to two times the ESADI CSNP configuration value | |||
but not less than 1 second. | but not less than 1 second. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 3. Pull Model Directory Assistance Mechanisms | |||
3. Pull Model Directory Assistance Mechanisms | ||||
In the Pull Model [RFC7067], a TRILL switch (RBridge) pulls directory | In the Pull Model [RFC7067], a TRILL switch (RBridge) pulls directory | |||
information from an appropriate Directory Server when needed. | information from an appropriate Directory Server when needed. | |||
A TRILL switch that makes use of Pull Directory services must | A TRILL switch that makes use of Pull Directory services must | |||
implement appropriate connections between its directory utilization | implement appropriate connections between its directory utilization | |||
and its link state database and link state updating. For example, | and its link state database and link state updating. For example, | |||
Pull Directory servers for a particular Data Label X are found by | Pull Directory servers for a particular Data Label X are found by | |||
looking in the core TRILL IS-IS link state database for data | looking in the core TRILL IS-IS link state database for data | |||
reachable [RFC7780] TRILL switches that advertise themselves by | reachable [RFC7780] TRILL switches that advertise themselves by | |||
having the Pull Directory flag (PUL) on in their Interested VLANs or | having the Pull Directory flag (PUL) on in their Interested VLANs or | |||
Interested Labels sub-TLV (see Section 7.3) for that Data Label. The | Interested Labels sub-TLV (see Section 7.3) for that Data Label. The | |||
set of such switches can change with configuration changes by network | set of such switches can change with configuration changes by network | |||
management, such as starting up or shutting down of Pull Directory | management, such as starting up or shutting down of Pull Directory | |||
servers, or changes in network topology, such the connection or | servers, or changes in network topology, such the connection or | |||
disconnection of TRILL switches that are Pull Directory servers, or | disconnection of TRILL switches that are Pull Directory servers, or | |||
network partition or merger. As described in Section 3.7, a TRILL | network partition or merger. As described in Section 3.7, a TRILL | |||
switch MUST notice if a Pull Directory from which it has cached data | switch MUST notice if a Pull Directory from which it has cached data | |||
is no longer data reachable so it can discard such cached data. | is no longer data reachable so it can discard such cached data. | |||
If multiple data reachable TRILL switches indicate in the link state | If multiple data reachable TRILL switches indicate in the link state | |||
database that they are Pull Directory Servers for a particular Data | database that they are Pull Directory Servers for a particular Data | |||
Label, pull requests can be sent to any one or more of them but it is | Label, pull requests can be sent to any one or more of them but it is | |||
RECOMMENDED that pull requests be preferentially sent to the server | RECOMMENDED that pull requests be preferentially sent to the server | |||
or servers that are lowest cost from the requesting TRILL switch. | or servers that are lowest cost from the requesting TRILL switch. | |||
Pull Directory requests are sent by enclosing them in an RBridge | Pull Directory requests are sent by enclosing them in an RBridge | |||
Channel [RFC7178] message using the Pull Directory channel protocol | Channel [RFC7178] message using the Pull Directory channel protocol | |||
number (see Section 7.2). Responses are returned in an RBridge | number (see Section 7.2). Responses are returned in an RBridge | |||
Channel message using the same channel protocol number. See Section | Channel message using the same channel protocol number. See | |||
3.2 for Query and Response Message formats. For cache consistency or | Section 3.2 for Query and Response Message formats. For cache | |||
notification purposes, Pull Directory servers, under certain | consistency or notification purposes, Pull Directory servers, under | |||
conditions, MUST send unsolicited Update Messages to client TRILL | certain conditions, MUST send unsolicited Update Messages to client | |||
switches they believe may be holding old data and those clients can | TRILL switches they believe may be holding old data and those clients | |||
acknowledge such updates, as described in Section 3.3. All these | can acknowledge such updates, as described in Section 3.3. All these | |||
messages have a common header as described in Section 3.1. Errors are | messages have a common header as described in Section 3.1. Errors | |||
returned as described in Section 3.6. | are returned as described in Section 3.6. | |||
The requests to Pull Directory Servers are typically derived from | The requests to Pull Directory Servers are typically derived from | |||
ingressed ARP [RFC826], ND [RFC4861], RARP [RFC903], or SEND | ingressed ARP [RFC826], ND [RFC4861], RARP [RFC903], or SEND | |||
[RFC3971] messages, or data frames with unknown unicast destination | [RFC3971] messages, or data frames with unknown unicast destination | |||
MAC addresses, intercepted by an ingress TRILL switch, as described | MAC addresses, intercepted by an ingress TRILL switch, as described | |||
in Section 1.1. | in Section 1.1. | |||
Pull Directory responses include an amount of time for which the | Pull Directory responses include an amount of time for which the | |||
response should be considered valid. This includes negative responses | response should be considered valid. This includes negative | |||
that indicate no data is available. It is RECOMMENDED that both | responses that indicate no data is available. It is RECOMMENDED that | |||
positive responses with data and negative responses be cached and | both positive responses with data and negative responses be cached | |||
used to locally handle ARP, ND, RARP, unknown destination MAC frames, | and used to locally handle ARP, ND, RARP, unknown destination MAC | |||
frames, or the like [ARPND], until the responses expire. If | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | information previously pulled is about to expire, a TRILL switch MAY | |||
try to refresh it by issuing a new pull request but, to avoid | ||||
or the like [ARPND], until the responses expire. If information | unnecessary requests, SHOULD NOT do so unless it has been recently | |||
previously pulled is about to expire, a TRILL switch MAY try to | used. The validity timer of cached Pull Directory responses is NOT | |||
refresh it by issuing a new pull request but, to avoid unnecessary | reset or extended merely because that cache entry is used. | |||
requests, SHOULD NOT do so unless it has been recently used. The | ||||
validity timer of cached Pull Directory responses is NOT reset or | ||||
extended merely because that cache entry is used. | ||||
3.1 Pull Directory Message Common Format | 3.1. Pull Directory Message Common Format | |||
All Pull Directory messages are transmitted as the Channel Protocol | All Pull Directory messages are transmitted as the Channel Protocol | |||
specific payload of RBridge Channel messages [RFC7178]. Pull | specific payload of RBridge Channel messages [RFC7178]. Pull | |||
Directory messages are formatted as described herein starting with | Directory messages are formatted as described herein starting with | |||
the following common 8-byte header: | the following common 8-byte header: | |||
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Ver | Type | Flags | Count | Err | SubErr | | | Ver | Type | Flags | Count | Err | SubErr | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sequence Number | | | Sequence Number | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type Specific Payload - variable length | | Type Specific Payload - variable length | |||
+-+-+- ... | +-+-+- ... | |||
Ver: Version of the Pull Directory protocol as an unsigned | Ver: Version of the Pull Directory protocol as an unsigned | |||
integer. Version zero is specified in this document. See | integer. Version zero is specified in this document. See | |||
Section 3.1.1 for a discussion of version negotiation. | Section 3.1.1 for a discussion of version negotiation. | |||
Type: The Pull Directory message type as follows: | Type: The Pull Directory message type as follows: | |||
Type Section Name | Type Section Name | |||
---- ------- -------- | ---- ------- -------- | |||
0 - Reserved | 0 - Reserved | |||
1 3.2.1 Query | 1 3.2.1 Query | |||
2 3.2.2 Response | 2 3.2.2 Response | |||
3 3.3.1 Update | 3 3.3.1 Update | |||
4 3.3.2 Acknowledge | 4 3.3.2 Acknowledge | |||
5-14 - Unassigned | 5-14 - Unassigned | |||
15 - Reserved | 15 - Reserved | |||
Flags: Four flag bits whose meaning depends on the Pull Directory | Flags: Four flag bits whose meaning depends on the Pull Directory | |||
message Type. Flags whose meanings are not specified are | ||||
message Type. Flags whose meanings are not specified are | ||||
reserved, MUST be sent as zero, and MUST be ignored on receipt. | reserved, MUST be sent as zero, and MUST be ignored on receipt. | |||
Count: Some Pull Directory message types specified herein have | Count: Some Pull Directory message types specified herein have | |||
zero or more occurrences of a Record as part of the type | zero or more occurrences of a Record as part of the type | |||
specific payload. The Count field is the number of occurrences | specific payload. The Count field is the number of occurrences | |||
of that Record as an unsigned integer. For any Pull Directory | of that Record as an unsigned integer. For any Pull Directory | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
messages not structured with such occurrences, this field MUST | messages not structured with such occurrences, this field MUST | |||
be sent as zero and ignored on receipt. | be sent as zero and ignored on receipt. | |||
Err, SubErr: The error and suberror fields are only used in | Err, SubErr: The error and suberror fields are only used in | |||
messages that are in the nature of replies. In messages that | messages that are in the nature of replies. In messages that | |||
are requests or updates, these fields MUST be sent as zero and | are requests or updates, these fields MUST be sent as zero and | |||
ignored on receipt. An Err field containing the value zero | ignored on receipt. An Err field containing the value zero | |||
means no error. The meaning of values in the SubErr field | means no error. The meaning of values in the SubErr field | |||
depends on the value of the Err field but, in all cases, a zero | depends on the value of the Err field but, in all cases, a zero | |||
SubErr field is allowed and provides no additional information | SubErr field is allowed and provides no additional information | |||
beyond the value of the Err field. | beyond the value of the Err field. | |||
Sequence Number: An identifying 32-bit quantity set by the TRILL | Sequence Number: An identifying 32-bit quantity set by the TRILL | |||
switch sending a request or other unsolicited message and | switch sending a request or other unsolicited message and | |||
returned in every corresponding reply or acknowledgment. It is | returned in every corresponding reply or acknowledgment. It is | |||
used to match up responses with the message to which they | used to match up responses with the message to which they | |||
respond. | respond. | |||
Type Specific Payload: Format depends on the Pull Directory | Type Specific Payload: Format depends on the Pull Directory | |||
message Type. | message Type. | |||
3.1.1 Version Negotiation | 3.1.1. Version Negotiation | |||
The version number (Ver) in the Pull Directory message header is | The version number (Ver) in the Pull Directory message header is | |||
incremented for a future version with changes such that TRILL | incremented for a future version with changes such that TRILL | |||
directory messages cannot be parsed correctly by an earlier version. | directory messages cannot be parsed correctly by an earlier version. | |||
Ver is not incremented for minor changes such as defining a new field | Ver is not incremented for minor changes such as defining a new field | |||
value for an existing field. | value for an existing field. | |||
Pull Directory messages come in pairs (Request-Response, Update- | Pull Directory messages come in pairs (Request-Response, Update- | |||
Acknowledgment). The version number in the Request/Update (Ver1) | Acknowledgment). The version number in the Request/Update (Ver1) | |||
indicates the format of that message and of the corresponding | indicates the format of that message and of the corresponding | |||
skipping to change at page 19, line 50 | skipping to change at page 19, line 39 | |||
Response/Acknowledgment (Ver2) indicates the highest version number | Response/Acknowledgment (Ver2) indicates the highest version number | |||
that the sender of that Response/Acknowledgment understands. | that the sender of that Response/Acknowledgment understands. | |||
In the most common case of a well configured network, Ver1 and Ver2 | In the most common case of a well configured network, Ver1 and Ver2 | |||
will be equal. | will be equal. | |||
If Ver2 is less than Ver1, the returned Response/Acknowledgment will | If Ver2 is less than Ver1, the returned Response/Acknowledgment will | |||
be an error message saying that the version is not understood. | be an error message saying that the version is not understood. | |||
If Ver2 is greater than Ver1 and the responder understands Ver1, it | If Ver2 is greater than Ver1 and the responder understands Ver1, it | |||
responds normally in Ver1 format. However, if the responder does not | responds normally in Ver1 format. However, if the responder does not | |||
understand Ver1, it MUST send a version-not-understood error message | understand Ver1, it MUST send a version-not-understood error message | |||
correctly formatted for Ver1. Thus all implementations that support | correctly formatted for Ver1. Thus all implementations that support | |||
some version X MUST be able to send a version-not-understood error | some version X MUST be able to send a version-not-understood error | |||
message formatted correctly formatted for all lower versions down to | message formatted correctly formatted for all lower versions down to | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
version zero. | version zero. | |||
3.2 Pull Directory Query and Response Messages | 3.2. Pull Directory Query and Response Messages | |||
The format of Pull Directory Query and Response Messages is specified | The format of Pull Directory Query and Response Messages is specified | |||
below. | below. | |||
3.2.1 Pull Directory Query Message Format | 3.2.1. Pull Directory Query Message Format | |||
A Pull Directory Query Message is sent as the Channel Protocol | A Pull Directory Query Message is sent as the Channel Protocol | |||
specific content of an RBridge Channel message [RFC7178] TRILL Data | specific content of an RBridge Channel message [RFC7178] TRILL Data | |||
packet or as a native RBridge Channel data frame (see Section 3.5). | packet or as a native RBridge Channel data frame (see Section 3.5). | |||
The Data Label of the packet is the Data Label in which the query is | The Data Label of the packet is the Data Label in which the query is | |||
being made. The priority of the channel message is a mapping of the | being made. The priority of the channel message is a mapping of the | |||
priority of the ingressed frame that caused the query. The default | priority of the ingressed frame that caused the query. The default | |||
mapping depends, per Data Label, on the strategy (see Section 4) or a | mapping depends, per Data Label, on the strategy (see Section 4) or a | |||
configured priority (DirGenQPriority, Section 3.9) for generated | configured priority (DirGenQPriority, Section 3.9) for generated | |||
queries. (Generated queries are those not the result of a mapping. | queries. (Generated queries are those not the result of a mapping. | |||
For example, a query to refresh a cache entry.) The Channel Protocol | For example, a query to refresh a cache entry.) The Channel Protocol | |||
specific data is formatted as a header and a sequence of zero or more | specific data is formatted as a header and a sequence of zero or more | |||
QUERY Records as follows: | QUERY Records as follows: | |||
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Ver | Type | Flags | Count | Err | SubErr | | | Ver | Type | Flags | Count | Err | SubErr | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sequence Number | | | Sequence Number | | |||
skipping to change at page 20, line 47 | skipping to change at page 20, line 38 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | |||
| QUERY 2 | | QUERY 2 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | |||
| ... | | ... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | |||
| QUERY K | | QUERY K | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | |||
Ver, Sequence Number: See Section 3.1. | Ver, Sequence Number: See Section 3.1. | |||
Type: 1 for Query. Queries received by an TRILL switch that is not | Type: 1 for Query. Queries received by an TRILL switch that is | |||
not | ||||
a Pull Directory for the relevant Data Label result in an error | a Pull Directory for the relevant Data Label result in an error | |||
response (see Section 3.6) unless inhibited by rate limiting. | response (see Section 3.6) unless inhibited by rate limiting. | |||
(See [RFC7178] for response if the Pull Directory RBridge | (See [RFC7178] for response if the Pull Directory RBridge | |||
Channel protocol is not implemented or enabled.) | Channel protocol is not implemented or enabled.) | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Flags, Err, and SubErr: MUST be sent as zero and ignored on | Flags, Err, and SubErr: MUST be sent as zero and ignored on | |||
receipt. | receipt. | |||
Count: Number of QUERY Records present. A Query Message Count of | Count: Number of QUERY Records present. A Query Message Count of | |||
zero is explicitly allowed, for the purpose of pinging a Pull | zero is explicitly allowed, for the purpose of pinging a Pull | |||
Directory server to see if it is responding. On receipt of such | Directory server to see if it is responding. On receipt of | |||
an empty Query Message, a Response Message that also has a | such an empty Query Message, a Response Message that also has a | |||
Count of zero is returned unless inhibited by rate limiting. | Count of zero is returned unless inhibited by rate limiting. | |||
QUERY: Each QUERY Record within a Pull Directory Query Message is | QUERY: Each QUERY Record within a Pull Directory Query Message is | |||
formatted as follows: | formatted as follows: | |||
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| SIZE |FR| RESV | QTYPE | | | SIZE |FR| RESV | QTYPE | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
If QTYPE = 1 | If QTYPE = 1 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| AFN | | | AFN | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
skipping to change at page 21, line 34 | skipping to change at page 21, line 28 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| AFN | | | AFN | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| Query address ... | | Query address ... | |||
+--+--+--+--+--+--+--+--+--+--+--... | +--+--+--+--+--+--+--+--+--+--+--... | |||
If QTYPE = 2 or 5 | If QTYPE = 2 or 5 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| Query frame ... | | Query frame ... | |||
+--+--+--+--+--+--+--+--+--+--+--... | +--+--+--+--+--+--+--+--+--+--+--... | |||
SIZE: Size of the QUERY Record in bytes as an unsigned integer | SIZE: Size of the QUERY Record in bytes as an unsigned integer | |||
not including the SIZE field and following byte. A value of | not including the SIZE field and following byte. A value of | |||
SIZE so large that the material doesn't fit in the Query | SIZE so large that the material doesn't fit in the Query | |||
Message indicates a malformed QUERY Record. The QUERY Record | Message indicates a malformed QUERY Record. The QUERY Record | |||
with the illegal SIZE value and any subsequent QUERY Records | with the illegal SIZE value and any subsequent QUERY Records | |||
MUST be ignored and the entire Query Message MAY be ignored. | MUST be ignored and the entire Query Message MAY be ignored. | |||
FR: The Flood Record flag that is ignored if QTYPE is zero. If | ||||
QTYPE is 2 or 5 and the directory information sought is not | ||||
found, the frame provided is flooded, otherwise it is not | ||||
forwarded. See Section 3.2.2.2. For QTYPEs other than 2 or | ||||
5, the FR flag has no effect. | ||||
RESV: A block of three reserved bits. MUST be sent as zero and | FR: The Flood Record flag that is ignored if QTYPE is zero. If | |||
ignored on receipt. | QTYPE is 2 or 5 and the directory information sought is not | |||
found, the frame provided is flooded, otherwise it is not | ||||
forwarded. See Section 3.2.2.2. For QTYPEs other than 2 or 5, | ||||
the FR flag has no effect. | ||||
QTYPE: There are several types of QUERY Records currently | RESV: A block of three reserved bits. MUST be sent as zero and | |||
defined in two classes as follows: (1) a QUERY Record that | ignored on receipt. | |||
provides an explicit address and asks for all addresses for | ||||
the interface specified by the query address and (2) a QUERY | ||||
Record that includes a frame. The fields of each are | ||||
specified below. Values of QTYPE are as follows: | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | QTYPE: There are several types of QUERY Records currently | |||
defined in two classes as follows: (1) a QUERY Record that | ||||
provides an explicit address and asks for all addresses for the | ||||
interface specified by the query address and (2) a QUERY Record | ||||
that includes a frame. The fields of each are specified below. | ||||
Values of QTYPE are as follows: | ||||
QTYPE Description | QTYPE Description | |||
----- ----------- | ----- ----------- | |||
0 Reserved | 0 Reserved | |||
1 Address query | 1 Address query | |||
2 Frame query | 2 Frame query | |||
3-4 Unassigned | 3-4 Unassigned | |||
5 Unknown unicast MAC query frame | 5 Unknown unicast MAC query frame | |||
6-14 Unassigned | 6-14 Unassigned | |||
15 Reserved | 15 Reserved | |||
AFN: Address Family Number of the query address. | AFN: Address Family Number of the query address. | |||
Query Address: The query is asking for any other addresses, | Query Address: The query is asking for any other addresses, | |||
and the nickname of the TRILL switch from which they are | and the nickname of the TRILL switch from which they are | |||
reachable, that correspond to the same interface as this | reachable, that correspond to the same interface as this | |||
address, within the Data Label of the query of the | address, within the Data Label of the query of the address | |||
address provided. A typically Query Address would be | provided. A typically Query Address would be something like | |||
something like the following: | the following: (1) A 48-bit MAC address with the querying TRILL | |||
(1) A 48-bit MAC address with the querying TRILL switch | switch primarily interested in either (1a) the RBridge by which | |||
primarily interested in either | that MAC address is reachable so that the querying RBridge can | |||
(1a) the RBridge by which that MAC address is | forward an unknown (before the query) destination MAC address | |||
reachable so that the querying RBridge can | native frame as a unicast TRILL Data packet rather than | |||
forward an unknown (before the query) | flooding it, or | |||
destination MAC address native frame as a | ||||
unicast TRILL Data packet rather than flooding | ||||
it, or | ||||
(1b) the IP address corresponding to the MAC address | ||||
so that RBridge can locally respond to a RARP | ||||
[RFC903] native frame. | ||||
(2) An IPv4 or IPv6 address with the querying RBridge | ||||
interested in the corresponding MAC address so it can | ||||
locally respond to an ARP [RFC826] or ND [RFC4861] | ||||
native frame [ARPND]. | ||||
But the query address could be some other address type | ||||
for which an AFN has been assigned, such as a 64-bit MAC | ||||
address [RFC7042] or a CLNS address [X.233]. | ||||
Query Frame: Where a QUERY Record is the result of an ARP, | (1b) the IP address corresponding to the MAC address so | |||
ND, RARP, SEND, or unknown unicast MAC destination | that RBridge can locally respond to a RARP [RFC903] native | |||
address, the ingress TRILL switch MAY send the frame to a | frame. | |||
Pull Directory Server if the frame is small enough that | ||||
the resulting Query Message fits into a TRILL Data packet | (2) An IPv4 or IPv6 address with the querying RBridge | |||
within the campus MTU. The full frame is included, | interested in the corresponding MAC address so it can | |||
starting with the destination and source MAC addresses | locally respond to an ARP [RFC826] or ND [RFC4861] | |||
but does not include the FCS. | native frame [ARPND]. | |||
But the query address could be some other address type | ||||
for which an AFN has been assigned, such as a 64-bit | ||||
MAC address [RFC7042] or a CLNS address [X.233]. | ||||
Query Frame: Where a QUERY Record is the result of an ARP, | ||||
ND, RARP, SEND, or unknown unicast MAC destination address, the | ||||
ingress TRILL switch MAY send the frame to a Pull Directory | ||||
Server if the frame is small enough that the resulting Query | ||||
Message fits into a TRILL Data packet within the campus MTU. | ||||
The full frame is included, starting with the destination and | ||||
source MAC addresses but does not include the FCS. | ||||
If no response is received to a Pull Directory Query Message within a | If no response is received to a Pull Directory Query Message within a | |||
configurable timeout (DirQueryTimeout, see Section 3.9), then the | configurable timeout (DirQueryTimeout, see Section 3.9), then the | |||
Query Message should be re-transmitted with the same Sequence Number | Query Message should be re-transmitted with the same Sequence Number | |||
(up to a configurable number of times (DirQueryRetries, see Section | (up to a configurable number of times (DirQueryRetries, see | |||
Section 3.9)). If there are multiple QUERY Records in a Query | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | Message, responses can be received to various subsets of these QUERY | |||
Records before the timeout. In that case, the remaining unanswered | ||||
3.9)). If there are multiple QUERY Records in a Query Message, | QUERY Records should be re-sent in a new Query Message with a new | |||
responses can be received to various subsets of these QUERY Records | sequence number. If a TRILL switch is not capable of handling | |||
before the timeout. In that case, the remaining unanswered QUERY | partial responses to queries with multiple QUERY Records, it MUST NOT | |||
Records should be re-sent in a new Query Message with a new sequence | send a Request Message with more than one QUERY Record in it. | |||
number. If a TRILL switch is not capable of handling partial | ||||
responses to queries with multiple QUERY Records, it MUST NOT send a | ||||
Request Message with more than one QUERY Record in it. | ||||
See Section 3.6 for a discussion of how Query Message errors are | See Section 3.6 for a discussion of how Query Message errors are | |||
handled. | handled. | |||
3.2.2 Pull Directory Responses | 3.2.2. Pull Directory Responses | |||
A Pull Directory Query Message results in a Pull Directory Response | A Pull Directory Query Message results in a Pull Directory Response | |||
Message as described in Section 3.2.2.1. | Message as described in Section 3.2.2.1. | |||
In addition, if the QUERY Record QTYPE was 2 or 5, the frame included | In addition, if the QUERY Record QTYPE was 2 or 5, the frame included | |||
in the Query may be modified and forwarded by the Pull Directory | in the Query may be modified and forwarded by the Pull Directory | |||
server as described in Section 3.2.2.2. | server as described in Section 3.2.2.2. | |||
3.2.2.1 Pull Directory Response Message Format | 3.2.2.1. Pull Directory Response Message Format | |||
Pull Directory Response Messages are sent as the Channel Protocol | Pull Directory Response Messages are sent as the Channel Protocol | |||
specific content of an RBridge Channel message [RFC7178] TRILL Data | specific content of an RBridge Channel message [RFC7178] TRILL Data | |||
packet or as a native RBridge Channel data frame (see Section 3.5). | packet or as a native RBridge Channel data frame (see Section 3.5). | |||
Responses are sent with the same Data Label and priority as the Query | Responses are sent with the same Data Label and priority as the Query | |||
Message to which they correspond except that the Response Message | Message to which they correspond except that the Response Message | |||
priority is limited to be not more than the configured value | priority is limited to be not more than the configured value | |||
DirRespMaxPriority (Section 3.9). | DirRespMaxPriority (Section 3.9). | |||
The RBridge Channel protocol specific data format is as follows: | The RBridge Channel protocol specific data format is as follows: | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Ver | Type | Flags | Count | Err | SubErr | | | Ver | Type | Flags | Count | Err | SubErr | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sequence Number | | | Sequence Number | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| RESPONSE 1 | | RESPONSE 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... | |||
| RESPONSE 2 | | RESPONSE 2 | |||
skipping to change at page 24, line 32 | skipping to change at page 24, line 30 | |||
Ver, Sequence Number: As specified in Section 3.1. | Ver, Sequence Number: As specified in Section 3.1. | |||
Type: 2 = Response. | Type: 2 = Response. | |||
Flags: MUST be sent as zero and ignored on receipt. | Flags: MUST be sent as zero and ignored on receipt. | |||
Count: Count is the number of RESPONSE Records present in the | Count: Count is the number of RESPONSE Records present in the | |||
Response Message. | Response Message. | |||
Err, SubErr: A two-part error code. Zero unless there was an error | Err, SubErr: A two-part error code. Zero unless there was an | |||
error | ||||
in the Query Message, for which case see Section 3.6. | in the Query Message, for which case see Section 3.6. | |||
RESPONSE: Each RESPONSE Record within a Pull Directory Response | RESPONSE: Each RESPONSE Record within a Pull Directory Response | |||
Message is formatted as follows: | Message is formatted as follows: | |||
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| SIZE |OV| RESV | Index | | | SIZE |OV| RESV | Index | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| Lifetime | | | Lifetime | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| Response Data ... | | Response Data ... | |||
+--+--+--+--+--+--+--+--+--+--+--... | +--+--+--+--+--+--+--+--+--+--+--... | |||
SIZE: The size of the RESPONSE Record is an unsigned integer | SIZE: The size of the RESPONSE Record is an unsigned integer | |||
number of bytes not including the SIZE field and following | number of bytes not including the SIZE field and following | |||
byte. A value of SIZE so large that the material doesn't fit | byte. A value of SIZE so large that the material doesn't fit | |||
in the Query Message indicates a malformed RESPONSE Record. | in the Query Message indicates a malformed RESPONSE Record. | |||
The RESPONSE Record with such an excessive SIZE value and | The RESPONSE Record with such an excessive SIZE value and any | |||
any subsequent RESPONSE Records MUST be ignored and the | subsequent RESPONSE Records MUST be ignored and the entire | |||
entire Response Message MAY be ignored. | Response Message MAY be ignored. | |||
OV: The overflow flag. Indicates, as described below, that | OV: The overflow flag. Indicates, as described below, that | |||
there was too much Response Data to include in one Response | there was too much Response Data to include in one Response | |||
Message. | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | RESV: Three reserved bits that MUST be sent as zero and ignored | |||
on receipt. | ||||
Message. | Index: The relative index of the QUERY Record in the Query | |||
Message to which this RESPONSE Record corresponds. The index | ||||
will always be one for Query Messages containing a single QUERY | ||||
Record. If the Index is larger than the Count was in the | ||||
corresponding Query, that RESPONSE Record MUST be ignored and | ||||
subsequent RESPONSE Records or the entire Response Message MAY | ||||
be ignored. | ||||
RESV: Three reserved bits that MUST be sent as zero and ignored | Lifetime: The length of time for which the response should be | |||
on receipt. | considered valid in units of 100 milliseconds except that the | |||
values zero and 2**16-1 are special. If zero, the response can | ||||
only be used for the particular query from which it resulted | ||||
and MUST NOT be cached. If 2**16-1, the response MAY be kept | ||||
indefinitely but not after the Pull Directory server goes down | ||||
or becomes unreachable. (The maximum definite time that can be | ||||
expressed is a little over 1.8 hours.) | ||||
Index: The relative index of the QUERY Record in the Query | Response Data: There are three types of RESPONSE Records. | |||
Message to which this RESPONSE Record corresponds. The index | ||||
will always be one for Query Messages containing a single | ||||
QUERY Record. If the Index is larger than the Count was in | ||||
the corresponding Query, that RESPONSE Record MUST be | ||||
ignored and subsequent RESPONSE Records or the entire | ||||
Response Message MAY be ignored. | ||||
Lifetime: The length of time for which the response should be | - If the Err field of the enclosing Response Message has a | |||
considered valid in units of 100 milliseconds except that | message level error code in it, then the RESPONSE Records | |||
the values zero and 2**16-1 are special. If zero, the | are omitted and Count will be zero. See Section 3.6 for | |||
response can only be used for the particular query from | additional information on errors. | |||
which it resulted and MUST NOT be cached. If 2**16-1, the | ||||
response MAY be kept indefinitely but not after the Pull | ||||
Directory server goes down or becomes unreachable. (The | ||||
maximum definite time that can be expressed is a little over | ||||
1.8 hours.) | ||||
Response Data: There are three types of RESPONSE Records. | - If the Err field of the enclosing Response Message has a | |||
- If the Err field of the enclosing Response Message has a | record level error code in it, then the RESPONSE Records are | |||
message level error code in it, then the RESPONSE Records | those in error as further described in Section 3.6. | |||
are omitted and Count will be zero. See Section 3.6 for | - If the Err field of the enclosing Response Message is zero, | |||
additional information on errors. | then the Response Data in each RESPONSE Record is formatted | |||
- If the Err field of the enclosing Response Message has a | as the value part of an Interface Addresses APPsub-TLV | |||
record level error code in it, then the RESPONSE Records | [RFC7961]. The maximum size of such contents is 255 bytes, | |||
are those in error as further described in Section 3.6. | in which case the RESPONSE Record SIZE field is 255. | |||
- If the Err field of the enclosing Response Message is | ||||
zero, then the Response Data in each RESPONSE Record is | ||||
formatted as the value part of an Interface Addresses | ||||
APPsub-TLV [RFC7961]. The maximum size of such contents | ||||
is 255 bytes, in which case the RESPONSE Record SIZE | ||||
field is 255. | ||||
Multiple RESPONSE Records can appear in a Response Message with the | Multiple RESPONSE Records can appear in a Response Message with the | |||
same Index if an answer to the QUERY Record consists of multiple | same Index if an answer to the QUERY Record consists of multiple | |||
Interface Address APPsub-TLV values. This would be necessary if, for | Interface Address APPsub-TLV values. This would be necessary if, for | |||
example, a MAC address within a Data Label appears to be reachable by | example, a MAC address within a Data Label appears to be reachable by | |||
multiple TRILL switches. However, all RESPONSE Records to any | multiple TRILL switches. However, all RESPONSE Records to any | |||
particular QUERY Record MUST occur in the same Response Message. If a | particular QUERY Record MUST occur in the same Response Message. If | |||
Pull Directory holds more mappings for a queried address than will | a Pull Directory holds more mappings for a queried address than will | |||
fit into one Response Message, it selects which to include by some | fit into one Response Message, it selects which to include by some | |||
method outside the scope of this document and sets the overflow flag | method outside the scope of this document and sets the overflow flag | |||
(OV) in all of the RESPONSE Records responding to that query address. | (OV) in all of the RESPONSE Records responding to that query address. | |||
See Section 3.6 for a discussion of how errors are handled. | See Section 3.6 for a discussion of how errors are handled. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 3.2.2.2. Pull Directory Forwarding | |||
3.2.2.2 Pull Directory Forwarding | ||||
Query Messages with QTYPEs 2 and 5 are interpreted and handled as | Query Messages with QTYPEs 2 and 5 are interpreted and handled as | |||
described below. In these cases, if the information implicitly sought | described below. In these cases, if the information implicitly | |||
is not in the directory and the FR flag in the query message was one, | sought is not in the directory and the FR flag in the query message | |||
the provided frame is forwarded by the Pull Directory server as a | was one, the provided frame is forwarded by the Pull Directory server | |||
multi-destination TRILL Data packet with the ingress nickname of the | as a multi-destination TRILL Data packet with the ingress nickname of | |||
Pull Directory server (or proxy if it is hosted on an end station) in | the Pull Directory server (or proxy if it is hosted on an end | |||
the TRILL header. If the FR flag is zero, the frame is not forwarded | station) in the TRILL header. If the FR flag is zero, the frame is | |||
in this case. | not forwarded in this case. | |||
If there was no error in the handling of the enclosing Query Message, | If there was no error in the handling of the enclosing Query Message, | |||
the Pull Directory server forwards the frame inside that QUERY | the Pull Directory server forwards the frame inside that QUERY | |||
Record, after modifying it in some cases, as described below: | Record, after modifying it in some cases, as described below: | |||
ARP: When QTYPE is 2 and the Ethertype in the QUERY Record indicates | ARP: When QTYPE is 2 and the Ethertype in the QUERY Record indicates | |||
that an ARP [RFC826] frame is included in the Record: The ar$op | that an ARP [RFC826] frame is included in the Record: The ar$op | |||
field MUST be ares_op$REQUEST and for the response described in | field MUST be ares_op$REQUEST and for the response described in | |||
3.2.2.1, this is treated as a query for the target protocol | 3.2.2.1, this is treated as a query for the target protocol | |||
address where the AFN of that address is given by ar$pro. (ARP | address where the AFN of that address is given by ar$pro. (ARP | |||
field and value names with embedded dollar signs are specified in | field and value names with embedded dollar signs are specified in | |||
[RFC826].) If ar$op is not ares_op$REQUEST or the ARP is malformed | [RFC826].) If ar$op is not ares_op$REQUEST or the ARP is | |||
or the query fails, an error is returned. Otherwise the ARP is | malformed or the query fails, an error is returned. Otherwise the | |||
modified into the appropriate ARP response that is then sent by | ARP is modified into the appropriate ARP response that is then | |||
the Pull Directory server as a TRILL Data packet. | sent by the Pull Directory server as a TRILL Data packet. | |||
ND/SEND: When QTYPE is 2 and the Ethertype in the QUERY Record | ND/SEND: When QTYPE is 2 and the Ethertype in the QUERY Record | |||
indicates an IPv6 Neighbor Discover (ND [RFC4861]) or Secure | indicates an IPv6 Neighbor Discover (ND [RFC4861]) or Secure | |||
Neighbor Discover (SEND [RFC3971]) frame is included in the | Neighbor Discover (SEND [RFC3971]) frame is included in the | |||
Record: Only Neighbor Solicitation ND frames (corresponding to an | Record: Only Neighbor Solicitation ND frames (corresponding to an | |||
ARP query) are allowed. An error is returned for other ND frames | ARP query) are allowed. An error is returned for other ND frames | |||
or if the target address is not found. Otherwise, if the ND is not | or if the target address is not found. Otherwise, if the ND is | |||
a SEND, an ND Neighbor Advertisement response is returned by the | not a SEND, an ND Neighbor Advertisement response is returned by | |||
Pull Directory server as a TRILL Data packet. In the case of SEND | the Pull Directory server as a TRILL Data packet. In the case of | |||
[RFC3971], an error is returned indicating that SEND was received | SEND [RFC3971], an error is returned indicating that SEND was | |||
by the Pull Directory and the Pull Directory then either forwards | received by the Pull Directory and the Pull Directory then either | |||
the SEND frame to the holder of the IPv6 address if that | forwards the SEND frame to the holder of the IPv6 address if that | |||
information is in the directory or the directory multicasts the | information is in the directory or the directory multicasts the | |||
SEND frame. | SEND frame. | |||
RARP: When QTYPE is 2 and the Ethertype in the QUERY Record indicates | RARP: When QTYPE is 2 and the Ethertype in the QUERY Record indicates | |||
that a RARP [RFC903] frame is included in the Record: If the ar$op | that a RARP [RFC903] frame is included in the Record: If the ar$op | |||
field is ares_op$REQUEST, the frame is handled as an ARP as | field is ares_op$REQUEST, the frame is handled as an ARP as | |||
described above. Otherwise the ar$op field MUST be 'reverse | described above. Otherwise the ar$op field MUST be 'reverse | |||
request' and for the response described in 3.2.2.1, this is | request' and for the response described in 3.2.2.1, this is | |||
treated as a query for the target hardware address where the AFN | treated as a query for the target hardware address where the AFN | |||
of that address is given by ar$hrd. (See [RFC826] for RARP | of that address is given by ar$hrd. (See [RFC826] for RARP | |||
fields.) If ar$op is not one of these values or the RARP is | fields.) If ar$op is not one of these values or the RARP is | |||
malformed or the query fails, an error is returned. Otherwise the | malformed or the query fails, an error is returned. Otherwise the | |||
RARP is modified into the appropriate RARP response that is then | RARP is modified into the appropriate RARP response that is then | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
unicast by the Pull Directory server as a TRILL Data packet to the | unicast by the Pull Directory server as a TRILL Data packet to the | |||
source hardware MAC address. | source hardware MAC address. | |||
MacDA: When QTYPE is 5, indicating a frame is provided in the QUERY | MacDA: When QTYPE is 5, indicating a frame is provided in the QUERY | |||
Record whose destination MAC address TRILL switch attachment is | Record whose destination MAC address TRILL switch attachment is | |||
unknown, the only requirement is that this MAC address has to be | unknown, the only requirement is that this MAC address has to be | |||
unicast. The Ethertype in the QUERY Record is ignored. If it is | unicast. The Ethertype in the QUERY Record is ignored. If it is | |||
group addressed an error is returned. For the response described | group addressed an error is returned. For the response described | |||
in 3.2.2.1, it is treated as a query for the MacDA. If the Pull | in 3.2.2.1, it is treated as a query for the MacDA. If the Pull | |||
Directory contains TRILL switch attachment information for the MAC | Directory contains TRILL switch attachment information for the MAC | |||
address in the Data Label of the Query Message, it forwards the | address in the Data Label of the Query Message, it forwards the | |||
frame to that switch in a unicast TRILL Data packet. | frame to that switch in a unicast TRILL Data packet. | |||
3.3 Cache Consistency | 3.3. Cache Consistency | |||
Unless it sends all responses with a Lifetime of zero, a Pull | Unless it sends all responses with a Lifetime of zero, a Pull | |||
Directory MUST take action, by sending Update Messages, to minimize | Directory MUST take action, by sending Update Messages, to minimize | |||
the amount of time that a TRILL switch will continue to use stale | the amount of time that a TRILL switch will continue to use stale | |||
information from that Pull Directory. The format of Update Messages | information from that Pull Directory. The format of Update Messages | |||
and the Acknowledge Messages used to respond to Update Messages are | and the Acknowledge Messages used to respond to Update Messages are | |||
given in Sections 3.3.1 and 3.3.2. | given in Sections 3.3.1 and 3.3.2. | |||
A Pull Directory server MUST maintain one of three sets of records | A Pull Directory server MUST maintain one of three sets of records | |||
concerning possible cached data at clients of that server. These are | concerning possible cached data at clients of that server. These are | |||
numbered and listed below in order of increasing specificity: | numbered and listed below in order of increasing specificity: | |||
Method 1, Least Specific. An overall record per Data Label of when | Method 1, Least Specific. An overall record per Data Label of | |||
the last positive response data sent will expire and when the | when | |||
last negative response sent will expire; the records are | the last positive response data sent will expire and when the | |||
retained until such expiration. | last negative response sent will expire; the records are | |||
Pro: Minimizes the record keeping burden on the Pull | retained until such expiration. Pro: Minimizes the record | |||
Directory server. | keeping burden on the Pull | |||
Con: Increases the volume of and overhead due to spontaneous | ||||
Update Messages and due to unnecessarily invalidating cached | ||||
information. | ||||
Method 2, Medium Specificity. For each unit of data (IA APPsub-TLV | Directory server. | |||
Address Set [RFC7961]) held by the server, record when the last | Con: Increases the volume of and overhead due to spontaneous | |||
response sent with that positive response data will expire. In | Update Messages and due to unnecessarily invalidating cached | |||
addition, record each address about which a negative response | information. | |||
was sent by the server and when the last such negative response | Method 2, Medium Specificity. For each unit of data (IA APPsub- | |||
will expire. Each such record of a positive or negative response | TLV | |||
is discarded upon expiration. | Address Set [RFC7961]) held by the server, record when the last | |||
Pro/Con: An intermediate level of detail in server record | response sent with that positive response data will expire. In | |||
keeping and an intermediate volume of and overhead due to | addition, record each address about which a negative response | |||
was sent by the server and when the last such negative response | ||||
will expire. Each such record of a positive or negative | ||||
response is discarded upon expiration. Pro/Con: An | ||||
intermediate level of detail in server record | ||||
keeping and an intermediate volume of and overhead due to | ||||
spontaneous Update Messages with some unnecessary invalidation | spontaneous Update Messages with some unnecessary invalidation | |||
of cached information. | of cached information. | |||
Method 3, Most Specific. For each unit of data held by the server | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | (IA APPsub-TLV Address Set [RFC7961]) and each address about | |||
which a negative response was sent, a list of TRILL switches | ||||
that were sent that data as a positive response or sent a | ||||
negative response for the address, and the expected time to | ||||
expiration for that data or address at each such TRILL switch, | ||||
assuming the requester cached the response. Each list entry is | ||||
retained until such expiration time. Pro: Minimizes | ||||
spontaneous Update Messages sent to update | ||||
Method 3, Most Specific. For each unit of data held by the server | pull client TRILL switch caches and minimizes unnecessary | |||
(IA APPsub-TLV Address Set [RFC7961]) and each address about | invalidation of cached information. Con: Increased record | |||
which a negative response was sent, a list of TRILL switches | keeping burden on the Pull Directory | |||
that were sent that data as a positive response or sent a | server. | |||
negative response for the address, and the expected time to | ||||
expiration for that data or address at each such TRILL switch, | ||||
assuming the requester cached the response. Each list entry is | ||||
retained until such expiration time. | ||||
Pro: Minimizes spontaneous Update Messages sent to update | ||||
pull client TRILL switch caches and minimizes unnecessary | ||||
invalidation of cached information. | ||||
Con: Increased record keeping burden on the Pull Directory | ||||
server. | ||||
RESPONSE Records sent with a zero lifetime are considered to have | RESPONSE Records sent with a zero lifetime are considered to have | |||
already expired and so do not need to be tracked. In all cases, there | already expired and so do not need to be tracked. In all cases, | |||
may still be brief periods of time when directory information has | there may still be brief periods of time when directory information | |||
changed, but information a pull client has cached has not yet been | has changed, but information a pull client has cached has not yet | |||
updated or expunged. | been updated or expunged. | |||
A Pull Directory server might have a limit as to how many TRILL | A Pull Directory server might have a limit as to how many TRILL | |||
switches for which it can maintain detailed expiry information by | switches for which it can maintain detailed expiry information by | |||
method 3 above or how many data units or addresses it can maintain | method 3 above or how many data units or addresses it can maintain | |||
expiry information for by method 2 or the like. If such limits are | expiry information for by method 2 or the like. If such limits are | |||
exceeded, it MUST transition to a lower numbered method but, in all | exceeded, it MUST transition to a lower numbered method but, in all | |||
cases, MUST support, at a minimum, method 1, and SHOULD support | cases, MUST support, at a minimum, method 1, and SHOULD support | |||
methods 2 and 3. Use of method 1 may be quite inefficient due to | methods 2 and 3. Use of method 1 may be quite inefficient due to | |||
large amounts of cached positive and negative information being | large amounts of cached positive and negative information being | |||
unnecessarily discarded. | unnecessarily discarded. | |||
When data at a Pull Directory is changed, deleted, or added and there | When data at a Pull Directory is changed, deleted, or added and there | |||
may be unexpired stale information at a requesting TRILL switch, the | may be unexpired stale information at a requesting TRILL switch, the | |||
Pull Directory MUST send an Update Message as discussed below. The | Pull Directory MUST send an Update Message as discussed below. The | |||
sending of such an Update Message MAY be delayed by a configurable | sending of such an Update Message MAY be delayed by a configurable | |||
number of milliseconds (DirUpdateDelay, see Section 3.9) to await | number of milliseconds (DirUpdateDelay, see Section 3.9) to await | |||
other possible changes that could be included in the same Update. | other possible changes that could be included in the same Update. | |||
1. If method 1, the least detailed method, is being followed, then | 1. If method 1, the least detailed method, is being followed, | |||
when any Pull Directory information in a Data Label is changed | then when any Pull Directory information in a Data Label is | |||
or deleted and there are outstanding cached positive data | changed or deleted and there are outstanding cached positive | |||
response(s), an all-addresses flush positive data Update Message | data response(s), an all-addresses flush positive data Update | |||
is flooded within that Data Label as an RBridge Channel Message. | Message is flooded within that Data Label as an RBridge | |||
Similarly if data is added and there are outstanding cached | Channel Message. Similarly if data is added and there are | |||
negative responses, an all-addresses flush negative message is | outstanding cached negative responses, an all-addresses flush | |||
similarly flooded. The Count field is zero in an Update Message | negative message is similarly flooded. The Count field is | |||
indicates "all-addresses". On receiving an all-addresses flooded | zero in an Update Message indicates "all-addresses". On | |||
flush positive Update from a Pull Directory server it has used, | receiving an all-addresses flooded flush positive Update from | |||
indicated by the F and P bits being one and the Count being | a Pull Directory server it has used, indicated by the F and P | |||
zero, a TRILL switch discards the cached data responses it has | bits being one and the Count being zero, a TRILL switch | |||
for that Data Label. Similarly, on receiving an all addresses | discards the cached data responses it has for that Data Label. | |||
Similarly, on receiving an all addresses flush negative | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | Update, indicated by the F and N bits being one and the Count | |||
being zero, it discards all cached negative replies for that | ||||
flush negative Update, indicated by the F and N bits being one | Data Label. A combined flush positive and negative can be | |||
and the Count being zero, it discards all cached negative | flooded by having all of the F (flood), P (positive), and N | |||
replies for that Data Label. A combined flush positive and | (negative) bits (see Section 3.3.1) set to one and the Count | |||
negative can be flooded by having all of the F (flood), P | field zero resulting in the discard of all positive and | |||
(positive), and N (negative) bits (see Section 3.3.1) set to one | negative cached information for the Data Label. | |||
and the Count field zero resulting in the discard of all | ||||
positive and negative cached information for the Data Label. | ||||
2. If method 2 is being followed, then a TRILL switch floods | ||||
address specific positive Update Messages when data that might | ||||
be cached by a querying TRILL switch is changed or deleted and | ||||
floods address specific negative Update Messages when such | ||||
information is added to. Such messages are sent as RBridge | ||||
Channel messages. The F bit will be one; however, the Count | ||||
field will be non-zero and either the P or N bit, but not both, | ||||
will be one. There are actually four possible message types | ||||
that can be flooded: | ||||
2.a If data that might still be cached is updated: | ||||
An unsolicited Update Message is sent with the P flag | ||||
set and the Err field zero. On receipt, the addresses in the | ||||
RESPONSE Records are compared to the addresses for which the | ||||
receiving TRILL switch is holding cached positive | ||||
information from that server. If they match, the cached | ||||
information is updated. | ||||
2.b If data that might still be cached is deleted: | 2. If method 2 is being followed, then a TRILL switch floods | |||
An unsolicited Update Message is sent with the P flag | address specific positive Update Messages when data that might | |||
set and the Err field non-zero giving the error that would | be cached by a querying TRILL switch is changed or deleted and | |||
now be encountered in attempting to pull information for the | floods address specific negative Update Messages when such | |||
relevant address from the Pull Directory server. In this | information is added to. Such messages are sent as RBridge | |||
non-zero Err field case, the RESPONSE Record(s) differ from | Channel messages. The F bit will be one; however, the Count | |||
non-zero Err Reply Message RESPONSE Records in that they do | field will be non-zero and either the P or N bit, but not | |||
include an interface address set. Any cached positive | both, will be one. There are actually four possible message | |||
information for the addresses given is deleted and the | types that can be flooded: | |||
negative response is cached as per the lifetime given. | ||||
2.c If data for an address for which a negative response was | 2.a If data that might still be cached is updated: | |||
sent is added, so that negative response that might still be | An unsolicited Update Message is sent with the P flag | |||
cached is now incorrect: | set and the Err field zero. On receipt, the addresses | |||
An unsolicited Update Message is sent with the N flag | in the | |||
set to one and the Err field zero. The addresses in the | RESPONSE Records are compared to the addresses for | |||
RESPONSE Records are compared to the addresses for which the | which the receiving TRILL switch is holding cached | |||
receiving TRILL switch is holding cached negative | positive information from that server. If they match, | |||
information from that server; if they match, the cached | the cached information is updated. | |||
negative information is deleted and the positive information | 2.b If data that might still be cached is deleted: | |||
provided is cached as per the lifetime given. | An unsolicited Update Message is sent with the P flag | |||
2.d In the rare case where it is desired to change the lifetime | set and the Err field non-zero giving the error that | |||
or error associated with negative information that might | would | |||
now be encountered in attempting to pull information | ||||
for the relevant address from the Pull Directory | ||||
server. In this non-zero Err field case, the RESPONSE | ||||
Record(s) differ from non-zero Err Reply Message | ||||
RESPONSE Records in that they do include an interface | ||||
address set. Any cached positive information for the | ||||
addresses given is deleted and the negative response is | ||||
cached as per the lifetime given. | ||||
2.c If data for an address for which a negative response was | ||||
sent is added, so that negative response that might | ||||
still be cached is now incorrect: An unsolicited | ||||
Update Message is sent with the N flag | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | set to one and the Err field zero. The addresses in | |||
the | ||||
RESPONSE Records are compared to the addresses for | ||||
which the receiving TRILL switch is holding cached | ||||
negative information from that server; if they match, | ||||
the cached negative information is deleted and the | ||||
positive information provided is cached as per the | ||||
lifetime given. | ||||
2.d In the rare case where it is desired to change the | ||||
lifetime | ||||
or error associated with negative information that | ||||
might still be cached: An unsolicited Update Message | ||||
is sent with the N flag | ||||
still be cached: | set to one and the Err field non-zero. As in case 2.b | |||
An unsolicited Update Message is sent with the N flag | above, | |||
set to one and the Err field non-zero. As in case 2.b above, | the RESPONSE Record(s) give the relevant addresses. | |||
the RESPONSE Record(s) give the relevant addresses. Any | Any cached negative information for the address is | |||
cached negative information for the address is updated. | updated. | |||
3. If method 3 is being followed, the same sort of unsolicited | 3. If method 3 is being followed, the same sort of unsolicited | |||
Update Messages are sent as with method 2 above except they are | Update Messages are sent as with method 2 above except they | |||
not normally flooded but unicast only to the specific TRILL | are not normally flooded but unicast only to the specific | |||
switches the directory server believes may be holding the cached | TRILL switches the directory server believes may be holding | |||
positive or negative information that needs deletion or | the cached positive or negative information that needs | |||
updating. However, a Pull Directory server MAY flood unsolicited | deletion or updating. However, a Pull Directory server MAY | |||
updates under method 3, for example if it determines that a | flood unsolicited updates under method 3, for example if it | |||
sufficiently large fraction of the TRILL switches in some Data | determines that a sufficiently large fraction of the TRILL | |||
Label are requesters that need to be updated so that flooding is | switches in some Data Label are requesters that need to be | |||
more efficient that unicast. | updated so that flooding is more efficient that unicast. | |||
A Pull Directory server tracking cached information with method 3 | A Pull Directory server tracking cached information with method 3 | |||
MUST NOT clear the indication that it needs to update cached | MUST NOT clear the indication that it needs to update cached | |||
information at a querying TRILL switch until it has either (a) sent | information at a querying TRILL switch until it has either (a) sent | |||
an Update Message and received a corresponding Acknowledge Message or | an Update Message and received a corresponding Acknowledge Message or | |||
(b) it has sent a configurable number of updates at a configurable | (b) it has sent a configurable number of updates at a configurable | |||
interval that default to 3 updates 100 milliseconds apart (see | interval that default to 3 updates 100 milliseconds apart (see | |||
Section 3.9). | Section 3.9). | |||
A Pull Directory server tracking cached information with methods 2 or | A Pull Directory server tracking cached information with methods 2 or | |||
1 SHOULD NOT clear the indication that it needs to update cached | 1 SHOULD NOT clear the indication that it needs to update cached | |||
information until it has sent an Update Message and received a | information until it has sent an Update Message and received a | |||
corresponding Acknowledge Message from all of its ESADI neighbors or | corresponding Acknowledge Message from all of its ESADI neighbors or | |||
it has sent a number of updates at an interval as in the paragraph | it has sent a number of updates at an interval as in the paragraph | |||
above. | above. | |||
3.3.1 Update Message Format | 3.3.1. Update Message Format | |||
An Update Message is formatted as a Response Message with the | An Update Message is formatted as a Response Message with the | |||
differences described in Section 3.3 above and the following: | differences described in Section 3.3 above and the following: | |||
o The Type field in the message header is set to 3. | o The Type field in the message header is set to 3. | |||
o The Index field in the RESPONSE Record(s) is set to zero on | o The Index field in the RESPONSE Record(s) is set to zero on | |||
transmission and ignored on receipt (but the Count field in the | transmission and ignored on receipt (but the Count field in the | |||
Update Message header MUST still correctly indicate the number of | Update Message header MUST still correctly indicate the number of | |||
RESPONSE Records present). | RESPONSE Records present). | |||
o The priority with which the message is sent, DirUpdatePriority, is | o The priority with which the message is sent, DirUpdatePriority, is | |||
configurable and defaults to 5 (see Section 3.9). | configurable and defaults to 5 (see Section 3.9). | |||
Update Messages are initiated by a Pull Directory server. The | Update Messages are initiated by a Pull Directory server. The | |||
Sequence number space used is controlled by the originating Pull | Sequence number space used is controlled by the originating Pull | |||
Directory server. This update Sequence number space is different from | Directory server. This update Sequence number space is different | |||
from the Sequence number space used in a Query and the corresponding | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
the Sequence number space used in a Query and the corresponding | ||||
Response that are controlled by the querying TRILL switch. | Response that are controlled by the querying TRILL switch. | |||
The 4-bit Flags field of the message header for an Update Message is | The 4-bit Flags field of the message header for an Update Message is | |||
as follows: | as follows: | |||
+---+---+---+---+ | +---+---+---+---+ | |||
| F | P | N | R | | | F | P | N | R | | |||
+---+---+---+---+ | +---+---+---+---+ | |||
F: The Flood bit. If zero, the Update Message is unicast. If F=1, it | F: The Flood bit. If zero, the Update Message is unicast. If F=1, it | |||
is multicast to All-Egress-RBridges. | is multicast to All-Egress-RBridges. | |||
P, N: Flags used to indicate positive or negative Update Messages. | P, N: Flags used to indicate positive or negative Update Messages. | |||
P=1 indicates positive. N=1 indicates negative. Both may be 1 for | P=1 indicates positive. N=1 indicates negative. Both may be 1 for | |||
a flooded all addresses Update. | a flooded all addresses Update. | |||
R: Reserved. MUST be sent as zero and ignored on receipt | R: Reserved. MUST be sent as zero and ignored on receipt | |||
For tracking methods 2 and 3 in Section 3.3.1, a particular Update | For tracking methods 2 and 3 in Section 3.3.1, a particular Update | |||
Message MUST have either the P flag or the N flag set but not both. | Message MUST have either the P flag or the N flag set but not both. | |||
If both are set, the Update Message MUST be ignored as this | If both are set, the Update Message MUST be ignored as this | |||
combination is only valid for method 1. | combination is only valid for method 1. | |||
3.3.2 Acknowledge Message Format | 3.3.2. Acknowledge Message Format | |||
An Acknowledge Message is sent in response to an Update Message to | An Acknowledge Message is sent in response to an Update Message to | |||
confirm receipt or indicate an error, unless response is inhibited by | confirm receipt or indicate an error, unless response is inhibited by | |||
rate limiting. It is formatted as a Response Message but the Type is | rate limiting. It is formatted as a Response Message but the Type is | |||
set to 4. | set to 4. | |||
If there are no errors in the processing of an Update Message or if | If there are no errors in the processing of an Update Message or if | |||
there is a message level overall or header error in an Update | there is a message level overall or header error in an Update | |||
Message, the message is echoed back with the Err and SubErr fields | Message, the message is echoed back with the Err and SubErr fields | |||
set appropriately, the Type changed to Acknowledge, and a null | set appropriately, the Type changed to Acknowledge, and a null | |||
records section with the Count field set to zero. | records section with the Count field set to zero. | |||
If there is a record level error in an Update Message, one or more | If there is a record level error in an Update Message, one or more | |||
Acknowledge Messages may be returned with the erroneous record(s) | Acknowledge Messages may be returned with the erroneous record(s) | |||
indicated as discussed in Section 3.6. | indicated as discussed in Section 3.6. | |||
The Acknowledge Messages is sent with the same priority as the Update | The Acknowledge Messages is sent with the same priority as the Update | |||
Message it acknowledges but not more than a configured priority | Message it acknowledges but not more than a configured priority | |||
(DirAckMaxPriority) that defaults to 5 (see Section 3.9). | (DirAckMaxPriority) that defaults to 5 (see Section 3.9). | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 3.4. Summary of Records Formats in Messages | |||
3.4 Summary of Records Formats in Messages | ||||
As specified in Section 3.2 and 3.3, the Query, Response, Update, and | As specified in Section 3.2 and 3.3, the Query, Response, Update, and | |||
Acknowledge Messages can have zero or more repeating Record | Acknowledge Messages can have zero or more repeating Record | |||
structures under different circumstances, as summarized below. The | structures under different circumstances, as summarized below. The | |||
"Err" column abbreviations in this table have the meanings listed | "Err" column abbreviations in this table have the meanings listed | |||
below. "IA APPsub-TLV value" means the value part of the IA APPsub- | below. "IA APPsub-TLV value" means the value part of the IA APPsub- | |||
TLV specified in [RFC7961]. | TLV specified in [RFC7961]. | |||
MBZ = MUST be zero | MBZ = MUST be zero | |||
Z = zero | Z = zero | |||
NZ = non-zero | NZ = non-zero | |||
NZM = non-zero message level error | NZM = non-zero message level error | |||
NZR = non-zero record level error | NZR = non-zero record level error | |||
Message Err Section Record Structure Response Data | Message Err Section Record Structure Response Data | |||
----------- --- ------- ---------------- ------------------ | ----------- --- ------- ---------------- ------------------ | |||
skipping to change at page 32, line 35 | skipping to change at page 33, line 24 | |||
Response Z 3.2.2.1 RESPONSE Record IA APPsub-TLV value | Response Z 3.2.2.1 RESPONSE Record IA APPsub-TLV value | |||
Response NZM 3.2.2.1 null - | Response NZM 3.2.2.1 null - | |||
Response NZR 3.2.2.1 RESPONSE Record Records with error | Response NZR 3.2.2.1 RESPONSE Record Records with error | |||
Update MBZ 3.3.1 RESPONSE Record IA APPsub-TLV value | Update MBZ 3.3.1 RESPONSE Record IA APPsub-TLV value | |||
Acknowledge Z 3.3.2 null - | Acknowledge Z 3.3.2 null - | |||
Acknowledge NZM 3.3.2 null - | Acknowledge NZM 3.3.2 null - | |||
Acknowledge NZR 3.3.2 RESPONSE Record Records with error | Acknowledge NZR 3.3.2 RESPONSE Record Records with error | |||
See Section 3.6 for further details on errors. | See Section 3.6 for further details on errors. | |||
3.5 End Stations and Pull Directories | 3.5. End Stations and Pull Directories | |||
A Pull Directory can be hosted on an end station as specified in | A Pull Directory can be hosted on an end station as specified in | |||
Section 3.5.1. | Section 3.5.1. | |||
A end station can use a Pull Directory as specified in Section 3.5.2. | A end station can use a Pull Directory as specified in Section 3.5.2. | |||
This capability would be useful in supporting an end station that | This capability would be useful in supporting an end station that | |||
performs directory assisted encapsulation [DirAsstEncap] or that is a | performs directory assisted encapsulation [DirAsstEncap] or that is a | |||
"smart end node" [SmartEN]. | "smart end node" [SmartEN]. | |||
The native Pull Directory messages used in these cases are as | The native Pull Directory messages used in these cases are as | |||
specified in Section 3.5.3. In these cases, the edge RBridge(s) and | specified in Section 3.5.3. In these cases, the edge RBridge(s) and | |||
end station(s) involved need to detect each other and exchange some | end station(s) involved need to detect each other and exchange some | |||
control information. This is accomplished with the TRILL ES-IS | control information. This is accomplished with the TRILL ES-IS | |||
mechanism specified in Section 5. | mechanism specified in Section 5. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 3.5.1. Pull Directory Hosted on an End Station | |||
3.5.1 Pull Directory Hosted on an End Station | ||||
Optionally, a Pull Directory actually hosted on an end station MAY be | Optionally, a Pull Directory actually hosted on an end station MAY be | |||
supported. In that case, one or more TRILL switches must act as | supported. In that case, one or more TRILL switches must act as | |||
indirect Pull Directory servers. That is, they host a Pull Directory | indirect Pull Directory servers. That is, they host a Pull Directory | |||
server, which is seen by other TRILL switches in the campus, and a | server, which is seen by other TRILL switches in the campus, and a | |||
Pull Directory client, which fetches directory information from one | Pull Directory client, which fetches directory information from one | |||
or more End Station Pull Directory servers, where at least some of | or more End Station Pull Directory servers, where at least some of | |||
the information served up by the Pull Directory server may be | the information served up by the Pull Directory server may be | |||
information fetched from an end station to which it is directly | information fetched from an end station to which it is directly | |||
connected by the co-located Pull Directory client. (Direct connection | connected by the co-located Pull Directory client. (Direct | |||
means a connection not involving any intermediate TRILL switches.) | connection means a connection not involving any intermediate TRILL | |||
switches.) | ||||
End stations hosting a Pull Directory server MUST support TRILL ES-IS | End stations hosting a Pull Directory server MUST support TRILL ES-IS | |||
(see Section 5) and advertise the Data Labels for which they are | (see Section 5) and advertise the Data Labels for which they are | |||
providing service in one or more Interested VLAN or Interested Label | providing service in one or more Interested VLAN or Interested Label | |||
sub-TLVs by setting the PUL flag (see Section 7.3). | sub-TLVs by setting the PUL flag (see Section 7.3). | |||
* * * * * * * | * * * * * * * | |||
+---------------+ * * | +---------------+ * * | |||
| End Station 1 | +---------------+ * | | End Station 1 | +---------------+ * | |||
| Pull Directory+--------------+ RB1, Pull | * | | Pull Directory+--------------+ RB1, Pull | * | |||
| Server | | Directory| * | | Server | | Directory| * | |||
skipping to change at page 33, line 43 | skipping to change at page 34, line 27 | |||
| End Station 2 | +--+---+ +---------------+ * | | End Station 2 | +--+---+ +---------------+ * | |||
| Pull Directory+---+Bridge+---+ RB2, Pull | * | | Pull Directory+---+Bridge+---+ RB2, Pull | * | |||
| Server | +--+---+ | Directory| * | | Server | +--+---+ | Directory| * | |||
+---------------+ | | Client|Server | * | +---------------+ | | Client|Server | * | |||
| +---------------+ * | | +---------------+ * | |||
| * TRILL * | | * TRILL * | |||
. * Campus * | . * Campus * | |||
. * * | . * * | |||
. * * * * * * * | . * * * * * * * | |||
Figure 2. End Station Pull Directory Example | Figure 2: End Station Pull Directory Example | |||
The figure above gives an example where RB1 and RB2 advertise | The figure above gives an example where RB1 and RB2 advertise | |||
themselves to the rest of the TRILL campus, such as RB99, as Pull | themselves to the rest of the TRILL campus, such as RB99, as Pull | |||
Directory servers and obtain at least some of the information they | Directory servers and obtain at least some of the information they | |||
are serving up by issuing Pull Directory queries to end stations 1 | are serving up by issuing Pull Directory queries to end stations 1 | |||
and/or 2. This example is specific but many variations are possible. | and/or 2. This example is specific but many variations are possible. | |||
The Bridge shown might be a complex bridged LAN, a LAN without a | The Bridge shown might be a complex bridged LAN, a LAN without a | |||
bridge (as shown for End Station 1), or connected via point-to-point | bridge (as shown for End Station 1), or connected via point-to-point | |||
links (as shown for End Station 2 that is connected through a bridge | links (as shown for End Station 2 that is connected through a bridge | |||
with point-to-point Ethernet links to RB1 and RB2). There could be | with point-to-point Ethernet links to RB1 and RB2). There could be | |||
one or more than two RBridges having such indirect Pull Directory | one or more than two RBridges having such indirect Pull Directory | |||
servers. Furthermore, there could be one or more than two end | servers. Furthermore, there could be one or more than two end | |||
stations with Pull Directory servers on them. Each TRILL switch | stations with Pull Directory servers on them. Each TRILL switch | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
server could then be differently configured as to the Data Labels for | server could then be differently configured as to the Data Labels for | |||
which it is providing indirect service selected from the union of the | which it is providing indirect service selected from the union of the | |||
Data Labels supported by the End Station hosted servers and could | Data Labels supported by the End Station hosted servers and could | |||
select from among those End Station hosted servers supporting each | select from among those End Station hosted servers supporting each | |||
Data Label the indirect server is configured to serve up. | Data Label the indirect server is configured to serve up. | |||
When an indirect Pull Directory server receives a Query Message from | When an indirect Pull Directory server receives a Query Message from | |||
another TRILL switch, it answers from information it has cached or | another TRILL switch, it answers from information it has cached or | |||
issues Pull Directory request to End Station Pull Directory servers | issues Pull Directory request to End Station Pull Directory servers | |||
with which it has TRILL ES-IS adjacency to obtain the information. | with which it has TRILL ES-IS adjacency to obtain the information. | |||
Any Response sent by an indirect Pull Directory server MUST NOT have | Any Response sent by an indirect Pull Directory server MUST NOT have | |||
a validity time longer that the valid of the data on which it is | a validity time longer that the valid of the data on which it is | |||
based. When an indirect Pull Directory server receives Update | based. When an indirect Pull Directory server receives Update | |||
Messages, it updates its cached information and MUST originate Update | Messages, it updates its cached information and MUST originate Update | |||
messages to any clients that may have mirrors of the cached | messages to any clients that may have mirrors of the cached | |||
information so updated. | information so updated. | |||
Since an indirect Pull Directory server discards information it has | Since an indirect Pull Directory server discards information it has | |||
cached from queries to an end station Pull Directory server if it | cached from queries to an end station Pull Directory server if it | |||
loses adjacency to the server (Section 3.7), if it detects that such | loses adjacency to the server (Section 3.7), if it detects that such | |||
information may be cached at RBridge clients and has no other source | information may be cached at RBridge clients and has no other source | |||
for the information, it MUST send Update Messages to those clients | for the information, it MUST send Update Messages to those clients | |||
withdrawing the information. For this reason, indirect Pull Directory | withdrawing the information. For this reason, indirect Pull | |||
servers may wish to query multiple sources, if available, and cache | Directory servers may wish to query multiple sources, if available, | |||
multiple copies of returned information from those multiple sources. | and cache multiple copies of returned information from those multiple | |||
Then if one end station source becomes inaccessible or withdraws the | sources. Then if one end station source becomes inaccessible or | |||
information but the indirect Pull Directory server has the | withdraws the information but the indirect Pull Directory server has | |||
information from another source, it need not originate Updates. | the information from another source, it need not originate Updates. | |||
3.5.2 Use of Pull Directory by End Stations | 3.5.2. Use of Pull Directory by End Stations | |||
Some special end stations, such as those discussed in [DirAsstEncap] | Some special end stations, such as those discussed in [DirAsstEncap] | |||
and [SmartEN], may need to access directory information. How edge | and [SmartEN], may need to access directory information. How edge | |||
RBridges provide this optional service is specified below. | RBridges provide this optional service is specified below. | |||
When Pull Directory support is provided by an edge RBridge to end | When Pull Directory support is provided by an edge RBridge to end | |||
stations, the messages used are as specified in Section 3.5.3 below. | stations, the messages used are as specified in Section 3.5.3 below. | |||
The edge RBridge MUST support TRILL ES-IS (Section 5) and advertises | The edge RBridge MUST support TRILL ES-IS (Section 5) and advertises | |||
the Data Labels for which it offers this service to end stations by | the Data Labels for which it offers this service to end stations by | |||
setting the Pull Directory flag (PUL) to one in its Interested VLANs | setting the Pull Directory flag (PUL) to one in its Interested VLANs | |||
or Interested Labels sub-TLV (see Section 7.3) for that Data Label | or Interested Labels sub-TLV (see Section 7.3) for that Data Label | |||
advertised through TRILL ES-IS. | advertised through TRILL ES-IS. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 3.5.3. Native Pull Directory Messages | |||
3.5.3 Native Pull Directory Messages | ||||
The Pull Directory messages used between TRILL switches and end | The Pull Directory messages used between TRILL switches and end | |||
stations are native RBridge Channel messages [RFC7178]. These | stations are native RBridge Channel messages [RFC7178]. These | |||
RBridge Channel messages use the same Channel protocol number as the | RBridge Channel messages use the same Channel protocol number as the | |||
inter-RBridge Pull Directory RBridge Channel messages. The Outer.VLAN | inter-RBridge Pull Directory RBridge Channel messages. The | |||
ID used is the TRILL ES-IS Designated VLAN (see Section 5) on the | Outer.VLAN ID used is the TRILL ES-IS Designated VLAN (see Section 5) | |||
link to the end station. Since there is no TRILL Header or inner Data | on the link to the end station. Since there is no TRILL Header or | |||
Label for native RBridge Channel messages, that information is added | inner Data Label for native RBridge Channel messages, that | |||
to the Pull Directory message header as specified below. | information is added to the Pull Directory message header as | |||
specified below. | ||||
The native RBridge Channel message Pull Directory message protocol | The native RBridge Channel message Pull Directory message protocol | |||
dependent data part is the same as for inter-RBridge Channel messages | dependent data part is the same as for inter-RBridge Channel messages | |||
except that the 8-byte header described in Section 3.1 is expanded to | except that the 8-byte header described in Section 3.1 is expanded to | |||
12 or 16 bytes as follows: | 12 or 16 bytes as follows: | |||
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 | 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Ver | Type | Flags | Count | Err | SubErr | | | Ver | Type | Flags | Count | Err | SubErr | | |||
skipping to change at page 35, line 39 | skipping to change at page 36, line 21 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Data Label ... (4 or 8 bytes) | | | Data Label ... (4 or 8 bytes) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...+-+ | |||
| Type Specific Payload - variable length | | Type Specific Payload - variable length | |||
+-+-+- ... | +-+-+- ... | |||
Fields other than Data Label are as in Section 3.1. The Data Label | Fields other than Data Label are as in Section 3.1. The Data Label | |||
that normally appears right after the Inner.MacSA of the an RBridge | that normally appears right after the Inner.MacSA of the an RBridge | |||
Channel Pull Directory message appears in the Data Label field of the | Channel Pull Directory message appears in the Data Label field of the | |||
Pull Directory message header in the native RBridge Channel message | Pull Directory message header in the native RBridge Channel message | |||
version. This Data Label appears in a native Query Message, to be | version. This Data Label appears in a native Query Message, to be | |||
reflected in a Response Message, or it might appear in a native | reflected in a Response Message, or it might appear in a native | |||
Update to be reflected in an Acknowledge Message. Since the | Update to be reflected in an Acknowledge Message. Since the | |||
appropriate VLAN or FGL [RFC7172] Ethertype is included, the length | appropriate VLAN or FGL [RFC7172] Ethertype is included, the length | |||
of the Data Label can be determined from the first two bytes. | of the Data Label can be determined from the first two bytes. | |||
3.6 Pull Directory Message Errors | 3.6. Pull Directory Message Errors | |||
A non-zero Err field in the Pull Directory Response or Acknowledge | A non-zero Err field in the Pull Directory Response or Acknowledge | |||
Message header indicates an error message. | Message header indicates an error message. | |||
If there is an error that applies to an entire Query or Update | If there is an error that applies to an entire Query or Update | |||
Message or its header, as indicated by the range of the value of the | Message or its header, as indicated by the range of the value of the | |||
Err field, then the QUERY Records probably were not even looked at by | Err field, then the QUERY Records probably were not even looked at by | |||
the Pull Directory Server and would provide no additional information | the Pull Directory Server and would provide no additional information | |||
in the Response or Acknowledge Message. Therefore, the Records | in the Response or Acknowledge Message. Therefore, the Records | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
section of the Query Response or Update Message is omitted and the | section of the Query Response or Update Message is omitted and the | |||
Count field is set to zero in the Response or Acknowledgment Message. | Count field is set to zero in the Response or Acknowledgment Message. | |||
If errors occur at the QUERY Record level for a Query Message, they | If errors occur at the QUERY Record level for a Query Message, they | |||
MUST be reported in a Response Message separate from the results of | MUST be reported in a Response Message separate from the results of | |||
any successful non-erroneous QUERY Records. If multiple QUERY Records | any successful non-erroneous QUERY Records. If multiple QUERY | |||
in a Query Message have different errors, they MUST be reported in | Records in a Query Message have different errors, they MUST be | |||
separate Response Messages. If multiple QUERY Records in a Query | reported in separate Response Messages. If multiple QUERY Records in | |||
Message have the same error, this error response MAY be reported in | a Query Message have the same error, this error response MAY be | |||
one or multiple Response Messages. In an error Response Message, the | reported in one or multiple Response Messages. In an error Response | |||
QUERY Record or Records being responded to appear, expanded by the | Message, the QUERY Record or Records being responded to appear, | |||
Lifetime for which the server thinks the error might persist (usually | expanded by the Lifetime for which the server thinks the error might | |||
2**16-1 which indicates indefinitely) and with their Index inserted, | persist (usually 2**16-1 which indicates indefinitely) and with their | |||
as the RESPONSE Record or Records. | Index inserted, as the RESPONSE Record or Records. | |||
If errors occur at the RESPONSE Record level for an Update Message, | If errors occur at the RESPONSE Record level for an Update Message, | |||
they MUST be reported in an Acknowledge Message separate from the | they MUST be reported in an Acknowledge Message separate from the | |||
acknowledgment of any non-erroneous RESPONSE Records. If multiple | acknowledgment of any non-erroneous RESPONSE Records. If multiple | |||
RESPONSE Records in an Update have different errors, they MUST be | RESPONSE Records in an Update have different errors, they MUST be | |||
reported in separate Acknowledge Messages. If multiple RESPONSE | reported in separate Acknowledge Messages. If multiple RESPONSE | |||
Records in an Update Message have the same error, this error response | Records in an Update Message have the same error, this error response | |||
MAY be reported in one or multiple Acknowledge Messages. In an error | MAY be reported in one or multiple Acknowledge Messages. In an error | |||
Acknowledge Message, the RESPONSE Record or Records being responded | Acknowledge Message, the RESPONSE Record or Records being responded | |||
to appear, expanded by the time for which the server thinks the error | to appear, expanded by the time for which the server thinks the error | |||
might persist and with their Index inserted, as a RESPONSE Record or | might persist and with their Index inserted, as a RESPONSE Record or | |||
Records. | Records. | |||
Err values 1 through 126 are available for encoding Request or Update | Err values 1 through 126 are available for encoding Request or Update | |||
Message level errors. Err values 128 through 254 are available for | Message level errors. Err values 128 through 254 are available for | |||
encoding QUERY or RESPONSE Record level errors. The SubErr field is | encoding QUERY or RESPONSE Record level errors. The SubErr field is | |||
available for providing more detail on errors. The meaning of a | available for providing more detail on errors. The meaning of a | |||
SubErr field value depends on the value of the Err field. | SubErr field value depends on the value of the Err field. | |||
3.6.1 Error Codes | 3.6.1. Error Codes | |||
The following table lists error code values for the Err field, their | The following table lists error code values for the Err field, their | |||
meaning, and whether they apply at the Message or Record level. | meaning, and whether they apply at the Message or Record level. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Err Level Meaning | Err Level Meaning | |||
------ ------- ------- | ------ ------- ------- | |||
0 - No Error | 0 - No Error | |||
1 Message Unknown or reserved Query Message field value | 1 Message Unknown or reserved Query Message field value | |||
2 Message Request Message/data too short | 2 Message Request Message/data too short | |||
3 Message Unknown or reserved Update Message field value | 3 Message Unknown or reserved Update Message field value | |||
4 Message Update Message/data too short | 4 Message Update Message/data too short | |||
5-126 Message Unassigned | 5-126 Message Unassigned | |||
127 - Reserved | 127 - Reserved | |||
skipping to change at page 37, line 29 | skipping to change at page 38, line 5 | |||
129 Record QUERY Record truncated | 129 Record QUERY Record truncated | |||
130 Record Address not found | 130 Record Address not found | |||
131 Record Unknown or reserved RESPONSE Record field value | 131 Record Unknown or reserved RESPONSE Record field value | |||
132 Record RESPONSE Record truncated | 132 Record RESPONSE Record truncated | |||
133-254 Record Unassigned | 133-254 Record Unassigned | |||
255 - Reserved | 255 - Reserved | |||
Note that some error codes are for overall message level errors while | Note that some error codes are for overall message level errors while | |||
some are for errors in the repeating records that occur in messages. | some are for errors in the repeating records that occur in messages. | |||
3.6.2 Sub-Errors Under Error Codes 1 and 3 | 3.6.2. Sub-Errors Under Error Codes 1 and 3 | |||
The following sub-errors are specified under error codes 1 and 3: | The following sub-errors are specified under error codes 1 and 3: | |||
SubErr Field with Error | SubErr Field with Error | |||
------ ---------------- | ------ ---------------- | |||
0 Unspecified | 0 Unspecified | |||
1 Version not understood (see Section 3.1.1) | 1 Version not understood (see Section 3.1.1) | |||
2 Unknown Type field value | 2 Unknown Type field value | |||
3 Specified Data Label not being served | 3 Specified Data Label not being served | |||
4-254 Unassigned | 4-254 Unassigned | |||
255 Reserved | 255 Reserved | |||
3.6.3 Sub-Errors Under Error Codes 128 and 131 | 3.6.3. Sub-Errors Under Error Codes 128 and 131 | |||
The following sub-errors are specified under error code 128 and 131: | The following sub-errors are specified under error code 128 and 131: | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
SubErr Field with Error | SubErr Field with Error | |||
------ ---------------- | ------ ---------------- | |||
0 Unspecified | 0 Unspecified | |||
1 Unknown AFN field value | 1 Unknown AFN field value | |||
2 Unknown or Reserved QTYPE field value | 2 Unknown or Reserved QTYPE field value | |||
3 Invalid or inconsistent SIZE field value | 3 Invalid or inconsistent SIZE field value | |||
4 Invalid frame for QTYPE 2 (other than SEND) | 4 Invalid frame for QTYPE 2 (other than SEND) | |||
5 SEND frame sent as QTYPE 2 | 5 SEND frame sent as QTYPE 2 | |||
6 Invalid frame for QTYPE 5 (such as multicast MacDA) | 6 Invalid frame for QTYPE 5 (such as multicast MacDA) | |||
7-254 Unassigned | 7-254 Unassigned | |||
255 Reserved | 255 Reserved | |||
3.7 Additional Pull Details | 3.7. Additional Pull Details | |||
A Pull Directory client MUST notice, by tracking link state changes, | A Pull Directory client MUST notice, by tracking link state changes, | |||
when a Pull Directory server is no longer accessible (data reachable | when a Pull Directory server is no longer accessible (data reachable | |||
[RFC7780] for the inter-RBridge case or TRILL ES-IS (Section 5) | [RFC7780] for the inter-RBridge case or TRILL ES-IS (Section 5) | |||
adjacent for end station to RBridge case), and MUST promptly discard | adjacent for end station to RBridge case), and MUST promptly discard | |||
all pull responses it is retaining from that server as it can no | all pull responses it is retaining from that server as it can no | |||
longer receive cache consistency Update Messages from the server. | longer receive cache consistency Update Messages from the server. | |||
A secondary Pull Directory server is one that obtains its data from a | A secondary Pull Directory server is one that obtains its data from a | |||
primary directory server. See discussion of primary to secondary | primary directory server. See discussion of primary to secondary | |||
directory information transfer in Section 2.6. | directory information transfer in Section 2.6. | |||
3.8 The No Data Flag | 3.8. The No Data Flag | |||
In the TRILL base protocol [RFC6325] as extended for FGL [RFC7172], | In the TRILL base protocol [RFC6325] as extended for FGL [RFC7172], | |||
the mere presence of an Interested VLANs or Interested Labels sub- | the mere presence of an Interested VLANs or Interested Labels sub- | |||
TLVs in the LSP of a TRILL switch indicates connection to end | TLVs in the LSP of a TRILL switch indicates connection to end | |||
stations in the VLAN(s) or FGL(s) listed and thus a need to receive | stations in the VLAN(s) or FGL(s) listed and thus a need to receive | |||
multi-destination traffic in those Data Labels. However, with Pull | multi-destination traffic in those Data Labels. However, with Pull | |||
Directories, advertising that you are a directory server requires | Directories, advertising that you are a directory server requires | |||
using these sub-TLVs to indicate the Data Label(s) you are serving. | using these sub-TLVs to indicate the Data Label(s) you are serving. | |||
If a directory server does not wish to received multi-destination | If a directory server does not wish to received multi-destination | |||
TRILL Data packets for the Data Labels it lists in one of the | TRILL Data packets for the Data Labels it lists in one of the | |||
Interested VLAN or Interested FGL [RFC7172] sub-TLVs, it sets the "No | Interested VLAN or Interested FGL [RFC7172] sub-TLVs, it sets the "No | |||
Data" (NOD) bit to one (see Section 7.3). This means that data on a | Data" (NOD) bit to one (see Section 7.3). This means that data on a | |||
distribution tree may be pruned so as not to reach the "No Data" | distribution tree may be pruned so as not to reach the "No Data" | |||
TRILL switch as long as there are no TRILL switches interested in the | TRILL switch as long as there are no TRILL switches interested in the | |||
Data Label that are beyond the "No Data" TRILL switch on that | Data Label that are beyond the "No Data" TRILL switch on that | |||
distribution tree. The NOD bit is backwards compatible as TRILL | distribution tree. The NOD bit is backwards compatible as TRILL | |||
switches ignorant of it will simply not prune when they could, which | switches ignorant of it will simply not prune when they could, which | |||
is safe although it may cause increased link utilization by some | is safe although it may cause increased link utilization by some | |||
sending multi-destination traffic where it is not needed. | sending multi-destination traffic where it is not needed. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Push Directories advertise themselves inside ESADI which normally | Push Directories advertise themselves inside ESADI which normally | |||
requires the ability to send and receive multi-destination TRILL Data | requires the ability to send and receive multi-destination TRILL Data | |||
packets but can be implemented with serial unicast. | packets but can be implemented with serial unicast. | |||
Examples of a TRILL switch serving as a directory that might not want | Examples of a TRILL switch serving as a directory that might not want | |||
multi-destination traffic in some Data Labels would be a TRILL switch | ||||
that does not offer end station service for any of the Data Labels | multi-destination traffic in some Data Labels would be a TRILL switch | |||
for which it is serving as a directory and is either | that does not offer end station service for any of the Data Labels for | |||
- a Pull Directory and/or | which it is serving as a directory and is either | |||
- a Push Directory for one or more Data Labels where all of the | ||||
ESADI traffic for those Data Labels will be handled by unicast | - a Pull Directory and/or | |||
ESADI [RFC7357]. | - a Push Directory for one or more Data Labels where all of the | |||
ESADI traffic for those Data Labels will be handled by unicast | ||||
ESADI [RFC7357]. | ||||
A Push Directory MUST NOT set the NOD bit for a Data Label if it | A Push Directory MUST NOT set the NOD bit for a Data Label if it | |||
needs to communicate via multi-destination ESADI or RBridge Channel | needs to communicate via multi-destination ESADI or RBridge Channel | |||
PDUs in that Data Label since such PDUs look like TRILL Data packets | PDUs in that Data Label since such PDUs look like TRILL Data packets | |||
to transit TRILL switches and are likely to be incorrectly pruned if | to transit TRILL switches and are likely to be incorrectly pruned if | |||
NOD was set. | NOD was set. | |||
3.9 Pull Directory Service Configuration | 3.9. Pull Directory Service Configuration | |||
The following per RBridge scalar configuration parameters are | The following per RBridge scalar configuration parameters are | |||
available for controlling Pull Directory service behavior. In | available for controlling Pull Directory service behavior. In | |||
addition, there is a configurable per Data Label mapping from the | addition, there is a configurable per Data Label mapping from the | |||
priority of a native frame being ingress to the priority of any Pull | priority of a native frame being ingress to the priority of any Pull | |||
Directory query it causes. The default such mapping depends on the | Directory query it causes. The default such mapping depends on the | |||
client strategy as described in Section 4. | client strategy as described in Section 4. | |||
Name Default Section Note Below | Name Default Section Note Below | |||
------------------ ------- ------- ---------- | ------------------ ------- ------- ---------- | |||
DirQueryTimeout 100 milliseconds 3.2.1 1 | DirQueryTimeout 100 milliseconds 3.2.1 1 | |||
DirQueryRetries 3 3.2.1 1 | DirQueryRetries 3 3.2.1 1 | |||
DirGenQPriority 5 3.2.1 2 | DirGenQPriority 5 3.2.1 2 | |||
DirRespMaxPriority 6 3.2.2.1 3 | DirRespMaxPriority 6 3.2.2.1 3 | |||
DirUpdateDelay 50 milliseconds 3.3 | DirUpdateDelay 50 milliseconds 3.3 | |||
DirUpdatePriority 5 3.3.1 | DirUpdatePriority 5 3.3.1 | |||
DirUpdateTimeout 100 milliseconds 3.3.3 | DirUpdateTimeout 100 milliseconds 3.3.3 | |||
DirUpdateRetries 3 3.3.3 | DirUpdateRetries 3 3.3.3 | |||
DirAckMaxPriority 5 3.3.2 4 | DirAckMaxPriority 5 3.3.2 4 | |||
Note 1: Pull Directory Query client timeout waiting for response and | Note 1: Pull Directory Query client timeout waiting for response and | |||
maximum number of retries | maximum number of retries | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Note 2: Priority for client generated requests (such as a query to | Note 2: Priority for client generated requests (such as a query to | |||
refresh cached information). | refresh cached information). | |||
Note 3: Pull Directory Response Messages SHOULD NOT be sent with | Note 3: Pull Directory Response Messages SHOULD NOT be sent with | |||
priority 7 as that priority SHOULD be reserved for messages critical | priority 7 as that priority SHOULD be reserved for messages critical | |||
to network connectivity. | to network connectivity. | |||
Note 4: Pull Directory Acknowledge Messages SHOULD NOT be sent with | Note 4: Pull Directory Acknowledge Messages SHOULD NOT be sent with | |||
priority 7 as that priority SHOULD be reserved for messages critical | priority 7 as that priority SHOULD be reserved for messages critical | |||
to network connectivity. | to network connectivity. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 4. Directory Use Strategies and Push-Pull Hybrids | |||
4. Directory Use Strategies and Push-Pull Hybrids | ||||
For some edge nodes that have a great number of Data Labels enabled, | For some edge nodes that have a great number of Data Labels enabled, | |||
managing the MAC and Data Label <-> Edge RBridge mapping for hosts | managing the MAC and Data Label <-> Edge RBridge mapping for hosts | |||
under all those Data Labels can be a challenge. This is especially | under all those Data Labels can be a challenge. This is especially | |||
true for Data Center gateway nodes, which need to communicate with | true for Data Center gateway nodes, which need to communicate with | |||
many, if not all, Data Labels. | many, if not all, Data Labels. | |||
For those edge TRILL switch nodes, a hybrid model should be | For those edge TRILL switch nodes, a hybrid model should be | |||
considered. That is, the Push Model is used for some Data Labels or | considered. That is, the Push Model is used for some Data Labels or | |||
addresses within a Data Label while the Pull Model is used for other | addresses within a Data Label while the Pull Model is used for other | |||
Data Labels or addresses within a Data Label. It is the network | Data Labels or addresses within a Data Label. It is the network | |||
operator's decision by configuration as to which Data Labels' mapping | operator's decision by configuration as to which Data Labels' mapping | |||
entries are pushed down from directories and which Data Labels' | entries are pushed down from directories and which Data Labels' | |||
mapping entries are pulled. | mapping entries are pulled. | |||
For example, assume a data center where hosts in specific Data | For example, assume a data center where hosts in specific Data | |||
Labels, say VLANs 1 through 100, communicate regularly with external | Labels, say VLANs 1 through 100, communicate regularly with external | |||
peers. Probably, the mapping entries for those 100 VLANs should be | peers. Probably, the mapping entries for those 100 VLANs should be | |||
pushed down to the data center gateway routers. For hosts in other | pushed down to the data center gateway routers. For hosts in other | |||
Data Labels that only communicate with external peers occasionally | Data Labels that only communicate with external peers occasionally | |||
for management interfacing, the mapping entries for those VLANs | for management interfacing, the mapping entries for those VLANs | |||
should be pulled down from directory when the need comes up. | should be pulled down from directory when the need comes up. | |||
Similarly, it could be that within a Data Label that some addresses, | Similarly, it could be that within a Data Label that some addresses, | |||
such as the addresses of gateways, file, DNS, or database server | such as the addresses of gateways, file, DNS, or database server | |||
hosts are commonly referenced by most other hosts but those other | hosts are commonly referenced by most other hosts but those other | |||
hosts, perhaps compute engines, are typically only referenced by a | hosts, perhaps compute engines, are typically only referenced by a | |||
few hosts in that Data Label. In that case, the address information | few hosts in that Data Label. In that case, the address information | |||
for the commonly referenced hosts could be pushed as an incomplete | for the commonly referenced hosts could be pushed as an incomplete | |||
directory while the addresses of the others are pulled when needed. | directory while the addresses of the others are pulled when needed. | |||
The mechanisms described in this document for Push and Pull Directory | The mechanisms described in this document for Push and Pull Directory | |||
services make it easy to use Push for some Data Labels or addresses | services make it easy to use Push for some Data Labels or addresses | |||
and Pull for others. In fact, different TRILL switches can even be | and Pull for others. In fact, different TRILL switches can even be | |||
configured so that some use Push Directory services and some use Pull | configured so that some use Push Directory services and some use Pull | |||
Directory services for the same Data Label if both Push and Pull | Directory services for the same Data Label if both Push and Pull | |||
Directory services are available for that Data Label. And there can | Directory services are available for that Data Label. And there can | |||
be Data Labels for which directory services are not used at all. | be Data Labels for which directory services are not used at all. | |||
There are a wide variety of strategies that a TRILL switch can adopt | There are a wide variety of strategies that a TRILL switch can adopt | |||
for making use of directory assistance. A few suggestions are given | for making use of directory assistance. A few suggestions are given | |||
below. | below. | |||
- Even if a TRILL switch will normally be operating with | - Even if a TRILL switch will normally be operating with | |||
information from a complete Push Directory server, there will be a | information from a complete Push Directory server, there will | |||
period of time when it first comes up before the information it | be a period of time when it first comes up before the | |||
holds is complete. Or, it could be that the only Push Directories | information it holds is complete. Or, it could be that the | |||
that can push information to it are incomplete or that they are | only Push Directories that can push information to it are | |||
just starting and may not yet have pushed the entire directory. | incomplete or that they are just starting and may not yet have | |||
pushed the entire directory. | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Thus, it is RECOMMENDED that all TRILL switches have a strategy | Thus, it is RECOMMENDED that all TRILL switches have a strategy | |||
for dealing with the situation where they do not have complete | for dealing with the situation where they do not have complete | |||
directory information. Examples are to send a Pull Directory query | directory information. Examples are to send a Pull Directory | |||
or to revert to [RFC6325] behavior. | query or to revert to [RFC6325] behavior. | |||
- If a TRILL switch receives a native frame X resulting in | - If a TRILL switch receives a native frame X resulting in | |||
seeking directory information, a choice needs to be made as to | seeking directory information, a choice needs to be made as to | |||
what to do if it does not already have the directory information | what to do if it does not already have the directory | |||
it needs. In particular, it could (1) immediately flood the TRILL | information it needs. In particular, it could (1) immediately | |||
Data packet resulting from ingressing X in parallel with seeking | flood the TRILL Data packet resulting from ingressing X in | |||
the directory information, (2) flood that TRILL Data packet after | parallel with seeking the directory information, (2) flood that | |||
a delay, if it fails to obtain the directory information, or (3) | TRILL Data packet after a delay, if it fails to obtain the | |||
discard X if it fails to obtain the information. The choice might | directory information, or (3) discard X if it fails to obtain | |||
depend on the priority of frame X since the higher that priority | the information. The choice might depend on the priority of | |||
typically the more urgent the frame is and the greater the | frame X since the higher that priority typically the more | |||
probability of harm in delaying it. If a Pull Directory request is | urgent the frame is and the greater the probability of harm in | |||
sent, it is RECOMMENDED that its priority be derived from the | delaying it. If a Pull Directory request is sent, it is | |||
priority of the frame X with the derived priority configurable and | RECOMMENDED that its priority be derived from the priority of | |||
having the following defaults: | the frame X with the derived priority configurable and having | |||
the following defaults: | ||||
Ingressed If Flooded If Flooded | Ingressed If Flooded If Flooded | |||
Priority Immediately After Delay | Priority Immediately After Delay | |||
-------- ----------- ----------- | -------- ----------- ----------- | |||
7 5 6 | 7 5 6 | |||
6 5 6 | 6 5 6 | |||
5 4 5 | 5 4 5 | |||
4 3 4 | 4 3 4 | |||
3 2 3 | 3 2 3 | |||
2 0 2 | 2 0 2 | |||
0 1 0 | 0 1 0 | |||
1 1 1 | 1 1 1 | |||
NOTE: The odd looking numbers towards the bottom of the columns | NOTE: The odd looking numbers towards the bottom of the columns | |||
above are because priority 1 is lower than priority zero. That is | above are because priority 1 is lower than priority zero. That is | |||
to say, the values in the first column are in priority order. They | to say, the values in the first column are in priority order. | |||
will look more logical if you think of "0" as being "1 1/2". | They will look more logical if you think of "0" as being "1 1/2". | |||
Priority 7 is normally only used for urgent messages critical to | Priority 7 is normally only used for urgent messages critical to | |||
adjacency and so SHOULD NOT be the default for directory traffic. | adjacency and so SHOULD NOT be the default for directory traffic. | |||
Unsolicited updates are sent with a priority that is configured per | Unsolicited updates are sent with a priority that is configured per | |||
Data Label that defaults to priority 5. | Data Label that defaults to priority 5. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 5. TRILL ES-IS | |||
5. TRILL ES-IS | ||||
TRILL ES-IS (End System to Intermediate System) is a variation of | TRILL ES-IS (End System to Intermediate System) is a variation of | |||
TRILL IS-IS [RFC7176] [RFC7177] [RFC7780] designed to operate on a | TRILL IS-IS [RFC7176] [RFC7177] [RFC7780] designed to operate on a | |||
TRILL link among and between one or more TRILL switches and end | TRILL link among and between one or more TRILL switches and end | |||
stations on that link. Support of TRILL ES-IS is generally optional | stations on that link. Support of TRILL ES-IS is generally optional | |||
for both the TRILL switches and the end stations on a link but may be | for both the TRILL switches and the end stations on a link but may be | |||
required to support certain features. As of the date of this | required to support certain features. As of the date of this | |||
document, the only features requiring TRILL ES-IS are those listed in | document, the only features requiring TRILL ES-IS are those listed in | |||
this Section 5. | this Section 5. | |||
TRILL ES-IS is useful in supporting Pull Directory hosting on or use | TRILL ES-IS is useful in supporting Pull Directory hosting on or use | |||
from end stations (see Section 3.5) and supporting specialized end | from end stations (see Section 3.5) and supporting specialized end | |||
stations [DirAsstEncap] [SmartEN] and may have additional future | stations [DirAsstEncap] [SmartEN] and may have additional future | |||
uses. The advantages of TRILL ES-IS over simply making an "end | uses. The advantages of TRILL ES-IS over simply making an "end | |||
station" be a TRILL Switch include relieving the end station of | station" be a TRILL Switch include relieving the end station of | |||
having to maintain a copy of the core link state database (LSPs) and | having to maintain a copy of the core link state database (LSPs) and | |||
of having to perform routing calculations or having the ability to | of having to perform routing calculations or having the ability to | |||
forward traffic. | forward traffic. | |||
Except as provided below in this Section 5, TRILL ES-IS PDUs and TLVs | Except as provided below in this Section 5, TRILL ES-IS PDUs and TLVs | |||
are the same TRILL IS-IS PDUs and TLVs. | are the same TRILL IS-IS PDUs and TLVs. | |||
5.1 PDUs and System IDs | 5.1. PDUs and System IDs | |||
All TRILL ES-IS PDUs (except some MTU-probe and MTU-ack PDUs which | All TRILL ES-IS PDUs (except some MTU-probe and MTU-ack PDUs which | |||
may be unicast) are multicast using the TRILL-ES-IS multicast MAC | may be unicast) are multicast using the TRILL-ES-IS multicast MAC | |||
address (see Section 7.6). This use of a different multicast address | address (see Section 7.6). This use of a different multicast address | |||
assures that TRILL ES-IS and TRILL IS-IS PDUs will not be confused | assures that TRILL ES-IS and TRILL IS-IS PDUs will not be confused | |||
for one another. | for one another. | |||
Because end stations do not have IS-IS System IDs, TRILL ES-IS uses | Because end stations do not have IS-IS System IDs, TRILL ES-IS uses | |||
port MAC addresses in their place. This is convenient since MAC | port MAC addresses in their place. This is convenient since MAC | |||
addresses are 48-bit and almost all IS-IS implementations use 48-bit | addresses are 48-bit and almost all IS-IS implementations use 48-bit | |||
System IDs. Logically TRILL IS-IS operates between the TRILL switches | System IDs. Logically TRILL IS-IS operates between the TRILL | |||
in a TRILL campus as identified by System ID while TRILL ES-IS | switches in a TRILL campus as identified by System ID while TRILL ES- | |||
operates between Ethernet ports on an Ethernet link (which may be a | IS operates between Ethernet ports on an Ethernet link (which may be | |||
bridged LAN) as identified by MAC address [RFC6325]. | a bridged LAN) as identified by MAC address [RFC6325]. | |||
As System IDs of TRILL Switches in a campus are required to be | As System IDs of TRILL Switches in a campus are required to be | |||
unique, so the MAC addresses of TRILL ES-IS ports on a link MUST be | unique, so the MAC addresses of TRILL ES-IS ports on a link MUST be | |||
unique. | unique. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 5.2. Adjacency, DRB Election, Hellos, TLVs, Etc. | |||
5.2 Adjacency, DRB Election, Hellos, TLVs, Etc. | ||||
TRILL ES-IS Adjacency formation and DRB election operate between the | TRILL ES-IS Adjacency formation and DRB election operate between the | |||
ports on the link as specified in [RFC7177] for a broadcast link. | ports on the link as specified in [RFC7177] for a broadcast link. | |||
The DRB specifies an ES-IS Designated VLAN for the link. This | The DRB specifies an ES-IS Designated VLAN for the link. This | |||
adjacency determination, DRB election, and Designated VLAM are | adjacency determination, DRB election, and Designated VLAM are | |||
distinct from TRILL IS-IS adjacency, DRB election, and Designated | distinct from TRILL IS-IS adjacency, DRB election, and Designated | |||
VLAN. | VLAN. | |||
Although the "Report State" [RFC7177] exists for TRILL ES-IS | Although the "Report State" [RFC7177] exists for TRILL ES-IS | |||
adjacencies, such adjacencies are only reported in TRILL ES-IS LSPs, | adjacencies, such adjacencies are only reported in TRILL ES-IS LSPs, | |||
not in any TRILL IS-IS LSPs. | not in any TRILL IS-IS LSPs. | |||
End stations supporting TRILL ES-IS MUST assign a unique Port ID to | End stations supporting TRILL ES-IS MUST assign a unique Port ID to | |||
each of their TRILL ES-IS ports which appears in the TRILL ES-IS | each of their TRILL ES-IS ports which appears in the TRILL ES-IS | |||
Hellos they send. | Hellos they send. | |||
TRILL ES-IS has nothing to do with Appointed Forwarders and the | TRILL ES-IS has nothing to do with Appointed Forwarders and the | |||
Appointed Forwarders sub-TLV and VLANs Appointed sub-TLV [RFC7176] | Appointed Forwarders sub-TLV and VLANs Appointed sub-TLV [RFC7176] | |||
are not used and SHOULD NOT be sent in TRILL ES-IS; if such a sub-TLV | are not used and SHOULD NOT be sent in TRILL ES-IS; if such a sub-TLV | |||
is received in TRILL ES-IS it is ignored. (The Appointed Forwarders | is received in TRILL ES-IS it is ignored. (The Appointed Forwarders | |||
on a link are determined as specified in [rfc6439bis] using TRILL IS- | on a link are determined as specified in [rfc6439bis] using TRILL IS- | |||
IS.) | IS.) | |||
Although some of the ports sending TRILL ES-IS PDUs are on end | Although some of the ports sending TRILL ES-IS PDUs are on end | |||
stations and thus not on routers (TRILL switches), they nevertheless | stations and thus not on routers (TRILL switches), they nevertheless | |||
may make use of the Router Capability (#242) and MT-Capability (#222) | may make use of the Router Capability (#242) and MT-Capability (#222) | |||
IS-IS TLVs to indicate capabilities as specified in [RFC7176]. | IS-IS TLVs to indicate capabilities as specified in [RFC7176]. | |||
TRILL ES-IS Hellos are like TRILL IS-IS Hellos but note the | TRILL ES-IS Hellos are like TRILL IS-IS Hellos but note the | |||
following: In the Special VLANs and Flags Sub-TLV, any TRILL switches | following: In the Special VLANs and Flags Sub-TLV, any TRILL switches | |||
advertise a nickname they own but for end stations that field MUST be | advertise a nickname they own but for end stations that field MUST be | |||
sent as zero and ignored on receipt. In addition, the AF and TR flag | sent as zero and ignored on receipt. In addition, the AF and TR flag | |||
bits MUST be sent as zero and the AC flag bit MUST be sent as one and | bits MUST be sent as zero and the AC flag bit MUST be sent as one and | |||
all three are ignored on receipt. | all three are ignored on receipt. | |||
5.3 Link State | 5.3. Link State | |||
The only link state transmission and synchronization that occurs in | The only link state transmission and synchronization that occurs in | |||
TRILL ES-IS is for E-L1CS PDUs (Extended Level 1 Circuit Scoped | TRILL ES-IS is for E-L1CS PDUs (Extended Level 1 Circuit Scoped | |||
[RFC7356]). In particular, the end station Ethernet ports supporting | [RFC7356]). In particular, the end station Ethernet ports supporting | |||
TRILL ES-IS do not support the core TRILL IS-IS LSPs and do not | TRILL ES-IS do not support the core TRILL IS-IS LSPs and do not | |||
support E-L1FS LSPs (or the CSNPs or PSNPs corresponding to either of | support E-L1FS LSPs (or the CSNPs or PSNPs corresponding to either of | |||
them). TLVs and sub-TLVs that would otherwise be sent in TRILL IS-IS | them). TLVs and sub-TLVs that would otherwise be sent in TRILL IS-IS | |||
LSPs or E-L1FS SPs are instead sent in E-L1CS LSPs. | LSPs or E-L1FS SPs are instead sent in E-L1CS LSPs. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 6. Security Considerations | |||
6. Security Considerations | ||||
For general TRILL security considerations, see [RFC6325]. | For general TRILL security considerations, see [RFC6325]. | |||
6.1 Directory Information Security | 6.1. Directory Information Security | |||
Incorrect directory information can result in a variety of security | Incorrect directory information can result in a variety of security | |||
threats including those below. Directory servers therefore need to | threats including those below. Directory servers therefore need to | |||
take care to implement and enforce access control policies that are | take care to implement and enforce access control policies that are | |||
not overly permissive. | not overly permissive. | |||
Incorrect directory mappings can result in data being delivered to | Incorrect directory mappings can result in data being delivered to | |||
the wrong end stations, or set of end stations in the case of | the wrong end stations, or set of end stations in the case of | |||
multi-destination packets, violating security policy. | multi-destination packets, violating security policy. | |||
Missing, incorrect, or inaccessible directory data can result in | Missing, incorrect, or inaccessible directory data can result in | |||
denial of service due to sending data packets to black holes or | denial of service due to sending data packets to black holes or | |||
discarding data on ingress due to incorrect information that their | discarding data on ingress due to incorrect information that their | |||
destinations are not reachable or that their source addresses are | destinations are not reachable or that their source addresses are | |||
forged. | forged. | |||
For these reasons directory information needs to be protected from | For these reasons directory information needs to be protected from | |||
unauthorized modification whatever server or end station it resides | unauthorized modification whatever server or end station it resides | |||
on. Parties authorized to modify directory data can violate | on. Parties authorized to modify directory data can violate | |||
availability and integrity policies. | availability and integrity policies. | |||
6.2 Directory Confidentiality and Privacy | 6.2. Directory Confidentiality and Privacy | |||
In implementations of the base TRILL protocol [RFC6325] [RFC7780], | In implementations of the base TRILL protocol [RFC6325] [RFC7780], | |||
RBridges deal almost exclusively with MAC addresses. Use of | RBridges deal almost exclusively with MAC addresses. Use of | |||
directories to map to/from IP addresses means that RBridges deal more | directories to map to/from IP addresses means that RBridges deal more | |||
actively with IP addresses as well. But RBridges in any case would be | actively with IP addresses as well. But RBridges in any case would | |||
exposed to plain text ARP/ND/SEND/IP traffic and so can see all this | be exposed to plain text ARP/ND/SEND/IP traffic and so can see all | |||
addressing meta-data. So this more explicit dealing with IP addresses | this addressing meta-data. So this more explicit dealing with IP | |||
has little effect on the privacy of end station traffic. | addresses has little effect on the privacy of end station traffic. | |||
Parties authorized to read directory data can violate privacy polices | Parties authorized to read directory data can violate privacy polices | |||
for such data. | for such data. | |||
6.3 Directory Message Security Considerations | 6.3. Directory Message Security Considerations | |||
Push Directory data is distributed through ESADI-LSPs [RFC7357]. | Push Directory data is distributed through ESADI-LSPs [RFC7357]. | |||
ESADI is built on IS-IS and such data can thus be authenticated with | ESADI is built on IS-IS and such data can thus be authenticated with | |||
the widely implemented and deployed IS-IS PDU security. This | the widely implemented and deployed IS-IS PDU security. This | |||
mechanism provides authentication and integrity protection. See | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
mechanism provides authentication and integrity protection. See | ||||
[RFC5304] [RFC5310] and the Security Considerations section of | [RFC5304] [RFC5310] and the Security Considerations section of | |||
[RFC7357]. | [RFC7357]. | |||
Pull Directory queries and responses are transmitted as RBridge-to- | Pull Directory queries and responses are transmitted as RBridge-to- | |||
RBridge or native RBridge Channel messages [RFC7178]. Such messages | RBridge or native RBridge Channel messages [RFC7178]. Such messages | |||
can be secured by the mechanisms specified in [RFC7978]. These | can be secured by the mechanisms specified in [RFC7978]. These | |||
mechanisms can provide authentication and confidentiality | mechanisms can provide authentication and confidentiality | |||
protections. At the time of this RFC, these security mechanisms are | protections. At the time of this RFC, these security mechanisms are | |||
believed to be less widely implemented than IS-IS security. | believed to be less widely implemented than IS-IS security. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 7. IANA Considerations | |||
7. IANA Considerations | ||||
This section gives IANA assignment and registry considerations. | This section gives IANA assignment and registry considerations. | |||
7.1 ESADI-Parameter Data Extensions | 7.1. ESADI-Parameter Data Extensions | |||
Action 1: IANA is requested to create a sub-registry in the TRILL | Action 1: IANA is requested to create a sub-registry in the TRILL | |||
Parameters Registry as follows: | Parameters Registry as follows: | |||
Sub-Registry: ESADI-Parameter APPsub-TLV Flag Bits | Sub-Registry: ESADI-Parameter APPsub-TLV Flag Bits | |||
Registration Procedures: Standards Action | Registration Procedures: Standards Action | |||
References: [RFC7357] [This document] | References: [RFC7357] [This document] | |||
Bit Mnemonic Description Reference | Bit Mnemonic Description Reference | |||
--- -------- ----------- --------- | --- -------- ----------- --------- | |||
0 UN Supports Unicast ESADI ESADI [RFC7357] | 0 UN Supports Unicast ESADI ESADI [RFC7357] | |||
1-2 PDSS Push Directory Server Status [this document] | 1-2 PDSS Push Directory Server Status [this document] | |||
3-7 - Available for assignment | 3-7 - Available for assignment | |||
Action 2: In addition, the ESADI-Parameter APPsub-TLV is optionally | Action 2: In addition, the ESADI-Parameter APPsub-TLV is optionally | |||
extended, as provided in its original specification in ESADI | extended, as provided in its original specification in ESADI | |||
[RFC7357], by one byte as show below. Therefore [this document] | [RFC7357], by one byte as show below. Therefore [this document] | |||
should be added as a second reference to the ESADI-Parameter APPsub- | should be added as a second reference to the ESADI-Parameter APPsub- | |||
TLV in the "TRILL APPsub-TLV Types under IS-IS TLV 251 Application | TLV in the "TRILL APPsub-TLV Types under IS-IS TLV 251 Application | |||
Identifier 1" Registry. | Identifier 1" Registry. | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Type | (1 byte) | | Type | (1 byte) | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Length | (1 byte) | | Length | (1 byte) | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|R| Priority | (1 byte) | |R| Priority | (1 byte) | |||
skipping to change at page 47, line 53 | skipping to change at page 46, line 42 | |||
+---------------+ | +---------------+ | |||
|PushDirPriority| (optional, 1 byte) | |PushDirPriority| (optional, 1 byte) | |||
+---------------+ | +---------------+ | |||
| Reserved for (variable) | | Reserved for (variable) | |||
| expansion | | expansion | |||
+-+-+-+-... | +-+-+-+-... | |||
The meanings of all the fields are as specified in ESDADI [RFC7357] | The meanings of all the fields are as specified in ESDADI [RFC7357] | |||
except that the added PushDirPriority is the priority of the | except that the added PushDirPriority is the priority of the | |||
advertising ESADI instance to be a Push Directory as described in | advertising ESADI instance to be a Push Directory as described in | |||
Section 2.3. If the PushDirPriority field is not present (Length = 3) | Section 2.3. If the PushDirPriority field is not present (Length = | |||
it is treated as if it were 0x3F. 0x3F is also the value used and | 3) it is treated as if it were 0x3F. 0x3F is also the value used and | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
placed here by an TRILL switch whose priority to be a Push Directory | placed here by an TRILL switch whose priority to be a Push Directory | |||
has not been configured. | has not been configured. | |||
7.2 RBridge Channel Protocol Numbers | 7.2. RBridge Channel Protocol Numbers | |||
Action 3: IANA is requested to assign a new RBridge Channel protocol | Action 3: IANA is requested to assign a new RBridge Channel protocol | |||
number from the range assignable by Standards Action and update the | number from the range assignable by Standards Action and update the | |||
subregistry of such protocol number in the TRILL Parameters Registry. | subregistry of such protocol number in the TRILL Parameters Registry. | |||
Description is "Pull Directory Services". Reference is [this | ||||
Description is "Pull Directory Services". Reference is [this | ||||
document]. | document]. | |||
7.3 The Pull Directory (PUL) and No Data (NOD) Bits | 7.3. The Pull Directory (PUL) and No Data (NOD) Bits | |||
Actions 4 and 5: IANA is requested to assign a currently reserved | Actions 4 and 5: IANA is requested to assign a currently reserved | |||
bits in the Interested VLANs field of the Interested VLANs sub-TLV | bits in the Interested VLANs field of the Interested VLANs sub-TLV | |||
and the Interested Labels field of the Interested Labels sub-TLV | and the Interested Labels field of the Interested Labels sub-TLV | |||
[RFC7176] to indicate Pull Directory server (PUL). This bit is to be | [RFC7176] to indicate Pull Directory server (PUL). This bit is to be | |||
added, with this document as reference, to the "Interested VLANs Flag | added, with this document as reference, to the "Interested VLANs Flag | |||
Bits" and "Interested Labels Flag Bits" subregistries created by | Bits" and "Interested Labels Flag Bits" subregistries created by | |||
[RFC7357] as shown below after Action 7. | [RFC7357] as shown below after Action 7. | |||
Actions 6 and 7: IANA is requested to assign a currently reserved bit | Actions 6 and 7: IANA is requested to assign a currently reserved bit | |||
in the Interested VLANs field of the Interested VLANs sub-TLV and the | in the Interested VLANs field of the Interested VLANs sub-TLV and the | |||
Interested Labels field of the Interested Labels sub-TLV [RFC7176] to | Interested Labels field of the Interested Labels sub-TLV [RFC7176] to | |||
indicate No Data (NOD, see Section 3.8). This bit is to be added, | indicate No Data (NOD, see Section 3.8). This bit is to be added, | |||
with this document as reference, to the "Interested VLANs Flag Bits" | with this document as reference, to the "Interested VLANs Flag Bits" | |||
and "Interested Labels Flag Bits" subregistries created by [RFC7357] | and "Interested Labels Flag Bits" subregistries created by [RFC7357] | |||
as shown below. | as shown below. | |||
Bits and format suggested for above actions 4 through 7 are shown | Bits and format suggested for above actions 4 through 7 are shown | |||
below: | below: | |||
Registry: Interested BLANs Flag Bits | Registry: Interested BLANs Flag Bits | |||
Bit Mnemonic Description Reference | Bit Mnemonic Description Reference | |||
--- -------- -------------- --------------- | --- -------- -------------- --------------- | |||
18 PUL Pull Directory [this document] | 18 PUL Pull Directory [this document] | |||
19 NOD No Data [this document] | 19 NOD No Data [this document] | |||
Registry: Interested Labels Flag Bits | Registry: Interested Labels Flag Bits | |||
Bit Mnemonic Description Reference | Bit Mnemonic Description Reference | |||
--- -------- -------------- --------------- | --- -------- -------------- --------------- | |||
6 PUL Pull Directory [this document] | 6 PUL Pull Directory [this document] | |||
7 NOD No Data [this document] | 7 NOD No Data [this document] | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | 7.4. TRILL Pull Directory QTYPEs | |||
7.4 TRILL Pull Directory QTYPEs | ||||
Action 8: IANA is requested to create a new Registry on the | Action 8: IANA is requested to create a new Registry on the | |||
"Transparent Interconnection of Lots of Links (TRILL) Parameters" web | "Transparent Interconnection of Lots of Links (TRILL) Parameters" web | |||
page as follows: | page as follows: | |||
Name: TRILL Pull Directory Query Types (QTYPEs) | Name: TRILL Pull Directory Query Types (QTYPEs) | |||
Registration Procedure: IETF Review | Registration Procedure: IETF Review | |||
Reference: [this document] | Reference: [this document] | |||
Initial contents as in Section 3.2.1. | Initial contents as in Section 3.2.1. | |||
7.5 Pull Directory Error Code Registries | 7.5. Pull Directory Error Code Registries | |||
Actions 9, 10, and 11: IANA is requested to create a new Registry and | Actions 9, 10, and 11: IANA is requested to create a new Registry and | |||
two new indented SubRegistries under that Registry on the | two new indented SubRegistries under that Registry on the | |||
"Transparent Interconnection of Lots of Links (TRILL) Parameters" web | "Transparent Interconnection of Lots of Links (TRILL) Parameters" web | |||
page as follows: | page as follows: | |||
Registry | Registry | |||
Name: TRILL Pull Directory Errors | Name: TRILL Pull Directory Errors Registration Procedure: IETF | |||
Registration Procedure: IETF Review | Review Reference: [this document] | |||
Reference: [this document] | ||||
Initial contents as in Section 3.6.1. | Initial contents as in Section 3.6.1. | |||
Sub-Registry | Sub-Registry | |||
Name: Sub-codes for TRILL Pull Directory Errors 1 and 3 | Name: Sub-codes for TRILL Pull Directory Errors 1 and 3 | |||
Registration Procedure: Expert Review | Registration Procedure: Expert Review Reference: [this | |||
Reference: [this document] | document] | |||
Initial contents as in Section 3.6.2. | Initial contents as in Section 3.6.2. | |||
Sub-Registry | Sub-Registry | |||
Name: Sub-codes for TRILL Pull Directory Errors 128 and 131 | Name: Sub-codes for TRILL Pull Directory Errors 128 and 131 | |||
Registration Procedure: Expert Review | Registration Procedure: Expert Review Reference: [this | |||
Reference: [this document] | document] | |||
Initial contents as in Section 3.6.3. | Initial contents as in Section 3.6.3. | |||
7.6 TRILL-ES-IS MAC Address | 7.6. TRILL-ES-IS MAC Address | |||
Action 12: IANA is requested to assign a TRILL multicast MAC address | Action 12: IANA is requested to assign a TRILL multicast MAC address | |||
from the "TRILL Multicast Addresses" registry on the TRILL Parameters | from the "TRILL Multicast Addresses" registry on the TRILL Parameters | |||
IANA web page [value 01-80-C2-00-00-47 recommended]. Description is | IANA web page [value 01-80-C2-00-00-47 recommended]. Description is | |||
"TRILL-ES-IS". Reference is [this document]. | "TRILL-ES-IS". Reference is [this document]. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Normative References | ||||
[RFC826] - Plummer, D., "An Ethernet Address Resolution Protocol", | ||||
RFC 826, November 1982. | ||||
[RFC903] - Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A | ||||
Reverse Address Resolution Protocol", STD 38, RFC 903, June | ||||
1984 | ||||
[RFC2119] - Bradner, S., "Key words for use in RFCs to Indicate | ||||
Requirement Levels", BCP 14, RFC 2119, March 1997 | ||||
[RFC3971] - Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | 8. References | |||
"SEcure Neighbor Discovery (SEND)", RFC 3971, March 2005. | ||||
[RFC4861] - Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | 8.1. Normative References | |||
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | ||||
September 2007. | ||||
[RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic | [RFC0826] Plummer, D., "Ethernet Address Resolution Protocol: Or | |||
Authentication", RFC 5304, October 2008. | Converting Network Protocol Addresses to 48.bit Ethernet | |||
Address for Transmission on Ethernet Hardware", STD 37, | ||||
RFC 826, DOI 10.17487/RFC0826, November 1982, | ||||
<http://www.rfc-editor.org/info/rfc826>. | ||||
[RFC5310] - Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R., | [RFC0903] Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A | |||
and M. Fanto, "IS-IS Generic Cryptographic Authentication", RFC | Reverse Address Resolution Protocol", STD 38, RFC 903, | |||
5310, February 2009. | DOI 10.17487/RFC0903, June 1984, | |||
<http://www.rfc-editor.org/info/rfc903>. | ||||
[RFC6165] - Banerjee, A. and D. Ward, "Extensions to IS-IS for | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Layer-2 Systems", RFC 6165, April 2011. | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | ||||
<http://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC6325] - Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and A. | [RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | |||
Ghanwani, "Routing Bridges (RBridges): Base Protocol | "SEcure Neighbor Discovery (SEND)", RFC 3971, | |||
Specification", RFC 6325, July 2011. | DOI 10.17487/RFC3971, March 2005, | |||
<http://www.rfc-editor.org/info/rfc3971>. | ||||
[RFC7042] - Eastlake 3rd, D. and J. Abley, "IANA Considerations and | [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | |||
IETF Protocol and Documentation Usage for IEEE 802 Parameters", | "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | |||
BCP 141, RFC 7042, October 2013. | DOI 10.17487/RFC4861, September 2007, | |||
<http://www.rfc-editor.org/info/rfc4861>. | ||||
[RFC7172] - Eastlake 3rd, D., Zhang, M., Agarwal, P., Perlman, R., | [RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic | |||
and D. Dutt, "Transparent Interconnection of Lots of Links | Authentication", RFC 5304, DOI 10.17487/RFC5304, October | |||
(TRILL): Fine-Grained Labeling", RFC 7172, May 2014, | 2008, <http://www.rfc-editor.org/info/rfc5304>. | |||
<http://www.rfc-editor.org/info/rfc7172>. | ||||
[RFC7176] - Eastlake 3rd, D., Senevirathne, T., Ghanwani, A., Dutt, | [RFC5310] Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R., | |||
D., and A. Banerjee, "Transparent Interconnection of Lots of | and M. Fanto, "IS-IS Generic Cryptographic | |||
Links (TRILL) Use of IS-IS", RFC 7176, May 2014, | Authentication", RFC 5310, DOI 10.17487/RFC5310, February | |||
<http://www.rfc-editor.org/info/rfc7176>. | 2009, <http://www.rfc-editor.org/info/rfc5310>. | |||
[RFC7177] - Eastlake 3rd, D., Perlman, R., Ghanwani, A., Yang, H., | [RFC6165] Banerjee, A. and D. Ward, "Extensions to IS-IS for Layer-2 | |||
and V. Manral, "Transparent Interconnection of Lots of Links | Systems", RFC 6165, DOI 10.17487/RFC6165, April 2011, | |||
(TRILL): Adjacency", RFC 7177, DOI 10.17487/RFC7177, May 2014, | <http://www.rfc-editor.org/info/rfc6165>. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | [RFC6325] Perlman, R., Eastlake 3rd, D., Dutt, D., Gai, S., and A. | |||
Ghanwani, "Routing Bridges (RBridges): Base Protocol | ||||
Specification", RFC 6325, DOI 10.17487/RFC6325, July 2011, | ||||
<http://www.rfc-editor.org/info/rfc6325>. | ||||
<http://www.rfc-editor.org/info/rfc7177>. | [RFC7042] Eastlake 3rd, D. and J. Abley, "IANA Considerations and | |||
IETF Protocol and Documentation Usage for IEEE 802 | ||||
Parameters", BCP 141, RFC 7042, DOI 10.17487/RFC7042, | ||||
October 2013, <http://www.rfc-editor.org/info/rfc7042>. | ||||
[RFC7178] - Eastlake 3rd, D., Manral, V., Li, Y., Aldrin, S., and D. | [RFC7172] Eastlake 3rd, D., Zhang, M., Agarwal, P., Perlman, R., and | |||
Ward, "Transparent Interconnection of Lots of Links (TRILL): | D. Dutt, "Transparent Interconnection of Lots of Links | |||
RBridge Channel Support", RFC 7178, May 2014, <http://www.rfc- | (TRILL): Fine-Grained Labeling", RFC 7172, | |||
editor.org/info/rfc7178>. | DOI 10.17487/RFC7172, May 2014, | |||
<http://www.rfc-editor.org/info/rfc7172>. | ||||
[RFC7356] - Ginsberg, L., Previdi, S., and Y. Yang, "IS-IS Flooding | [RFC7176] Eastlake 3rd, D., Senevirathne, T., Ghanwani, A., Dutt, | |||
Scope Link State PDUs (LSPs)", RFC 7356, DOI 10.17487/RFC7356, | D., and A. Banerjee, "Transparent Interconnection of Lots | |||
September 2014, <http://www.rfc-editor.org/info/rfc7356>. | of Links (TRILL) Use of IS-IS", RFC 7176, | |||
DOI 10.17487/RFC7176, May 2014, | ||||
<http://www.rfc-editor.org/info/rfc7176>. | ||||
[RFC7357] - Zhai, H., Hu, F., Perlman, R., Eastlake 3rd, D., and O. | [RFC7177] Eastlake 3rd, D., Perlman, R., Ghanwani, A., Yang, H., and | |||
Stokes, "Transparent Interconnection of Lots of Links (TRILL): | V. Manral, "Transparent Interconnection of Lots of Links | |||
End Station Address Distribution Information (ESADI) Protocol", | (TRILL): Adjacency", RFC 7177, DOI 10.17487/RFC7177, May | |||
RFC 7357, September 2014, <http://www.rfc- | 2014, <http://www.rfc-editor.org/info/rfc7177>. | |||
editor.org/info/rfc7357>. | ||||
[RFC7780] - Eastlake 3rd, D., Zhang, M., Perlman, R., Banerjee, A., | [RFC7178] Eastlake 3rd, D., Manral, V., Li, Y., Aldrin, S., and D. | |||
Ghanwani, A., and S. Gupta, "Transparent Interconnection of | Ward, "Transparent Interconnection of Lots of Links | |||
Lots of Links (TRILL): Clarifications, Corrections, and | (TRILL): RBridge Channel Support", RFC 7178, | |||
Updates", RFC 7780, DOI 10.17487/RFC7780, February 2016, | DOI 10.17487/RFC7178, May 2014, | |||
<http://www.rfc-editor.org/info/rfc7780>. | <http://www.rfc-editor.org/info/rfc7178>. | |||
[RFC7961] - Eastlake 3rd, D. and L. Yizhou, "Transparent | [RFC7356] Ginsberg, L., Previdi, S., and Y. Yang, "IS-IS Flooding | |||
Interconnection of Lots of Links (TRILL): Interface Addresses | Scope Link State PDUs (LSPs)", RFC 7356, | |||
APPsub-TLV", RFC 7961, DOI 10.17487/RFC7961, August 2016, | DOI 10.17487/RFC7356, September 2014, | |||
<http://www.rfc-editor.org/info/rfc7961>. | <http://www.rfc-editor.org/info/rfc7356>. | |||
[rfc6439bis] - D. Eastlake, Y. Li, M. Umair, A. Banerjee, and F. Hu, | [RFC7357] Zhai, H., Hu, F., Perlman, R., Eastlake 3rd, D., and O. | |||
"Routing Bridges (RBridges): Appointed Forwarders", draft-ietf- | Stokes, "Transparent Interconnection of Lots of Links | |||
trill-rfc6439bis, work in progress. | (TRILL): End Station Address Distribution Information | |||
(ESADI) Protocol", RFC 7357, DOI 10.17487/RFC7357, | ||||
September 2014, <http://www.rfc-editor.org/info/rfc7357>. | ||||
Informational References | [RFC7780] Eastlake 3rd, D., Zhang, M., Perlman, R., Banerjee, A., | |||
Ghanwani, A., and S. Gupta, "Transparent Interconnection | ||||
of Lots of Links (TRILL): Clarifications, Corrections, and | ||||
Updates", RFC 7780, DOI 10.17487/RFC7780, February 2016, | ||||
<http://www.rfc-editor.org/info/rfc7780>. | ||||
[RFC7067] - Dunbar, L., Eastlake 3rd, D., Perlman, R., and I. | [RFC7961] Eastlake 3rd, D. and L. Yizhou, "Transparent | |||
Gashinsky, "Directory Assistance Problem and High-Level Design | Interconnection of Lots of Links (TRILL): Interface | |||
Proposal", RFC 7067, November 2013. | Addresses APPsub-TLV", RFC 7961, DOI 10.17487/RFC7961, | |||
August 2016, <http://www.rfc-editor.org/info/rfc7961>. | ||||
[RFC7978] - Eastlake 3rd, D., Umair, M., and Y. Li, "Transparent | [rfc6439bis] | |||
Interconnection of Lots of Links (TRILL): RBridge Channel | - Eastlake 3rd, D., Li, Y., Umair, M., Banerjee, A., and | |||
Header Extension", RFC 7978, DOI 10.17487/RFC7978, September | F. Hu, "Routing Bridges (RBridges): Appointed Forwarders", | |||
2016, <http://www.rfc-editor.org/info/rfc7978>. | draft-ietf-trill-rfc6439bis (work in progress), June 2016. | |||
[ARPND] - Y. Li, D. Eastlake, L. Dunbar, R. Perlman, I. Gashinsky, | 8.2. Informative References | |||
"TRILL: ARP/ND Optimization", draft-ietf-trill-arp- | ||||
optimization, work in progress. | ||||
[DirAsstEncap] L. Dunbar, D. Eastlake, R. Perlman, I. Gashingksy, | [RFC7067] Dunbar, L., Eastlake 3rd, D., Perlman, R., and I. | |||
Gashinsky, "Directory Assistance Problem and High-Level | ||||
Design Proposal", RFC 7067, DOI 10.17487/RFC7067, November | ||||
2013, <http://www.rfc-editor.org/info/rfc7067>. | ||||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | [RFC7978] Eastlake 3rd, D., Umair, M., and Y. Li, "Transparent | |||
Interconnection of Lots of Links (TRILL): RBridge Channel | ||||
Header Extension", RFC 7978, DOI 10.17487/RFC7978, | ||||
September 2016, <http://www.rfc-editor.org/info/rfc7978>. | ||||
"Directory Assisted TRILL Encapsulation", draft-ietf-trill- | [ARPND] - Li, Y., Eastlake 3rd, D., Dunbar, L., Perlman, R., and | |||
directory-assisted-encap, work in progress. | I. Gashinsky, "TRILL: ARP/ND Optimization", draft-ietf- | |||
trill-arp-optimization (work in progress), June 2016. | ||||
[SmartEN] R. Perlman, F. Hu, D. Eastlake, K. Krupakaran, T. Liao, | [DirAsstEncap] | |||
"TRILL Smart Endnodes", draft-ietf-trill-smart-endnodes", | Dunbar, L., Eastlake 3rd, D., Perlman, R., and I. | |||
draft-ietf-trill-smart-endnodes, work in progress. | Gashingksy, "Directory Assisted TRILL Encapsulation", | |||
draft-ietf-trill-directory-assisted-encap (work in | ||||
progress), June 2016. | ||||
[X.233] - ITU-T Recommendation X.233: Protocol for providing the | [SmartEN] Perlman, R., Hu, F., Eastlake 3rd, D., Krupakaran, K., and | |||
connectionless-mode network service: Protocol specification, | T. Liao, "TRILL Smart Endnodes", draft-ietf-trill-smart- | |||
International Telecommunications Union, August 1997 | endnodes (work in progress), June 2016. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | [X.233] - International Telecommunication Union, ITU-T | |||
Recommendation X.233, "Protocol for providing the | ||||
connectionless-mode network service: Protocol | ||||
specification", August 1997. | ||||
Acknowledgments | Acknowledgments | |||
The contributions of the following persons are gratefully | The contributions of the following persons are gratefully | |||
acknowledged: | acknowledged: | |||
Amanda Barber, Matthew Bocci, Alissa Cooper, Stephen Farrell, | Amanda Barber, Matthew Bocci, Alissa Cooper, Stephen Farrell, | |||
Daniel Franke, Igor Gashinski, Joel Halpern, Susan Hares, Alexey | Daniel Franke, Igor Gashinski, Joel Halpern, Susan Hares, Alexey | |||
Melnikov, Gsyle Noble, Tianran Zhou | Melnikov, Gsyle Noble, Tianran Zhou | |||
The document was prepared in raw nroff. All macros used were defined | The document was prepared in raw nroff. All macros used were defined | |||
within the source file. | within the source file. | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Authors' Addresses | Authors' Addresses | |||
Donald Eastlake | Donald Eastlake | |||
Huawei Technologies | Huawei Technologies | |||
155 Beaver Street | 155 Beaver Street | |||
Milford, MA 01757, USA | Milford, MA 01757, USA | |||
Phone: +1-508-333-2270 | Phone: +1-508-333-2270 | |||
Email: d3e3e3@gmail.com | Email: d3e3e3@gmail.com | |||
Linda Dunbar | Linda Dunbar | |||
Huawei Technologies | Huawei Technologies | |||
skipping to change at page 55, line 4 | skipping to change at line 2370 | |||
Email: Radia@alum.mit.edu | Email: Radia@alum.mit.edu | |||
Yizhou Li | Yizhou Li | |||
Huawei Technologies | Huawei Technologies | |||
101 Software Avenue, | 101 Software Avenue, | |||
Nanjing 210012, China | Nanjing 210012, China | |||
Phone: +86-25-56622310 | Phone: +86-25-56622310 | |||
Email: liyizhou@huawei.com | Email: liyizhou@huawei.com | |||
INTERNET-DRAFT TRILL: Directory Service Mechanisms | ||||
Copyright, Disclaimer, and Additional IPR Provisions | ||||
Copyright (c) 2017 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with respect | ||||
to this document. Code Components extracted from this document must | ||||
include Simplified BSD License text as described in Section 4.e of | ||||
the Trust Legal Provisions and are provided without warranty as | ||||
described in the Simplified BSD License. The definitive version of | ||||
an IETF Document is that published by, or under the auspices of, the | ||||
IETF. Versions of IETF Documents that are published by third parties, | ||||
including those that are translated into other languages, should not | ||||
be considered to be definitive versions of IETF Documents. The | ||||
definitive version of these Legal Provisions is that published by, or | ||||
under the auspices of, the IETF. Versions of these Legal Provisions | ||||
that are published by third parties, including those that are | ||||
translated into other languages, should not be considered to be | ||||
definitive versions of these Legal Provisions. For the avoidance of | ||||
doubt, each Contributor to the IETF Standards Process licenses each | ||||
Contribution that he or she makes as part of the IETF Standards | ||||
Process to the IETF Trust pursuant to the provisions of RFC 5378. No | ||||
language to the contrary, or terms, conditions or rights that differ | ||||
from or are inconsistent with the rights and licenses granted under | ||||
RFC 5378, shall have any effect and shall be null and void, whether | ||||
published or posted by such Contributor, or included with or in such | ||||
Contribution. | ||||
End of changes. 323 change blocks. | ||||
897 lines changed or deleted | 829 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |