draft-ietf-radext-dynamic-discovery-01.txt | draft-ietf-radext-dynamic-discovery-02.txt | |||
---|---|---|---|---|
RADIUS Extensions Working Group S. Winter | RADIUS Extensions Working Group S. Winter | |||
Internet-Draft RESTENA | Internet-Draft RESTENA | |||
Intended status: Experimental M. McCauley | Intended status: Experimental M. McCauley | |||
Expires: January 14, 2010 OSC | Expires: September 6, 2010 OSC | |||
July 13, 2009 | March 05, 2010 | |||
NAI-based Dynamic Peer Discovery for RADIUS over TLS and DTLS | NAI-based Dynamic Peer Discovery for RADIUS over TLS and DTLS | |||
draft-ietf-radext-dynamic-discovery-01 | draft-ietf-radext-dynamic-discovery-02 | |||
Abstract | ||||
This document specifies a means to find authoritative AAA servers for | ||||
a given NAI realm. It can be used in conjunction with RADIUS over | ||||
TLS and RADIUS over DTLS. | ||||
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 to IETF in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 1, line 33 | skipping to change at page 1, line 39 | |||
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 | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on January 14, 2010. | This Internet-Draft will expire on September 6, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2009 IETF Trust and the persons identified as the | Copyright (c) 2010 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents in effect on the date of | Provisions Relating to IETF Documents | |||
publication of this document (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | ||||
Abstract | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | ||||
This document specifies a means to find authoritative AAA servers for | described in the Simplified BSD License. | |||
a given NAI realm as defined in [RFC4282]. It can be used in | ||||
conjunction with RADIUS over TLS and RADIUS over DTLS. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. DNS-based NAPTR/SRV Peer Discovery . . . . . . . . . . . . . . 3 | 2. DNS-based NAPTR/SRV Peer Discovery . . . . . . . . . . . . . . 3 | |||
2.1. Applicability . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Applicability . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.2. DNS RR definition . . . . . . . . . . . . . . . . . . . . . 3 | 2.2. DNS RR definition . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.3. Realm to AAA server resolution algorithm . . . . . . . . . 5 | 2.3. Realm to AAA server resolution algorithm . . . . . . . . . 5 | |||
3. Security Considerations . . . . . . . . . . . . . . . . . . . . 7 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . . 7 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 7 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. Normative References . . . . . . . . . . . . . . . . . . . . . 8 | 5. Normative References . . . . . . . . . . . . . . . . . . . . . 8 | |||
1. Introduction | 1. Introduction | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
In this document, several words are used to signify the requirements | In this document, several words are used to signify the requirements | |||
of the specification. The key words "MUST", "MUST NOT", "REQUIRED", | of the specification. The key words "MUST", "MUST NOT", "REQUIRED", | |||
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | |||
and "OPTIONAL" in this document are to be interpreted as described in | and "OPTIONAL" in this document are to be interpreted as described in | |||
RFC 2119. [RFC2119] | RFC 2119. [RFC2119] | |||
1.2. Terminology | 1.2. Terminology | |||
RadSec node: a RadSec client or server | RADIUS/TLS Client: a RADIUS/TLS [I-D.ietf-radext-radsec] instance | |||
which initiates a new connection. | ||||
RadSec Client: a RadSec instance which initiates a new connection. | RADIUS/TLS Server: a RADIUS/TLS [I-D.ietf-radext-radsec] instance | |||
which listens on a RADIUS/TLS port and accepts new connections | ||||
RadSec Server: a RadSec instance which listens on a RadSec port and | RADIUS/TLS node: a RADIUS/TLS client or server | |||
accepts new connections | ||||
2. DNS-based NAPTR/SRV Peer Discovery | 2. DNS-based NAPTR/SRV Peer Discovery | |||
2.1. Applicability | 2.1. Applicability | |||
Dynamic server discovery as defined in this document is only | Dynamic server discovery as defined in this document is only | |||
applicable for AAA transactions where a AAA server receives a request | applicable for AAA transactions where a AAA server receives a request | |||
with a NAI realm for which no home AAA server is known. I.e. where | with a NAI realm for which no home AAA server is known. I.e. where | |||
static server configuration does not contain a known home | static server configuration does not contain a known home | |||
authentication server, or where the server configuration explicitly | authentication server, or where the server configuration explicitly | |||
states that the realm destination is to be looked up dynamically. | states that the realm destination is to be looked up dynamically. | |||
Furthermore, it is only applicable for new user sessions, i.e. for | Furthermore, it is only applicable for new user sessions, i.e. for | |||
the initial Access-Request. Subsequent messages concerning this | the initial Access-Request. Subsequent messages concerning this | |||
session, for example Access-Challenges, Access-Accepts, Accounting | session, for example Access-Challenges, Access-Accepts, Accounting | |||
Messages or Change-of-Authorisation messages use the previously- | Messages or Change-of-Authorisation messages use the previously- | |||
established communication channel between client and server. | established communication channel between client and server. | |||
2.2. DNS RR definition | 2.2. DNS RR definition | |||
DNS definitions of RadSec servers can be either NAPTR records or SRV | DNS definitions of RADIUS/TLS servers can be either S-NAPTR records | |||
records. When both are defined, the resolution algorithm prefers | (see [RFC3958]) or SRV records. When both are defined, the | |||
NAPTR results (see section Section 2.3 below). The NAPTR service | resolution algorithm prefers S-NAPTR results (see section Section 2.3 | |||
field used is "AAAS+RADSECT". The SRV prefix used is "_radsec._tcp". | below). | |||
It is expected that in most cases, the label used for the records is | ||||
the DNS representation (punycode) of the literal realm name for which | This specification defines two S-NAPTR service tag: a general-purpose | |||
the server is the AAA server. | tag "nai-roaming" and a special-purpose tag "eduroam" for the eduroam | |||
roaming consortium. This specification defines two S-NAPTR protocol | ||||
tags: "radius.tls" for RADIUS over TLS [I-D.ietf-radext-radsec] and | ||||
"radius.dtls" for RADIUS over DTLS [I-D.dekok-radext-dtls]. | ||||
This specification defines the SRV prefix "_radiustls._tcp" for | ||||
RADIUS over TLS [I-D.ietf-radext-radsec] and "_radiustls._udp" for | ||||
RADIUS over DTLS [I-D.dekok-radext-dtls]. It is expected that in | ||||
most cases, the label used for the records is the DNS representation | ||||
(punycode) of the literal realm name for which the server is the AAA | ||||
server. | ||||
However, arbitrary other labels may be used if, for example, a | However, arbitrary other labels may be used if, for example, a | |||
roaming consortium uses realm names which are not associated to DNS | roaming consortium uses realm names which are not associated to DNS | |||
names or special-purpose consortia where a globally valid discovery | names or special-purpose consortia where a globally valid discovery | |||
is not a use case. Such other labels require a consortium-wide | is not a use case. Such other labels require a consortium-wide | |||
agreement about the transformation from realm name to lookup label. | agreement about the transformation from realm name to lookup label. | |||
Examples: | Examples: | |||
a. A general-purpose AAA server for realm example.com might have DNS | a. A general-purpose AAA server for realm example.com might have DNS | |||
entries as follows: | entries as follows: | |||
example.com. IN NAPTR 50 50 "s" "AAAS+RADSECT" "" | example.com. IN NAPTR 50 50 "s" "nai-roaming:radius.tls" "" | |||
_radsec._tcp.foobar.example.com. | _radiustls._tcp.foobar.example.com. | |||
_radsec._tcp.example.com. IN SRV 0 10 2083 | _radiustls._tcp.example.com. IN SRV 0 10 2083 | |||
radsec.example.com. | radsec.example.com. | |||
b. Consortium "foo" provides roaming services for banks. The realms | b. The consortium "foo" provides roaming services for its members | |||
used are of the form enterprise-name.foobankroam. The consortium | only. The realms used are of the form enterprise-name.example. | |||
operates a special purpose DNS server for the (private) TLD | The consortium operates a special purpose DNS server for the | |||
"foobankroam" which all AAA servers use to resolve realm names. | (private) TLD "example" which all AAA servers use to resolve | |||
"Rupt, Inc." is part of the consortium. On the consortium's DNS | realm names. "Bad, Inc." is part of the consortium. On the | |||
server, realm bank-rupt.foobankroam might have the following DNS | consortium's DNS server, realm bad.example might have the | |||
entries: | following DNS entries: | |||
bank-rupt.foobankroam IN NAPTR 50 50 "a" "AAAS+RADSECT" "" | ||||
"triple-a.bank-rupt.com" | ||||
_radsec._tcp.bank-rupt.foobankroam IN SRV 0 10 2083 triple-a- | bad.example IN NAPTR 50 50 "a" "nai-roaming:radius.dtls" "" | |||
backup.bank-rupt.com" | "very.bad.example" | |||
c. the eduroam consortium uses realms based on DNS, but provides its | c. the eduroam consortium uses realms based on DNS, but provides its | |||
services to a closed community only. However, a AAA domain | services to a closed community only. However, a AAA domain | |||
participating in eduroam may also want to expose AAA services to | participating in eduroam may also want to expose AAA services to | |||
other, general-purpose, applications (on the same or other AAA | other, general-purpose, applications (on the same or other AAA | |||
servers). Due to that, the eduroam consortium uses labels | servers). Due to that, the eduroam consortium uses the service | |||
prefixed with "eduroam." and eduroam AAA servers use these labels | tag "eduroam" and eduroam AAA servers use this tag to look up | |||
to look up servers. An eduroam participant which also provides | other eduroam servers. An eduroam participant example.org which | |||
general-purpose AAA on a different server might have the | also provides general-purpose AAA on a different server uses the | |||
following DNS entries: | general "nai-roaming" tag: | |||
eduroam.restena.lu. IN NAPTR 50 50 "a" "AAAS+RADSECT" "" aaa- | example.org. IN NAPTR 50 50 "s" "eduroam:radius.tls" "" | |||
eduroam.restena.lu | _radiustls._tcp.eduroam.example.org. | |||
restena.lu. IN NAPTR 50 50 "a" "AAAS+RADSECT" "" aaa- | example.org. IN NAPTR 50 50 "s" "nai-roaming:radius.tls" "" | |||
default.restena.lu | _radiustls._tcp.aaa.example.org | |||
_radsec._tcp.eduroam.restena.lu. IN SRV 0 10 2083 aaa- | _radiustls._tcp.eduroam.example.org. IN SRV 0 10 2083 aaa- | |||
eduroam.restena.lu. | eduroam.example.org. | |||
_radsec._tcp.restena.lu. IN SRV 0 10 2083 aaa- | _radiustls._tcp.aaa.example.org. IN SRV 0 10 2083 aaa- | |||
default.restena.lu. | default.example.org. | |||
2.3. Realm to AAA server resolution algorithm | 2.3. Realm to AAA server resolution algorithm | |||
Input I to the algorithm is a User-Name in the form of a NAI as | Input I to the algorithm is a User-Name in the form of a NAI as | |||
defined in [RFC4282] as extracted from the User-Name attribute in an | defined in [RFC4282] as extracted from the User-Name attribute in an | |||
Access-Request. Output O of the algorithm is a set of hostname:port | Access-Request. Output O of the algorithm is a set of hostname:port | |||
and an assoiciated order/preference; the set can be empty. | and an associated order/preference; the set can be empty. | |||
Note well: The attribute User-Name does not necessarily contain well- | Note well: The attribute User-Name does not necessarily contain well- | |||
formed NAIs and may not even contain well-formed UTF-8 strings. This | formed NAIs and may not even contain well-formed UTF-8 strings. This | |||
document describes server discovery only for well-formed NAIs in | document describes server discovery only for well-formed NAIs in | |||
UTF-8 encoding. The result of all other possible contents of User- | UTF-8 encoding. The result of all other possible contents of User- | |||
Name is unspecified; this includes, but is not limited to: | Name is unspecified; this includes, but is not limited to: | |||
Usage of separators other than @ | Usage of separators other than @ | |||
Usage of multiple @ separators | Usage of multiple @ separators | |||
skipping to change at page 5, line 36 | skipping to change at page 5, line 42 | |||
The algorithm to determine the AAA server to contact is as follows: | The algorithm to determine the AAA server to contact is as follows: | |||
1. Determine P = (position of first "@" character) in I. | 1. Determine P = (position of first "@" character) in I. | |||
2. generate R = (substring from P+1 to end of I) | 2. generate R = (substring from P+1 to end of I) | |||
3. Optional: modify R according to agreed consortium procedures | 3. Optional: modify R according to agreed consortium procedures | |||
4. Using the host's name resolution library, perform a NAPTR query | 4. Using the host's name resolution library, perform a NAPTR query | |||
for service "AAAS+RADSECT" for R | for R. If no result, continue at step 9. If name resolution | |||
returns with error, O = { }. Terminate. | ||||
5. If name resolution returns with error, O = { }. Terminate. | 5. Extract NAPTR records with service tag "nai-roaming" (replace | |||
with other service tags where applicable). | ||||
6. If no result, continue at step 9. | 6. If no result, continue at step 9. | |||
7. Evaluate NAPTR result, perform subsequent lookup steps until | 7. Evaluate NAPTR result(s) for desired protocol tag, perform | |||
lookup yields one or more hostnames. O = (set of {Order/ | subsequent lookup steps until lookup yields one or more | |||
Preference, hostname:port} for all lookup results). | hostnames. O = (set of {Order/Preference, hostname:port} for | |||
all lookup results). | ||||
8. Terminate. | 8. Terminate. | |||
9. Generate R' = (prefix R with "_radsec._tcp.") | 9. Generate R' = (prefix R with "_radiustls._tcp." or | |||
"_radiustls._udp") | ||||
10. Using the host's name resolution library, perform SRV lookup | 10. Using the host's name resolution library, perform SRV lookup | |||
with R' as label. | with R' as label. | |||
11. If name resolution returns with error, O = { }. Terminate. | 11. If name resolution returns with error, O = { }. Terminate. | |||
12. If no result, O = {}; terminate. | 12. If no result, O = {}; terminate. | |||
13. Perform subsequent lookup steps until lookup yields one or more | 13. Perform subsequent lookup steps until lookup yields one or more | |||
hostnames. O = (set of {Order/Preference, hostname} for all | hostnames. O = (set of {Order/Preference, hostname} for all | |||
hostnames). Terminate. | hostnames). Terminate. | |||
Example: Assume a user from the Technical University of Munich, | Example: Assume a user from the Technical University of Munich, | |||
Germany, has a RADIUS User-Name of | Germany, has a RADIUS User-Name of | |||
"foobar@tu-m[U+00FC]nchen.example". If DNS contains the following | "foobar@tu-m[U+00FC]nchen.example". If DNS contains the following | |||
records: | records: | |||
xn--tu-mnchen-t9a.example. IN NAPTR 50 50 "s" "AAAS+RADSECT" "" | xn--tu-mnchen-t9a.example. IN NAPTR 50 50 "s" "nai- | |||
_radsec._tcp.xn--tu-mnchen-t9a.example. | roaming:radius.tls" "" _radiustls._tcp.xn--tu-mnchen-t9a.example. | |||
_radsec._tcp.xn--tu-mnchen-t9a.example. IN SRV 0 10 2083 | xn--tu-mnchen-t9a.example. IN NAPTR 50 50 "s" "fooservice: | |||
bar.dccp" "" _abc._def.xn--tu-mnchen-t9a.example. | ||||
_radiustls._tcp.xn--tu-mnchen-t9a.example. IN SRV 0 10 2083 | ||||
radsec.xn--tu-mnchen-t9a.example. | radsec.xn--tu-mnchen-t9a.example. | |||
_radsec._tcp.xn--tu-mnchen-t9a.example. IN SRV 0 20 2083 | _radiustls._tcp.xn--tu-mnchen-t9a.example. IN SRV 0 20 2083 | |||
backup.xn--tu-mnchen-t9a.example. | backup.xn--tu-mnchen-t9a.example. | |||
radsec.xn--tu-mnchen-t9a.example. IN AAAA 2001:0DB8::202:44ff: | radsec.xn--tu-mnchen-t9a.example. IN AAAA 2001:0DB8::202:44ff: | |||
fe0a:f704 | fe0a:f704 | |||
radsec.xn--tu-mnchen-t9a.example. IN A 192.0.2.3 | radsec.xn--tu-mnchen-t9a.example. IN A 192.0.2.3 | |||
backup.xn--tu-mnchen-t9a.example. IN A 192.0.2.7 | backup.xn--tu-mnchen-t9a.example. IN A 192.0.2.7 | |||
Then the algorithm executes as follows, with I = | Then the algorithm executes as follows, with I = | |||
skipping to change at page 6, line 39 | skipping to change at page 7, line 4 | |||
radsec.xn--tu-mnchen-t9a.example. IN A 192.0.2.3 | radsec.xn--tu-mnchen-t9a.example. IN A 192.0.2.3 | |||
backup.xn--tu-mnchen-t9a.example. IN A 192.0.2.7 | backup.xn--tu-mnchen-t9a.example. IN A 192.0.2.7 | |||
Then the algorithm executes as follows, with I = | Then the algorithm executes as follows, with I = | |||
"foobar@tu-m[U+00FC]nchen.example", and no consortium name mangling | "foobar@tu-m[U+00FC]nchen.example", and no consortium name mangling | |||
in use: | in use: | |||
1. P = 7 | 1. P = 7 | |||
2. R = "tu-m[U+00FC]nchen.example" | 2. R = "tu-m[U+00FC]nchen.example" | |||
3. NOOP | 3. NOOP | |||
4. Query result: ( 0 10 2083 radsec.xn--tu-mnchen-t9a.example. ; 0 | 4. Query result: ( 50 50 "s" "nai-roaming:radius.tls" "" | |||
20 2083 backup.xn--tu-mnchen-t9a.example. ) | _radiustls._tcp.xn--tu-mnchen-t9a.example. ; 50 50 "s" | |||
"fooservice:bar.dccp" "" _abc._def.xn--tu-mnchen-t9a.example. ) | ||||
5. NOOP | 5. Result: 50 50 "s" "nai-roaming:radius.tls" "" | |||
_radiustls._tcp.xn--tu-mnchen-t9a.example. | ||||
6. NOOP | 6. NOOP | |||
7. O = {(10,radsec.xn--tu-mnchen-t9a.example.:2083),(20,backup.xn-- | 7. O = {(10,radsec.xn--tu-mnchen-t9a.example.:2083),(20,backup.xn-- | |||
tu-mnchen-t9a.example.:2083)} | tu-mnchen-t9a. example.:2083)} | |||
8. Terminate. | 8. Terminate. | |||
9. (not executed) | 9. (not executed) | |||
10. (not executed) | 10. (not executed) | |||
11. (not executed) | 11. (not executed) | |||
12. (not executed) | 12. (not executed) | |||
skipping to change at page 7, line 48 | skipping to change at page 8, line 15 | |||
trick the initiating peer into using the weakly protected UDP or TCP | trick the initiating peer into using the weakly protected UDP or TCP | |||
transports. The use of DNSSEC can not fully mitigate this attack, | transports. The use of DNSSEC can not fully mitigate this attack, | |||
since it does not provide a means to detect packet suppression. The | since it does not provide a means to detect packet suppression. The | |||
only way to disable such bidding down attacks is by intiating | only way to disable such bidding down attacks is by intiating | |||
connections only to the peer(s) which match or exceed a configured | connections only to the peer(s) which match or exceed a configured | |||
minimum security level. All implementations SHOULD provide a means | minimum security level. All implementations SHOULD provide a means | |||
to configure the administratively desired minimum security level. | to configure the administratively desired minimum security level. | |||
4. IANA Considerations | 4. IANA Considerations | |||
This document contains no actions for IANA. Maybe. Not sure about | This document requests IANA registration of the following S-NAPTR | |||
the labels "AAAS+RADSECT" and "_radsec._tcp.". | parameters: | |||
o Application Service Tags | ||||
* nai-roaming | ||||
* eduroam | ||||
o Application Protocol Tags | ||||
* radius.tls | ||||
* radius.dtls | ||||
5. Normative References | 5. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Indicate Requirement Levels", BCP 14, | |||
RFC 2119, March 1997. | ||||
[RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The | [RFC3958] Daigle, L. and A. Newton, "Domain-Based | |||
Network Access Identifier", RFC 4282, December 2005. | Application Service Location Using SRV RRs | |||
and the Dynamic Delegation Discovery | ||||
Service (DDDS)", RFC 3958, January 2005. | ||||
[RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. | ||||
Eronen, "The Network Access Identifier", | ||||
RFC 4282, December 2005. | ||||
[I-D.dekok-radext-dtls] DeKok, A., "DTLS as a Transport Layer for | ||||
RADIUS", draft-dekok-radext-dtls-01 (work | ||||
in progress), June 2009. | ||||
[I-D.ietf-radext-radsec] Winter, S., McCauley, M., Venaas, S., and | ||||
K. Wierenga, "TLS encryption for RADIUS | ||||
over TCP", draft-ietf-radext-radsec-06 | ||||
(work in progress), March 2010. | ||||
Authors' Addresses | Authors' Addresses | |||
Stefan Winter | Stefan Winter | |||
Fondation RESTENA | Fondation RESTENA | |||
6, rue Richard Coudenhove-Kalergi | 6, rue Richard Coudenhove-Kalergi | |||
Luxembourg 1359 | Luxembourg 1359 | |||
LUXEMBOURG | LUXEMBOURG | |||
Phone: +352 424409 1 | Phone: +352 424409 1 | |||
End of changes. 34 change blocks. | ||||
77 lines changed or deleted | 125 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |