RFC 4570 PROPOSED STANDARD SDP · MULTICAST · FILTERING

Session Description Protocol (SDP) Source Filters

An SDP attribute that lists which sender addresses a receiver should accept, or ignore, for a session.

On rfc-editor.org ↗
PUBLISHED
July 2006
AUTHORS
B. Quinn, R. Finlayson
STREAM
IETF
ATTRIBUTE NAME
source-filter
FILTER MODES
incl or excl
ADDRESS TYPES
IP4, IP6 or *
LEVELS ALLOWED
Session level or media level
SOURCE LIST SIZE LIMIT
None specified
DOI
10.17487/RFC4570
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                           B. Quinn
Request for Comments: 4570                                 BoxnArrow.com
Category: Standards Track                                   R. Finlayson
                                                     Live Networks, Inc.
                                                               July 2006


           Session Description Protocol (SDP) Source Filters

Status of This Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   This document describes how to adapt the Session Description Protocol
   (SDP) to express one or more source addresses as a source filter for
   one or more destination "connection" addresses.  It defines the
   syntax and semantics for an SDP "source-filter" attribute that may
   reference either IPv4 or IPv6 address(es) as either an inclusive or
   exclusive source list for either multicast or unicast destinations.
   In particular, an inclusive source-filter can be used to specify a
   Source-Specific Multicast (SSM) session.

1.  Introduction

   The Session Description Protocol [SDP] provides a general purpose
   format for describing multimedia sessions in announcements or
   invitations.  SDP uses an entirely textual data format (the US-ASCII
   subset of [UTF-8]) to maximize portability among transports.  SDP
   does not define a protocol, but only the syntax to describe a
   multimedia session with sufficient information to discover and
   participate in that session.  Session descriptions may be sent using
   any number of existing application protocols for transport (e.g.,
   Session Announcement Protocol (SAP), SIP, Real Time Streaming
   Protocol (RTSP), email, and HTTP).

   Typically, session descriptions reference an IP multicast address for
   the "connection-address" (destination), though unicast addresses or
   fully qualified domain names (FQDNs) MAY also be used.  The "source-
   filter" attribute defined in this document qualifies the session
   traffic by identifying the address (or FQDN) of legitimate sources
   (senders).  The intent is for receivers to use the source and
   destination address pair(s) to filter traffic, so that applications
   receive only legitimate session traffic.

   Receiver applications are expected to use the SDP source-filter
   information to identify traffic from legitimate senders, and discard
   traffic from illegitimate senders.  Applications and hosts may also
   share the source-filter information with network elements (e.g., with
   routers using [IGMPv3]) so they can potentially perform the traffic
   filtering operation further "upstream," closer to the source(s).

   The "source-filter" attribute can appear at the session level and/or
   the media level.

1.1.  Motivation

   The purpose of a source-filter is to help protect receivers from
   traffic sent from illegitimate source addresses.  Filtering traffic
   can help to preserve content integrity and protect against Denial of
   Service (DoS) attacks.

   For multicast destination addresses, receiver applications MAY apply
   source-filters using the Multicast Source Filter APIs [MSF-API].
   Hosts are likely to implement these APIs using protocol mechanisms to
   convey the source filters to local multicast routers.  Other
   "upstream" multicast routers MAY apply the filters and thereby
   provide more explicit multicast group management and efficient
   utilization of network resources.  The protocol mechanisms to enable
   these operations are beyond the scope of this document, but their
   potential provided motivation for SDP source-filters.

2.  Terminology

   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 RFC 2119 [REQMNT].

