Internet DRAFT - draft-goland-http-reliability
draft-goland-http-reliability
Network Working Group Y. Goland
Internet-Draft BEA
Expires: May 11, 2006 November 7, 2005
SOA-Reliability (SOA-Rity) for HTTP
draft-goland-http-reliability-00
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 on May 11, 2006.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
SOAR-ity is intended to allow for "reliable" (this term is almost
always a misnomer) messaging over HTTP. It achieves this goal by
introducing two new request headers, Message-ID which provides a
unique ID for a message and MsgCreate which contains the date and
time on which the first instance of the message with the associated
Message-ID was sent. The purpose of the Message-ID/MsgCreate pair is
to allow any HTTP request (e.g. any HTTP method can be used) to be
repeated multiple times with a guarantee that the message will be
processed no more than one time. In essence it makes any HTTP method
Goland Expires May 11, 2006 [Page 1]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
call idempotent.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Making a Reliable Request over HTTP . . . . . . . . . . . . . 4
4. Receiving a Response to a Reliable Request over HTTP . . . . . 4
5. OPTIONS Support . . . . . . . . . . . . . . . . . . . . . . . 7
6. Proxies & Caches . . . . . . . . . . . . . . . . . . . . . . . 7
7. Security Considerations . . . . . . . . . . . . . . . . . . . 8
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
Appendix A. Q&A . . . . . . . . . . . . . . . . . . . . . . . . 9
Appendix A.1. SOA-Rity?!?!!?!?! . . . . . . . . . . . . . . . . . 9
Appendix A.2. Why not put the MsgCreate/Message-ID values into
the URL? . . . . . . . . . . . . . . . . . . . . . . 9
Appendix A.3. Why is there no time window declaration? . . . . . . 9
Appendix A.4. Why introduce the MsgCreate Header? Why not just
use the HTTP Date header? . . . . . . . . . . . . . 10
Appendix A.5. Why use RFC 2234 ABNF instead of RFC 2616 ABNF? . . 11
Appendix A.6. Why not require RFC 2774 Support? . . . . . . . . . 11
Appendix A.7. Why Didn't You Use the Expect Header? . . . . . . . 11
Appendix A.8. What about Clockless Systems? . . . . . . . . . . . 11
Appendix A.9. What about One Ways? . . . . . . . . . . . . . . . . 11
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
9.1. Normative References . . . . . . . . . . . . . . . . . . . 12
9.2. Informative References . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13
Intellectual Property and Copyright Statements . . . . . . . . . . 13
Goland Expires May 11, 2006 [Page 2]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
1. Introduction
SOAR-ity is intended to allow for "reliable" (this term is almost
always a misnomer) messaging over HTTP. It achieves this goal by
introducing two new request headers, Message-ID which provides a
unique ID for a message and MsgCreate which contains the date and
time on which the first instance of the message with the associated
Message-ID was sent. The purpose of the Message-ID/MsgCreate pair is
to allow any HTTP request (e.g. any HTTP method can be used) to be
repeated multiple times with a guarantee that the message will be
processed no more than one time. In essence it makes any HTTP method
call idempotent.
When a SOAR-ity message is recieved the MsgCreate value is checked to
make sure the time/date is within the resource's current "time
window". So, for example, if the resource only remembers reliable
messages for 10 hours then a MsgCreate value that is more than 10
hours old is outside of the "time window" and has to be rejected. If
the MsgCreate value is within the time window then the resource will
check to see if it has a record of the Message-ID value. If it does
then it will return a cached copy of the response it sent the first
time it received this request. If the Message-ID value hasn't been
seen before then the resource will process the request and both send
and cache its response. It is the cached response that will be used
if the request is ever repeated.
The reader may benefit from reviewing both [ExactlyOnce] and
[SoaReliableMessaging] to get more background on the motivation for
SOA-Rity's design.
2. Terminology
The term resource is used in this specification instead of the more
usual HTTP term server in order to indicated that the behavior
specified by this specification can change on a resource by resource
basis.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
The HTTP header definitions are given using ABNF as defined in
[RFC2234].
Goland Expires May 11, 2006 [Page 3]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
3. Making a Reliable Request over HTTP
A reliable HTTP request MUST contain the following two headers:
Header Name: MsgCreate
Header Value: MsgCreate = "MsgCreate" ":" rfc1123-date ; the
rfc1123-date production is defined by 3.3.1 of [RFC2616], note
that when the production is used for the MsgCreate header it MUST
provide its value in GMT
Header Description: Specifies the date and time when the first
instance of a message baring the associated message ID was
created. This value MUST be reproduced with the same value on
every instance of the message carrying the associated message ID.
and
Header Name: Message-ID
Header Value: Message-ID = "Message-ID" ":" URI ; the URI production
is defined by [RFC2396]
Header Description: A message ID specified as a globally unique URI
that will make this message unique amongst all messages generated
across all senders for all time. It is recommended that
implementers look at [RFC4122] as an easy way to meet the previous
requirement.
Example:
POST /resource/foo HTTP/1.1
Host: www.example.com
Content-Type: text/xml
MsgCreate: 14 Oct 2005 16:20:00 GMT
Message-ID: urn:uuid:72dfcac0-3d09-11da-8cd6-0800200c9a66
...
4. Receiving a Response to a Reliable Request over HTTP
The SOARITY response header is used in responses in the manner
specified in the rest of this section.
Header Name: SOARITY
Header Value: SOARITY = "SOARITY" ":" ("supported" / "unsupported" /
"MsgCreate/Message-ID Rejected")
Header Description: Provides information about the resource's
support for SOA-Rity. The "supported" value is returned on all
successful responses to confirm to the receiver that the resource
has honored the SOA-Rity headers. "Unsupported" appears on
rejections to confirm that the receiver does not support SOA-Rity
Goland Expires May 11, 2006 [Page 4]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
for that sender at that time. The "MsgCreate/Message-ID Rejected"
value specifies that the combination of the submitted MsgCreate
and Message-ID values have been rejected, the request SHOULD NOT
be repeated with those values.
If a resource receives a request with the MsgCreate header but not
with the Message-ID header then the request MUST be rejected with a
400 (Bad Request) response that MAY contain the SOARITY header with
an appropriate (e.g. "supported" or "unsupported") value. It is,
however, legal to send a request with a Message-ID header but without
a MsgCreate header, in that case the request MUST NOT be treated as
requesting reliable delivery. The reason for the difference in
treatment is that the MsgCreate header is only intended for reliable
messaging usage while the Message-ID header has potential utility
outside of reliable messaging.
If a resource receives a request with the SOA-Rity headers but
chooses not to honor those headers (for whatever reason) then the
resource MUST return a 412 (precondition failed) response with the
SOARITY header set to the value "unsupported". Clients who wish to
make sure that their requests cannot be mistakenly processed
unreliably on a request that included a demand for reliability by
resources that do not support this specification should investigate
[RFC2774]. Note, however, that this specification does not require
that resources support [RFC2774].
If the resource does support the SOA-Rity headers then the resource
MUST first validate that the date/time specified in the MsgCreate
header is not beyond the resource's time window for remembering IDs.
If the value is beyond the resource's time window then the message
MUST be rejected with a 403 (Forbidden) response with the SOARITY
header set to "MsgCreate/Message-ID Rejected".
If a request contains a MsgCreate and Message-ID header where the
Message-ID has been seen previously but with a MsgCreate value that
resolved to a different time/date then, assuming the MsgCreate value
is within the current time window, the request MUST be rejected with
a 403 (Forbidden) response with the SOARITY header set to "MsgCreate/
Message-ID Rejected".
The resource MAY assume that if it receives a message with a
MsgCreate/Message-ID header combination it has seen before then the
new request is identical to the previous request with the same
MsgCreate/Message-ID values. In other words if a client makes a
mistake and repeats a MsgCreate/Message-ID pair on two different
requests then the resource is under no obligation to detect this
error. Still, well behaved resources should at least validate that
the HTTP method is the same (e.g. a GET and POST with the same
Goland Expires May 11, 2006 [Page 5]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
MsgCreate/Message-ID values should be rejected) as well as the
request body and key headers. If a resource does choose to remember
information about a request other than its MsgCreate/Message-ID pair
then it MUST send a 400 (Bad Request) to any clients who use the same
MsgCreate/Message-ID pair twice on two materially different messages.
The term 'materially different' in the previous sentence is intended
to indicate that not all headers need to be the same for two requests
with the same MsgCreate/Message-ID values to be treated as identical.
For example, the Date request header, the If-* headers, the Range
header, the user-agent header, etc. could all be different on
repeated requests but these differences are not 'material' in terms
of stating that the repeated request with a specific MsgCreate/
Message-ID pair is the same as the original request.
A MsgCreate/Message-ID pair MUST be constrained to only apply to a
specific authenticated requester when authentication is in use.
If the MsgCreate is within the local time window then the resource
MUST determine if this request has been answered previously. If so
then the resource MUST return the same response as the one it
originally sent. Note however that the term 'same' only applies to
the response code and the body, the value of the headers may need to
be altered in some cases although the default behavior should be to
return the same header values as on the original response.
If, for whatever reason, the resource cannot honor the requirement to
return the same response then the resource MUST either return a 403
(Forbidden) response with the SOARITY header set to "MsgCreate/
Message-ID Rejected" (if the condition is permanent) or a 503
(Service Unavailable) with a SOARITY header value of "supported" (if
the condition is temporary).
If-* and Range headers on repeated requests should be honored
following the resource's normal policies (in the case of range) and
HTTP's requirements (in the case of If-*). Although these headers on
a repeated request can cause a different response to be received than
what was sent in response to the original request the alterations
only affect the response body and not the original outcome of the
method's processing. In other words, if a client submits a POST
using the SOA-Rity headers which generates a HTTP response body and
then later repeats the POST but includes a Range request then the
returned body (assuming the resource honors Range) would contain only
the subset of the original response specified by the range. But, the
repeated response would just be a copy of the original HTML response,
no new processing would occur and SOA-Rity's idempotent promise would
be honored.
Goland Expires May 11, 2006 [Page 6]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
If a resource that supports SOA-Rity receives a message whose
MsgCreate is within the current time window and with a Message-ID
that the resource has not previously seen then the response MUST
respond normally to the request but the response MUST contain the
SOARITY header set to "supported".
The logic regarding the MsgCreate header requires that the clocks at
the client and resource be reasonably synchronized. As such to be
compliant with this specification both a client and resource MUST
have clocks and MUST take 'reasonable' actions to ensure those clocks
are accurate. Deploying and properly configuring a Network Time
Protocol (NTP) client [RFC958] is an example of a 'reasonable' action
to ensure a clock is accurate. Note however that clocks, even with
NTP, can still skew and messages can be delayed for non-trivial
periods of time during network transmission, especially if
intermediaries are involved. Therefore resources are encouraged to
be generous in the size of their time windows and clients are
encouraged to be stingy in their expectations of how large the
windows will be.
Example:
HTTP/1.1 200 It's all cool
SOARITY: supported
...
5. OPTIONS Support
A resource that supports this specification MUST return the SOARITY
header on an OPTIONS response with the value of either "supported" or
"unsupported" depending on the resource's support for SOA-Rity for
the particular client who made the request (assuming authentication
is involved). In other words, it is perfectly legal for a resource
to send a SOARITY header with "supported" to one authenticated client
and "unsupported" to a different authenticated client.
6. Proxies & Caches
Successful responses to reliable requests SHOULD include the HTTP 1.1
Vary header with values that point to the Message-ID and MsgCreate
headers. Please refer to section 14.8 of [RFC2616] for details of
how caching and shared caches interact in order to make sure that a
private response is not inadvertently cached by a shared cached.
Goland Expires May 11, 2006 [Page 7]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
7. Security Considerations
It is, in theory, possible for a client to repeat a request made by
some other client but using the same Message-ID and MsgCreate values.
If successful such an attempt would allow one client to see the
response sent to another client. A simple way to prevent such an
attack is to authenticate all requesters and, when recording
MsgCreate/Message-ID values, to also record the identity of the
requester. In the future if a request is received with the same
Message-ID/MsgCreate values it will only be honored if the client is
authenticated as the original sender.
The provision of reliable messaging can entail the use of a non-
trivial amount of resources. As such large numbers of reliable
messaging requests can constitute a denial of service attack.
Therefore it is reasonable to only provide SOA-Rity support to
authenticated requesters or to use other mechanisms to rate limit who
can make requests.
8. IANA Considerations
The following HTTP headers are submitted for provisional message
header field registration per [RFC3864].
Header Field Name: MsgCreate
Applicable Protocol: http
Status: provisional
Author/Change controller:
Name: Yaron Y. Goland
Email: soarityietfsubmission@goland.org
Home Page URI: http://www.goland.org
Defined In: Section 3 of this document.
Header Field Name: Message-ID
Applicable Protocol: http
Status: provisional
Author/Change controller:
Name: Yaron Y. Goland
Email: soarityietfsubmission@goland.org
Home Page URI: http://www.goland.org
Defined In: Section 3 of this document.
Header Field Name: SOARITY
Goland Expires May 11, 2006 [Page 8]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
Applicable Protocol: http
Status: provisional
Author/Change controller:
Name: Yaron Y. Goland
Email: soarityietfsubmission@goland.org
Home Page URI: http://www.goland.org
Defined In: Section 4 of this document.
Appendix A. Q&A
Appendix A.1. SOA-Rity?!?!!?!?!
O.k. O.k. I know, it's not the best name in the world. Although I
must admit that people I share it with either laugh or wretch when
they hear it which is more or less the range of reactions I'm looking
for. :) I thought about SOA-R but that sounds like sore. I also
thought about SOA-Ring but that seemed forced. I'm open to better
ideas.
Appendix A.2. Why not put the MsgCreate/Message-ID values into the URL?
When I was first designing the HTTP version of this protocol I
thought of sticking the MsgCreate and Message-ID values directly into
the URL. E.g. something along the lines of:
POST /resource/foo?MsgCreate=14Oct200516:20:00GMT&Message-ID=urn:
uuid:72dfcac0-3d09-11da-8cd6-0800200c9a66 HTTP/1.1
Host: www.example.com
Content-Type: text/xml
...
I changed my mind for a number of reasons:
o In theory URLs are supposed to be of unlimited length but in
practice there are often size limits and the MsgCreate/Message-ID
values are not small.
o There is no standard for how to place arguments on a URL so I
would, in effect, be telling people "Your URLS MUST support a
query option and MUST use the '&' character as a delimiter." I
generally don't like telling people how to form their URLs.
o I don't think MsgCreate/Message-ID belong in the URL any more than
an eTag does.
Appendix A.3. Why is there no time window declaration?
It would be easy to throw in a header that specifies how long a
service promises to remember messages but I think the value would be
Goland Expires May 11, 2006 [Page 9]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
so misleading as to be, on balance, a bad idea. First, servers crash
and forget things (which they shouldn't, but oh well). Second, a
service may have different windows for different people at different
times. In truth the window value would at best be a 'rough estimate'
rather than a real promise. I suspect the best way to present time
window information is as part of a human readable description of what
the server is and how it works, this is exactly the sort of thing one
should get back in an OPTIONS response.
Appendix A.4. Why introduce the MsgCreate Header? Why not just use the
HTTP Date header?
It would be easy enough to just re-use the HTTP date header rather
than introduce the MsgCreate header. The main consequence would
probably be to create a SOARITY request header to definitively
identify a request as requiring SOA-Rity support.
One could even argue that this is the correct path forward since
[RFC2616] explicitly states that the semantics for the HTTP Date
header are the same as the [RFC822] orig-date production which is
used to specify the email Date header. In email the idea of
resending a message is a common one and two different date headers
are provided, a Date header reflecting when the message was
originally created and a separate Resent-Date header to identify when
the message was retried.
The problem is that while HTTP may have stated that its Date header
was to have [RFC822] semantics in practice nobody I'm aware of has
made it a habit of repeating HTTP requests (even idempotent ones)
with the same date header as the original request. In fact, I
suspect if one were to ask most HTTP implementers what they thought
the meaning of the HTTP Date header was they would probably answer
"it provides the time the message was sent." The concept that the
time when the message was sent and the time when it was actually
generated could be radically different (due to retries) hasn't been
entertained before in HTTP requests (it is, of course, quite common
in cached replies however).
So the question is - if this specification were to replace the
MsgCreate header with the Date header and simply mandate that all
SOA-Rity requests MUST include a Date header ([RFC2616] makes them
optional on requests) as well as a new SOARITY request header would
anything break? Would this confuse any proxies? Screw up any
servers?
I just don't know so I have erred on the side of caution and
introduced the MsgCreate header.
Goland Expires May 11, 2006 [Page 10]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
Appendix A.5. Why use RFC 2234 ABNF instead of RFC 2616 ABNF?
My main reason is that I wanted to use Harald Alvestrand's ABNF
parser, available at http://www.apps.ietf.org/abnf.html. Near as I
can tell the choice shouldn't be a big deal because the only
substantive difference my cursory examination of [RFC2616]'s ABNF
versus the IETF standard [RFC2234]'s ABNF is that [RFC2616] uses "|"
to indicate "or" semantics while [RFC2234] uses "/". If it turns out
it matters then I'll just use the [RFC2616] format.
Appendix A.6. Why not require RFC 2774 Support?
Because in this case I think it's more trouble than it's likely
worth. If a client is really worried that the resource it's talking
to doesn't support SOA-Rity then it can make an OPTIONS request.
Yes, this still leaves open some race conditions but I just don't
think they are common enough to justify requiring everyone to support
RFC 2774.
Appendix A.7. Why Didn't You Use the Expect Header?
Because it's useless. It shows a real failure in the IETF RFC
vetting process. HTTP/1.1 was explicitly required to be backwards
compatible with HTTP/1.0 so if a 1.0 resource got a 1.1 request then
all would be well with the world. But the Expect header's
functionality is "If you don't have this feature then fail this
request". Well, duh, HTTP/1.0 didn't have an expect header so a 1.0
server would just ignore expect all together. So much for
guaranteeing failure. So anyone who actually takes RFC 2616 at its
word must conclude that the RFC is, in fact, not backwards compatible
with HTTP/1.0 and therefore failed in its mission. The right thing
to do would be to remove the Expect header. RFC 2774 showed the
right way to support Expect style behavior and retain complete
backwards compatibility with HTTP/1.0.
Appendix A.8. What about Clockless Systems?
There are a number of tricks that could be used to make this
specification work with clockless systems but they all put an extra
burden on those with clocks that I just don't think can be justified.
If it should turn out that reliable messaging in clockless systems is
a real world use case it will always be possible to come out with an
extension to this protocol.
Appendix A.9. What about One Ways?
HTTP only knows about request/responses so the spec only addresses
that. If someone sends a one-way request (at the application level)
Goland Expires May 11, 2006 [Page 11]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
then at the HTTP level they still have to send some kind of response.
The tradition is that the response is just a 200 (O.K.) with no
response body. It is that 200 response that would be cached by the
algorithm above. So the point is that from SOA-Rity's perspective it
doesn't care or need to know if a request is part of a synchronous
request/response or a one-way at the application level, it all looks
the same at the HTTP level.
9. References
9.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2396, BCP 14, March 1997.
[RFC2234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396,
August 1998.
[RFC2616] Fielding, R., Gettys, J., Frystyk, H., Masinter, L.,
Leach, P., and T. Berners-Lee, "Hypertext Transfer
Protocol --- HTTP/1.1", RFC 2616, June 1999.
[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration
Procedures for Message Header Fields", RFC 3864, BCP 90,
September 2004.
9.2. Informative References
[ExactlyOnce]
Goland, Y., "How Should An Exactly Once SOA Reliable
Messaging System Be Designed? -
http://www.goland.org/exactlyonce", October 2005.
[RFC2774] Frystyk, H., Leach, P., and S. Lawrence, "An HTTP
Extension Framework", RFC 2774, February 2000.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique Identifier (UUID) URN Namespace", RFC 4122,
July 2005.
[RFC822] Crocker, D., "STANDARD FOR THE FORMAT OF ARPA INTERNET
TEXT MESSAGES", RFC 822, August 1982.
Goland Expires May 11, 2006 [Page 12]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
[RFC958] Mills, D., "Network Time Protocol (NTP)", RFC 958,
September 1985.
[SoaReliableMessaging]
Goland, Y., "Does SOA Need A Reliable Messaging Protocol?
- http://www.goland.org/soareliablemessaging",
October 2005.
Author's Address
Yaron Y. Goland
BEA Systems Inc.
999 North Northlake Way
Seattle, WA 98103
US
Email: soarityietfsubmission@goland.org
URI: http://www.goland.org
Full 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.
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.
Intellectual Property
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.
Goland Expires May 11, 2006 [Page 13]
Internet-Draft SOA-Reliability (SOA-Rity) for HTTP November 2005
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.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Goland Expires May 11, 2006 [Page 14]