A Python UPnP Media Server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

812 lines
36 KiB

  1. INTERNET DRAFT J. Cohen, Microsoft
  2. S. Aggarwal, Microsoft
  3. <draft-cohen-gena-p-base-01.txt> Y. Y. Goland, Microsoft
  4. Expires April, 2000 September 6, 2000
  5. General Event Notification Architecture Base: Client to Arbiter
  6. Status of this memo
  7. This document is an Internet-Draft and is in full conformance with all
  8. provisions of Section 10 of RFC2026.
  9. Internet-Drafts are working documents of the Internet Engineering Task
  10. Force (IETF), its areas, and its working groups. Note that other
  11. groups may also distribute working documents as Internet-Drafts.
  12. Internet-Drafts are draft documents valid for a maximum of six months
  13. and may be updated, replaced, or obsoleted by other documents at any
  14. time. It is inappropriate to use Internet- Drafts as reference
  15. material or to cite them other than as "work in progress."
  16. The list of current Internet-Drafts can be accessed at
  17. http://www.ietf.org/ietf/1id-abstracts.txt
  18. The list of Internet-Draft Shadow Directories can be accessed at
  19. http://www.ietf.org/shadow.html.
  20. Please send comments to the SSDP mailing list. Subscription information
  21. for the SSDP mailing list is available at
  22. http://www.upnp.org/resources/ssdpmail.htm.
  23. Abstract
  24. This document provides for the ability to send and receive
  25. notifications using HTTP over TCP/IP and administratively scoped
  26. unreliable multicast UDP. Provisions are made for the use of
  27. intermediary arbiters, called subscription arbiters, which handle
  28. routing notifications to their intended destination.
  29. 1 Introduction
  30. This document provides for the sending of HTTP Notifications using
  31. administratively scoped unreliable Multicast UDP. Multicast UDP is
  32. useful in that it allows a single notification to be delivered to a
  33. potentially large group of recipients using only a single request.
  34. However administrative scoped unreliable Multicast UDP suffers from a
  35. number of problems including: how to route it, how to handle
  36. firewalling and how to deal with multiple scopes. This document only
  37. addresses the use of Multicast UDP within a single administrative scope
  38. and only countenances its use for scenarios where there is no
  39. notification proxy.
  40. In order to allow for notifications to be distributed beyond a single
  41. administrative multicast scope it is necessary to provide for relaying
  42. Cohen et al. [Page 1]
  43. INTERNET-DRAFT GENA Base September 6, 2000
  44. arbiters. These arbiters, called subscription arbiters, are able to
  45. form, through an unspecified mechanism, relationships with other
  46. subscription arbiters in order to distribute notifications. This allows
  47. a client to send a single HTTP notification to its subscription arbiter
  48. and have that notification forwarded on to one or more recipients. It
  49. is the subscription arbiter, not the client, who is responsible for
  50. maintaining the list of potential recipients and distributing
  51. notifications to those recipients.
  52. In order for subscription arbiters to know to whom to distribute
  53. notifications clients who wish to receive notifications, known as
  54. subscribers, must subscribe to the subscription arbiter.
  55. 2 Changes
  56. 2.1 Since V00
  57. [Ed. Note: Aren’t there times when the service needs to hear the
  58. subscriptions? When the identity of the subscriber will effect the
  59. output? Of course… Notification identifiers must be explicit in the
  60. notification, not implicit as a function of the address.]
  61. [Ed. Note: We need to look into adding support for sequence numbers on
  62. events, this is needed for things like UPnP. If this doesn't end up
  63. effecting how the arbiter works then we should put it into a separate
  64. draft.]
  65. [Talk about the scope header having values other than the URL of the
  66. resource, we are using the UPnP example where you would put the USN
  67. value into the scope. Everyone needs to pay attention to the scope
  68. header!!!!]
  69. [Add a note that if no Scope header is included then the default is to
  70. treat the Request-URI as the scope.]
  71. [What do you do if someone subscribes to something they are already
  72. subscribed to? The question is tricky because, short of using
  73. authentication, you don’t know who “someone” is and even then, because
  74. multiple programs may be running, you can’t be sure if you are really
  75. talking to the same person. My instinct would be to just give them a
  76. second parallel subscription.]
  77. [Think REALLY hard about allowing for multiple values in a NT header]
  78. 3 Definitions
  79. 3.1 Event
  80. Any occurrence that may potentially trigger a notification.
  81. 3.2 Subscription
  82. An established relationship in which a resource has indicated interest
  83. in receiving certain notifications.
  84. 3.3 Subscriber
  85. A resource that negotiates a subscription with a subscription arbiter.
  86. Cohen et al. [Page 2]
  87. INTERNET-DRAFT GENA Base September 6, 2000
  88. 3.4 Implied Subscriber
  89. A resource that did not negotiate a subscription with a subscription
  90. arbiter but will still be notified of events on that arbiter.
  91. 3.5 Notifying Resource
  92. A resource that issues notifications, for example, a subscription
  93. arbiter.
  94. 3.6 Subscription Arbiter
  95. A resource that accepts subscriptions, receives notifications and
  96. forwards those notifications to its subscribers.
  97. 3.7 Notification
  98. A message sent by a notifying resource to provide notification of an
  99. event.
  100. 3.8 Notification Type
  101. A mechanism to classify notifications into categories. This allows
  102. subscribers to specify exactly what class of notifications they want to
  103. receive. It also allows notifying resources to specify what class of
  104. notification they are sending out.
  105. Notification types do not necessarily identify a single event but
  106. rather identify a group of related notifications. The notification sub-
  107. type is used to specify a particular event.
  108. 3.9 Notification Sub-Type
  109. Identification of a particular event within a notification type.
  110. For example, the fictional notification of type home:doors may contain
  111. notification sub-types such as door:open, close:door, etc.
  112. There is no requirement that the URI identifying the notification type
  113. and the URI identifying the notification sub-type have a syntactic
  114. relationship, only a semantic one.
  115. 3.10 Subscription ID
  116. A unique identifier for a subscription. Subscription Ids MUST be URIs
  117. and MUST be unique across all subscriptions across all resources for
  118. all time.
  119. 3.11 Scope
  120. Scopes are used in a subscription to indicate the notifying resource
  121. the subscriber is interested in.
  122. Cohen et al. [Page 3]
  123. INTERNET-DRAFT GENA Base September 6, 2000
  124. 4 Notification Model
  125. [Ed. Note: Aren’t there times when the service needs to hear the
  126. subscriptions? When the identity of the subscriber will effect the
  127. output? Of course… Notification identifiers must be explicit in the
  128. notification, not implicit as a function of the address.]
  129. [Ed. Note: We need to look into adding support for sequence numbers on
  130. events, this is needed for things like UPnP. If this doesn't end up
  131. effecting how the arbiter works then we should put it into a separate
  132. draft.]
  133. The notification model for GENA is based on the following picture:
  134. [Subscriber] <- [1+ Subscription Arbiters] <- [Notifying Resource]
  135. Notification Request Notification Request
  136. ->
  137. Subscription Request
  138. Subscribers send subscription requests to their subscription arbiter.
  139. The arbiter will then forward to the subscriber any notifications it
  140. receives which match the subscriber's subscription.
  141. Notifying resources send notifications to their subscription arbiter to
  142. be passed on to subscribers.
  143. Subscription arbiters communicate with each other in order to pass
  144. along notifications and subscriptions. Subscription arbiter to
  145. subscription arbiter communication is out of scope for this
  146. specification.
  147. For the purposes of this protocol all communication is between
  148. subscribers/notifying resources and their subscription arbiter. This
  149. does not preclude direct communication between a subscriber and a
  150. notifying resource. Rather it means that the notifying resource is
  151. acting as a subscription arbiter.
  152. This document also deals with a degenerate case where no subscription
  153. arbiter is available but administratively scoped unreliable multicast
  154. UDP facilities are. In that case provisions are made to allow a
  155. notifying resource to send its notifications directly to a previously
  156. agreed upon administratively scoped multicast UDP address where
  157. interested resources can listen in to the notification.
  158. 4.1 Sending HTTP Notifications through a Subscription Arbiter
  159. A notifying resource finds its subscription arbiter through an
  160. unspecified mechanism. The notifying resource will send all of its
  161. notifications to the subscription arbiter who will then forward those
  162. subscriptions on to subscribers.
  163. Cohen et al. [Page 4]
  164. INTERNET-DRAFT GENA Base September 6, 2000
  165. This document does not provide a mechanism by which the notifying
  166. resource can retrieve information about which resources have subscribed
  167. to receive notifications from the notifying resource.
  168. 4.2 Receiving HTTP Notifications through a Subscription Arbiter
  169. A subscribing resource finds its subscription arbiter through an
  170. unspecified mechanism. It is the responsibility of the subscribing
  171. resource to send subscription requests to the subscription arbiter in
  172. order to inform the arbiter as to which notifications the subscriber
  173. would like to receive.
  174. A subscription request can be thought of as a persistent search filter
  175. on the set of notifications that the subscription arbiter is aware of.
  176. Whenever the subscription arbiter receives a notification that matches
  177. the search filter it will forward the notification to the subscriber.
  178. This document defines a very basic search filter that allows a
  179. subscribing resource to specify a particular resource and a type of
  180. notification the subscribing resource is interested in. Whenever a
  181. notification of the specified type is made by the specified resource
  182. the subscription arbiter will forward the notification to the
  183. subscriber.
  184. 5 Subscription Arbiters and Forwarded Notifications
  185. When forwarding a notification the subscription arbiter will change the
  186. Request-URI and the Host header value to match the subscriber who is to
  187. be notified. Subscription arbiters MUST NOT make any other changes to
  188. be made to the message unless the definition of the header or body
  189. element specifically provides for such alteration and/or for security
  190. reasons.
  191. 6 Stuff
  192. In the case where a subscriber sends a subscription request to an
  193. arbiter: Is it OK if the arbiter rejects subscription requests that
  194. don't match certain notification type criteria? or should the arbiter
  195. be totally unaware of any notification types at this point?
  196. In the case where a notifying resource sends a notify request to an
  197. arbiter: Is it OK if the arbiter rejects notification requests that
  198. don't match certain notification type criteria? or should the arbiter
  199. just accept the notification request and filter the available
  200. subscriptions taking the notification type as criteria?
  201. In the hypothetical case where the arbiter just accepted subscriptions
  202. of certain types, could an arbiter just be dedicated to one
  203. subscription type? If the previous statement was affirmative then the
  204. existence of a notification type for that particular arbiter wouldn't
  205. even make sense right?
  206. We need to discuss the implicit relationship between an arbiter and its
  207. subscribers, all the unstated assumptions.
  208. Cohen et al. [Page 5]
  209. INTERNET-DRAFT GENA Base September 6, 2000
  210. The subscription server may not necessarily have been the one who
  211. created a SID, it could have been the service who is using the
  212. subscription server to do replication. In that case a subscription
  213. request could come in with a SID on it, a ref-counted SID. But this bug
  214. me because a SID indicates a relationship. How does one change one’s
  215. call back for a SID? Especially if you want to send in the change
  216. command from somewhere other than the place receiving the notification
  217. so you can’t just check the address on the packet. Do we need tow types
  218. of SIDs? I don’t just want to overload NT. I think NT and NTS should be
  219. left alone to just give notification type. They shouldn’t be overloaded
  220. to also provide functional information… functional is the wrong word.
  221. They shouldn’t be overloaded to provide routing information.
  222. Event type.
  223. Event Sub-type.
  224. Event group (if any).
  225. Individual subscription.
  226. The problem is that the last two are not always both necessary. For
  227. example, an individual subscription ID is not necessary if the events
  228. are only sent to a multicast group. Additionally the event group ID
  229. isn’t necessary if the event only goes to a single end point.
  230. Maybe we need an end point identifier? We need a way to say “Stop
  231. sending the events to this call-back, send it to this other call-back.”
  232. THIS ISN’T GOOD ENOUGH. What if two programs are both at the same call-
  233. back? You need ref counting.
  234. I guess what I’m trying to avoid is implicit ref-counting, I would
  235. rather have explicit ref-counting. That is, I would like the ref count
  236. to be included in each request in the person of an ID that is unique to
  237. every listener, this is independent of call-back address.
  238. Make sure that if you leave off the NT then this means you want to
  239. receive all notifications from the identified scope.
  240. Also make sure that we can use scope as a selector for video streams on
  241. a video server.
  242. We need to add a “connect and flood” mechanism such that if you connect
  243. to a certain TCP port you will get events. There is no
  244. subscribe/unsubscribe. We also need to discuss this feature for
  245. multicasting. If you cut the connection then you won’t get any more
  246. events.
  247. 7 NOTIFY HTTP Method
  248. The NOTIFY method is used to transmit a notification. The Request-URI
  249. of the notification method is the notifying resource's subscription
  250. arbiter who will handle forwarding the message to interested
  251. subscribers.
  252. The NOTIFY method may be sent using unreliable administrative scoped
  253. multicast UDP as specified in [HTTPMU]. In such a case the multicast
  254. Cohen et al. [Page 6]
  255. INTERNET-DRAFT GENA Base September 6, 2000
  256. channel is treated as the subscription arbiter. When a NOTIFY is sent
  257. using multicast UDP as a transport there is no response.
  258. The NOTIFY method MUST contain a NT header and MAY contain a body, a
  259. NTS header and SID. Subscribers MAY ignore the body in a subscription
  260. request. Subscription arbiters MAY remove and/or alter the value of the
  261. SID header in order to set it to the value that their subscriber is
  262. expecting. Note that in general notifying resources will not put SID
  263. headers on their notifications. This is generally a value that
  264. subscription arbiters add.
  265. Note that notifications to implied subscribers may not necessarily have
  266. SIDs. The client can tell the subscription arbiter to stop sending the
  267. notification by returning a 412 (Precondition Failed).
  268. 7.1 Response Codes
  269. 200 (OK) - This is the standard response to a NOTIFY received by a
  270. subscriber.
  271. 202 (Accepted) - This is the standard response to a NOTIFY received by
  272. a subscription arbiter.
  273. 412 (Precondition Failed) - The client doesn't recognize the SID or the
  274. request doesn't have a SID and the client doesn't want to receive the
  275. notification.
  276. 7.2 Examples
  277. 7.2.1 TCP/IP
  278. NOTIFY /foo/bar HTTP/1.1
  279. Host: blah:923
  280. NT: ixl:pop
  281. NTS: clock:bark
  282. SID: uuid:kj9d4fae-7dec-11d0-a765-00a0c91e6bf6
  283. HTTP/1.1 200 O.K.
  284. A notification of type ixl:pop sub-type clock:bark has been sent out in
  285. response to the specified subscription. The request-URI could either
  286. identify a particular resource who is to be notified or a subscription
  287. arbiter who will then take responsibility for forwarding the
  288. notification to the appropriate subscribers.
  289. 7.2.2 Multicast UDP
  290. NOTIFY * HTTP/1.1
  291. Host: somemulticastIPaddress:923
  292. NT: ixl:pop
  293. NTS: clock:bark
  294. Cohen et al. [Page 7]
  295. INTERNET-DRAFT GENA Base September 6, 2000
  296. As in the previous example this is a notification of type ixl:pop sub-
  297. type clock:bark but it has been sent out to the multicast channel as an
  298. unsolicited notification. Hence it does not have a SID header. Also,
  299. because it was sent out to a multicast UDP channel it also doesn’t have
  300. a response.
  301. 8 SUBSCRIBE HTTP Method
  302. [Talk about the scope header having values other than the URL of the
  303. resource, we are using the UPnP example where you would put the USN
  304. value into the scope. Everyone needs to pay attention to the scope
  305. header!!!!]
  306. The SUBSCRIBE method is used to provide a subscription arbiter with a
  307. search filter to be used in determining what notifications to forward
  308. to the subscriber.
  309. The Request-URI of the SUBSCRIBE method specifies the subscription
  310. arbiter which will handle the subscription.
  311. A SUBSCRIBE request MUST have a NT header unless it is a re-
  312. subscription request. The NT header specifies what sort of notification
  313. the subscriber wishes to be notified of.
  314. A SUBSCRIBE request MUST have a Call-Back header unless it is a re-
  315. subscription request. The Call-Back header specifies how the subscriber
  316. is to be contacted in order to deliver the notification.
  317. A SUBSCRIBE method MUST NOT have a NTS header. The base subscription
  318. search filter only supports filtering on the NT value of a
  319. notification. This limitation is meant to keep the subscription
  320. functionality at the minimum useful level. It is expected that future
  321. specifications will provide for more flexible subscription search
  322. filters.
  323. A SUBSCRIBE method MUST have a scope header unless it is a re-
  324. subscription request. The scope header identifies the resource that the
  325. subscriber wishes to receive notifications about.
  326. The Timeout request header, whose syntax is defined in section 9.8 of
  327. [WEBDAV] MAY be used on a SUBSCRIBE request. The header is used to
  328. request that a subscription live for the specified period of time
  329. before having to be renewed. Subscription arbiters are free to ignore
  330. this header.
  331. A subscription arbiter MUST ignore the body of a SUBSCRIBE request if
  332. it does not understand that body.
  333. A successful response to the SUBSCRIBE method MUST include a Timeout
  334. response header and a SUBID header.
  335. Cohen et al. [Page 8]
  336. INTERNET-DRAFT GENA Base September 6, 2000
  337. [Add a note that if no Scope header is included then the default is to
  338. treat the Request-URI as the scope.]
  339. [What do you do if someone subscribes to something they are already
  340. subscribed to? The question is tricky because, short of using
  341. authentication, you don’t know who “someone” is and even then, because
  342. multiple programs may be running, you can’t be sure if you are really
  343. talking to the same person. My instinct would be to just give them a
  344. second parallel subscription.]
  345. 8.1 Re-Subscribing
  346. When the period of time specified in the Timeout response header passes
  347. the subscription MAY expire. In order to keep the subscription alive
  348. the subscriber MUST issue a SUBSCRIBE method with a SID header set to
  349. the subscription to be re-subscribed. A re-subscribe request MUST NOT
  350. have a NT header but it MAY have a Timeout and/or a Call-Back header.
  351. Note that the value in the Timeout response header will not take into
  352. account the time needed from when the value was generated until it was
  353. passed through the arbiter, put on the wire, sent to the subscriber,
  354. parsed by the subscriber’s system and finally passed to the
  355. subscriber’s program. Hence the value should be taken as an absolute
  356. upper bound. Subscribers are encouraged to re-subscribe a good period
  357. of time before the actual expiration of the subscription.
  358. 8.2 Response Codes
  359. 200 (OK) - The subscription request has been successfully processed and
  360. a subscription ID assigned.
  361. 400 (Bad Request) - A required header is missing.
  362. 412 Precondition Failed - Either the subscription arbiter doesn't
  363. support any of the call-backs, doesn't support the NT or doesn't
  364. support the scope. This code is also used on resubscription requests to
  365. indicate that the subscription no longer exists.
  366. 8.3 Examples
  367. 8.3.1 Subscription
  368. SUBSCRIBE dude HTTP/1.1
  369. Host: iamthedude:203
  370. NT: ixl:pop
  371. Call-Back: <http://blah/bar:923>
  372. Scope: http://icky/pop
  373. Timeout: Infinite
  374. HTTP/1.1 200 O.K.
  375. Subscription-ID: uuid:kj9d4fae-7dec-11d0-a765-00a0c91e6bf6
  376. Timeout: Second-604800
  377. Cohen et al. [Page 9]
  378. INTERNET-DRAFT GENA Base September 6, 2000
  379. This subscription request asks the subscription arbiter
  380. http://iamthedude/dude:203 for a subscription on notifications of type
  381. ixl:pop from the resource http://icky/pop.
  382. 8.3.2 Re-Subscription
  383. SUBSCRIBE dude HTTP/1.1
  384. Host: iamthedude:203
  385. Subscription-ID: uuid:kj9d4fae-7dec-11d0-a765-00a0c91e6bf6
  386. Timeout: Infinite
  387. HTTP/1.1 200 O.K.
  388. Subscription-ID: uuid:kj9d4fae-7dec-11d0-a765-00a0c91e6bf6
  389. Timeout: Second-604800
  390. The subscription has been successfully renewed.
  391. 9 UNSUBSCRIBE HTTP Method
  392. The UNSUBSCRIBE method is used to terminate a subscription. The
  393. UNSUBSCRIBE method MUST include a SID header with the value of the
  394. subscription to be un-subscribed.
  395. If the SID identifies a subscription that the subscription arbiter does
  396. not recognize or knows is already expired then the arbiter MUST respond
  397. with a 200 (OK).
  398. 9.1 Response Codes
  399. 200 (OK) - Unsubscribe succeeded.
  400. 412 (Precondition Failed) – The SID was not recognized.
  401. 9.2 Example
  402. UNSUBSCRIBE dude HTTP/1.1
  403. Host: iamtheproxy:203
  404. SID: uuid:kj9d4fae-7dec-11d0-a765-00a0c91e6bf6
  405. HTTP/1.1 200 O.k.
  406. 10 New HTTP Headers
  407. 10.1 NT Header
  408. [Think REALLY hard about allowing for multiple values in a NT header]
  409. The NT header is used to indicate the notification type.
  410. NT = "NT" ":" absoluteURI ; See section 3 of [RFC2396]
  411. Cohen et al. [Page 10]
  412. INTERNET-DRAFT GENA Base September 6, 2000
  413. 10.2 NTS Response Header
  414. The NTS response header is used to indicate the notification sub-type
  415. of a notification.
  416. NTS = "NTS" ":" absoluteURI
  417. 10.3 Call-Back Header
  418. The Call-Back header specifies, in order of preference, the means the
  419. subscriber would like the subscription arbiter to use to deliver
  420. notifications.
  421. Call-Back = "Call-Back" ":" *Coded-URI; See section 9.4 of [WEBDAV]
  422. 10.4 Timeout Response Header
  423. The Timeout response header has the same syntax as the Timeout request
  424. header defined in section 9.8 of [WEBDAV]. The subscription arbiter
  425. informs the subscriber how long the subscription arbiter will keep
  426. their subscription active without a re-subscribe using the Timeout
  427. response header.
  428. 10.5 SID Header
  429. The SID header contains a subscription ID.
  430. SID = "SID" ":" absoluteURI
  431. 10.6 Scope Request Header
  432. The scope request header indicates the resource the subscriber wishes
  433. to receive notifications about.
  434. SCOPE = "Scope" ":" absoluteURI
  435. 11 Future Work
  436. This specification defines a minimally useful set of notification
  437. functionality. It does not, however, address three critical issues that
  438. are needed by some notification environments. It is expected that all
  439. of these features can be provided in extension specifications to this
  440. base specification.
  441. The first issue is polling. In some environments, especially those with
  442. intermittent connectivity, it would be desirable for subscription
  443. arbiters to be able to pool up notifications and then to deliver them
  444. when the subscriber asks for them.
  445. The second issue is subscription arbiter to subscription arbiter
  446. communication. It is likely that subscription arbiters will want to
  447. communicate directly with each other in order to efficiently distribute
  448. Cohen et al. [Page 11]
  449. INTERNET-DRAFT GENA Base September 6, 2000
  450. notifications and subscriptions. This requires provision for
  451. notification routing and loop prevention.
  452. The third issue is support for depth functionality. In some systems one
  453. wishes to receive a notification about a resource and any of its
  454. children as the term is defined in [WEBDAV].
  455. 12 Security Considerations
  456. TBD.
  457. [Notes:
  458. The really horrible security concerns don't start until you build the
  459. subscription arbiter to arbiter protocol. Otherwise the arbiter is very
  460. close to a proxy in that it takes confidential information from a
  461. subscriber and/or notifying resource and is expected to do the right
  462. thing (TM) with it. Authentication and such prevents bogus
  463. notifications and subscriptions.
  464. Another problem is if someone sends in a subscription request with the
  465. call-back pointing at someone else. This could be used for a denial of
  466. service attack. Arbiters should authenticate subscribers and probably
  467. the call-back points as well.]
  468. 13 Acknowledgements
  469. Jesus Ruiz-Scougall (Exchange)
  470. Erik Christensen (VB) (Exchange)
  471. Ting Cai
  472. 14 IANA Considerations
  473. None.
  474. 15 Copyright
  475. The following copyright notice is copied from RFC 2026 [Bradner, 1996],
  476. Section 10.4, and describes the applicable copyright for this document.
  477. Copyright (C) The Internet Society February 10, 1998. All Rights
  478. Reserved.
  479. This document and translations of it may be copied and furnished to
  480. others, and derivative works that comment on or otherwise explain it or
  481. assist in its implementation may be prepared, copied, published and
  482. distributed, in whole or in part, without restriction of any kind,
  483. provided that the above copyright notice and this paragraph are
  484. included on all such copies and derivative works. However, this
  485. document itself may not be modified in any way, such as by removing the
  486. copyright notice or references to the Internet Society or other
  487. Internet organizations, except as needed for the purpose of developing
  488. Internet standards in which case the procedures for copyrights defined
  489. in the Internet Standards process must be followed, or as required to
  490. translate it into languages other than English.
  491. Cohen et al. [Page 12]
  492. INTERNET-DRAFT GENA Base September 6, 2000
  493. The limited permissions granted above are perpetual and will not be
  494. revoked by the Internet Society or its successors or assignees.
  495. This document and the information contained herein is provided on an
  496. "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  497. TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
  498. NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL
  499. NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
  500. FITNESS FOR A PARTICULAR PURPOSE.
  501. 16 Intellectual Property
  502. The following notice is copied from RFC 2026 [Bradner, 1996], Section
  503. 10.4, and describes the position of the IETF concerning intellectual
  504. property claims made against this document.
  505. The IETF takes no position regarding the validity or scope of any
  506. intellectual property or other rights that might be claimed to pertain
  507. to the implementation or use other technology described in this
  508. document or the extent to which any license under such rights might or
  509. might not be available; neither does it represent that it has made any
  510. effort to identify any such rights. Information on the IETF's
  511. procedures with respect to rights in standards-track and standards-
  512. related documentation can be found in BCP-11. Copies of claims of
  513. rights made available for publication and any assurances of licenses to
  514. be made available, or the result of an attempt made to obtain a general
  515. license or permission for the use of such proprietary rights by
  516. implementers or users of this specification can be obtained from the
  517. IETF Secretariat.
  518. The IETF invites any interested party to bring to its attention any
  519. copyrights, patents or patent applications, or other proprietary rights
  520. which may cover technology that may be required to practice this
  521. standard. Please address the information to the IETF Executive
  522. Director.
  523. 17 References
  524. [WEBDAV]
  525. [Bradner, 1996] S. Bradner, "The Internet Standards Process - Revision
  526. 3." RFC 2026, BCP 9. Harvard University. October, 1996.
  527. [HTTPMU] <draft-goland-http-udp-00.txt>
  528. [HTTP11] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, L. Masinter,
  529. P. Leach and T. Berners-Lee. Hypertext Transfer Protocol – HTTP/1.1.
  530. Internet Draft – Work in Progress. http://www.ietf.org/internet-
  531. drafts/draft-ietf-http-v11-spec-rev-06.txt, November 18, 1998.
  532. [RFC2396] http://www.rfc-editor.org/rfc/rfc2396.txt
  533. Cohen et al. [Page 13]
  534. INTERNET-DRAFT GENA Base September 6, 2000
  535. 18 Authors' Addresses
  536. Josh Cohen, Sonu Aggarwal, Yaron Y. Goland
  537. Microsoft Corporation
  538. One Microsoft Way
  539. Redmond, WA 98052-6399
  540. Email: {joshco,sonuag,yarong}@microsoft.com
  541. Cohen et al. [Page 14]