3.  The "source-filter" Attribute

   The SDP source-filter attribute does not change any existing SDP
   syntax or semantics, but defines a format for additional session
   description information.  Specifically, source-filter syntax can
   prescribe one or more unicast addresses as either legitimate or
   illegitimate sources for any (or all) SDP session description
   "connection-address" field values.

   Note that the unicast source addresses specified by this attribute
   are those that are seen by a receiver.  Therefore, if source
   addresses undergo translation en route from the original sender to
   the receiver - e.g., due to Network Address Translation (NAT) or some
   tunneling mechanism - then the SDP "source-filter" attribute, as
   presented to the receiver, will not be accurate unless the source
   addresses therein are also translated accordingly.

   The source-filter attribute has the following syntax:

       a=source-filter: <filter-mode> <filter-spec>

   The <filter-mode> is either "incl" or "excl" (for inclusion or
   exclusion, respectively).  The <filter-spec> has four sub-components:

       <nettype> <address-types> <dest-address> <src-list>

   A <filter-mode> of "incl" means that an incoming packet is accepted
   only if its source address is in the set specified by <src-list>.  A
   <filter-mode> of "excl" means that an incoming packet is rejected if
   its source address is in the set specified by <src-list>.

   The first sub-field, <nettype>, indicates the network type, since SDP
   is protocol independent.  This document is most relevant to the value
   "IN", which designates the Internet Protocol.

   The second sub-field, <address-types>, identifies the address family,
   and for the purpose of this document may be either <addrtype> value
   "IP4" or "IP6".  Alternately, when <dest-address> is an FQDN, the
   value MAY be "*" to apply to both address types, since either address
   type can be returned from a DNS lookup.

   The third sub-field, <dest-address>, is the destination address,
   which MUST correspond to one or more of the session's "connection-
   address" field values.  It may be either a unicast or multicast
   address, an FQDN, or the "*" wildcard to match any/all of the
   session's "connection-address" values.

   The fourth sub-field, <src-list>, is the list of source
   hosts/interfaces in the source-filter, and consists of one or more
   unicast addresses or FQDNs, separated by space characters.

   The format and content of these semantic elements are derived from
   and compatible with those defined in [SDP].  For more detail, see
   Appendix A of this document.

3.1.  Processing Rules

   There are a number of details to consider when parsing the SDP
   source-filter syntax.

   The <dest-address> value in a "source-filter" attribute MUST
   correspond to an existing <connection-field> value in the session
   description.  The only exception to this is when a "*" wildcard is
   used to indicate that the source-filter applies to all
   <connection-field> values.

   When the <dest-address> value is a multicast address, the field value
   MUST NOT include the sub-fields <ttl> and <number of addresses> from
   the <connection-address> value.  If the <connection-address>
   specifies more than one multicast address (in the <number of
   addresses> field), then a source filter, if any, for each such
   address must be stated explicitly, using a separate "a=source-filter"
   line for each address (unless a "*" wildcard is used for
   <dest-address>).  See section 3.2.4 for an example.

   When the <addrtype> value is the "*" wildcard, the <dest-address>
   MUST be either an FQDN or "*" (i.e., it MUST NOT be an IPv4 or IPv6
   address).  See section 3.2.6 for an example.

   As has always been the case, the default behavior when a source-
   filter attribute is not provided in a session description is that all
   traffic sent to the specified <connection-address> value should be
   accepted (i.e., from any source address).  The source-filter grammar
   does not include syntax to express either "exclude none" or "include
   all."

   Like the standard <connection-field> described in [SDP], the location
   of the "source-filter" attribute determines whether it applies to the
   entire session or only to a specific medium (i.e., "session-level" or
   "media-level").  A media-level source-filter will always completely
   override a session-level source-filter.

   A "source-filter" need not be located at the same hierarchy level as
   its corresponding <connection-field>.  So, a media-level
   <source-filter> can reference a session-level <connection-field>
   value, and a session-level "source-filter" can be applied to all
   matching media-level <connection-field> values.  See section 3.2.3
   for an example.

   An SDP description MUST NOT contain more than one session-level
   "source-filter" attribute that covers the same destination address,
   or more than one media-level "source-filter" attribute that covers
   the same destination address.

   There is no specified limit to the number of entries allowed in the
   <src-list>; however, there are practical limits that should be
   considered.  For example, depending on the transport to be used for
   the session description, there may be a limit to the total size of
   the session description (e.g., as determined by the maximum payload
   in a single datagram).  Also, when the source-filter is applied to
   control protocols, there may be a limit to the number of source
   addresses that can be sent.  These limits are outside the scope of
   this document, but should be considered when defining source-filter
   values for SDP.

3.2.  Examples

   Here are a number of examples that illustrate how to use the source-
   filter attribute in some common scenarios.  We use the following
   session description components as the starting point for the examples
   to follow.  For each example, we show the source filter with
   additional relevant information and provide a brief explanation.

      <session-description> =
           v=0
           o=The King <Elvis@example.com>
           s=Elvis Impersonation
           i=All Elvis, all the time
           u=http://www.example.com/ElvisLive/
           t=0 0
           a=recvonly

      <media-description 1> =
           m=audio 54320 RTP/AVP 0

      <media-description 2> =
           m=video 54322 RTP/AVP 34

