Presentation is loading. Please wait.

Presentation is loading. Please wait.

Multicast Source Filter API draft-ietf-idmr-msf-api-00.txt Dave Thaler (Microsoft) Bill Fenner (AT&T Research) Bob Quinn (Stardust.com)

Similar presentations


Presentation on theme: "Multicast Source Filter API draft-ietf-idmr-msf-api-00.txt Dave Thaler (Microsoft) Bill Fenner (AT&T Research) Bob Quinn (Stardust.com)"— Presentation transcript:

1 Multicast Source Filter API draft-ietf-idmr-msf-api-00.txt Dave Thaler (Microsoft) Bill Fenner (AT&T Research) Bob Quinn (Stardust.com)

2 Goals Express multicast source filters for IPv4 and IPv6 Provide version-independent API not present in RFC 2553 Basic (delta-based) version for most uses Advanced version for large atomic operations, switching modes, etc. Minimize changes to existing API

3 Existing IPv4 Multicast API struct ip_mreq { struct in_addr imr_multiaddr; /* IP multicast address of group */ struct in_addr imr_interface; /* local IP address of interface */ }; socket options : IP_{ADD,DROP}_MEMBERSHIP

4 Semantics of Existing API “Delta”-based –To join/leave a set of (sub)set of groups, call API once for each group to join or leave NOT “final-state” based (don’t specify new set of groups to be joined to) Often join multiple groups (e.g., different media), but this is not a problem

5 Structure for new IPv4 basic operations struct ip_mreq_source { struct in_addr imr_multiaddr; /* group address */ struct in_addr imr_sourceaddr;/* source address */ struct in_addr imr_interface; /* iface address*/ };

6 Socket Operations (setsockopt) IP_{ADD,DROP}_SOURCE_MEMBERSHIP - for inclusion list changes IP_{ADD,DROP}_MEMBERSHIP - existing API for exclude mode IP_{ALLOW,BLOCK}_SOURCE - for exclusion list changes

7 Semantics of Basic API For source-inclusion, just do IP_ADD_SOURCE_MEMBERSHIP per source For source-exclusion, do IP_ADD_MEMBERSHIP, and IP_DROP_SOURCE_MEMBERSHIP per source Functionally equivalent to abstract API Always delta-based so more consistent with existing API

8 Advanced API Basic API doesn’t let app switch modes without leaving group Basic API is very inefficient with large source lists Advanced API is final-state based: just set the complete filter

9 Structure for advanced IPv4 operations struct ip_msfilter { struct in_addr imsf_multiaddr; /* group address */ struct in_addr imsf_interface; /* iface address */ uint32_t imsf_fmode; /* filter mode */ uint32_t imsf_numsrc; /* # sources */ struct in_addr imsf_slist[1]; /* source list */ }; #define IP_MSFILTER_SIZE(numsrc)... (size of buffer with numsrc sources in list) fmode=MCAST_{INCLUDE,EXCLUDE}

10 Socket Operations setsockopt: – IP_MULTICAST_FILTER ioctl: – SIO_GET_MULTICAST_FILTER Open issue: change set to ioctl SIO_SET_MULTICAST_FILTER?

11 Protocol-Independent API E.g. Resolve DNS name to sockaddr Could be v4 or v6, want to use same API in spirit of RFC 2553 Just need to use structures containing sockaddr_storage instead of addresses Use indices to identify interfaces (not addresses!) as in current IPv6-specific API.

12 Basic Structures struct ip_mcast_req { uint32_t imr_interface; struct sockaddr_storage imr_group; }; struct ip_mcast_source_req { uint32_t imsr_interface; struct sockaddr_storage imsr_group; struct sockaddr_storage imsr_source; };

13 Advanced Structure struct ip_mcast_filter { uint32_t imf_interface; struct sockaddr_storage imf_group; uint32_t imf_fmode; uint32_t imf_numsrc; struct sockaddr_storage imf_slist[1]; }; #define IP_MCAST_FILTER_SIZE(numsrc)... (size of buffer with numsrc sources)

14 Socket Operations setsockopt: –IP_{JOIN,LEAVE}_GROUP –IP_{JOIN,LEAVE}_GROUP_SOURCE –IP_{BLOCK,ALLOW}_SOURCE ioctl –SIO_{GET,SET}_MULTICAST_FILTER


Download ppt "Multicast Source Filter API draft-ietf-idmr-msf-api-00.txt Dave Thaler (Microsoft) Bill Fenner (AT&T Research) Bob Quinn (Stardust.com)"

Similar presentations


Ads by Google