NSIS A. Pashalidis Internet-Draft H. Tschofenig Expires:January 12,April 27, 2006 SiemensJuly 11,October 24, 2005 NAT Traversal forGIMPS draft-pashalidis-nsis-gimps-nattraversal-00.txtGIST draft-pashalidis-nsis-gimps-nattraversal-01.txt Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onJanuary 12,April 27, 2006. Copyright Notice Copyright (C) The Internet Society (2005). Abstract This documentcontains a numberdescribes how different types ofmechanisms that may be used in order to enableNetwork Address Translator (NAT) interact with the General InternetMessaging ProtocolSignalling Transport (GIST) protocol. The purpose of this interaction is forSignaling (GIMPS) messagessignalling traffic to traversedifferent types of Network Address Translatorsthe NATs in a way thatmay be located alongpreserves its semantics with respect to thepath between two adjecent NSLP hosts.data flows it corresponds to. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Problem Statement . . . . . . . . . . . . . . . . . . . . . .56 4. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . .711 5.Traversal of GaNATs in the absence TLS or IPsec . . . . . . . 9 5.1 NSLP-unaware GaNATs . . . . .Transparent NAT traversal for GIST . . . . . . . . . . . . . .9 5.1.113 5.1. NI-side NSLP-unaware GaNATs . . . . . . . . . . . . .9 5.1.2. . 13 5.2. NR-side NSLP-unaware GaNATs . . . . . . . . . . . . .14 5.2. . 18 5.3. NSLP-aware GaNATs . . . . . . . . . . . . . . . . . . . .17 5.321 5.4. Combination of NSLP-aware and NSLP-unaware GaNATs . . . .2025 6.GaNATs in the presence of TLS or IPSec . . . . . . . . . . . . 22 6.1 NSLP-unaware GaNATs . . .Non-transparent NAT traversal . . . . . . . . . . . . . . . .22 6.1.126 6.1. NI-side NSLP-unaware GaNATs . . . . . . . . . . . . .22 6.1.2. . 26 6.2. NR-side NSLP-unaware GaNATs . . . . . . . . . . . . .26 6.1.3 Additional GIMPS peer processing . . . . . . .. .. . 28 6.2 NSLP-aware GaNATs .30 6.3. GIST peer processing . . . . . . . . . . . . . . . . . . .3034 7.NSIS-unawareGIST-unaware NATs . . . . . . . . . . . . . . . . . . . . . .3136 8. Security Considerations . . . . . . . . . . . . . . . . . . .34 8.139 8.1. Service Denial Attacks . . . . . . . . . . . . . . . . . .34 8.239 8.2. Network Intrusions . . . . . . . . . . . . . . . . . . . .3540 9.Acknowledgments .IAB Considerations . . . . . . . . . . . . . . . . . . . . . .3742 10.IAB ConsiderationsAcknowledgements . . . . . . . . . . . . . . . . . . . . .38 11. IANA Considerations . .. .. . . . . . . . . . . . . . . . 39 12.43 11. Normative References . . . . . . . . . . . . . . . . . . . .39. 43 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . .39. . 44 Intellectual Property and Copyright Statements . . . . . . . .40. . 45 1. Introduction Network Address Translators (NATs) modify certain fields in the IP header of theIPpackets that traverse them. In the context of signalling asdefinedspecified by theNSIS group,General Internet Signalling Transport (GIST) protocol [1], thisbehaviour, if not properly addressed,behaviour may lead to the installation ofinconsistent and meaninglessstate at network nodes that may be inconsistent and meaningless with respect to the actual traffic that traverses these nodes. This documentproposes a collection of algorithms that have to be implemented in order to enable GIMPS signalling, and the data flows to which thisdescribes how GIST signallingrefers, tomessages traverse NATs in a way that preserves the consistency of state that is installed in thenetwork, andnetwork with respect to the data flows to which the signalling messages refer. As the mechanisms that are described ina mannerthis document exclusively operate at the GIST layer, they are transparent to signalling applications. The document is organised as follows. The next section introduces the terminology that is used throughout this document. Section 3 provides a detailed discussion of theproblemsNAT traversal problem and highlights certain design decisions thatare addressed by this document.have to be taken when addressing the problem. Section 4listlists the assumptions on which the proposed mechanisms are based. Section 5 presents the proposed mechanisms forthe case where no TLS or IPsec protection is required for the signalling traffic between two NSLP peers,"transparent" NAT traversal, andSection 6??? presents the proposed mechanisms where such protection is required. 2. Terminology The terminology, abbreviations and notational conventions that are used throughout the document are as follows. o DR: Data Responder, as defined in [1] o DS: Data Sender, as defined in [1] o GaNAT:GIMPS-awareGIST-aware NAT -Aa GaNATmayMAY implement a number ofNSLPs, but does not implement the NATFW NSLP.NSLPs. oGIMPS:GIST: General Internet Messaging Protocol for Signalling [1] o NAT: Network Address Translator o NI: NSIS Initiator, as defined in [1] o NR: NSIS Responder, as defined in [1] o NSIS: Next Steps inSignalling,Signalling: The name of the IETF working group that specified the family of signalling protocols of which this specification is also a member. The term NSIS is also used to refer to this family of signalling protocols asdefined in [1]a whole. oNSIS-aware:GIST-aware: ImplementsGIMPSGIST andzero or moreMAY also implement a number of NSLPs. oNSIS-unaware: GIMPS-unaware,GIST-unaware: GIST-unaware, does not implement any NSLP. o NSLP: NSIS Signalling Layer Protocol, as defined in [1] o downstream: as defined in [1] o upstream: as defined in [1] o MRI: Message Routing Information, as defined in [1] o NLI.IA: Interface Address field of the Network Layer Information header field, as defined in [1] o <- : Assignment operator. The quantity to the right of the operator is assigned to the variable to its left. o A.B: Element B of structure A. Example: [IP header].SourceIPAddress denotes the source IP address of an IP header. o [data item]: This notation indicates that "data item" is a single identifier of a data structure. (Square brackets do not denote optional arguments in this document.) 3. Problem Statement According to [1], allGIMPSGIST messages between two peers carry IP addresses in order to define the data flow to which the signalling refers. Moreover, certainGIMPSGIST messages also carry the IP address of the sending peer, in order to enable the receiving peer to address subsequent traffic to the sender. Packets that cross an addressing boundary, say from addressing space S1 to S2, have the IP addresses in the IP header translated from space S1 to S2 by the NAT; ifGIMPSGIST payloads are not translated in a consistent manner, the MRI in aGIMPSGIST packet that crosses the boundary, e.g. from address space S1 to S2, refers to a flow that does not exist in S2. In fact, the flowismay be invalid in S2 because atleast one oftheinvolvedIPaddressesaddress that belongs toS1.S1 may not be routable or invalid in S2. Moreover, the IP address of the sending peer may also be not routable or invalid in the addressing space of the receiving peer. The purpose of this document is to describe a way forGIMPSGIST messages to be translated in a way that is consistent with the translation that NATs apply to the IP headers of both signalling and data traffic. A NAT may either beNSIS-unawareGIST-unaware orNSIS-aware. The case of NSIS- unaware NATs is discussedGIST-aware. We denote a GIST- aware NAT as a GaNAT inSection 7. IftheNAT is NSIS-aware, it is typicallysequel. A GaNAT MAY alsoable tosupport at least one NSLP. Note that there exists an NSLP, namely the NATFW NSLP [2], that specifically addresses NAT traversal for data flows. Inevitably, the NATFW NSLP also provides the necessary mechanisms for the related signalling to traverse the NATs involved.Therefore, we can further divide NSIS- aware NATs into two categories, namely GIMPS-and-NATFW-aware NATs and GIMPS-aware-and-NATFW-unaware NATs. InConsider a GaNAT that supports both thesequel, we callNATFW NSLP, and thelatter simply GIMPS-aware NATs (GaNATs). A GIMPS-and-NATFW-aware NAT performsNAT traversalaccordingextension to GIST that is specified in this document. Suppose now that a GIST QUERY message arrives at this GaNAT that contains the NSLP identifier (NSLPID) of the NATFWNSLP;NSLP. A question that arises is whether thecase ofGaNAT should use the GIST NAT traversal extension defined in this document, or thepresence of such NATs is therefore beyondNATFW NSLP mechanism, in order to provide "NAT traversal" for both thescope ofsignalling message and the data flow to which it refers. The answer to thisdocument. Asquestion isnatural,that such a GaNAT MUST implement aNATFW-awarepolicy according to which method is used in preference to the other. Note, however, that, should the GaNAT prefer the GIST NATonly translatestraversal to NATFW NSLP, then it will happen, if no on-path GaNATs exist that prefer therelevant fields forNATFW NSLP, that the downsteam NATFWsignalling traffic inpeer will be unable to discover any downstream NATFW NSLP peers. This may make the entire NATFW session obsolete. Clearly, if a GaNAT does not implement the NATFW NSLP, then the only wayconsistent withfor therelevant data flow. Consequently, GIMPSsignallingin the presence of NATFW-unaware NATsand the data flow to traverse that GaNAT, is forNSLPs other thantheNATFW NSLP remains an open problem. This document precisely addresses this problem, by proposingnecessary mechanismsthatto operateaton theGIMPSGIST layer. The same holds when the NSLP that is being signalled is an NSLP other than the NATFW NSLP. Enabling NAT traversal in presicely these circumstances is the motivation of this specification. In general, a given data flow between a data sender (DS) and a data receiver (DR) may have to traverse a number of NATs, some of which may beGIMPS-and-NATFW-aware,GIST-and-NATFW-aware, some may beGIMPS-aware,GIST-aware, and some may beNSIS-unaware.GIST-unaware. Additionally, NSLP signalling for such a data flow may be required to traverse through a subset of those NATs. Whether or not the routing inftrastructure and state of the network causes the signalling for such a data flow to traverse the same NATs as the flow depends, among other things, onthe signalling application.which NSLP is being signalled. While signalling ofathe QoS NSLP, for example, might not traverse any of the NATs that are traversed by the data flow, the signalling of the NATFW NSLP traverses at least those NATs that implement the NATFW NSLP (otherwise the signalling path would no longer be coupled to the data path, as this coupling is defined by theGIMPSGIST QUERY/RESPONSE discoverymechanism).mechanism for the "path coupled" Message Routing Method). It is desirable that the NAT traversal extension for GIST provides NAT traversal for every possible combination of NATs, either on the data or the signalling path,to be functional and secure.in a secure manner. Due to theGIMPSGIST QUERY/RESPONSE discovery mechanism (according to which QUERY messages are simply forwarded if the current node does not support the required NSLP), twoGIMPSGIST nodes typically identify themselves as NSLP peers only if they both implement the sameNSLP, say NSLP X.NSLP. This means that, if one or moreX-unawareNATs that are unaware of this NSLP are between them, then the twoXNSLP peers are not able to discover each other at all. This is because, even in the unlikely event that the NAT bindings that are necessary for theGIMPSGIST traffic to traverse the in-between NAT(s) exist, the NLI.IAObjectfield included in the RESPONSE message sent by the downstreamX-awareGIST peerwill beis invalid(i.e.(or the IP addresswill beis unreachable) in the address space of the upstreamXGIST peer. In order to overcome this limitation, either the twoXpeers need to cope with the in-between NAT(s), or, if the NAT(s) are GaNATs, they (the GaNATs) need to apply additional processing in order to transparently create and maintain consistency between therequired consistency.information in the header of GIST signalling messages and the information in the IP header of the data traffic. Additionally, ifX-awareNSLP-aware NATs are on the datapath (where X is any NSLP except NATFW),path, then these NATs should processXNSLP traffic in a waythethat preserves consistency after address translation. This processing deviates from the processing ofX-awareNSLP- aware non-NAT nodes. In the following sections wepropose certain processing rulesspecify mechanisms that aim to overcome the limitation of two adjacentXGIST peers not being able to executeXan NSLP in the presence of in-between NAT(s).We do not considerNote that a number of different situations has to be dealt with, depending on thecase where X=NATFW andlevel of NSIS support by a NAT. The following combinations of NATs that are located between two adjacent GIST peers are considered. o all NAT(s) are GIST-unaware o all NAT(s) are (NSLP-unaware) GaNAT(s) o all NAT(s) are NSLP-aware o a combination of the above NAT types. The approach taken in this document is to propose separate mechanisms for the traversal of each of the above type of NAT. If NATs that belong to multiple types exist on the path between two adjacent NSLP peers, the proposed mechanisms should work in combination. Thus, traversal of multiple NATs of different types should not require further specification from a functional perspective. However, security issues that arise due to the combination of NAT types may have to be considered. A GIST-unaware NAT cannot tell data and signalling traffic apart. The installation of the NAT binding for the signalling traffic in such a NAT occurs typically independently from the installation of the NAT binding for the data traffic. Furthermore, as the NAT cannot associate the signalling and the data traffic in any way, it cannot indicate that an association exists between the two NAT bindings. Therefore, in the presence of such a NAT, GIST nodes that areNATFW-aware.located on either side of the NAT have to cope with the NAT without assistance from the NAT. This would typically require initially discovering the NAT and subsequently establishing an association between between the MRI in the signalling messages and the translated IP header in the data traffic. Due to the variety of behaviours that a GIST-unaware NAT may exhibit, establishing this association is a non-trivial task. Therefore, traversal of such (i.e. GIST-unaware) NATs is considered a special case and ishandled byfurther discussed in Section 7. Traversal of GaNAT(s) is comperatively more straightforward. This is because, based on theNATFW NSLP. NoteMRI in a given incoming GIST message, a GaNAT can identify the data flow to which the message refers. It can then check its NAT binding cache and determine the translation thatwe haveis (or, if no NAT binding for the flow exists yet, will be) applied todeal withthe IP header of the data flow. The GaNAT can then include sufficient information about this translation into the signalling message, such that its receiver (i.e. the GIST peer that receives the data traffic after network address translation has been applied) can map the signalling message to the data flow. There exist anumbervariety ofdifferent situations, depending on whether Xways for a GaNAT to encode the abovementioned information into signalling messages. In this document the following two ways are considered. 1. Non-transparent apprach: The GaNAT includes an additional "NAT Traversal" payload (see section A.3.8 of [1]) into the GIST header of the GIST QUERY message. This "NAT Traversal" payload issupportedechoed by theGaNATs. Thus, we haveGIST responder on thefollowing three subcases. o all GaNAT(s)other side of the NAT. Both peers use the information in this payload in order to map subsequent signalling messages to the data flows they refer to. 2. Transparent approach: The GaNAT replaces GIST header fields in a way that is consistent with the translation it applies to the data traffic, as necessary. The GaNAT does this GIST QUERY and RESPONSE messages, for D-mode as well as for C-mode messages throughout the duration of the signalling session. The second approach being "transparent" means that a GaNAT that follows this approach remains completely transparent to the GIST peers that areX-unaware o all GaNAT(s)located either side of it. Thus, this approach works even if these GIST peers do not support the NAT traversal object for GIST (as described in section 7.2 of [1]). Unfortunately though, the transparent approach does not work if the GaNAT is NSLP-unaware and if signalling traffic is to be cryptographically protected between the two GIST peers that areX-aware (and Xlocated either side of the GaNAT. If, however, the GaNAT is NSLP-aware, then cryptographic protection is terminated at the GaNAT (i.e. the GaNAT is a GIST peer itself). In this scenario, it is clearly preferable for the GaNAT to follow the transparent approach, rather than to include a NAT Traversal object. Thus, if a GaNAT acts as a GIST peer for a signalling session, it MUST follow the transparent approach, as described in Section 5.3. However, due to the fact that the transparent approach does not work if signalling is to be cryptographically protected, a GaNAT MUST also implement the non-transparent approach (for the case where an NSLP is signalled that the GaNAT does not support), unless theNATFW NSLP) oGaNAT is going to be used only in deployments where cryptographic protection of signalling traffic is not acombinationrequirement. Note that a GaNAT MAY implement both approaches. If such a GaNAT is NSLP-unaware, it can then adopt the correct behaviour, based on whether or not cryptographic protection is required for the signalling traffic between two GIST peers. If such protection is required, the GaNAT MUST adopt the mechanisms that follow the non- transparent approach; if it is not, it MAY follow the mechanisms implementing the transparent approach. The GaNAT can tell whether or not cryptographic protection is required from the stack proposals that are exchanged in the GIST QUERY and RESPONSE messages; inclusion ofX-awareIPsec or TLS proposals amounts to cryptographic protection being required. Regardless of which approach is taken, after a GIST response passes through an NSLP-unaware GaNAT, the GaNAT should expect a messaging association to be set up between the two involved GIST peers. For this to happen, the GaNAT has to allow traffic to traverse it. From a security perspective, the GaNAT should allow the minimum necessary traffic types to traverse. Additionally, the amount of per signalling session state that is allocated at a GaNAT should be minimised for reasons of efficiency andX-unaware GaNATsresistance to service denial attacks. For these reasons, it makes sense for the GaNAT to be able to predict with certainty which of the GIST responder's stack proposal will be used by the initiator for the establishement of a messaging association. This can be accomplished by having the GaNAT modify the stack configuration object in the GIST RESPONSE as it passes though it such that the initiator is forced to use a particular stack proposal and, if applicable, a particular transport layer destination port. The reason why it is preferable for the GaNAT to modify only the stack configuration data object (as opposed to the stack proposal object) is that the GIST responder expects its original stack proposal to be included in the GIST CONFIRM message. The initiator would not be able to echo that object as it would not have seen it and, if signalling messages arebetweencryptographically protected, then the GaNAT cannot replace the stack proposal in the GIST CONFIRM message with the one the responder expects, without causing cryptographic checks toX peers.fail at the responder. Thus, the approach taken in this document is for the GaNAT to render invalid all but one stack configuration data objects in the GIST RESPONSE message. How this is done depends on the format of this object. If, for example, it contains transport layer port numbers, it is rendered invalid by setting these numbers to zero. A question arises due to the fact that the stack proposal carried by a GIST QUERY may include multiple proposals of which some provide cryptographic protection for signalling traffic and some do not. Which behaviour should a GaNAT that supports both approaches assume in this case? In order to provide maximise thefollowing sections, we discussprobability that cryptographic protection is going to used, the GaNAT MUST follow thethree cases separately.non-transparent approach in this case. 4. Assumptions The discussion in this document is based on the following assumptions.Note that X denotes a fixed NSLP, other than the NATFW NSLP.1. No IP addresses and port numbers are carried in the payloads ofX.an NSLP. 2. The path taken by the signalling traffic between thoseXGIST peers that have GaNATs in between is such that the responses to packets that a GaNAT sends on given interface arrive on the same interface (if such responses are sent at all). 3. The path taken by signalling traffic remains fixed between the twoXGIST peers, as far as the in-between GaNATs are concerned. That is, we assume that signalling traffic traverses the same GaNAT(s) until at least one of the following conditions is met. * The NSIS state that is installed at the twoXGIST peers expires. * The NSIS state that is installed at the twoXGIST peers is refreshed using aGIMPSGIST QUERY. * A newGIMPSGIST QUERY/RESPONSE exchange takes place due to other reasons, e.g. a detected route change. Note that this assumption is not necessarily met by "normal" data path coupled signalling. This is because, under "normal" data path coupled signalling, the signalling traffic is "coupled" to the data traffic at nodes thatimplement X.decide to act as GIST peers. Thus, under "normal" path coupled signalling, it is not an error condition (e.g. a reason to trigeer a "route change"), for example, if the set of on-path(non-X) GIMPS nodesnodes, which do not act as GIST peers, changes, as long as adjacentXGIST peers remain the same. 4. The data flow traverses the same set of GaNATs as the signalling traffic. By assumption 3, this set of GaNATs is fixed until the nextGIMPSGIST QUERY/RESPONSE procedure is executed. +-----+ +----+GaNAT|-----+ | | A | | | +-----+ | +------+ +------+ +--+---+ +------+ +--+|X NSLP|| GIST | | IP | | IP ||X NSLP|| GIST | +--+ |DS+-+peer+--+router|1+--+router| |router+--+peer 2+-+DR| +--+ +------+ +---+--+ +--+---+ +------+ +--+ | +-----+ | | |GaNAT| | +----+ B +-----+ +-----+ Figure 1: Network with more than one NAT at an addressing boundary Figure 1 illustrates the importance of assumptions (3) and (4). With regard to that figure, suppose that a (D-mode) signalling session has been setup between the two adjacentX NSLPGIST peers 1 and 2 and that both signalling and data traffic follows the pathX NSLPGIST peer 1 -> IP router -> GaNAT A -> IP router ->X NSLPGIST peer 2. Suppose now that, after some time,XGIST peer 1 decides to set up a C-mode connection with peer 2. Suppose moreover that the left IP router decides to forward the C-mode signalling traffic on the link towards GaNAT B. Thus, signalling traffic now follows the alternative pathX NSLPGIST peer 1 -> IP router -> GaNAT B -> IP router ->X NSLPGIST peer 2. Note that this change in forwarding between the two adjacentX NSLPGIST peers does not trigger a "route change" at theGIMPSGIST layer because (a) it does not necessarily destroy the adjacency of peer 1 and 2 and (b) it does not necassarily destroy the coupling of the path taken by signalling traffic to that taken by data traffic (atX-awareGIST nodes). Nevertheless, assumptions (3) and (4) mandate that this situation does not occur. However, even if such a situation occurs, theproposalsmechanisms described in this document may stillwork.work as state expires after a certain timeout period. If assumption (1) does not hold,Xthe NSLP has to provide additional mechanisms for the traversal of (Ga)NATs. These mechanisms must be compatible with the mechanismsdescribed in this document.employed by GIST. Assumptions (2), (3) and (4) hold if, at an addressing boundary, only one NAT exists. Due to security and management reasons, this is likely to be the case in many settings. 5.Traversal of GaNATs in the absence TLS or IPsecTransparent NAT traversal for GIST This section describes the operation ofGIMPS-aware NATs when no cryptographic protection of signalling data is requested by two NSLP peers. The situation when such protection is required is discussed in Section 6. Recall that by GaNAT we mean a NAT that implements GIMPS but does not implement the NATFW NSLP. In this section we discuss the possibility of two NSIS peersGaNATs that implementa given NSLP, denoted as X, to discover each other and subsequently exchange signalling messages inthepresence of one or more GaNATstransparent approach listed inbetween.Section 3. Note thatXthe GaNAT maybe any NSLP includingfollow this approach only if it is unaware of theNATFWNSLP(however, if X=NATFW we do not consider X-aware GaNATs). Notethatwe have to deal with three subcases, namely (a) the case where all GaNAT(s) are X-unaware, (b) the case where all GaNAT(s) are X-aware (and Xisnot the NATFW NSLP),being signalled, and(c) the case where a combinationwhen no cryptographic protection ofX-aware and X-unaware GaNATs are between to X peers. We discuss the three cases separately. 5.1 NSLP-unaware GaNATs This section describes the algorithm that an X-unaware GaNAT must execute in order to enable thesignallingtraffic of two X peers to traverse the GaNAT in a transparent (fordata is requested by the twopeers) manner. The notation A.B denotes the field B of data structure A.NSLP peers. Note that we have to deal with two types of GaNATs, namely those that are located at the NSIS initiator (NI-side), and those that are located at the NSIS responder (NR-side). This distinction arises due to the fact that NI-side and NR-side GaNATs obtain the destination IP address for forwarded packets in different ways.5.1.15.1. NI-side NSLP-unaware GaNATs This section describes the "transparent" operation of an NI-side, NSLP-unaware GaNAT. For every arriving IP packet P, an NSLP-unaware, NI-side GaNAT executes the following algorithm. 1. If P has a RAO followed by theGIMPSGIST header with an NSLP ID that is not supported, it is identified as aGIMPSGIST QUERY. In this case the GaNAT performs the following. 1. We denote P as GQ. It looks at the stack proposal ST in GQ. If it indicates that cryptographic protection is required, thealgorithmmechanism that isexecutedapplies is the one described inSection 6.???. 2. The GaNAT remembers GQ along with the interface on which it arrived. We call this interface the "upstream link". 3. It searches its table of existing NAT bindings against entries that match the GQ.MRI. A matching entry means that the data flow, to which the signalling refers, already exists. 1. If a matching entry is found, the GaNAT looks at which link the packets of the data flow are forwarded; we call this link the "downstream" link. Further, the GaNAT checks how the headers of the data flow (IP addresses, port numbers, etc) are translated according to this NAT binding. We denote [IP header].SourceIPAddress used on the downstream link as IPGaNATds, and the source port number used to forward the data traffic as SPNDTGaNATds. The NAT may also use a different source port number when forwarding signalling traffic. This port number is denoted as SPNSTGaNATds. 2. If no matching entry is found, the GaNAT determines, based on its routing table, the link on which packets that match GQ.MRI (excluding GQ.MRI.SourceIPAddress) would be forwarded. We call this link the "downstream link". Then, the GaNAT acquires an IP address for itself on the downstream link. (This address could be dynamic or static.) This address will be used to forward both signalling and data traffic on the downstream link. If it also performs port translation, the GaNAT also acquires a source port number for the data traffic on the downstream link. This will be used with the NAT binding, if such a binding will be established for the data traffic at a later stage, and is denoted asSPNDTGaNATds .SPNDTGaNATds. The signalling traffic packets may also be forwarded using the a different source port number as the incoming packets. We denote the acquired IP address as IPGaNATds and the source port number for the signalling traffic as SPNSTGaNATds. Issues: The reason why the GaNAT may also assign a different source port number to the signalling traffic, is to enable the GaNAT to demultiplex (i.e. forward to the correct internal address) the signalling responses that arrive from downstream. Of course, a GaNAT does not need to actually change the source port of signalling traffic; it can always use SPNSTGaNATds the same port as in the incoming packet. Such a GaNAT may use theGIMPSGIST sessionidID in order to demultiplex the traffic that arrives from the downstream direction. It is unclear which of the two approaches is preferable. 4. It creates a newGIMPSGIST QUERY packet GQ', as follows. 1. GQ' <- GQ 2. GQ'.MRI.SourceIPAddress <- IPGaNATds 3. GQ'.MRI.SourcePortNumber <- SPNDTGaNATds 4. GQ'.[IP header].SourceIPAddress <- IPGaNATds 5.GQ'.[TRANSPORT_LAYER_HEADER].SourcePortGQ'.[UDP HEADER].SourcePort <- SPNSTGaNATds 6. GQ'.NLI.IA <- IPGaNATds 7. GQ'.S <- true 5. It remembers GQ and GQ', the fact that they are associated, and the associated upstream and downstream links. (Note: The GaNAT does not have to remember the entire packets; for simplicity of exposition, however, we assume it does. An implementation SHOULD discard at this point all information that is not used later.) 6. It forwards GQ' on the downstream link. 2. Otherwise, if P carriesaan [IP header].DestinationIPAddress that belongs to the GaNAT, and if it is identified as aGIMPSGIST response in D-mode with an NSLP ID that is not supported, the GaNAT does the following (P is denoted as GR). 1. It searches for a matching GQ' in its buffer. A GR is said to match a GQ' if they carry the same cookie value. If none is found, GR is discarded. Otherwise, the GaNAT may also perform further consistency checks on a matching GR/GQ' pair, such as checking that they contain the same session IDs, MRIs, NSLP IDs. If consistency checks succeed, the GaNAT constructs a newGIMPSGIST response GR', as follows. 1. GR' <- GR 2. GR'.MRI <- GQ.MRI, where GQ is the packet associated with GQ'(as remembered previously), and GQ' is the packet that matches the received GR. 3. GR'.[IP header].SourceIPAddress <- IPGaNATus, where IPGaNATus = GQ.[IP header].DestinationIPAddress. 4. GR'.[IP header].DestinationIPAddress <- GQ.NLI.IA 5. GP'.S <- true. 6. It inspects the stack proposals in GR' and the corresponding GQ' to see if the upstreamXGIST peer has a choice of more than one possible stack. If such a choice exists, the GaNAT removes as many stack proposals from GR' as necessary, until only one stack can be chosen by the upstream peer for the messaging association. We denote this stack as ST. The GaNAT remembers this ST and its association with GQ, GQ', GR, GR'. We say that, in this case, the GaNAT "installs" the ST. 2. It forwards GR' on the upstream link. 3. If no NAT binding for the data traffic was found in step 1.3.2, the GaNAT now installs a NAT binding (for the unidirectional data traffic) which says that "a packet K that arrives on the upstream link and for which it holds that + K.[IP header].DestinationIPAddress=GQ.MRI.DestinationIPAddress, + K.[IP header].Protocol=GQ.MRI.Protocol, and + K.[TCP/UDP header].SourcePort=GQ.MRI.SourcePort should be forwarded on the downstream link, with [IP header].SourceIPAddress = IPGaNATds. Issues: there is a question of whether this NAT binding should also enable data traffic in the opposite direction to traverse the NAT; in order to be able to demultiplex upstream traffic that carries data that belongs to different flows, the GaNAT should keep the necessary per-flow state. From a signalling point of view, however, upstream data traffic that corresponds (on the application level) to the downstream flow to which thisGIMPSGIST session refers, is a separate flow for which,dependentdepending on the application, there may or there may not exist a signalling session. If such a signalling session exists, then the GaNAT acts as an NR-side GaNAT for this session. Thus, during the processing of this signalling care has to be taken not to establish a NAT binding for a flow for which a NAT binding already exists. Finally, security issues arise when traffic, for which no signalling exists, is allowed to traverse a GaNAT. Another issue is about refreshing the NAT binding. A NAT binding that was established as a result ofGIMPSGIST signalling should remain in place for as long as the associatedGIMPSGIST state in the GaNAT remains valid. IfGIMPSGIST signalling refers to a NAT binding that already exists, then the timeout of the NAT binding should occur according to the NAT policy, in a mannerindependingindependent fromGIMPSGIST processing. (If signalling persists after the deletion of a NAT binding, then the NAT binding may be re-installed and thentimeouttimed out together withGIMPSGIST state). 3. Otherwise, if P.[IP header].DestinationIPAddress belongs to the GaNAT, and if Pis a GIMPS packet (either in D-mode or C-mode), the GaNAT does the following. If P does not match an existing installed ST, P is silently discarded. (A packet P is said to "match" an installed ST, if itcarries the transport protocol and port numbers indicated byST.) Otherwise,some stack proposal ST that has previously been installed by the GaNAT, and if P hasnotarrived on either thedownstream orupstreamlink of someor the downstream interface that is associated with ST,itthen P issilently discarded. Otherwise,said to "match" ST. For such a packet, the GaNAT does the following. If Phas arrived either onis expected to contain a GIST header, then theupstreamGaNAT check whether or not the bits where the GIST header is expected, consitute a valid GIST header. If not, P is silently discarded. Otherwise, thedownstream of some ST. TheGaNAT constructs an outgoing packet P' as follows (the variables used below refer to those stored together withthe ST in question).ST). 1. P' <- P 2. If P has arrived on the upstream link, then 1. P'.[IP header].SourceIPAddress <- IPGaNATds 2. P'.MRI <- GQ'.MRI 3. P'.NLI.IA <- IPGaNATus 4. The GaNAT forwards P' on the downstream link. 3. else (if P has arrived on the downstream link) 1. P'.[IP header].SourceIPAddress <- IPGaNATus 2. P'.MRI <- GQ.MRI 3. P'.NLI.IA <- IPGaNATus 4. The GaNAT forwards P' on the upstream link.Note:Note that theabove step will fail if ST indicates security. That is, if trafficGaNAT can determine the location in a packet where a GIST header is expected. If, for example, the packet isencrypted,a UDP packet, then the GIST header should follow immediately after the UDP header. If the packet is a TCP packet, then the GaNATcannot construct P', and if trafficcan determine the location where the GIST heaer should start by counting the number of NSLP payload bits that followed the end of the previous GIST header. The start of the next GIST header isintegrity-protected, performing this step will cause an errorexpected at thereceiving X peer. However, recallposition where the previous GIST message, including NSLP payload, ends. The GaNAT can tell where this message ends from the LENGTH field inside the previous GIST header. It should be noted here that, inthis section, weorder to correctly count the bits, the GaNAT may have to keep track of TCP sequence numbers, and thereby be aware of the correct ordering of packets. However, the GaNAT onlydiscusshas to keep buffers that are as long as thescenario whereLENGTH field inside the previous GIST header (and possibly up to one MTU size more than that). Also note that some TCP packets P may not be expected to contain any GIST header (this happens when the NSLP payload from a previous packet stretches over several packets). For those packets, the GaNAT only applies the transformation in the IP header. Finally, note that a GIST header may start a packet but finish in another. If suchcryptographic protectiona packet isnot required.received by the GaNAT, it MUST buffer the entire packet, until the packet is received where the GIST header completes. It can then apply the required processing and forward both packets. 4. Otherwise, if P matches a (data) NAT binding, the GaNAT applies normal NAT processing and forwards the packet on the corresponding link. 5. Otherwise, P is silently discarded. Brief discussion of the algorithm: The fact that the GaNAT replaces theXNSLP peer's NLI.IA with its own IP address (in both directions), causes the two GIST peers to send subsequent signalling messages to the GaNAT, in the belief that they talk to the their adjacentXpeer. The GaNAT transparently forwards the signalling traffic and appropriately translates the fields in theGIMPSGIST header,by making use ofin a way that is consistent with thestatetranslation itcreates bindings. Dueapplies to thepresence of the GaNATs, nodatatraffic can be sent from DStraffic. Note that, according toDR until all necessary bindings are in place. Thethis mechanism, the size of an outgoing GIST message is always the same as the size of its corresponding incoming GIST message. Finally note that the MRI that the NR seesincludesindicates as destination address the IP address of the DR (as expected), but as source address it indicates the is IPGaNATds of the GaNAT that is closest to the NR.5.1.25.2. NR-side NSLP-unaware GaNATs The case of NR-side GaNATs is more subtle, since, in this setting, the DS does not learn the IP address of the DR (which is assumed to be on the same side of the GaNATs as the NR) and the NI does not learn the address of the NR. In this setting we assume that each NR- side GaNAT that is in between twoXGIST peers, a priori knowsthea routable IP address of the downstream GaNAT. The last GaNAT of this chain is assumed to know the IP address of the DR. In order to clarify this assumption, see, for example, Figure 2. In this figure, GaNAT A is assumed to know the IP address of GaNAT B, GaNAT B is assumed to know the IP address of GaNAT C, and GaNAT C is assumed to know the IP address of the DR. A given GaNAT that knows such an address, in effect anticipates to receive a signalling message from the upstream direction that refers to a data flow that terminates in a downstream node. In other words, such a GaNAT may typically have already a NAT binding in place for the data traffic. We call the IP address of the next downstream GaNAT (or, if the GaNAT is the last in the chain, the address of the DR) the "pending" IP address. In the following description it is denoted by IPNext. How IPNext is made known to each GaNAT (e.g. how the NAT binding for the data traffic is installed in the GaNAT) is outside the scope of this document. +--+ +------+ +-----+ +-----+ +-----+ +------+ +--+ +--++NI+--+X NSLP+---+GaNAT+---+GaNAT+---+GaNAT+---+X NSLP+--+NR+--+DR|+NI+--+ GIST +---+GaNAT+---+GaNAT+---+GaNAT+---+ GIST +--+NR+--+DR| +--+ |peer 1| | A | | B | | C | |peer 2| +--+ +--+ +------+ +-----+ +-----+ +-----+ +------+ Figure 2: Network with NR-side GaNATs (the public Internet is assumed to be between NI andX NSLPGIST peer 1) For every arriving IP packet P, anX-unaware,NSLP-unaware, NR-side GaNAT executes the following algorithm. 1. If P has a RAO followed by theGIMPSGIST header with the NSLP ID= X,indicates an unsupported NSLP, it is identified as aGIMPSGIST QUERY. In this case the GaNAT does the following. 1. We denote P as GQ. The GaNAT looks at the stack proposal ST in GQ. If it indicates that cryptographic protection is required, the algorithm that is executed is the one described in section Section 6 below. 2. The GaNAT remembers GQ along with the link on which it arrived. We call this link the "upstream" link. 3. The GaNAT determines whether or not thisGIMPSGIST QUERY is anticipated, i.e. if a pending IPNextexists.exists that matches this GIST QUERY. A pending IPNext is said to "match" a GIST QUERY, if [this condition is an open issue!] If no pending IPNext ispending,also matching, P is discarded (it is a question whether or not an error message should be sent). Otherwise, additional checks may be performed (e.g. a DSInfo object may have to be checked against the GQ). If these checks fail, P is discarded. Otherwise, the GaNAT performs the following. 4. It searches its table of existing NAT bindings against entries that match the GQ.MRI. A matching entry means that the data flow, to which the signalling refers, already exists. + If a matching entry is found, the GaNAT looks at which link the packets of the data flow are forwarded; we call this link the "downstream" link. Further, the GaNAT checks how the headers of the data flow (IP addresses, port numbers, etc) are translated according to this NAT binding. We denote [IP header].SourceIPAddress used on the downstream link as IPGaNATds, and the source port number as SPNDTGaNATds. Note that the [IP header].DestinationIPAddress of this NAT binding should be equal to IPNext. If it is not, this should be handled as an auditive error condition. The GaNAT may also assign a new source port number to signalling traffic, which is denoted as SPNSTGaNATds. + If no matching entry is found, the GaNAT determines, based on its routing table, the link on which packets that match GQ.MRI (excluding GQ.MRI.SourceIPAddress and where GQ.MRI.DestinationIPAddress is replaced with IPNext) would be forwarded. We call this link the "downstream" link. Then, the GaNAT acquires an IP address for itself on the downstream link. (This address could be dynamic or static.) Depending on its type, the GaNAT may also acquire source port numbers for the translation of data traffic. We denote the acquired IP address as IPGaNATds and the source port numbers for data and signalling traffic as SPNDTGaNATds and SPNSTGaNATds respectively. 5. It creates a newGIMPSGIST QUERY packet GQ', as follows. 1. GQ' <- GQ 2. GQ'.MRI.SourceIPAddress <- IPGaNATds 3. GQ'.MRI.DestinationIPAddress <- IPNext. 4. GQ'.MRI.SourcePort <- SPNDTGaNATds. 5. GQ'.[IP header].SourceIPAddress <- IPGaNATds 6.GQ'.[TRANSPORT_LAYER_HEADER].SourcePortGQ'.[UDP HEADER].SourcePort <- SPNSTGaNATds 7. GQ'.[IP header].Destination_IP_Address <- IPNext 8. GQ'.NLI.IA <- IPGaNATds. 9. GQ'.S <- true 6. It remembers GQ, GQ' the fact that they are associated, and the associated upstream and downstream links (interfaces). 7. It forwards GQ' on the downstream link. Steps 2,3, 4 and 5 of the algorithm are analogous to the corresponding steps of the algorithm executed byX-unaware, NI-sideNSLP-unaware, NI- side GaNATs, which was described in Section5.1.1 5.25.1. 5.3. NSLP-aware GaNATsRecall that X may be any NSLP except NATFW.The difference ofX-awareNSLP-aware GaNATs andX-unawareNSLP-unaware GaNATs is that the former performXNSLP processing in addition to the processing of theX-unawareNSLP-unaware GaNATs. Another way to see this is by observing thatX-awareNSLP-aware GaNATs should provide an "MRI translation service" (MRITS) in addition to normalGIMPSGIST andXNSLP processing. The motivation behind the MRITS is forGIMPSGIST to hide from the NSLP that signalling messages traverse an addressing boundary. In other words, the purpose of the MRITSitis to makeXthe NSLP believe that it is operating in a single IP addressing space. When and how the MRITS is invoked for a particular packet depends on (i) the direction of the packet (i.e. downstream or upstream) and (ii) the location of the GaNAT (i.e. NI-side or NR-side). It should also be noted that certain NSLP layer tasks must be carried out in consistency with the placement of the MRITS. This is to prevent events triggered byXthe NSLP to cause installation of inconsistent state. In order to clarify this, consider the scenario of the QoS NSLP running in a GaNAT that operates according to the mechanisms described in this section. Since the GaNAT only presents a single addressing space to the NSLP (say, the internal addressing space), the packet classifier of the GaNAT's QoS provisioning subsystem should classify packets based on internal addresses only (i.e. it should first translate packets that carry external addresses and then classify them). Whether the MRITS presents internal-only or external-only addresses to the NSLP is not significant, as long as NSLP layer operations are carried out consistently. In the remainder of this section we present the case where internal addresses are presented to the NSLP. The MRITS is obviously invoked only onGIMPSGIST packets that carry an NSLP identifier= X. (For other GIMPS packetsthat corresponds to an NSLP that the GaNATmay adopt the role of an X-unaware GaNAT.actually supports. Also, fornon-GIMPSnon-GIST packets, normal NAT behaviourapplies - whatever "normal" may mean.)applies. Although the MRITS is part ofGIMPSGIST processing, in order to clarify our discussion, we view it as a somewhat separate processing step (i.e. like a subroutine). For NI-side,X-awareNSLP-aware GaNATs, it holds that oiffor aGIMPS/XGIST/NSLP packet that is to be forwarded on the downstream link of an NI-side GaNAT, the MRITS is invoked after the packet has been processed byXthe NSLP and before it is given toGIMPS,GIST, and oiffor aGIMPS/XGIST/NSLP packet that is received on the downstream link,thenthe MRITS is invoked afterGIMPSGIST processing and before the packet is given toX.the NSLP. The converse holds for NR-sideX-awareNSLP-aware GaNATs. In particular, oiffor aGIMPS/XGIST/NSLP packet that is to be forwarded on the upstream link of an NI-side GaNAT, thePTSMRITS is invoked after the packet has been processed byXthe NSLP and before it is given toGIMPS,GIST, and oiffor aGIMPS/XGIST/NSLP packet that is received on the upstream link,thenthePTSMRITS is invoked afterGIMPSGIST processing and beforeXNSLP processing. Figure 3 illustrates this idea. +----------------+ +----------------+ | +------+ | | +------+ | ||NSLP X|| NSLP | | | | NSLP ||NSLP X|| | +-+---++ | | +-+--+-+ | | | | | | | | | | | +-+---+ | | +----++ | | | | |MRITS| | | |MRITS| | | | | +---+-+ | | ++----+ | | | | | | | | | | | +-+-----+-+ | | ++------+-+ | | |GIMPSGIST | | | |GIMPSGIST | | u/s | +-+-----+-+ | d/s u/s | ++------+-+ | d/s -----+----+ +-----+----- -----+---+ +-----+----- link +----------------+ link link +----------------+ link NI-side NR-sideX-aware X-awareNSLP-aware NSLP-aware GaNAT GaNAT Figure 3: Operation of the MRI Translation Service The reason for this construction is to giveXthe NSLP the impression that it works only with flows that originate and terminate in the internal address space. We now describe the operation of the MRITS andGIMPSGIST inX-awareNSLP-aware GaNATs. An NI-sideX-awareNSLP-aware GaNAT operates according to the following rules. 1. WhenXthe NSLP asks for a message to be sent towards the downstreamXGIST peer, the MRITS does the following (IPGaNATds and SPNDTGaNATds are obtained similarly to the case of anNSLP-unawareNSLP- unaware GaNAT). 1. MRI.SourceIPAddress <- IPGaNATds 2. MRI.SourcePort <- SPNDTGaNATds 2. Additionally,GIMPSGIST performs the following on the resulting packet before it is forwarded on the downstream link (SPNSTGaNATds is obtained similarly to the case of anNSLP- unawareNSLP-unaware GaNAT). 1. [IP header].SourceIPAddress <- IPGaNATds 2. [UDP/TCP header].SourcePort <- SPNSTGaNATds 3. NLI.IA<<- IPGaNATds 4. S <- true 3. If a message is received on the downstream link, the MRITS does the following beforeXthe NSLP is invoked. 1. MRI.SourceIPAddress <- IPflow 2. MRI.SourcePort <- SPNDTGaNATus, where IPflow is the IP address of the DS (as seen by the GaNAT) and SPNDTGaNATus is the destination port number used in the original MRI. 4. If, afterXNSLP processing, a message is to be forwarded on the upstream link,GIMPSGIST performs the following processing (note that no MRITS processing takes place in this case). 1. [IP header].SourceIPAddress <- IPGaNATus 2. [IP header].DestinationIPAddress <- IPpeer 3. NLI.IA <- IPGaNATus 4. S <- true, where IPGaNATus is the GaNATs IP address for the upstream link, IPpeer is the IPaddress of the NI (or the next GaNAT in the upstream direction), and IPflow is the IP address of the DS (as seen by the GaNAT). The GaNAT is assumed to determine the correct IPGaNATus and IPpeer from previous communications and in cooperation withGIMPS.GIST. [Issue: how exactly should IPGaNATus, IPpeer and IPflow be resolved; i.e. what exactly should the GaNAT remember?] An NR-sideX-awareNSLP-aware GaNAT operates according to the following rules. 1. If the packet is received on the upstream link, the MRITS does the following, beforeXthe NSLP is notified. 1. P.MRI.SourceIPAddress <- IPGaNATds 2. P.MRI.DestinationIPAddress <- IPNext, where IPGaNATds is the GaNAT's IP address for the downstream link and IPNext is the address of the DR. IPNext is obtained in a way similar to the case of an NSLP-unaware GaNAT. 2. If, afterXNSLP processing, a message is to be forwarded on the downstream link,GIMPSGIST performs the following processing (note that no MRITS processing takes place in this case). 1. [IP header].SourceIPAddress <- IPGaNATds 2. [IP header].DestinationIPAddress <- IPNext 3. NLI.IA <- IPGaNATds 4. S <- true, where IPGaNATds is the GaNATs IP address for the downstream link, IPNext is the IP address of the DR (or the next GaNAT in the downstream direction). The GaNAT is assumed to determine the correct IPNext in a way similar to the case of an NSLP-unaware GaNAT. 3. WhenXthe NSLP asks for a message to be sent towards the upstreamXGIST peer, the MRITS does the following. 1. MRI.SourceIPAddress <- IPflow 2. MRI.Destination_IP_Address <- IPGaNATus 4. Additionally,GIMPSGIST performs the following on the resulting packet before it is forwarded on the downstream link. 1. [IP header].SourceIPAddress <- IPGaNATus 2. [IP header].DestinationIPAddress <- IPpeer 3. NLI.IA <- IPGaNATus 4. S <- true, where IPGaNATus is the GaNATs IP address for the upstream link, IPpeer is theIP_addressIP address of the NI (or the next GaNAT in the upstream direction), and IPflow is the IP address of the DS. The GaNAT is assumed to determine the correct IPGaNATus and IPpeer fields from previous communications and in cooperation withGIMPS.GIST. [question: how exactly should IPGaNATus and IPpeer be resolved; i.e. what exactly should the GaNAT remember]?5.35.4. Combination of NSLP-aware and NSLP-unaware GaNATs In the absence of an adversary, a combination of NSLP-aware and NSLP- unaware GaNATs should work without further specification. However, in the presence of an adversary, additional security issues may arise from the combination. These issues may introduce opportunities for attack that do not exist in setting where the on-path GaNATs are either allX-awareNSLP-aware or allX-unaware.NSLP-unaware. 6.GaNATs in the presence of TLS or IPSecNon-transparent NAT traversal This section discusses the "non-transparent" operation for GaNAT traversalfor GIMPSat the GIST layer, i.e. the first approach listed in Section 3. For this approach, thecase where two peers that run a particular NSLP, say NSLP X, require cryptographic protectionbehaviour of both thesignalling traffic they exchange.GaNAT and the GIST peers is defined. As with thecase where no cryptographic protection of signalling traffic is required,transparent approach, the case of the in-between GaNAT(s) beingX-unawarelocated at the NI-side is different fromthe casethat ofthem being X-aware. 6.1 NSLP-unaware GaNATs If the two X peers require a C-mode protocol stackNR-side GaNATs. Note thatindicates cryptographic protection, then, afterthestack has been agreed by both peers and the underlying cryptographic protection is applied to messages, the GaNAT will be unable to translate the GIMPS header fields, in a way similar to the way describedmechanisms inSection 5.1.1. An approach to cope with this, isthis section apply only toinformNSLP-unware GaNATs. The GaNAT informs theXNSLP peers abouttheits presenceof the NATduringdiscovery.the GIST discovery process. This informationwill enableenables theX peers, rather thanNSLP peers to map theGaNAT(s)translated data flow toperformthetranslation ofsignalling messages, and to consistently translate thefields involved, afterMRI, so that thenecessary cryptographic operations have been completed. In this scenario,NSLP only "sees" theburden imposed oncorrect MRI. Cryptographic protection of signalling messages can be supported with this approach because the GaNATis considerably less, as theonlytype of GIMPS messages that it needs to process in a special way, aremodifies theGIMPSGIST QUERY andGIMPS RESPONSE messages.REPONSE messages, which are never cryptographically protected in their entirety. Inorder to supportthis approach, thescenario of X-unaware GaNATs,GaNAT embeds a newGIMPSGIST payload typehas to be defined thatinto the GIST QUERY. This payload encodes the aforementionedinformation. Weinformation, and we call this payload type the "NAT Traversal Object" (NTO). The NTO is an optional payload in theGIMPSGIST header of aGIMPSGIST QUERY, and is added, and processed, by the GaNAT(s) through which the QUERY traverses. The information in the NTO must enable the twoXNSLP peers to locally translate the MRI in the same way as if itwould have beenwere consistently and transparently translated by the in-betweenGaNAT(s) if no cryptographic protection was applied to the signalling traffic.GaNAT(s). Note that there may be more than one GaNAT between the twoXNSLP peers.We now describeThe format of thealgorithm that an X-unaware GaNAT must executeNTO follows the format of the object inorder to enablethetwo X peersGIST common header. In particular, the NTO is preceded by a TLV common header, as defined in [1]. The A and B flags are both set toreach0 in thisgoal.header, indicating that support for the NTO is mandatory. Thetwo typestype value is TBD. The NTO is defined as in section A.3.8 ofGaNATs, namely those at the NSIS initiator (NI) side, and those at the NSIS responder (NR) side, follow different algorithms. 6.1.1[1]. 6.1. NI-side NSLP-unaware GaNATs For every arriving IP packet P, anX-unaware,NSLP-unaware, NI-side GaNAT executes an algorithm that is equivalent to thefollowing algorithm.following. 1. If P has a RAO followed by theGIMPSGIST header with an NSLP ID that is not supported, it is identified as aGIMPSGIST QUERY. In this case the GaNAT does the following. 1. We denote P as GQ. The GaNAT looks at the stack proposal ST in GQ. If it does notindicate thatinclude a proposal with cryptographicprotection is required,protection, thealgorithm that is executed isGaNAT MAY choose to follow theoneapproach described in Section5.1.15.1 above. 2.The GaNAT remembers GQ along withWe call the link on whichit arrived. We call this linkGQ arrived the "upstream" link. 3. The GaNAT searches its table of existing NAT bindings against entries that match the GQ.MRI. A matching entry means that the data flow, to which the signalling refers, already exists. + If a matching entry is found, the GaNAT looks at which link the packets of the data flow are forwarded; we call this link the "downstream" link. Further, the GaNAT checks how the headers of the data flow (IPaddresses, sourceaddresses and portnumber, etc)numbers) are translated according to this NAT binding. + If no matching entry is found, the GaNAT determines, based on its routing table, the link on which packets that match GQ.MRI (excluding GQ.MRI.SourceIPAddress) would be forwarded. We call this link the "downstream" link. Then, the GaNAT acquires an IP address and source port for itself on the downstream link. (This address and port could be dynamic or static.) 4. We denote [IP header].SourceIPAddress used on the downstream link as IPGaNATds, and the source port number for the data and signalling traffic as SPNDTGaNATds and SPNSTGaNATds respectively. 5. It creates a newGIMPSGIST QUERY packet GQ', asfollows (note that the new packet contains the same MRI as GQ).follows. 1. GQ' <- GQ 2. GQ'.MRI.SourceAddress <- IPGaNATds. 3. GQ'.MRI.SourcePort <- SPNDTGaNATds. 4. GQ'.NLI.IA.<- IPGaNATds. 5. GQ'.[IP header].SourceIPAddress <- IPGaNATds.3. GQ'.[UDP].SourcePort6. GQ'.[UDP header].SourcePort <- SPNSTGaNATds.4.7. GQ'.S <-true 5.true. 8. It checks whether or notaan NTOiswas included intheGQ. - If noneiswas included, itaddscreates a newoneNTO as follows and adds it toGQ' such that GQ'.NTO=[ IPGaNATds || SPNDTGaNATds]GQ'. o NTO.[NAT Count] <- 1. o NTO.MRI <- GQ.MRI. o NTO.[List of translated objects] <- [type of MRI], [type of NLI], [type of SCD] o NTO.opaque information for NAT 1 <- GQ.[IP header].SourceAddress, [link identifier of upstream link]. - If oneiswas included, it replacesit as GQ'.NTO=[ IPGaNATds || SPNDTGaNATds] 6. It remembers GQ, GQ'certain fields and appends new fields into thefact that they are associated,NTO, as follows, and adds theassociatedresulting object to GQ'. o NTO.[NAT Count] <- i, where i is the current [NAT count] value increased by one. o NTO.[List of translated objects] <- [type of MRI], [type of NLI], [type of STD] o NTO.[opaque information replaced by NAT i] <- GQ.[IP header].SourceAddress, [LinkID of upstreamand downstream links. 7.link]. 9. It forwards GQ' on the downstream link. Note: The encoding of the information that the GaNAT encodes into the NTO.[opaque information replaced by NAT i] field is a local implementation issue. 2. Otherwise, if P carriesaan [IP header].DestinationIPAddress that belongs to the GaNAT, and if it is identified as aGIMPS responseGIST RESPONSE packet inD-modedatagram mode with an NSLP ID that is not supported, the GaNAT does the following (P is denoted as GR). 1.It searches for a matching GQ' in its buffer. A GQ' is said to be matching if it carries the same cookie value.Ifnone is found, GR is discarded.P does not contain an NTO, the GaNAT forwards it as usual without further processing. Otherwise, the GaNATshould also make sure thatselects thesession IDinformation encoded by it inGR isthesame as in GQ' and that[opaque information replaced by NAT] field of theNSLP IDs match.embedded NTO, denoted by IPAddressToSend and LinkID. Ifthese consistency checks fail, GR should be discarded. Otherwise,multiple [opaque information replaced by NAT] fields are present in the NTO, the GaNAT uses the last one in the list. It then constructs a newGIMPSGIST response GR', as follows (note that no changes are made to the MRI). 1. GR' <- GR 2. GR'.[IPheader].SourceIPAddressheader].DestinationIPAddress <-IPGaNATus, where IPGaNATus = GQ.[IP header].DestinationIPAddress.IPAddressToSend. 3.GR'.[IP header].DestinationIPAddressGR'.NTO.[NAT Count] <-GQ.NLI.IAcurrent value minus one. 4.GP'.SRemove the last [opaque information replaces by NAT i] field from GR'.NTO 5. GR'.S <- true.5.2. Itchecks whether or not a NTO is includedforwards GR' on the upstream link, i.e. the link identified by LinkID. 3. The GaNAT SHOULD now invalidate all but one stack configuration objects in theGQ. - If nonestack proposal in GR'. This isincluded, it adds a new one to GQ' suchdone so that the quering node can only chose thatGQ'.NTO=[ IPGaNATus || PNGaNATus] - Ifoneis included, it replaces it suchproposal, and thatGQ'.NTO=[ IPGaNATus || PNGaNATus] 6. It remembers GQ, GQ'therefore only one NAT binding must be installed for thefactsignalling traffic to traverse the GaNAT. The GaNAT SHOULD keep valid the strongest, in terms of security, stack proposal. We denote this proposal as PR. 4. The GaNAT now installs a NAT binding for the signalling traffic which says thatthey are associated, and"a packet K that arrives on theassociatedupstream link anddownstream links. 7. It forwards GQ'for which it holds that + K.[IP header].SourceIPAddress=IPAddressToSend, + K.[IP header].Protocol=PR.Protocol, and + K.[TCP/UDP header].DestinationPort=PR.[Destination Port] should be forwarded on the downstreamlink. 2. It forwards GR'link (i.e. on theupstream link. 3.link on which GR arrived), with [IP header].SourceIPAddress = IPGaNATds. 5. If no NAT binding for the data traffic was found in step 1.3.2, the GaNAT now installs a NAT binding (for the unidirectional data traffic) which says that "a packet K that arrives on the upstream link and for which it holds that + K.[IPheader].DestinationIPAddress=GQ.MRI.DestinationIPAddress,header].DestinationIPAddress=GQ'.NTO.MRI.Destination IPAddress, + K.[IPheader].Protocol=GQ.MRI.Protocol,header].Protocol=GQ'.NTO.MRI.Protocol, and + K.[TCP/UDPheader].PortNumbers=GQ.MRI.PortNumbersheader].PortNumbers=GQ'.NTO.MRI.PortNumbers should be forwarded on theupstream link,downstream link (i.e. the link on which GR arrived), with [IP header].SourceIPAddress =IPGaNATus.IPGaNATds and [UDP/TCP header].SourcePort=SPDTGaNATds. Issues: there is a question of whether this NAT binding should also enable data traffic in the opposite direction to traverse the NAT; in order to be able to demultiplex upstream traffic that carries data that belongs to different flows, the GaNAT should keep the necessary per-flow state. From a signalling point of view, however, upstream data traffic that corresponds (on the application level) to the downstream flow to which thisGIMPSGIST session refers, is a separate flow for which, dependent on the application, there may or there may not exist a signalling session. If such a signalling session exists, then the GaNAT acts as an NR-side GaNAT for this session. Thus, during the processing of thissignallingsignalling, care has to be taken not to establish a NAT binding for a flow for which a NAT binding already exists. Finally, security issues may arise when traffic, for which no signalling exists, is allowed to traverse a GaNAT. 3. Otherwise, if Pcarries a [IP header].DestinationIPAddress that belongs to the GaNAT, and if it is identified as a GIMPS CONFIRM in D-mode with an NSLP ID that is not supported, the GaNAT does the following (P is denoted as GC). 1. It creates a new GIMPS CONFIRM packet GC', as follows (note that the variables below refer to the variables that were used in the translation of the GIMPS QUERY that corresponds to GC. 1. GC' <- GC 2. GC'.[IP header].SourceIPAddress <- IPGaNATds. 3. GC'.NLI.IA <- IPGaNATds 4. GC'.S <- true 5. It checks whether or not a NTO is included in the GC. - If none is included, it adds a new one to GC' such that GC'.NTO=[ IPGaNATds || SPNDTGaNATds] - If one is included, it replaces it as GC'.NTO=[ IPGaNATds || SPNDTGaNATds] 6. It forwards GC' on the downstream link. 4. Otherwise, if Pmatches an existing NAT binding, normal NAT processing is applied.5.4. Otherwise, P is silently discarded.6.1.26.2. NR-side NSLP-unaware GaNATs As is the case with NR-side NSLP-unaware GaNATswithout security,that follow the "transparent" approach, an NR-side NSLP-unaware GaNAT that follows the "non-transparent" approach must know a "pending" IPaddress,address and, depending on the scenario, also a destination port number, as described in Section5.1.2.5.2. This IP addressisand destination port number are denoted asIPNext.IPNext and PortNext respectively. How they are made known to the GaNAT is outside the scope of this document. Note, however, that a typical scenario would be that the GaNAT has an existing NAT binding for the data flow in place from where this information can be derived. For every arriving IP packet P, an NSLP-unaware, NR-side GaNAT executes the following algorithm. 1. If P has a RAO followed bythe GIMPSa GIST header with an unsupported NSLPID,itand is identified as aGIMPS QUERY. In this caseGIST QUERY, the GaNAT does the following. 1. We denote P as GQ. The GaNAT looks at the stack proposal ST in GQ. If it indicates that no cryptographic protection is required, thealgorithm that is executed isGaNAT MAY choose to follow theone"transparent" approach as described in Section5.1.25.2 above. 2.The GaNAT remembers GQ along withIf GQ.[IP header].[Destination Address] is not bound to the link on whichit arrived. We call this linkGQ arrived, the"upstream" link.GaNAT silently discards the packet. 3. The GaNAT determines whether or not thisGIMPSGIST QUERY is anticipated, i.e. if a pending IPNext and PortNext exists. One way of determining whether or not a pending IPNext and PortNext exists is checking whether or not a NAT binding for the data traffic, as this is defined by the MRI in the GIST QUERY, exists in the NAT binding cache. If one exists, then IPNext and PortNext is the address and port number to which the data traffic is sent after translation. If no pending IPNext ispending,found, GQ is discarded (it isa questionan open issue whether or not an error message should be sent). Otherwise, additional checks may be performed (e.g. a DSInfo object may have to be checked against the GQ). If these checks fail, GQ is discarded. Otherwise, the GaNAT performs the following. 4.ItWe call the link on which GQ arrived the "upstream" link. The GaNAT aquires an IP address for itself for the upstream link (this could be a static or a dynamic IP address). This address is denoted IPGaNATus. The GaNAT will use this address as a source IP address in order to send subsequent signalling messages to the upstream direction. If the GaNAT is an edge NAT, IPGaNATus will typically coincide with the destination IP address of the (original) MRI in the GIST QUERY. 5. The GaNAT searches its table of existing NAT bindings against entries that match the GQ.MRI. A matching entry means that the data flow, to which the signalling refers, already exists. + If a matching entry is found, the GaNATlooks at whichdetermines the link on which the packets of the data flow are forwarded; we call this link the "downstream" link. Further, the GaNAT checks how the headers of the data flow (IP addresses, portnumbers, etc)numbers) are translated according to this NAT binding.We denote [IP header].SourceIPAddress used on the downstream link as IPGaNATds, and the port numbers as PNGaNATds.Note that the [IP header].DestinationIPAddress of this NAT binding should be equal to IPNext. If it is not, this should be handled as an auditive error condition. (This check is done as a consistency check.) + If no matching entry is found, the GaNAT determines, based on its routing table, the link on which packets that match GQ.MRI(excluding GQ.MRI.SourceIPAddress and where(where GQ.MRI.DestinationIPAddress is replaced with IPNext) would be forwarded. We call this link the "downstream" link.Then, the GaNAT acquires an IP address for itself on the downstream link. (This address could be dynamic or static.) Depending on its type, the GaNAT may also acquire (UDP) port numbers for the translation of GQ. We denote the acquired IP address as IPGaNATds and the associated port numbers as PNGaNATds. 5.6. It creates a newGIMPSGIST QUERY packet GQ', asfollows (note that the new packet contains the same MRI as GQ).follows. 1. GQ' <- GQ 2.GQ'.[IP header].SourceIPAddressGQ'.MRI.DestinationAddress <-IPGaNATds.IPNext. 3.GQ'.SGQ'.MRI.DestinationPort <-truePortNext. 4. GQ'.[IP header].DestinationIPAddress <- IPNext. 5. It checks whether or notaan NTOiswas included intheGQ. - If noneiswas included, itaddscreates a newoneNTO as follows and adds it toGQ' such that GQ'.NTO=[ IPGaNATds || SPNDTGaNATds]GQ'. o NTO.[NAT Count] <- 1. o NTO.MRI <- GQ.MRI. o NTO.[List of translated objects] <- [type of MRI], [type of NLI], [type of SCD] o NTO.opaque information for NAT 1 <- IPGaNATus, [link identifier of upstream link]. - If oneiswas included, it replacesit as GQ'.NTO=[ IPGaNATds || SPNDTGaNATds] 5. It remembers GQ, GQ'certain fields and appends new fields into thefact that they are associated,NTO, as follows, and adds theassociatedresulting object to GQ'. o NTO.[NAT Count] <- i, where i is the current [NAT count] value increased by one. o NTO.[List of translated objects] <- [type of MRI], [type of NLI], [type of SCD] o NTO.[opaque information replaced by NAT i] <- IPGaNATus, [LinkID of upstreamand downstream links.link]. 6. It forwards GQ' on the downstream link. Note: Theremaining steps of the algorithm are analogous to the algorithm of NSLP-unaware, NI-side GaNATs, which was described in the previous section. 6.1.3 Additional GIMPS peer processing In the presenceencoding ofGaNATs onthesignalling path between two NSLP peers, and if cryptographic protection of the signalling traffic between these two peers is required,information that thetranslation ofGaNAT encodes into theGIMPS header fields that need to be translated for consistency, must be carried outNTO.[opaque information replaced bythe X peers. The GIMPS processing that performs this task,NAT i] field isdescribed next. Note that this processinga local implementation issue. 2. Otherwise, if P isin addition to the processing described in [1] and that we assume that the in- between GaNATs adopt the behaviour described in the two preceding sections. A GIMPS peer that receivesidentified as aGIMPSGIST RESPONSE packetthat carries (a) an NSLPID for a supported NSLP, and (b) an NTOinits header, executes the following algorithm, beforedatagram mode with an NSLP ID that is not supported, theprocessing described in [1] takes place. 1. IfGaNAT does thepacketfollowing (P isa GIMPS QUERY or CONFIRM in D-mode, denoted G, the peer constructs a new packet,denotedG',asfollows.GR). 1.G' <- G 2. G'.MRI.Source_IP_Address <- G.NTO.IPGaNATds 3. G'.MRI.SourcePort <- G.NTO.SPNDTGaNATds 4. G'.NLI.IA <- G.NTO.IPGaNATds 5. G'.NTO is removed. and forwards G' to GIMPS for further processing.IfG is a GIMPS QUERY and local policy demandsP does not contain an NTO, theinstallation of stateGaNAT forwards it as usual without further processing. Otherwise, thereception of a GIMPS CONFIRM message, then the peer must storeGaNAT selects theNTO carriedinformation encoded byG together withit in therouting state[opaque informationabout the sending GIMPS peer. If G is a GIMPS CONFIRM and local policy demands the installation of state only after receptionreplaced by NAT] field ofa valid CONFIRM, thenthepeer stores, after validating the cookie in the CONFIRM, the NTO carriedembedded NTO, denoted byG together with the routing stateIPGaNATus and LinkID. If multiple [opaque informationaboutreplaced by NAT] fields are present in thesending GIMPS peer. 2. Otherwise, ifNTO, thepacket is a GIMPS RESPONSEGaNAT uses the last one inD-mode, denoted GR,thepeerlist. The GaNAT then constructs a newpacket, denotedGIST response GR', asfollows.follows (note that no changes are made to the MRI). 1. GR' <-GGR 2.GR'.MRI.Source_IP_AddressGR'.[IP header].SourceIPAddress <-GR.NTO.IPGaNATusIPGaNATus. 3.GR'.MRI.SourcePortGR'.MRI.NLI.IA <-GR.NTO.PNGaNATusIPGaNATus. 4.GR'.NLI.IA <- GR.NTO.IPGaNATusRemove the last [opaque information replaced by NAT i] field from GR'.NTO. 5.GR'.NTOGR'.S <- true. 2. The GaNAT SHOULD now invalidate all but one stack configuration objects in the stack proposal in GR'. This isremoved.done so that the quering node can only chose that one proposal, andforwards GR' to GIMPSthat therefore only one NAT binding must be installed forfurther processing. Ifthecookie in GR' is verified sucessfully,signalling traffic to traverse thepeer storesGaNAT. The GaNAT SHOULD keep valid theNTO carriedstrongest, in terms of security, stack proposal. We denote this proposal as PR. If PR.[Destination Port] is already used byGR together with the routing state information aboutthesending GIMPS peer. A peer that receivesGaNAT as aGIMPS packet P (in this case,port in order to demultiplex an existing signalling flow, thepacketGaNAT reserves a port SIGPORT (that it willbeuse as acryptographically protected GIMPS packet) the peer does the following substitutions aftersource port for UDP/TCP signalling traffic that it will send on thecryptographic processing is (successfully) completedupstream link) andbefore the processing described in [1] takes place. 1. P.MRI.SourceIPAddress <- P.NTO.IPGaNATds 2. P.MRI.SourcePortreplaces PR.[Destination Port] with SIGPORT. Otherwise it sets SIGPORT=PR.[Destination Port]. It then sets GR'.[UDP header].SourcePort <-P.NTO.SPNDTGaNATdsSIGPORT. 3.P.NLI.IA <- P.NTO.IPGaNATdsIt forwards GR' on the upstream link, i.e. the link identified by LinkID. 4.P.NTO is removed. A peer that intends to sendThe GaNAT now installs aGIMPSNAT binding for the signalling traffic which says that "a packet(in this case, cryptographic protection willK that arrives on the upstream link and for which it holds that + K.[IP header].DestinationIPAddress=IPGaNATus, + K.[IP header].Protocol=PR.Protocol, and + K.[TCP/UDP header].DestinationPort=SIGPORT should berequiredforwarded on the downstream link (i.e. on the link on which GR arrived), with [IP header].DestinationIPAddress = GR.MRI.NLI.IA and [UDP/TCP header].DestinationPort=PR.[Destination Port]. 5. If no NAT binding for thepacket),data traffic was found in step 1.3.2, thepeer doesGaNAT may now install a NAT binding (for thefollowing afterunidirectional data traffic) which says that "a packet L that arrives on theprocessing described in [1]upstream link andbeforefor which it holds that + L.[IP header].DestinationIPAddress=GR'.NTO.MRI.Destination IPAddress, + L.[IP header].Protocol=GR'.NTO.MRI.Protocol, and + L.[TCP/UDP header].DestinationPortNumbers=GR'.NTO.MRI.DestinationPort should be forwarded on thepacketdownstream link, with [IP header].DestinationIPAddress = IPNext and [UDP/TCP header].DestinationPort=PortNext. Issues: there ispasseda question of whether this NAT binding should also enable data traffic in the opposite direction to traverse theprocessNAT; in order to be able to multiplex upstream traffic thatapplies the cryptographic protection. Notecarries data thatthe NTO refersbelongs to different flows, theNTO that is stored together withGaNAT should keep therouting state informationnecessary per-flow state. From a signalling point ofthe peerview, however, upstream data traffic thatiscorresponds (on the application level) toreceivethepacket. 1. P.MRI.Source_IP_Address <- NTO.IPGaNATds 2. P.MRI.SourcePort <- NTO.PNGaNATds 3. P.NLI.IA <- NTO.IPGaNATds 6.2 NSLP-aware GaNATs The cryptographic protection appliesdownstream flow toofwhich this GIST session refers, is a separate flow for which, dependent on the application, there may or there may not exist a signallingmessages terminates at NSLP-aware GaNATs. The processing performed bysession. If suchGaNATsa signalling session exists, then the GaNAT acts as an NI-side GaNAT for this session. Thus, during the processing of this signalling care has to be taken not to establish a NAT binding for a flow for which a NAT binding already exists. Finally, security issues may arise when traffic, for which no signalling exists, istherefore identicalallowed tothetraverse a GaNAT. 3. Otherwise, if P matches an existing NAT binding, normal NAT processingdescribed in Section 5.2, with the exception thatis applied. 4. Otherwise, P is silently discarded. 6.3. GIST peer processing In the presence of GaNATsadditionally perform cryptographic operations. In this case, there is no requirement foron the signalling path between two NSLP peers, and if the GaNATs follow the "non-transparent" approach (which they have toperform anyfollow in the context of cryptographically protected signalling), the consistent translationforof thepurposesGIST header fields must be carried out by the NSLP peers. The GIST processing that performs this task, is described in section 7.2 ofNAT traversal.[1]. 7.NSIS-unawareGIST-unaware NATs The following may serve as indications for the existence of anNSIS-GIST- unaware NAT between twoGIMPSGIST peers. These indications can only be detected by the receiver of aGIMPSGIST message. The first occasion these indications may be detected is with the reception of aGIMPSGIST QUERY, typically by the downstream peer. (Note that != denotes inequality). o The MRI.SourceIPAddress does not belong to the addressing space of the receiving peer. o The MRI.DestinationIPAddress does not belong to the addressing space of the receiving peer. o The IP address in the NLI.IAobjectfield does not belong to the addressing space of the receiving peer. o The D flag of a receivedGIMPSGIST packet denotes downstream direction and the S flag is not set and [IP header].SourceIPAddress != MRI.SourceIPAddress. o The D flag of a receivedGIMPSGIST packet denotes upstream direction and the S flag is not set and [IP header].SourceIPAddress != MRI.DestinationIPAddress. o This is aGIMPSGIST QUERY and [IP header].DestinationIPAddress != MRI.DestinationIPAddress. Note that these are only indications. In the presence of an adversary, aGIMPSGIST peer may be tricked into believing that anNSIS-GIST- unaware NAT exists between itself and one of its neighbouring peers, while in reality this may not be the case. When a downstreamGIMPSGIST peer detects such an indication, it may notify the upstream peer about the error. It may include additional information that enables the upstream peer to construct aGIMPSGIST packet in such a way that, after it traverses theNSIS-unawareGIST-unaware NAT, the IP addresses in the MRI field and the NLI.IAobjectfield are consistent with those in the IP header (which match the addressing space of the receiving peer). However, this requires the specification of new data structures and formats, processing rules, and requires the peers to maintain additional state. Unfortunately, this approach is likely to fail in many circumstances. In order to see this, consider the behaviour of anNSIS-unawareGIST-unaware NAT when it receives an IP packet. The packet either 1. matches an existing NAT binding in which case its IP header is translated and the packet it is forwarded on another link, or 2. matches an existing policy rule which causes a new binding to be established and then (1) happens, or 3. is discarded because neither (1) nor (2) applies. WithNSIS-unawareGIST-unaware NATs it is a matter of local policy (i.e. the rules that exist in case (2) above) whether or not traffic will be allowed to traverse the NAT. This obviously applies to both signalling and data traffic, as anNSIS-unawareGIST-unaware NAT is unable to distinguish the two types of traffic. It may be the case thatGIMPSGIST node A is unable to contactGIMPSGIST node B which is "behind" a NAT, even if communication in from B to A may be possible because such communication would match a policy rule; typically, in a scenarios where A is towards the NI and B is towards the NR, the NAT would have this behaviour. Another approach to deal withNSIS-unawareGIST-unaware NATs is similar to the NAT traversal approach taken by IKEv2, i.e. by encapsulatingGIMPSGIST messages into UDP datagrams, rather than directly into IP datagrams. This technique requires the inclusion of additional fields into aGIMPSGIST QUERY, as follows. The sender adds (a hash of) its own IP address and the IP address of what it believes to be the DR into theGIMPSGIST payload. The receiver of thisGIMPSGIST messages compares these addresses to the [IP header].SourceIPAddress and the [IP header].DestinationIPAddress respectively. If at least one of them is unequal, the receiver deduces that a NAT is between sender and receiver. After the detection of a NAT, the remainder of the communication is encapsulated into UDP datagrams that are addressed to a specified port. Unfortunately, the IKEv2 NAT traversal mechanism cannot be used "as is" for NAT traversal inGIMPS.GIST. This is because of a number of reasons, including the following. o The NAT may use an IP address for the forwarding of data traffic that is different from the IP address it uses to forwardGIMPSGIST traffic. Since the NAT isNSIS-unawareGIST-unaware it cannot update the MRI in theGIMPSGIST messages such that it matches the translation applies to the data traffic. Moreover, neither theGIMPSGIST sending, nor theGIMPSGIST receiving peer can perform this update; the sending peer cannot predict the translation that the NAT will apply, and the receiving peer does not have enough information to associate data flows to signalling messages. o It is unclear whether or not the IKEv2 NAT traversal mechanism supports cascades of NATs. o It seems to be inappropriate to use UDP encapsulation for certain C-mode scenarios. For example, using UDP encapsulation for TCP C-mode would result inGIMPSGIST to appear in TCP over UDP over IP. 8. Security Considerations The mechanisms proposed in this document give rise to a number of threats that must be considered. In the following, a subset of these threats is mentioned.8.18.1. Service Denial Attacks As describedin Section 5.1 and Section 6.1,above, NSLP-unaware GaNATs create some state whenever they receive aGIMPSGIST QUERY message. This state is necessary in order for the GaNAT to be able to map aGIMPSGIST RESPONSE that arrives from the downstream direction to the correspondingGIMPSGIST QUERY and thereby to perform the required translation. The threat here is an attacker flooding the GaNAT with maliciously constructedGIMPSGIST QUERIES with the aim of exhausting the GaNAT's memory. The attacker might use a variety of methods to construct suchGIMPSGIST QUERIES, including the following. 1. Use as [IP header].SourceIPAddress the address of some other node or an unallocated IP address. This method is also known as IP spoofing. 2. Use an invalid NSLPID, in order to make sure that all on-path GaNAT(s) will behave like NSLP-unaware GaNATs. 3. For each packet, use a different value for the cookie field. 4. For each packet, use a different value for the session ID field. 5. Combinations of the above. How vulnerable a GaNAT is to the above service denial attack depends on a variaty of factors, including the following. o The amount of state allocated at the receipt of aGIMPSGIST QUERY. This amount may vary depending on whether or not the data flow to which the signalling refers, already exists (i.e. whether or not the GaNAT already maintains a NAT binding for it). o The mechanism that the GaNAT uses to map RESPONSEs to QUERIEs. o Whether or not the GaNAT acriques dynamic IP addresses and ports for the downstream link. In order to decrease the exposure of a GaNAT to service denial attacks, the following recommendations are made. o The GaNAT should perform ingress filtering. This limits the amount of locations from which an attacker can perform IP spoofing without being detected. o The GaNAT should allocate the minimum amount of state required at the reception of aGIMPSGIST QUERY. o All state allocated by the GaNAT should timeout according to a local policy. If the GaNAT detects heavy loads (which may indicate a service denial attack in progress), the GaNAT should timeout the state allocated as a result of a receivedGIMPSGIST QUERY quicker, proportionally to the experienced load. o The installation of a NAT binding for the data traffic (if such a binding does not exist prior to signalling) should be postponed until the correctGIMPSGIST REPONSE traverses the NAT. The service denial threats mentioned in this section do not apply to an NSLP-aware GaNAT, as such a GaNAT is required, in accordance with its local policy, to verify the validity of the cookie(s) before allocating any state, including the state required by the mechanisms in this document.8.28.2. Network Intrusions Although the primary goal of a NAT is to perform address translation between two addressing spaces, NATs are sometimes also used to provide a security service similar to the security service provided by firewalls. That is, a NAT can be configured so that it does not forward packets from the external into the internal network, unless it determines that the packets belong to a communication session that was originally initiated from an internal node and are, as such, solicited. If an NSLP-unaware GaNAT performs the above security-relevant function in addition to address translation, then the presence ofGIMPSGIST signalling and, in particular the mechanisms described in this document, might allow an adversary cause the installation of NAT bindings in the GaNAT using these mechansisms. These NAT bindings would then enable the adversary to inject unsolicited traffic into the internal network, a capability that it may not have in the absence of the mechanisms described in this document. The administrator of an NSLP-unaware GaNAT should therefore make security-concious decisions regarding the operation of the GaNAT. An NSLP-aware GaNAT, on the other hand, follows an NSLP policy which indicates the required security mechanisms. This policy should account for the fact that this NSLP-aware node performs also NAT and the associated packet filtering. 9.AcknowledgmentsIAB Considerations None. 10. Acknowledgements The authors would like to thank Cedric Aoun, Christian Dickmann, Robert Hancock,Cedric Aounand Martin Stiemerling for theirfeedback.insightful comments. Furthermore, we would like to mention that this document builds on top of a previous document regarding migration scenarios.10. IAB Considerations [Editor's Note: A future version of this document will provide information regarding IAB considerations.11.IANA Considerations This document does not require actions by the IANA. 12.Normative References [1] Schulzrinne, H. and R.Handcock, "GIMPS:Hancock, "GIST: General InternetMessaging Protocol for Signalling",Signalling Transport", draft-ietf-nsis-ntlp-06 (work in progress), May 2005. [2] Stiemerling, M., Tschofenig, H., and C. Aoun, "NAT/Firewall NSIS Signaling Layer Protocol (NSLP)", draft-ietf-nsis-nslp-natfw-06 (work in progress), May 2005. Authors' Addresses Andreas Pashalidis Siemens Otto-Hahn-Ring 6 Munich, Bavaria 81739 Germany Email: Andreas.Pashalidis@siemens.com Hannes Tschofenig Siemens Otto-Hahn-Ring 6 Munich, Bavaria 81739 Germany Email: Hannes.Tschofenig@siemens.com Intellectual Property Statement The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Disclaimer of Validity This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Copyright Statement Copyright (C) The Internet Society (2005). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society.