3.2.1.  Source-Specific Multicast Example

   Multicast addresses in the Source-Specific Multicast [SSM] range
   require a single unicast sender address for each multicast
   destination, so the source-filter specification provides a natural
   fit.  In this example, a session member should receive only traffic
   sent from 192.0.2.10 to the multicast session address 232.3.4.5.

      <session-description>

      c=IN IP4 232.3.4.5/127
      a=source-filter: incl IN IP4 232.3.4.5 192.0.2.10

      <media-description 1>
   This source-filter example uses an inclusion list with a single
   multicast "connection-address" as the destination and single unicast
   address as the source.  Note that the value of the connection-address
   matches the value specified in the connection-field.

   Also note that since the connection-field is located in the session-
   description section, the source-filter applies to all media.

   Furthermore, if the SDP description specifies an RTP session (e.g.,
   its "m=" line(s) specify "RTP/AVP" as the transport protocol), then
   the "incl" specification will apply not only to RTP packets, but also
   to any RTCP packets that are sent to the specified multicast address.
   This means that, as a side effect of the "incl" specification, the
   only possible multicast RTCP packets will be "Sender Report" (SR)
   packets sent from the specified source address.

   Because of this, an SDP description for a Source-Specific Multicast
   (SSM) RTP session SHOULD also include an

      a=rtcp-unicast ...

   attribute, as described in [RTCP-SSM] (section 10.1).  This specifies
   that RTCP "Reception Report" (RR) packets are to be sent back via
   unicast.

3.2.2.  Unicast Exclusion Example

   Typically, an SDP session <connection-address> value is a multicast
   address, although it is also possible to use either a unicast address
   or FQDN.  This example illustrates a scenario whereby a session
   description indicates the unicast source address 192.0.2.10 in an
   exclusion filter.  In effect, this sample source-filter says,
   "destination 192.0.2.11 should accept traffic from any sender
   *except* 192.0.2.10."

      <session-description>

      c=IN IP4 192.0.2.11
      a=source-filter: excl IN IP4 192.0.2.11 192.0.2.10

      <media-description 1>

3.2.3.  Multiple Session Address Example

   This source-filter example uses the wildcard "*" value for
   <dest-addr> to correspond to any/all <connection-address> values.
   Hence, the only legitimate source for traffic sent to either
   232.2.2.2 or 232.4.4.4 multicast addresses is 192.0.2.10.  Traffic
   sent from any other unicast source address should be discarded by the
   receiver.

      <session-description>

      a=source-filter: incl IN IP4 * 192.0.2.10

      <media-description 1>

      c=IN IP4 232.2.2.2/127

      <media-description 2>

      c=IN IP4 232.4.4.4/63

3.2.4.  Multiple Multicast Address Example

   In this example, the <connection-address> specifies three multicast
   addresses: 224.2.1.1, 224.2.1.2, and 224.2.1.3.  The first and third
   of these addresses are given source filters.  However, in this
   example the second address - 224.2.1.2 - is *not* given a source
   filter.

      <session-description>

      c=IN IP4 224.2.1.1/127/3
      a=source-filter: incl IN IP4 224.2.1.1 192.0.2.10
      a=source-filter: incl IN IP4 224.2.1.3 192.0.2.42

      <media-description 1>

3.2.5.  IPv6 Multicast Source-Filter Example

   This simple example defines a single session-level source-filter that
   references a single IPv6 multicast destination and source pair.  The
   IP multicast traffic sent to FFOE::11A is valid only from the unicast
   source address 2001:DB8:1:2:240:96FF:FE25:8EC9.

   <session-description>

   c=IN IP6 FF0E::11A/127
   a=source-filter incl IN IP6 FF0E::11A 2001:DB8:1:2:240:96FF:FE25:8EC9

   <media-description 1>

3.2.6.  IPv4 and IPv6 FQDN Example

   This example illustrates use of the <addrtype> "*" wildcard, along
   with multicast and source FQDNs that may resolve to either an IPv6 or
   IPv4 address, or both.  Although typically both the multicast and
   source addresses will be the same (either both IPv4 or both IPv6),
   using the wildcard for addrtype in the source filter allows asymmetry
   between the two addresses (so an IPv4 source address may be used with
   an IPv6 multicast address).

      <session-description>

      c=IN IP4 channel-1.example.com/127
      c=IN IP6 channel-1.example.com/127
      a=source-filter: incl IN * channel-1.example.com src-1.example.com

      <media-description 1>

