Service Location Protocol Modifications for IPv6
Extracted elements (24)
DNS names SHOULD be preferred over literal IPv6 addresses in service: URLs to avoid scope ambiguity. Literal addresses are necessary only when SLP is used without DNS, such as in ad-hoc networks with no pre-configured infrastructure.
IPv6 uses link-local multicast in place of broadcast. SLPv1 over IPv6 is not described because there is no implementation or deployment of SLPv1 over IPv6 at time of publication; SLPv2 is RECOMMENDED instead.
SLPv2 for IPv4 uses only one administratively scoped multicast address because only 256 relative assignments were available. IPv6's larger address space and scoped multicast architecture allow a range of distinct group-id assignments (FF0X::116, FF0X::123, FF0X::1:1000–13FF), improving scalability and reducing unnecessary multicast delivery.
This document does not describe how to use SLPv1 over IPv6; there was no implementation or deployment of SLPv1 over IPv6 at time of publication. Only SLPv2 is specified for IPv6 use.
A multihomed DA MUST respond to active DA discovery requests using the same scope as the request. The DA MUST multicast unsolicited DAAdverts on each interface using link-local and site-local source addresses (or link-local only if no higher-scope address is configured).
A multihomed DA MUST track which interface each registration was made on and MUST prevent zone-crossing: services registered in Zone 2 must not be discoverable in Zone 1.
A multihomed SA MUST issue DA discovery requests using multicast scope FF02 and, if it has a site-local or global address, MUST reissue with increasing scopes up to FF05. Active DA discovery must be attempted on all zones.
A multihomed SA MUST NOT include an address in a SAAdvert sent on a zone where that address is not valid (e.g., no link-local address from Link 1 in a SAAdvert sent on Link 2).
A multihomed SA MUST NOT return service information for services in a different zone than the request's zone. The SA MUST NOT send a registration to a DA for a service present in a different zone, and MUST register services with DAs present in the same zone.
A multihomed UA MUST use active discovery to detect DAs before issuing multicast requests, and MUST issue requests using increasing multicast scopes starting at FF01 up to a maximum of FF05 to solicit DAAdvertisements.
A SA and DA MUST join all multicast groups to which a SLPv2 agent may send a message, to ensure they can receive all multicast traffic.
A SLPv2 Agent MUST NOT join a multicast group whose scope is greater than the scope configured for unicast on that interface. Interfaces with site-local or global addresses MUST join all multicast scopes from FF01 through FF05.
A SLPv2 Agent MUST NOT propagate service advertisements from one zone to another. A SA or DA MUST NOT respond to a request from one zone with service information associated with a service in a different zone.
Broadcast-only configuration for SLP is not supported under IPv6. If a User Agent wishes to discover Directory Agents or query multiple Service Agents, it MUST multicast the request to the appropriate multicast address.
Service Locations in SrvReg, SrvRply, AttrRst, SAAdvert, or DAAdvert messages whose locations are literal addresses MUST only be sent to SLP agents located on the same zone.
SLPv2 SAs and DAs MUST determine the scope of each service: URL address, resolving hostnames to addresses if necessary. A SA or DA MUST NOT respond to a SrvRqst with a service: URL whose address scope is less than the request's source address scope.
The DA URL MUST contain the address of the greatest scope the DA is configured with in the zone (e.g., global address if the DA has link-local, site-local, and global addresses in that zone).
The maximum scope for SLPv2 multicast messages is site-local (FF05). An SLPv2 agent MUST issue multicast requests using a source address whose scope is no less than the scope of the multicast group.
IPv6 literal addresses in service: URLs are enclosed in square brackets per RFC 2732: ipv6-addr = '[' num-addr ']', where num-addr is the text IPv6 address as specified in RFC 2373 Section 2.2.
SLPv2 for IPv6 uses three multicast group-id assignments: FF0X::116 (SVRLOC) for Service Type and Attribute Requests, FF0X::123 (SVRLOC-DA) for DA discovery, and FF0X::1:1000–FF0X::1:13FF (Service Location range) for all other multicast Service Requests.
The multicast group-id for a given service type is computed by hashing the UTF-8 service type string using a polynomial hash (h = h*33 + byte), then taking the low 10 bits (range 0–1023) as the offset into FF0X::1:1000.
IANA assigned the IPv6 multicast group-id range FF0X::1:1000–FF0X::1:13FF for use by Service Location Protocol. The range FF05::1:1000–FF05::1:13FF was previously assigned in RFC 2375; this document extends it across all scopes (FF0X). No additional IANA registry is required.
UAs and DAs MAY ignore all unauthenticated SLP messages when a valid IPSec association exists. SAs and DAs MUST be able to use IP Authentication and IP Encapsulating Security Payload for SLP messages whenever an appropriate IPSec Security Association exists.
Out-of-scope response rules: a service with a link-local address responds only to link-local requests (Drop for site-local or global requestors); a site-local service responds to link-local and site-local requestors but Drops global; a global service responds to all requestors.