| < draft-ietf-svrloc-protocol-v2-14.txt | draft-ietf-svrloc-protocol-v2-15.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force Erik Guttman | Internet Engineering Task Force Erik Guttman | |||
| INTERNET DRAFT Charles Perkins | INTERNET DRAFT Charles Perkins | |||
| 19 April 1999 Sun Microsystems | 20 April 1999 Sun Microsystems | |||
| Updates: RFC 2165 John Veizades | Updates: RFC 2165 John Veizades | |||
| @Home Network | @Home Network | |||
| Michael Day | Michael Day | |||
| Madison River Technologies | Madison River Technologies | |||
| Service Location Protocol, Version 2 | Service Location Protocol, Version 2 | |||
| draft-ietf-svrloc-protocol-v2-14.txt | draft-ietf-svrloc-protocol-v2-15.txt | |||
| Status of This Memo | Status of This Memo | |||
| This document is a submission by the Service Location Working Group | This document is a submission by the Service Location Working Group | |||
| of the Internet Engineering Task Force (IETF). Comments should be | of the Internet Engineering Task Force (IETF). Comments should be | |||
| submitted to the srvloc@srvloc.org mailing list. | submitted to the srvloc@srvloc.org mailing list. | |||
| Distribution of this memo is unlimited. | Distribution of this memo is unlimited. | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| skipping to change at page 1, line 76 ¶ | skipping to change at page 1, line 75 ¶ | |||
| 4.1. Service: URLs . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. Service: URLs . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.2. Naming Authorities . . . . . . . . . . . . . . . . . . . 8 | 4.2. Naming Authorities . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.3. URL Entries . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.3. URL Entries . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. Service Attributes 9 | 5. Service Attributes 9 | |||
| 6. Required Features 11 | 6. Required Features 11 | |||
| 6.1. Use of Ports, UDP, and Multicast . . . . . . . . . . . . 12 | 6.1. Use of Ports, UDP, and Multicast . . . . . . . . . . . . 12 | |||
| 6.2. Use of TCP . . . . . . . . . . . . . . . . . . . . . . . 13 | 6.2. Use of TCP . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.3. Retransmission of SLP messages . . . . . . . . . . . . . 14 | 6.3. Retransmission of SLP messages . . . . . . . . . . . . . 14 | |||
| 6.4. Strings in SLP messages . . . . . . . . . . . . . . . . . 15 | 6.4. Strings in SLP messages . . . . . . . . . . . . . . . . . 14 | |||
| 6.4.1. Scope Lists in SLP . . . . . . . . . . . . . . . 15 | 6.4.1. Scope Lists in SLP . . . . . . . . . . . . . . . 15 | |||
| 7. Errors 16 | 7. Errors 16 | |||
| 8. Required SLP Messages 16 | 8. Required SLP Messages 16 | |||
| 8.1. Service Request . . . . . . . . . . . . . . . . . . . . . 18 | 8.1. Service Request . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8.2. Service Reply . . . . . . . . . . . . . . . . . . . . . . 20 | 8.2. Service Reply . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 8.3. Service Registration . . . . . . . . . . . . . . . . . . 21 | 8.3. Service Registration . . . . . . . . . . . . . . . . . . 21 | |||
| 8.4. Service Acknowledgment . . . . . . . . . . . . . . . . . 22 | 8.4. Service Acknowledgment . . . . . . . . . . . . . . . . . 22 | |||
| 8.5. Directory Agent Advertisement . . . . . . . . . . . . . . 23 | 8.5. Directory Agent Advertisement . . . . . . . . . . . . . . 23 | |||
| skipping to change at page 10, line 15 ¶ | skipping to change at page 10, line 15 ¶ | |||
| attr-val = intval / strval / boolval / opaque | attr-val = intval / strval / boolval / opaque | |||
| intval = [-]1*DIGIT | intval = [-]1*DIGIT | |||
| strval = 1*safe-val | strval = 1*safe-val | |||
| boolval = "true" / "false" | boolval = "true" / "false" | |||
| opaque = "\FF" 1*escape-val | opaque = "\FF" 1*escape-val | |||
| safe-val = ; Any character except reserved. | safe-val = ; Any character except reserved. | |||
| safe-tag = ; Any character except reserved, star and bad-tag. | safe-tag = ; Any character except reserved, star and bad-tag. | |||
| reserved = `(' / `)' / `,' / `\' / `!' / `<' / `=' / `>' / `~' / CTL | reserved = `(' / `)' / `,' / `\' / `!' / `<' / `=' / `>' / `~' / CTL | |||
| escape-val = `\' HEXDIG HEXDIG | escape-val = `\' HEXDIG HEXDIG | |||
| bad-tag = CR / LF / HTAB / `_' | bad-tag = CR / LF / HTAB / `_' | |||
| star = `*' | star = `*' | |||
| The <attr-list>, if present, MUST be scanned prior to evaluation for | The <attr-list>, if present, MUST be scanned prior to evaluation for | |||
| all occurrences of the escape character `\'. Reserved characters | all occurrences of the escape character `\'. Reserved characters | |||
| MUST be escaped (other characters MUST NOT be escaped). All escaped | MUST be escaped (other characters MUST NOT be escaped). All escaped | |||
| characters must be restored to their value before attempting string | characters must be restored to their value before attempting string | |||
| matching. For Opaque values, escaped characters are not converted - | matching. For Opaque values, escaped characters are not converted - | |||
| they are interpreted as bytes. | they are interpreted as bytes. | |||
| Boolean Strings which have the form "true" or "false" can | Boolean Strings which have the form "true" or "false" can | |||
| only take one value and may only be compared with | only take one value and may only be compared with | |||
| skipping to change at page 14, line 11 ¶ | skipping to change at page 14, line 11 ¶ | |||
| The initiating agent SHOULD close the TCP connection. The DA SHOULD | The initiating agent SHOULD close the TCP connection. The DA SHOULD | |||
| wait at least CONFIG_CLOSE_CONN seconds before closing an idle | wait at least CONFIG_CLOSE_CONN seconds before closing an idle | |||
| connection. DAs and SAs SHOULD close an idle TCP connection after | connection. DAs and SAs SHOULD close an idle TCP connection after | |||
| CONFIG_CLOSE_CONN seconds to ensure robust operation, even when the | CONFIG_CLOSE_CONN seconds to ensure robust operation, even when the | |||
| initiating agent neglects to close it. See Section 13 for timing | initiating agent neglects to close it. See Section 13 for timing | |||
| rules. | rules. | |||
| 6.3. Retransmission of SLP messages | 6.3. Retransmission of SLP messages | |||
| Requests to SAs or to discover DAs are multicast repeatedly | Requests which fail to elicit a response are retransmitted. The | |||
| exponentially backing off (doubling the wait interval each time) | initial retransmission occurs after a CONFIG_RETRY wait period. | |||
| until there are no new responses, or CONFIG_MC_MAX seconds have | Retransmissions MUST be made with exponentially increasing wait | |||
| elapsed. | intervals (doubling the wait each time). This applies to unicast as | |||
| well as multicast SLP requests. | ||||
| Unicast requests to a DA or SA should be retransmitted until either | ||||
| a response (which might be an error) has been obtained, or for | ||||
| CONFIG_RETRY_MAX seconds. | ||||
| Multicast requests SHOULD be reissued over CONFIG_MC_MAX seconds | Multicast requests SHOULD be reissued over CONFIG_MC_MAX seconds | |||
| until a result has been obtained. Retransmissions occur with | until a result has been obtained. UAs need only wait till they | |||
| exponentially increasing wait intervals (doubling the wait each | obtain the first reply which matches their request. That is, | |||
| time.) UAs need only wait till they obtain the first reply which | retransmission is not required if the requesting agent is prepared to | |||
| matches their request. Unicast requests to a DA or SA should be | use the 'first reply' instead of 'as many replies as possible within | |||
| retransmitted until either a response (which might be an error) has | a bounded time interval.' | |||
| been obtained, or for CONFIG_RETRY_MAX seconds. The wait intervals | ||||
| between retransmitted unicast requests MUST increase exponentially, | ||||
| doubling each time. | ||||
| When SLP SrvRqst, SrvTypeRqst, and AttrRqst messages are multicast, | When SLP SrvRqst, SrvTypeRqst, and AttrRqst messages are multicast, | |||
| they contain a <PRList> of previous responders. Initially the | they contain a <PRList> of previous responders. Initially the | |||
| <PRList> is empty. When these requests are unicast, the <PRLIst> | <PRList> is empty. When these requests are unicast, the <PRList> | |||
| is always empty. | is always empty. | |||
| Any DA or SA which sees its address in the <PRList> MUST NOT respond | ||||
| to the request. | ||||
| The message SHOULD be retransmitted until the <PRList> causes | The message SHOULD be retransmitted until the <PRList> causes | |||
| no further responses to be elicited or the previous responder | no further responses to be elicited or the previous responder | |||
| list and the request will not fit into a single datagram or until | list and the request will not fit into a single datagram or until | |||
| CONFIG_MC_MAX seconds elapse. | CONFIG_MC_MAX seconds elapse. | |||
| Retransmission is not required if the requesting agent is prepared to | ||||
| use the 'first reply' instead of 'as many replies as possible within | ||||
| a bounded time interval.' | ||||
| Any DA or SA which sees its address in the <PRList> MUST NOT respond | ||||
| to the request. | ||||
| UAs which retransmit a request use the same XID. This allows a DA or | UAs which retransmit a request use the same XID. This allows a DA or | |||
| SA to cache its reply to the original request and then send it again, | SA to cache its reply to the original request and then send it again, | |||
| should a duplicate request arrive. This cached information should | should a duplicate request arrive. This cached information should | |||
| only be held very briefly. XIDs SHOULD be randomly chosen to avoid | only be held very briefly. XIDs SHOULD be randomly chosen to avoid | |||
| duplicate XIDs in requests if UAs restart frequently. | duplicate XIDs in requests if UAs restart frequently. | |||
| 6.4. Strings in SLP messages | 6.4. Strings in SLP messages | |||
| The escape character is a backslash (UTF-8 0x5c) followed by the | The escape character is a backslash (UTF-8 0x5c) followed by the | |||
| two hexadecimal digits of the escaped character. Only reserved | two hexadecimal digits of the escaped character. Only reserved | |||
| skipping to change at page 15, line 47 ¶ | skipping to change at page 15, line 42 ¶ | |||
| string value in order to indicate substring matching. The query | string value in order to indicate substring matching. The query | |||
| including this character matches any character sequence which | including this character matches any character sequence which | |||
| conforms to the letters which are not wildcarded. | conforms to the letters which are not wildcarded. | |||
| 6.4.1. Scope Lists in SLP | 6.4.1. Scope Lists in SLP | |||
| Scope Lists in SLPv2 have the following grammar: | Scope Lists in SLPv2 have the following grammar: | |||
| scope-list = scope-val / scope-val `,' scope-list | scope-list = scope-val / scope-val `,' scope-list | |||
| scope-val = 1*safe | scope-val = 1*safe | |||
| safe = ; Any character except reserved. | safe = ; Any character except reserved. | |||
| reserved = `(' / `)' / `,' / `\' / `!' / `<' / `=' / `>' / `~' / CTL | reserved = `(' / `)' / `,' / `\' / `!' / `<' / `=' / `>' / `~' / CTL | |||
| / `;' / `*' / `+' | / `;' / `*' / `+' | |||
| escape-val = `\' HEXDIG HEXDIG | escape-val = `\' HEXDIG HEXDIG | |||
| Scopes which include any reserved characters must replace the escaped | Scopes which include any reserved characters must replace the escaped | |||
| character with the escaped-val format. | character with the escaped-val format. | |||
| 7. Errors | 7. Errors | |||
| If the Error Code in a SLP reply message is nonzero, the rest of | If the Error Code in a SLP reply message is nonzero, the rest of | |||
| the message MAY be truncated. No data is necessarily transmitted | the message MAY be truncated. No data is necessarily transmitted | |||
| or should be expected after the header and the error code, except | or should be expected after the header and the error code, except | |||
| possibly for some optional extensions to clarify the error, for | possibly for some optional extensions to clarify the error, for | |||
| example as in section D.1. | example as in section D.1. | |||
| skipping to change at page 30, line 39 ¶ | skipping to change at page 30, line 39 ¶ | |||
| 9.4. Tag Lists | 9.4. Tag Lists | |||
| Tag lists are used in SrvDeReg and AttrReq messages. The syntax of a | Tag lists are used in SrvDeReg and AttrReq messages. The syntax of a | |||
| <tag-list> item is: | <tag-list> item is: | |||
| tag-filter = simple-tag / substring | tag-filter = simple-tag / substring | |||
| simple-tag = 1*filt-char | simple-tag = 1*filt-char | |||
| substring = [initial] any [final] | substring = [initial] any [final] | |||
| initial = 1*filt-char | initial = 1*filt-char | |||
| any = `*' *(filt-char `*') | any = `*' *(filt-char `*') | |||
| final = 1*filt-char | final = 1*filt-char | |||
| filt-char = Any character excluding <reserved> and <bad-tag> (see | filt-char = Any character excluding <reserved> and <bad-tag> (see | |||
| grammar in Section 5). | grammar in Section 5). | |||
| Wild card characters in a <tag-list> item match arbitrary sequences | Wild card characters in a <tag-list> item match arbitrary sequences | |||
| of characters. For instance "*bob*" matches "some bob I know", | of characters. For instance "*bob*" matches "some bob I know", | |||
| "bigbob", "bobby" and "bob". | "bigbob", "bobby" and "bob". | |||
| 10. Optional SLP Messages | 10. Optional SLP Messages | |||
| skipping to change at page 42, line 14 ¶ | skipping to change at page 42, line 14 ¶ | |||
| 13. Protocol Timing Defaults | 13. Protocol Timing Defaults | |||
| Interval name Section Default Value Meaning | Interval name Section Default Value Meaning | |||
| ------------------- ------- ------------- ------------------------ | ------------------- ------- ------------- ------------------------ | |||
| CONFIG_MC_MAX 6.3 15 seconds Max time to wait for a | CONFIG_MC_MAX 6.3 15 seconds Max time to wait for a | |||
| complete multicast query | complete multicast query | |||
| response (all values.) | response (all values.) | |||
| CONFIG_START_WAIT 12.2.1 3 seconds Wait to perform DA | CONFIG_START_WAIT 12.2.1 3 seconds Wait to perform DA | |||
| discovery on reboot. | discovery on reboot. | |||
| CONFIG_RETRY 12.3 2 seconds Retransmit unicast | CONFIG_RETRY 12.3 2 seconds Wait interval before | |||
| request if no reply. | initial retransmission | |||
| of multicast or unicast | ||||
| requests. | ||||
| CONFIG_RETRY_MAX 12.3 15 seconds Give up on unicast | CONFIG_RETRY_MAX 12.3 15 seconds Give up on unicast | |||
| request retransmission. | request retransmission. | |||
| CONFIG_DA_BEAT 12.2.2 3 hours DA Heartbeat, so that SAs | CONFIG_DA_BEAT 12.2.2 3 hours DA Heartbeat, so that SAs | |||
| passively detect new DAs. | passively detect new DAs. | |||
| CONFIG_DA_FIND 12.3 900 seconds Minimum interval to wait | CONFIG_DA_FIND 12.3 900 seconds Minimum interval to wait | |||
| before repeating Active | before repeating Active | |||
| DA discovery. | DA discovery. | |||
| CONFIG_REG_PASSIVE 12.2 1-3 seconds Wait to register services | CONFIG_REG_PASSIVE 12.2 1-3 seconds Wait to register services | |||
| on passive DA discovery. | on passive DA discovery. | |||
| CONFIG_REG_ACTIVE 8.3 1-3 seconds Wait to register services | CONFIG_REG_ACTIVE 8.3 1-3 seconds Wait to register services | |||
| End of changes. 14 change blocks. | ||||
| 29 lines changed or deleted | 29 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||