3.3.  Offer-Answer Model Considerations

   The "source-filter" attribute is not intended to be used as an
   'offer' in an SDP offer-answer exchange [OFFER], because sets of
   source addresses do not represent 'capabilities' or 'limitations' of
   the offerer, and because the offerer does not, in general, have a
   priori knowledge of which IP source address(es) will be included in
   an answer.  While an answerer may include the "source-filter"
   attribute in his/her answer (e.g., to designate a SSM session), the
   answerer SHOULD ignore any "source-filter" attribute that was present
   in the original offer.

4.  Interoperability Issues

   Defining a list of legitimate sources for a multicast destination
   address represents a departure from the Any-Source Multicast (ASM)
   model, as originally described in [IGMPv1].  The ASM model supports
   anonymous senders and all types of multicast applications (e.g.,
   many-to-many).  Use of a source-filter excludes some (unknown or
   undesirable) senders, which lends itself more to one-to-many or few-
   to-few type multicast applications.

   Although these two models have contrasting operational
   characteristics and requirements, they can coexist on the same
   network using the same protocols.  Use of source-filters do not
   corrupt the ASM semantics but provide more control for receivers, at
   their discretion.

5.  Security Considerations

   See [SDP] for security considerations specific to the Session
   Description Protocol in general.  The central issue relevant to using
   source address filters is the question of address authenticity.

   Using the source IP address for authentication is weak, since
   addresses are often dynamically assigned and it is possible for a
   sender to "spoof" its source address (i.e., use one other than its
   own) in datagrams that it sends.  Proper router configuration,
   however, can reduce the likelihood of "spoofed" source addresses
   being sent to or from a network.  Specifically, border routers are
   encouraged to filter traffic so that datagrams with invalid source
   addresses are not forwarded (e.g., routers drop datagrams if the
   source address is non-local) [FILTERING].  This, however, does not
   prevent IP source addresses from being spoofed on a Local Area
   Network (LAN).

   Also, as noted in section 3 above, tunneling or NAT mechanisms may
   require corresponding translation of the addresses specified in the
   SDP "source-filter" attribute, and furthermore, may cause a set of
   original source addresses to be translated to a smaller set of source
   addresses as seen by the receiver.

   Use of FQDNs for either <dest-address> or <src-list> values provides
   a layer of indirection that provides great flexibility.  However, it
   also exposes the source-filter to any security inadequacies that the
   DNS system may have.  If unsecured, it is conceivable that the DNS
   server could return illegitimate addresses.

   In addition, if source-filtering is implemented by sharing the
   source-filter information with network elements, then the security of
   the protocol(s) that are used for this (e.g., [IGMPv3]) becomes
   important, to ensure that legitimate traffic (and only legitimate
   traffic) is received.

   For these reasons, receivers SHOULD NOT treat the SDP "source-filter"
   attribute as being its sole mechanism for protecting the integrity of
   received content.

6.  IANA Considerations

   As recommended by [SDP] (Appendix B), the new attribute name
   "source-filter" has been registered with IANA, as follows:

   The following contact information shall be used for all registrations
   included here:

        Contact:      Ross Finlayson
                      email: finlayson (at) live555.com
                      phone: +1-650-254-1184

      SDP Attribute ("att-field"):
        Attribute name:     source-filter
        Long form:          Source Filter
        Type of name:       att-field
        Type of attribute:  Session level or media level
        Subject to charset: No
        Purpose:            See this document
        Reference:          This document
        Values:             See this document, and registrations below

7.  Acknowledgements

   The authors would like to thank Dave Thaler and Mark Handley, whose
   input provided much of the substance of this document.  Magnus
   Westerlund also provided valuable feedback during editing.

8.  Normative References

   [ABNF]      Crocker, D., Ed. and P. Overell, "Augmented BNF for
               Syntax Specifications: ABNF", RFC 4234, October 2005.

   [REQMNT]    Bradner, S., "Key words for use in RFCs to Indicate
               Requirement Levels", BCP 14, RFC 2119, March 1997.

   [SDP]       Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
               Description Protocol", RFC 4566, July 2006.

   [UTF-8]     Yergeau, F., "UTF-8, a transformation format of ISO
               10646", STD 63, RFC 3629, November 2003.

9.  Informative References

   [FILTERING] Ferguson, P. and D. Senie, "Network Ingress Filtering:
               Defeating Denial of Service Attacks which employ IP
               Source Address Spoofing", BCP 38, RFC 2827, May 2000.

   [IGMPv1]    Deering, S., "Host extensions for IP multicasting", STD
               5, RFC 1112, August 1989.

   [IGMPv3]    Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A.
               Thyagarajan, "Internet Group Management Protocol, Version
               3", RFC 3376, October 2002.

   [MSF-API]   Thaler, D., Fenner, B., and B. Quinn, "Socket Interface
               Extensions for Multicast Source Filters", RFC 3678,
               January 2004.

   [OFFER]     Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
               with Session Description Protocol (SDP)", RFC 3264, June
               2002.

   [RTCP-SSM]  Chesterfield, J., E. Schooler, J. Ott, "RTCP Extensions
               for Single-Source Multicast Sessions with Unicast
               Feedback", Work in Progress, October 2004.

   [SSM]       Bhattacharyya, S., "An Overview of Source-Specific
               Multicast (SSM)", RFC 3569, July 2003.

Appendix A.  Source-Filter Attribute Syntax

   This appendix provides an Augmented BNF [ABNF] grammar for expressing
   an exclusion or inclusion list of one or more (IPv4 or IPv6) unicast
   source addresses.  It is intended as an extension to the grammar for
   the Session Description Protocol, as defined in [SDP].  Specifically,
   it describes the syntax for the new "source-filter" attribute field,
   which MAY be either a session-level or media-level attribute.

   The "dest-address" value in each source-filter field MUST match an
   existing connection-field value, unless the wildcard connection-
   address value "*" is specified.

   source-filter =  "source-filter" ":" SP filter-mode SP filter-spec
                    ; SP is the ASCII 'space' character
                    ;  (0x20, defined in [ABNF]).

   filter-mode =    "excl" / "incl"
                    ; either exclusion or inclusion mode.

   filter-spec =    nettype SP address-types SP dest-address SP src-list
                    ; nettype is as defined in [SDP].

   address-types =  "*" / addrtype
                    ; "*" for all address types (both IP4 and IP6),
                    ;  but only when <dest-address> and <src-list>
                    ;  reference FQDNs.
                    ; addrtype is as defined in [SDP].

   dest-address =   "*" / basic-multicast-address / unicast-address
                    ; "*" applies to all connection-address values.
                    ; unicast-address is as defined in [SDP].

   src-list =       *(unicast-address SP) unicast-address
                    ; one or more unicast source addresses (in
                    ;  standard IPv4 or IPv6 ASCII-notation form)
                    ;  or FQDNs.
                    ; unicast-address is as defined in [SDP].

   basic-multicast-address =   basic-IP4-multicast / basic-IP6-multicast
                               / FQDN / extn-addr
                               ; i.e., the same as multicast-address
                               ;  defined in [SDP], except that the
                               ;  /<ttl> and /<number of addresses>
                               ;  fields are not included.
                               ; FQDN and extn-addr are as defined
                               ;  in [SDP].

   basic-IP4-multicast =       m1 3( "." decimal-uchar )
                               ; m1 and decimal-uchar are as defined
                               ;  in [SDP].

   basic-IP6-multicast =       hexpart
                               ; hexpart is as defined in [SDP].

Authors' Addresses

   Bob Quinn
   BoxnArrow.com
   31 Caldwell Road
   Waltham, MA 02453

   Phone: +1-781-577-1539
   EMail: rcq@boxnarrow.com


   Ross Finlayson
   Live Networks, Inc.
   650 Castro St., suite 120-196
   Mountain View, CA 94041

   EMail: finlayson@live555.com

Full Copyright Statement

   Copyright (C) The Internet Society (2006).

   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.

   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.

Acknowledgement

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).

AI ELI5

On this page
PROBLEMA session description names where traffic is sent but not who is allowed to send it, so receivers cannot tell legitimate senders from illegitimate ones.
MECHANISMThe source-filter attribute is written as a=source-filter: followed by incl or excl, a network type, an address type, a destination address and a list of source addresses. Receivers accept only listed sources for incl, or reject listed sources for excl.
THE CATCHIt can describe a Source-Specific Multicast session, but source addresses are weak authentication, so it must not be a receiver's only protection.

§1Why Filter Sources

The Session Description Protocol (SDP) is a text format that describes a multimedia session. It is not a protocol itself and can be carried by SAP, SIP, RTSP, email or HTTP. A description usually names an IP multicast address as the connection-address, the destination, though unicast addresses or fully qualified domain names (FQDNs) may also be used.

The source-filter attribute adds the addresses of legitimate senders. Receivers use the source and destination pair to discard traffic from illegitimate senders. They may also share the information with network elements such as routers using IGMPv3, so filtering can happen closer to the source. The goal is to protect receivers, preserve content integrity and help against Denial of Service attacks. The attribute may appear at session level, media level or both.

When many people can send messages to the same place, you want a way to say which senders you trust. The source filter is that list.

§2The source-filter Attribute

The syntax is a=source-filter: <filter-mode> <filter-spec>. The attribute does not change any existing SDP syntax or semantics.

  • filter-mode is incl or excl. With incl a packet is accepted only if its source is in the list. With excl a packet is rejected if its source is in the list.
  • nettype is the network type, mainly IN for the Internet.
  • address-types is IP4 or IP6, or * when the destination is an FQDN, since DNS can return either type.
  • dest-address must match one of the session's connection addresses. It may be unicast, multicast, an FQDN, or * to match all of them.
  • src-list is one or more unicast addresses or FQDNs separated by spaces.

The addresses are those seen by the receiver. If NAT or tunneling changes source addresses on the way, the attribute is only accurate if the addresses in it are translated too.

The line says whether it is a list of allowed senders or blocked senders, where the messages are going, and then names the senders.

THE TWO FILTER MODES
ModePacket is accepted when
inclits source address is in the source list
exclits source address is not in the source list

§3Processing Rules

The dest-address must match an existing connection field, unless * is used. For a multicast destination it must not include the ttl or number-of-addresses parts. If a connection field covers several multicast addresses, each needs its own a=source-filter line unless * is used. When the address type is *, the destination must be an FQDN or *, not an IP address.

With no source-filter, traffic from any source is accepted. The grammar has no way to say "exclude none" or "include all". A media-level filter always completely overrides a session-level one, and a filter need not sit at the same level as its connection field. A description must not contain more than one session-level filter covering the same destination address, or more than one media-level filter covering the same destination address. There is no limit on the number of entries in the source list, but practical limits such as session description size should be considered.

If there is no list, everyone is let in. If a list is given for one part of the call, it replaces the list for the whole call. Each address may only have one list at each level.

§4Examples and Offer-Answer Use

In the Source-Specific Multicast example, c=IN IP4 232.3.4.5/127 and a=source-filter: incl IN IP4 232.3.4.5 192.0.2.10 mean that only traffic from 192.0.2.10 to that group is accepted. For an RTP session, an incl filter also applies to RTCP, so only Sender Reports from that source could be multicast. The RFC says such a description SHOULD also include an a=rtcp-unicast attribute so Reception Reports are sent by unicast.

Other examples show an exclusion filter on a unicast destination, a * destination that covers two multicast addresses, a connection field with three multicast addresses where only two get filters, an IPv6 pair, and FQDNs with * as the address type.

The attribute is not meant as an offer in an SDP offer-answer exchange, because source sets are not capabilities of the offerer. An answerer may include it, for example to designate an SSM session, but SHOULD ignore any source-filter in the original offer.

The examples show a list that allows only one sender into a group, a list that blocks one sender, and lists that cover several groups at once.

SOURCE-SPECIFIC MULTICAST EXAMPLE (RFC 4570, SECTION 3.2.1)
SSM source filter
c=IN IP4 232.3.4.5/127
a=source-filter: incl IN IP4 232.3.4.5 192.0.2.10

§5Fit With Any-Source Multicast

Listing legitimate sources departs from the Any-Source Multicast (ASM) model, which supports anonymous senders and all kinds of multicast applications. A source filter excludes some unknown or undesirable senders, which suits one-to-many or few-to-few applications better. The RFC says the two models can coexist on the same network using the same protocols, and that source filters do not corrupt ASM semantics but give receivers more control at their discretion.

Normally anyone can talk to a group. A guest list is an extra choice a listener can make for themselves, and it does not break the normal way things work.

§6Security Considerations

The central question is whether addresses are authentic. Using a source IP address for authentication is weak, since addresses are often assigned dynamically and a sender can spoof its source address. Border routers are encouraged to drop datagrams with invalid source addresses, but this does not stop spoofing on a LAN.

NAT or tunneling may force translation of the addresses in the attribute and may collapse many original sources into a smaller set. FQDNs add flexibility but expose the filter to DNS weaknesses, since an unsecured DNS server could return illegitimate addresses. If the filter is shared with network elements, the security of that protocol, such as IGMPv3, also matters. For these reasons receivers SHOULD NOT treat the source-filter as their sole mechanism for protecting the integrity of received content.

A sender can pretend to be someone else, so the guest list cannot be your only guard. It helps, but you should use other protections too.

§7References