US20120201246A1 - Multicast Traffic Management in a Network Interface - Google Patents

Multicast Traffic Management in a Network Interface Download PDF

Info

Publication number
US20120201246A1
US20120201246A1 US13/450,278 US201213450278A US2012201246A1 US 20120201246 A1 US20120201246 A1 US 20120201246A1 US 201213450278 A US201213450278 A US 201213450278A US 2012201246 A1 US2012201246 A1 US 2012201246A1
Authority
US
United States
Prior art keywords
multicast
network interface
data
address
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/450,278
Inventor
Alvaro Fernández Gutiérrez
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Media Patents SL
Original Assignee
Media Patents SL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Media Patents SL filed Critical Media Patents SL
Priority to US13/450,278 priority Critical patent/US20120201246A1/en
Assigned to Media Patents, S.L. reassignment Media Patents, S.L. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FERNANDEZ GUTIERREZ, ALVARO
Publication of US20120201246A1 publication Critical patent/US20120201246A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast

Definitions

  • the invention relates to the field of multicast technology.
  • Multicast technology makes it possible to send data from a single source to many recipients through a data network, without having to set up unicast communication, i.e. one-to-one individual communication between the source and each of the recipients.
  • the source sends data, in data packet form, to a single address associated to a multicast group to which the equipment interested in being recipients of the data sending can subscribe.
  • This address referred to as a multicast address or also as a multicast group address, is an IP (Internet Protocol) address chosen within a range that is reserved for multicast applications.
  • IP Internet Protocol
  • the recipients that receive data in a multicast group are usually, but not always, equipment connected to the data network by means of a proxy or a router.
  • the term “host” will be used to refer to the recipient equipment.
  • a host can be, for example, a computer, a set-top box (digital signal decoder) connected to a television set, or any other device capable of receiving data packets.
  • a host When a host wants to receive the information sent by one or several sources of a multicast group, it usually sends via a router or an intermediate proxy a subscription message to subscribe to the group so that the router transmits to it the data arriving through the data network and which has been sent by the sources of the multicast group. Likewise, when a host wishes to stop receiving data packets from a multicast group, it usually sends via the router or the proxy an unsubscribe message to stop receiving the data packets.
  • the messages exchanged between a host and a router to manage membership to a multicast group generally use the IGMP protocol (Internet Group Management Protocol) or the MLD (Multicast Listener Discovery) protocol, according to whether or not the router works with version 4 (IPv4) or version 6 (IPv6) of the IP protocol (Internet Protocol), respectively.
  • the proxy also uses the IGMP/MLD protocols to exchange with the host, the closest router or other intermediate proxy, the multicast group membership messages.
  • the proxy can receive from different hosts requests to subscribe to or to unsubscribe from a multicast group, and it assembles them to thus reduce IGMP/MLD message traffic it sends to the router.
  • the generic term IGMP proxy will be used to designate a proxy using the IGMP/MLD protocols.
  • FIGS. 1 , 2 , and 3 show different messages used in the IGMPv3 (IGMP version 3) protocol.
  • FIG. 1 shows a “Membership Query Message” which is a message sent by IGMPv3 routers to the hosts so that the hosts respond with messages that indicate the multicast traffic that they wish to receive.
  • FIG. 2 shows a “Membership Report Message” which is a message sent by the hosts to the routers to indicate the multicast traffic that they wish to receive. This information sent by the hosts in the Membership Report type messages is organized into different blocks of data referred to as “Group Records”. The structure of these group records is shown in FIG. 3 .
  • routers exchange messages with one another for the purpose of defining the routing which allows efficient routing of the data from the sources to the hosts that have subscribed to a multicast group.
  • the routers use specific protocols, including the very well known PIM-SM (Protocol Independent Multicast—Sparse Mode).
  • the routers receive from the hosts, in the form of IGMP/MLD messages, information specifying which multicast groups they want to receive traffic from, and they communicate with other routers, for example by means of the PIM-SM protocol, for the purpose of setting up a routing which takes the traffic requested by the hosts to such hosts.
  • All of the aforementioned protocols are defined and documented by the Internet Engineering Task Force (IETF).
  • IGMPv3 The IGMP protocol version currently being used is IGMPv3, which is described in the RFC 3376 specifications published on line by the IETF (B. Cain at al., Engineering Task Force, Network Working Group, Request for Comments 3376, October 2002; currently available at Internet address http://tools.ietf.orghtml/rfc3376).
  • MLDv2 MLDv2
  • RFC 3810 RFC 3810 specifications published on line by the IETF
  • IETF R. Vida et al., Engineering Task Force, Network Working Group, Request for Comments 3810, June 2004; currently available at Internet address http://tools.ietf.org/htmirfc3810).
  • IGMP proxy The operation of an IGMP proxy is described in the RFC 4605 specifications published on line by the IETF (B. Fenner et al., Engineering Task Force, Network Working Group, Request for Comments 4605, August 2006; currently available at Internet address http://tools.ietf.org/htrnl/rfc4605).
  • the PIM-SM protocol used for the communication between routers is described in the RFC 4601 specifications published on line by the IETF (B. Fenner et al., Engineering Task Force, Network Working Group, Request for Comments 4601, August 2006; currently available at Internet address http://tools.ietf.org/html/rfc4601).
  • Multicast technology was initially implemented primarily to be applied to the many-to-many communication model, known as ASM (Any Source Multicast), in which many users communicate with one another and any of them can send data and also receive data from everyone else.
  • ASM Any Source Multicast
  • a typical ASM application is multiparty calling via Internet.
  • Multicast technology was then implemented to be applied to the one-to-many communication model known as SSM (Source Specific Multicast), in which a single source sends data for many recipients.
  • SSM Source Specific Multicast
  • a host could not choose the data sending sources it did not want to subscribe to within a multicast group, rather the host could only subscribe to or unsubscribe from the group for all the sources.
  • the messages a host sent to a router were very simple: Join (G) to receive traffic from the multicast group G and Leave (G) to stop receiving it. Therefore, earlier IGMP protocol versions did not allow SSM.
  • the possibility that the hosts could choose the sources within a multicast group was introduced in the IGMPv3 version of the IGMP protocol to allow SSM.
  • a host can send IGMP messages containing data blocks referred to as Group Record in which the host defines the sources from which traffic is to be received for each multicast group.
  • These Group Record data blocks in an IGMP message can be of several types:
  • S, G is used hereinafter, and according to the common nomenclature in SSM technology, to refer to the sending of source S of the multicast group G.
  • each network interface can only operate in one of the following modes, being able to pass from one to another: the INCLUDE mode, where the network defines a list of INCLUDE sources, or the EXCLUDE mode, where the network defines a list of EXCLUDE sources.
  • the RFC 3376 specifications describe a method with which the hosts can select the multicast traffic that they wish to receive. A brief summary of this operation is provided below.
  • Paragraph 2 entitled “The Service Interface for Requesting IP Multicast Reception” of the RFC 3376 specifications describes a service interface that can be used by the upper network layers of the host protocols or the host programs in order to request that the IP network layer accept or reject the multicast traffic from certain multicast addresses. For this purpose, it uses a function known as IPMulticastListen.
  • the RFC 3376 specifications of the IGMPv3 explain that the systems must support IGMP messages as per the following function, which enables a host to choose the multicast data sources:
  • IPMulticastListen (socket, interface, multicast-address, filter-mode, ⁇ source-list ⁇ )
  • ocket is a parameter used to distinguish the different applications that are executed on the system (for example, programs and processes) and which call to the IPMulticastListen function.
  • interface is a local identifier for the network card or network interface on which one wishes to receive the multicast traffic indicated in the call to the IPMulticastListen function. If it is wished to receive the same multicast traffic on more than one network interface, the IPMulticastListen function is called separately for each network interface.
  • multicast-address is the multicast group address.
  • filter-mode is the network interface mode, which may be INCLUDE or EXCLUDE.
  • the network interface defines the source-list as INCLUDE; this means that it wishes to receive the multicast group traffic sent by all the sources in the list.
  • the network interface defines the source-list as EXCLUDE; this means that it wishes to receive the multicast group traffic from all the sources sent in the multicast group, except the sources in the list. “source-list” is the INCLUDE or EXCLUDE source-list.
  • filter mode For a given socket combination, network interface, and multicast group, there can only be one “filter mode”, which may be INCLUDE or EXCLUDE.
  • the system stores a state record for each active socket. This register contains the following information:
  • the “filter-mode” of the record can only be INCLUDE or EXCLUDE.
  • the system stores a state record for each network interface and multicast group.
  • This record contains the following information:
  • Each network interface and multicast group has a state record storing the information on the interface and group and the state record contains a field referred to as filter-mode which can only be of the INCLUDE type, containing only INCLUDE sources, or of the EXCLUDE type, containing only EXCLUDE sources.
  • filter-mode which can only be of the INCLUDE type, containing only INCLUDE sources, or of the EXCLUDE type, containing only EXCLUDE sources.
  • the hosts send IGMP messages to the routers via each network interface in order to request multicast traffic, and the content of the messages is typically derived from information in state records associated with given network interface stored in a memory of the computer system.
  • Routers using the IGMP and PIM-SM protocols store the multicast traffic information that they must transmit through each network. This information consists of storing, for each network interface of the router, state information about multicast channels (S,G) or multicast groups (*,G) for which there is at least one host interested in receiving this multicast traffic, with a timer associated to each channel or multicast group that indicates the time passed since the router received the last message requesting this multicast traffic.
  • S,G state information about multicast channels
  • *,G multicast groups
  • Table 1 extracted from RFC 3376, summarizes the operation of a router according to the IGMPv3 protocol.
  • the first column “State 1” shows the initial state of the record of the IGMP router;
  • the second column “Message” shows the content of a Membership Report message received by the IGMP router;
  • the third column “State 2” shows the state of the record of the IGMP router after having received the Membership Report message;
  • the fourth and last column “Actions” shows the actions that the IGMP router carries out after having received the Membership Report message.
  • Table 1 contains 12 rows respectively corresponding to 12 processes which each illustrates the operation of the router according to its initial state (column 1) and according to the messages it has received (column 2).
  • Table 1 relates to a specific network interface of a router executing the IGMPv3 protocol and to a specific multicast group G. Each network interface and multicast group G will have their own state records which will be affected by the messages that the IGMP router receives through the network interface relating to the group G.
  • the following nomenclature has been used in Table 1:
  • the messages in column 2 of Table 1 are the six types of IGMP messages defined in the IGMPv3 protocol for indicating to the router the sources from which it wishes to obtain multicast traffic.
  • the meaning of these six IGMP messages is described in RFC 3376 (chapter 4.2.12) and is as follows:
  • the 12 rows of Table 1 correspond to 12 combinations of an initial state record of the router (column 1) and of a type of IGMP message received (column 2).
  • the router consults the hosts by means of a Group-And-Source-Specific Query message (SEND messages in column 4 of Table 1) for checking if there is a host interested in receiving multicast data from those sources, the traffic of which was being initially transmitted (column 1 of Table 1) and no longer wishes to receive according to the sources indicated in the last received IGMPv3 message (column 2 of Table 1).
  • SEND messages Group-And-Source-Specific Query message
  • a switch is an electronic network interconnection device that normally operates at layer 2 (the data link layer) of the OSI model (“Open Systems Interconnection”).
  • OSI model is the open systems interconnection reference model created by the ISO (“International Organization for Standardization”) and is known to one skilled in the art.
  • a “frame” or a “data frame” is a digital data transmission unit on the layer 2 of the OSI model.
  • RFC 1122 defines a frame as “the unit of transmission in a link layer protocol, and consists of a link layer header followed by a packet”
  • a switch interconnects two or more network segments, passing data frames from one segment to another using the layer 2 destination address of the data frames (for example, the “MAC address” in Ethernet networks).
  • a switch determines and stores the layer 2 address of each device connected to each of its ports.
  • Ethernet defines both the physical layer (layer 1 ) and the data link layer (layer 2 ) in the OSI model, and divides the data link layer into two sublayers: one layer known as LLC (“Logical Link Control”) which is established in the IEEE 802.2 specifications, and a MAC (“Media Access Control”) layer, which is established in the different IEEE 802.3 specifications, such as IEEE 802.3u (“Fast Ethernet”) based on electric cabling, or IEEE 802.3z based on fiber-optics.
  • LLC Logical Link Control
  • MAC Media Access Control
  • IEEE 802.3u IEEE 802.3u
  • IEEE 802.3z wireless Ethernet protocols
  • WIFI wireless Ethernet protocols
  • WIMAX wireless Ethernet protocols
  • LLC Logical Link Control
  • Ethernet uses 6-byte physical addresses referred to as MAC addresses (“Media Access Control Address”).
  • the IEEE has identified three MAC address categories:
  • the IPv4 protocol uses 28 bits to determine an IP multicast address in an IP data packet (the first 4 bits of an IP multicast data packet are always 1110 in binary notation), the 28 bits of the IP multicast address of an IP data packet must be transferred to the 23 bits of the MAC multicast address of the corresponding data frame. Therefore, 5 bits of the IP multicast address are lost in this process. The transfer is therefore made by transferring the 23 least significant bits of the IP multicast address to the 23 bits of the MAC multicast address. Hence, a single MAC multicast address corresponds to 32 IP multicast addresses.
  • FIGS. 4 and 5 different types of layer 2 Ethernet packets or frames encapsulating a layer 3 IP packet are shown.
  • the preamble of an Ethernet frame consist of a 56-bit (7-byte) pattern of alternating 1 and 0 bits, which allows device on the network to easily detect a new incoming frame.
  • the Start Frame Delimiter is the 8 bit value marking the end of the preamble of an Ethernet frame. It has the value 10101011.
  • the SFD is designed to break the pattern of the preamble, and signal the start of the actual frame.
  • the SFD is immediately followed by the destination MAC address.
  • Every Ethernet network card has a unique 48-bit serial number called MAC address, which is stored in ROM or EEPROM carried on the card.
  • the MAC address identifies the device uniquely on the LAN.
  • the destination MAC address (DA) field indicates the MAC address of the network interface of the intended recipient of the packet.
  • the DA field also indicates whether or not the packet contains a multicast or broadcast data.
  • Other fields within the packet may also indicate whether the data is carrying is multicast or broadcast, for example the IP destination address when the payload is a IPv4 packet.
  • the Source MAC address field provides the identification of the node from which the data packet originated. It identifies the origin node using the MAC address of the network interface of the origin node.
  • the EtherType is a two octet field indicating the data type encapsulated in the payload (the frame data field). For example, an EtherType value of 0x0800 indicates that the payload contains an IPv4 datagram.
  • EtherType field was changed to a data length field in the new 802.3 standard. This standard required an IEEE 802.2 header to follow the length field to specify the packet type.
  • EtherType values In order to allow packets using different versions of Ethernet framing in the same network. EtherType values must be greater or equal to 1536 (0x0600). That value was chosen because the maximum length of the data field of an Ethernet 802.3 frame is 1500 bytes. If the field's value is greater than or equal to 1536, the field must be an EtherType. If the field's value is less or equal 1500 it must be a length field. Values between 1500 and 1535 are undefined.
  • FIG. 4 shows an Ethernet packet 420 with a Length field 425 .
  • EtherType/Length field As Length field, either one or two additional headers 430 are added after the 802.3 header but before layer 3 header 411 .
  • the Ethernet frame has two additional headers: an IEEE 802.2 Logical Link Control (LLC) header 431 and an IEEE Subnetwork Access Protocol (SNAP) header 432 .
  • LLC Logical Link Control
  • SNAP IEEE Subnetwork Access Protocol
  • FIG. 4 shows these additional headers in the field 421 .
  • the arrow 427 indicates that the structure of the field 421 is detailed in the element 430 .
  • the SNAP header Type 435 has the same purpose, with the same reserved values, as the Ethernet EtherType field.
  • the 802.2 LLC Header 431 comprise the DSAP field (Destination Service Access Point), the SSAP field (Source Service Access Point) and a control field indicated as CTL in FIG. 4 .
  • the SNAP Header 432 comprises the OUI field (IEEE Organizationally Unique identifier) followed by the 2-octet TYPE field that is a protocol identifier like the ETHERTYPE field.
  • the data portion 422 includes the layer 3 IP packet.
  • the data portion 422 is an IP packet 410 comprising an IP Header 411 and IP payload 412 .
  • Lines 413 and 414 in FIG. 4 indicate that IP packet 410 is encapsulated in data portion 422 .
  • FIG. 5 shows an Ethernet packet 520 with an EtherType field 525 . In this case there are no additional headers with the EtherType field indicating the type of data in the data portion 522 .
  • the data portion 522 is an encapsulated IP packet 410 as indicated by lines 513 and 514 .
  • the IEEE 802.3 standards refer to MAC frames consisting of the destination address, the source address, length/type, data payload and frame check sequence fields.
  • the preamble and the Start Frame Delimiter (SFD) are together considered a header to the MAC frame. This header and the MAC frame are considered a packet.
  • FIG. 6 shows a router 600 (e.g., IGMP router) situated between a first network 610 and a second network 611 .
  • the first network 610 is connected to the downstream network interface 602 of router 600 , and includes three hosts ( 620 , 630 and 640 ).
  • the second network 611 is connected to the upstream network interface 601 of router 600 , and includes four sources ( 650 , 660 , 670 and 680 ) that send data packets.
  • Each of the sources and hosts have a network interface which are represented by elements 625 , 635 , 645 , 655 , 665 , 675 and 685 in FIG. 6 .
  • Each of networks 610 and 611 may be of any of a variety of network types, such as, for example, an Ethernet, WIFI, or WiMAX network, or any other type of data network that uses a shared medium to transmit data.
  • the hosts 620 , 630 and 640 may receive the multicast data frames (layer 2 of the OSI model) that transport the multicast IP packets (layer 3 of the OSI model) from the multicast channels (S 1 ,G 1 ) and (S 3 ,G 1 ) in the form of physical signals (layer 1 of the OSI model).
  • network interfaces 625 , 635 and 645 When network interfaces 625 , 635 and 645 receive a layer 2 data frame that transports an IP packet with a multicast destination IP address, such as an Ethernet data frame with a MAC multicast destination address, the network interfaces 625 , 635 and 645 process the data frame and transmit its contents to an application of its respective host (e.g., an operating system application) which verifies the destination and/or origin addresses of the packet and decides whether or not the packet must be discarded or sent to one of the applications being run in the host.
  • an application of its respective host e.g., an operating system application
  • sources 650 and 670 send multicast data packets (represented by elements 691 a and 693 a , respectively) using a multicast address G 1 .
  • These packets may be link-layer packets that encapsulate multicast IP packets having an IP multicast destination address.
  • Data source 650 sends the multicast IP packets 691 a of the channel (S 1 ,G 1 ) that are encapsulated in frames that use a link layer source address (e.g., a MAC address) of the network interface 655 of source 650 and the multicast link layer destination address corresponding to the multicast group address G 1 using the lower 23 bits of the multicast group address G 1 as explained before.
  • a link layer source address e.g., a MAC address
  • Data source 670 sends the multicast IP packets 693 a of the channel (S 3 ,G 1 ) that are encapsulated in frames that use a link layer source address (e.g., a MAC address) of the network interface 675 of source 670 and the multicast link layer destination address corresponding to the multicast group address G 1 .
  • a link layer source address e.g., a MAC address
  • hosts 620 and 630 each send a message to router 600 to request multicast traffic from sources S 1 and S 3 , respectively, with host 650 not wishing to receive any multicast traffic.
  • the message from host 620 may be an IGMPv3 message requesting the traffic (S 1 ,G 1 ) coming from source 650 , where S 1 is the IP address of the data source 650 and G 1 is a multicast group address used by data source 650 to transmit multicast traffic.
  • the message from host 630 may be an IGMPv3 message requesting the traffic (S 3 ,G 1 ) coming from source 670 , where 53 is the IP address of the data source 670 and G 1 is a multicast group address used by data source 660 to transmit multicast traffic.
  • the IGMP router 600 When the IGMP router 600 receives the messages from hosts 620 and 630 , it transmits to the network 610 via network interface 602 the multicast IP packets 691 b and 693 b corresponding to data packets 691 a and 693 a sent from channels (S 1 ,G 1 ) and (S 3 ,G 1 ), respectively.
  • a problem that exists is that each of the hosts 620 , 630 and 640 in network 610 must devote processing resources to analyze all of the data packets transmitted in network 610 to determine whether to receive or discard the packets.
  • host 640 which is not interested in receiving any multicast traffic must nevertheless waste processing resources to analyze and subsequently discard multicast IP packets 691 b and 693 b .
  • hosts 620 and 630 must each waste processing resources to analyze and subsequently discard multicast IP packets 693 b and 691 b , respectively.
  • the hosts 630 and 640 must analyze a vast number of IP packets every second in order to discard them. As more multicast traffic is circulating through network 610 , more processing resources must be assigned by the hosts in order to discard the multicast traffic that they do not want. In addition to affecting processing operations of the hosts, the charge life of batteries that operate mobile computing devices, such as mobile phones, is also reduced.
  • Another problem associated with the operation of the data network system of FIG. 6 is that the sending of multiple IP multicast packets to network 610 is possible for the purpose of attacking and at least partially disabling the operation of one or more of hosts 620 , 630 and 640 .
  • router 600 In a data network where a router is situated between the sources that send data and the hosts, source specific filtering is not possible using layer 2 filtering since the layer 2 source address of the multicast IP packets is lost during router processing.
  • FIG. 6 when router 600 receives in its upstream network interface 601 a link layer data packet containing an IP packet, for example the 691 a and 693 a multicast packets, the router removes the frame header and transmits the IP packet. In general, the routing process forwards only the IP packet and discards link layer headers and trailers along the way.
  • the router 600 When the router 600 transmits IP packets 691 b and 693 b of the multicast channels (S 1 ,G 1 ) and (S 3 ,G 1 ) to network 610 through its downstream network interface 602 , the router 600 creates new link layer data packets to encapsulate the multicast IP packets. These new link layer packets use the link layer source address of the network interface 602 and use the multicast link layer destination address formed using the lowest 23 bits of the multicast group address G 1 . The link layer packets that encapsulate the IP packets of the multicast channels (S 1 ,G 1 ) and (S 3 ,G 1 ) use the same link layer destination address and the same link layer source address.
  • the link layer source address of the network interface 655 of source 650 is not present in the link layer packet because it was removed in the router 600 .
  • the link layer packets containing the IF multicast packets of the multicast channel (S 3 ,G 1 ) that is, the link layer source address of the interface 665 is lost during the routing process. For this reason, when a multicast IP packet goes through a router It is not possible to filter the multicast traffic of a multicast group from different sources using the link layer destination address or the link layer source address.
  • source specific multicast traffic filtering by a host cannot be accomplished using layer 2 filtering because in source specific multicast the IP source address for the multicast traffic that a host wishes to receive is only located in the IP header of the IP packet when the multicast traffic is transmitted through a router.
  • Prior art host network interfaces that use the multicast MAC destination address for filtering multicast traffic have very limited filtering capability. As an example and with continued reference to FIG.
  • the network interfaces of host 620 , 630 and 640 filter the multicast traffic of the group G 1 using the corresponding multicast MAC address
  • the multicast traffic from all the sources 650 , 660 , 670 and 680 of group G 1 are filtered along with the multicast traffic from all the sources for the other 31 multicast group addresses that have the same lowest 23 bits as the lowest 23 bits of the multicast group G 1 .
  • a method of filtering multicast packets in a network interface comprising storing for the network interface and a multicast group address information in the first memory for the purpose of enabling or disabling transmission through the network interface to the bus of the computer system multicast packets sent from sources using the multicast group address, the information comprising first data that identifies the network interface, second data that identifies the multicast group address, third data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and fourth data that identifies a source-list of zero or more IP source addresses, the network interface accessing the second, third and fourth data, receiving in the network interface a multicast packet from the multicast data network, determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if transmission of the
  • accessing of the second, third and fourth data by the network interface is accomplished by the network interface reading the second, third and fourth data from the first memory. In another embodiment accessing of the second, third and fourth data by the network interface is accomplished by the network interface copying the second, third and fourth data from the first memory into a second memory of the network interface. In another embodiment accessing of the second, third and fourth data by the network interface is accomplished by the computer system sending from the first memory the second, third and fourth data to the network interface for storage in a second memory of the network interface. In another embodiment accessing of the second, third and fourth data by the network interface is accomplished by an IPMulticastListen operation in the computer system sending the second, third and fourth data to the network interface for storage in a second memory of the network interface.
  • a method of filtering multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the network interface accessing, via the bus, information in the computer system for the purpose of enabling or disabling transmission through the network interface to the bus of the computer system multicast packets sent from sources in the multicast data network, the information comprising first data that identifies a multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, receiving in the network interface a multicast packet from the multicast data network, determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the multicast group address and the IP source address of the multicast packet with the accessed first, second, and third data
  • a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the network interface storing information for the purpose of enabling or disabling the transmission of IP multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies an IP multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, receiving in the network interface an IP multicast packet from the multicast data network, determining in the network interface the IP multicast group address and the IP source address of the IP multicast packet, determining in the network interface if transmission of the IP multicast packet from the network interface to the bus is to be enabled or disabled by comparing the IP multicast group address and the IP source address of the IP multicast packet with the first, second and third data; and upon
  • a method of filtering multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising an application of the computer system initiating a request for the purpose of enabling or disabling reception of multicast packets from the multicast data network, the request comprising first data that identifies the network interface, second data that identifies a multicast group address to which the request pertains, third data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and fourth data that identifies a source-list of zero or more IP source addresses, storing the first, second, third and fourth data in the first memory, the network interface accessing the second, third and fourth data, receiving in the network interface a multicast packet from the multicast data network, determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if reception of
  • a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the network interface storing first information for the purpose of enabling or disabling the transmission of IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the first information comprising first data that identifies an IP multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, the network interface storing second information for the purpose of always enabling the transmission of selected IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the second information comprising fourth data that identifies an IP multicast group address, fifth data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and sixth data that identifies a source-list of zero or more IP
  • a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the network interface storing first information for the purpose of enabling or disabling the transmission of IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the first information comprising first data that identifies an IP multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, the network interface storing second information for the purpose of always disabling the transmission of selected IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the second information comprising fourth data that identifies an IP multicast group address, fifth data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and sixth data that identifies a source-list of zero or more
  • a method of filtering multicast data packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the network interface storing information for the purpose of enabling or disabling the transmission of multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies a layer 2 multicast destination address and second data that identifies a layer 2 source address, receiving in the network interface a multicast packet, determining in the network interface the layer 2 destination address and the layer 2 source address of the multicast data packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the layer 2 destination address and the layer 2 source address of the multicast packet with the first and second data; and upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet
  • a method of filtering multicast data packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the network interface storing information for the purpose of enabling or disabling the transmission of multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies a layer 2 multicast destination address and second data that identifies a layer 2 source address, receiving in the network interface a data packet, determining in the network interface if the data packet is a multicast packet, if upon determining the data packet is not a multicast packet, the network interface transmits the data packet to the bus, if upon determining the data packet is a multicast packet, the network interface determines the layer 2 destination address and the layer 2 source address of the multicast packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the layer 2 destination address and the
  • a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system comprising the computer system requesting to receive IP multicast packets from sources of a multicast group address in the multicast data network by sending through the network interface to equipment in the data network a first membership message, the first membership message comprising first data that identifies a multicast group address, second data that denotes an INCLUDE filter-mode, an EXCLUDE filter-mode, a change to INCLUDE mode, or a change to EXCLUDE mode, and third data that identifies a source-list of zero or more IP source addresses, the network interface reading the first, second and third data in the membership message and storing a state record in a memory of the network interface information derived from the first, second and third data that comprises fourth data that identifies the multicast group address, fifth data that denotes an INCLUDE filter-mode or an EXCLUDE filter
  • the network interface maintains a timer for each IP source address in the source-list, the timer being used to manage the duration of each IP source address stored in the memory of the network interface.
  • the network interface maintains a group timer when the state record comprises an EXCLUDE mode, the group timer being used to manage the duration of the EXCLUDE mode.
  • FIG. 1 shows an IGMPv3 Query type message
  • FIG. 2 shows an IGMPv3 Membership Report type message
  • FIG. 3 shows the forming of the “Group Record” blocks contained in IGMPv3 Membership Report type messages
  • FIG. 4 illustrates a type of Ethernet packet
  • FIG. 5 illustrates another type of Ethernet packet
  • FIG. 6 illustrates an exemplary multicast data network
  • FIG. 7 a is a block diagram of an exemplary computer system that may implement the present invention.
  • FIG. 7 b is a block diagram of another exemplary computer system that may implement the present invention.
  • FIG. 8 is a block diagram of an exemplary network interface that may implement the present invention.
  • FIG. 9 is a flow chart that illustrates a layer 2 multicast filtering method according to one implementation of the present invention.
  • FIG. 10 is a flow chart that illustrates a layer 3 multicast filtering method according to one implementation of the present invention.
  • FIG. 11 illustrates a flow chart that illustrates a multicast filtering method according to another implementation of the present invention.
  • FIG. 12 illustrates a flow chart that illustrates a multicast filtering method according to yet another implementation of the present invention.
  • FIGS. 7 a , 7 b and 8 are provided to aid in the description of the various implementations disclosed herein. It is to be understood that the computer systems of FIGS. 7 a and 7 b and the network interface of FIG. 8 , as illustrated and described herein, represent several of many ways to implement the inventions disclosed herein. In addition, although the following description is based primarily on the IGMP protocol, the various implementations described herein may also be applied to the MLD protocol or to protocols similar to the IGMP and MLD protocols.
  • FIG. 7 a is a block diagram of an exemplary computer system environment 100 in which aspects of the invention may be implemented.
  • the computer system environment 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100 .
  • the invention is operational with numerous other general purpose or special purpose computing system environments or configurations.
  • Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, televisions, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
  • an exemplary system for implementing the invention includes a general purpose computing device in the form of a computer system 110 .
  • Components of computer 110 may include, but are not limited to, a processing unit 120 , a system memory 130 , and a system bus 121 that couples various system components including the system memory to the processing unit 120 .
  • the system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (also known as Mezzanine bus).
  • ISA Industry Standard Architecture
  • MCA Micro Channel Architecture
  • EISA Enhanced ISA
  • VESA Video Electronics Standards Association
  • PCI Peripheral Component Interconnect
  • Computer system 110 typically includes a variety of computer readable media.
  • Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and non-volatile media, removable and non-removable media.
  • Computer readable media may comprise computer storage media and communication media.
  • Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110 .
  • Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
  • modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
  • the system memory 130 includes computer storage media in the form of volatile and/or non-volatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132 .
  • ROM read only memory
  • RAM random access memory
  • BIOS basic input/output system
  • RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120 .
  • FIG. 7 a illustrates operating system 134 , application programs 135 , other program modules 136 , and program data 137 .
  • the computer system 110 may also include other removable/non-removable, volatile/non-volatile computer storage media.
  • FIG. 7 a illustrates a hard disk drive 141 that reads from or writes to non-removable, non-volatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, non-volatile magnetic disk 152 , and an optical disk drive 155 that reads from or writes to a removable, non-volatile optical disk 156 , such as a CD ROM or other optical media.
  • removable/non-removable, volatile/non-volatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
  • the hard disk drive 141 is typically connected to the system bus 121 through an non-removable memory interface such as interface 140
  • magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150 .
  • the drives and their associated computer storage media discussed above and illustrated in FIG. 7 a provide storage of computer readable instructions, data structures, program modules and other data for the computer system 110 .
  • hard disk drive 141 is illustrated as storing operating system 144 , application programs 145 , other program modules 146 , and program data 147 .
  • operating system 144 application programs 145 , other program modules 146 , and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies.
  • the application programs or other program modules of the computer system 110 can contain, among other things, computer instructions which, when executed cause the computer system to operate or perform functions like, for example, the IPMulticastListen function.
  • a user may enter commands and information into the computer through input devices such as a keyboard 162 and pointing device 161 , commonly referred to as a mouse, trackball or touch pad.
  • Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
  • These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
  • a monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190 .
  • computers may also include other peripheral output devices such as speakers 197 and printer 196 , which may be connected through an output peripheral interface 195 .
  • the computer system 110 operates in a networked environment using logical connections to one or more remote computing devices 180 .
  • the remote computing device(s) 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes a portion or all of the elements described above relative to the computer system 110 .
  • the logical connections depicted in FIG. 7 a include a local area network (LAN) 171 , but may also include other networks.
  • LAN local area network
  • Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • the network interface 170 provides an interface to outside networks, which may comprise many interconnected computer systems/devices and communication links as explained above. These communication links may be wire line links, optical links, wireless links or any other mechanism for communication of information.
  • network 171 supports an Ethernet protocol with the network interface being connected to a LAN networking environment.
  • the network interface 170 may take any of a variety of forms including that of a network card that is installed inside the computer system 110 or an embedded component or chip that is a part of the computer system 110 , or it may be a part of another component, like for example a computer motherboard or an expansion card.
  • the network interface is implemented as part of a chipset of the computer system 110 .
  • FIG. 7 b is another example of a computer system 700 which can communicate via a network 770 with other computer systems.
  • Computer system 700 includes or is otherwise connected to a network interface 760 that communicates with the computer system 700 via a bus 721 .
  • the computer system 700 includes a processor subsystem 720 which may include a processor, a memory subsystem 730 , and a core logic subsystem or chipset 750 .
  • the chipset 750 provides bridges among the processor subsystem 720 , the computer system memory subsystem 730 and the bus 721 .
  • the computer system 700 may also include other devices 740 like, for example, a hard disk or a keyboard.
  • the network interface 760 provides an interface to external networks (e.g., network 770 ), which may comprise many interconnected computer systems and communication links. These communication links may be wire line links, optical links, wireless links or any other mechanism for communication of information.
  • network 770 supports an Ethernet protocol.
  • the network interface controller 760 may take the form of a network card that is installed inside the computer system 700 or it may refer to an embedded component or chip that is a part of the computer system 700 , like for example a component of other devices 740 . As mentioned above in the description of FIG. 7 a , network interface 760 may be implemented as a part of chipset of the computer system 700 .
  • FIG. 7 b depicts some of the components of the network interface 760 in accordance with one implementation. As shown, the network interface of FIG. 7 b includes a controller 761 , a PHY 763 , a memory 762 and a bus interface 764 having a direct memory access (DMA) engine 765 .
  • DMA direct memory access
  • the memory subsystem 730 of computer system 700 typically includes a number of memories including a main random access memory (RAM) for storage of instructions and data during program execution, and a read only memory (ROM) in which fixed instructions and data are stored.
  • the memory subsystem may also include one or more levels of cache memory.
  • the computer system memory subsystem 730 is sometimes referred to herein as “computer system memory”.
  • virtual memory is considered part of the memory subsystem even though part of it may at times be stored physically on a peripheral device.
  • the memory subsystem 730 contains, among other things, computer instructions which, when executed by the processor subsystem 720 , cause the computer system to operate or perform functions like, for example, the operating systems 710 , applications 711 and the IPMulticastListen function 712 .
  • the bus 721 provides a mechanism for allowing the various components and subsystems of computer system 700 to communicate with each other.
  • the bus 721 comprises a PCI bus.
  • Other embodiments may include other buses, like for example PCI-X or PCI Express, and may also include multiple buses.
  • Computer system 700 can be of varying types including a personal computer, a portable computer, a workstation, a computer terminal, a network computer, a television, a mainframe, a server, a router, a switch or any other data processing system or user devices. Due to the ever-changing nature of computers and networks, the computer systems depicted in FIGS. 7 a and 7 b are intended only as examples for purposes of illustrating embodiments of the present invention. Many other computer system configurations are possible having more or less components, and configured similarly or differently than those depicted in FIGS. 7 a and 7 b.
  • FIG. 8 a block diagram of an exemplary network interface 10 in which the present invention may be implemented is shown. It is to be appreciated however, that the various implementations described herein are not limited to any particular type of network interface.
  • the network interface 10 may take any of a variety of forms as discussed above.
  • the network interface 10 may take the form of a network card that is installed inside a computer system or it may refer to an embedded component of a chip or chipset of a computer system, or it may be a part of another component, like for example a computer motherboard or an expansion card.
  • network interface 10 includes a controller 50 , a PHY transceiver 40 , various forms of memory 51 , 53 , 56 , 58 and a bus interface 60 comprising a DMA engine 62 .
  • the bus interface 60 facilitates communication with a bus 20 of a computer system (such as buses 121 and 721 described above) that has a processor 22 and a memory 24 .
  • a computer system such as buses 121 and 721 described above
  • the terms “computer system” and “host” are used to refer to the device to which the network interface belongs.
  • the network interface 10 is connected to a data network 30 using the PHY transceiver 40 .
  • PHY is a common abbreviation for the physical layer of the OSI model.
  • a PHY connects a link layer device (often called MAC) to a physical medium such as, for example, optical fibers or electrically conductive conduits. Information is transmitted to and received from the physical interface through the PHY transceiver 40 .
  • the controller 50 of the network interface 10 which may be a microcontroller or other type of processor, is typically provided to control the transmission and receiving operations of the network interface using appropriate transmit control 52 and receive control 54 programs or state machines. These programs handle the various data control operations required for transmitting and receiving data from a network including, for example, handling error conditions for a collision on the physical medium and retransmitting corrupted data as necessary.
  • transmit control 52 and receive control 54 programs or state machines These programs handle the various data control operations required for transmitting and receiving data from a network including, for example, handling error conditions for a collision on the physical medium and retransmitting corrupted data as necessary.
  • Ethernet networks for example, most of the functionality desired to implement applicable standards, such as IEEE 802.3, is implemented within the controller 50 .
  • the network interface 10 In the network interface of FIG. 8 , data coming in and out of controller 50 are buffered in the memory of the network interface by a transmit FIFO 56 and a receive FIFO 58 . Communications with the host computer, including the transmission of data to the bus 20 of the host computer are managed by the bus interface 60 .
  • the network interface 10 also includes a CSR (control status registers) block 53 which can provide the control status registers for supporting communication with the host computer and to store configuration data in the network interface 10 .
  • the transmit FIFO 56 , receive FIFO 58 and control status registers 53 may be part of the same memory in the network interface 10 , or may comprise discrete memory components that include any one of the memories or combinations thereof.
  • the network 10 also includes an EEPROM 51 which generally includes programming for the controller 50 .
  • EEPROM 51 provides the MAC address (or addresses) assigned to the network interface 10 for use with the computer system/host to which it is coupled.
  • DMA Direct Memory Access
  • DMA DMA
  • the processor of the computer system is typically fully occupied for the entire duration of the read or write operation, and thus unavailable to perform other work.
  • the computer system processor can initiate the transfer of data, perform other operations while the transfer is in progress, and receive an interrupt from the DMA controller once the data transfer operation is complete.
  • an improved network interface associated with a computer system/host that filters multicast packets in a manner that reduces or obviates altogether the dedication of host processing resources for the purpose of analyzing and discarding unwanted layer 2 and/or layer 3 multicast data packets.
  • the network interfaces of the present invention may be implemented in different ways, such as, for example, using instructions executed in a processor of a network interface card, using an FPGA (Field Programmable Gate Array), or using an application-specific integrated circuit (ASIC).
  • a network interface of the present invention may be implemented within the computer systems itself as a part of the computer system's integrated circuitry. For example, in one embodiment the network interface is implemented as a part of a computer system's chipset.
  • FIG. 6 will also be used to describe the operation of the various implementations of the present invention.
  • the host 620 of FIG. 6 sends an IGMPv3 message to receive the multicast channel (S 1 ,G 1 ) and the router 600 transmits the multicast packets 691 b of the multicast channel (S 1 , G 1 ) to network 610 , the hosts 630 and 640 also receive these multicast packets. This disadvantageously requires hosts 630 and 640 to devote processing resources to filter the unwanted packets.
  • network interfaces 635 and 645 of hosts 630 and 640 are configured to filter the unwanted packets in a manner that reduces or obviates the use of host processing resources normally needed to analyze and discard the unwanted multicast packets.
  • a computer system of the present invention uses the IPMulticastListen function, or other functions, to store in a memory of the computer system information indicative of the multicast traffic an application wishes to receive.
  • the computer system stores the following first state record in a first status register for each active socket:
  • the computer system also stores a separate second state record in a second status register for each network interface and multicast group in the form:
  • multicast-address is the IP multicast group address.
  • filter-mode is the network interface mode, which may be INCLUDE or EXCLUDE. In the INCLUDE mode, the network interface defines the source-list as INCLUDE; this means that it wishes to receive the multicast group traffic sent by all the sources in the list. In the EXCLUDE mode, the network interface defines the source-list as EXCLUDE; this means that it wishes to receive the multicast group traffic from all the sources sent in the multicast group, except the sources in the list.
  • source-list is a list of zero or more IP source addresses.
  • the term “status register” is not limited to a single memory location, but may also refer to multiple memory locations within a memory.
  • state record is used to describe a record that contains information used by a network interface to perform its filtering function. It is important to note, that although the information may be stored in a single state record within a single memory location, the present invention is not so limited. For example, different parts of the filtering information may be in the form of different state records that may be stored in a common memory location or in different memory locations. However, for the sake of simplicity, in the following description the terms “status register” and “state record” will be used with the understanding that each term may denote the singular or the plural.
  • the present invention is not limited by the manner in which the multicast traffic information is stored in the computer system or in the network interface, as the case may be.
  • the multicast-address, filter-mode and source-list information/data used by a network interface to filter multicast packets may be stored as a unit in a single state record within a single memory location or may be stored separately, or in any combination, in different state records within one or more status registers of the computer system or network interface, as the case may be. What is important is that adequate information be appropriately stored in a location that is accessible to the network interface to enable the network interface to perform its multicast packet filtering function.
  • a network interface of the present invention accesses the information of the second status register in the computer system by any of a variety of methods, including, but not limited to polling, programmed I/O, Interrupt-driven I/O and DMA. Filtering of multicast packets in the network interface is achieved by determining in the network interface the multicast group address and IP source address of multicast packets received in the network interface and subsequently comparing the multicast group address and IP source address of the received multicast packet with the accessed data of the second status register.
  • a network interface of the present invention accesses the multicast-address, filter-mode and source-list information by reading the information of the second state record located in the second status register of the computer system.
  • the network interface uses direct access memory to read the information.
  • accessing of the multicast-address, filter-mode and source-list information by the network interface is accomplished by the network interface copying the information of the second status register into a status register of the network interface.
  • accessing of the multicast-address, filter-mode and source-list information by the network interface is accomplished by the computer system sending the information from the second status register to a status register of the network interface.
  • a driver installed on the computer system sends the information of the second status register to the status register of the network interface.
  • accessing of the multicast-address, filter-mode and source-list information is accomplished by an IPMulticastListen operation, or the like, in the computer system writing the information into a status register of the network interface.
  • the IPMulticastListen operation, or the like writes the information to the computer system memory and network interface memory substantially simultaneously.
  • the multicast-address, filter-mode and source-list information is stored in a state record within a status register of the network interface in the same form of the second state stored in the computer system memory (e.g., (interface, multicast-address, filter-mode, ⁇ source-list ⁇ ))
  • a network interface of the present invention When a network interface of the present invention receives a multicast data packet that the host does not wish to receive, the network interface uses the accessed multicast-address, filter-mode and source-list information to filter unwanted multicast data packets in a manner that reduces or prevents altogether the host's operating system 710 and/or the host's hardware 780 from having to assign resources in order to analyze and discard unwanted multicast packets.
  • Alternative network interface filtering examples are explained later in conjunction with FIGS. 9 and 10 .
  • a network interface of the present invention is configured to never filter certain multicast packets. For example, in one embodiment the network interface does not filter the multicast packets that have the destination IF address 224.0.0.1 known as “All Hosts Multicast Address” which is used, for example, by the IGMPv3 routers to send IGMPv3 query messages to the hosts. In another embodiment, a network interface (for example 760 ) always sends to the host hardware 780 and/or operating system 710 multicast packets having the all hosts link-scope address (i.e., the IPv6 address FF02::1).
  • the network interface may be configured so that it always filters or always accepts traffic from certain IP multicast addresses (layer 3 ) or link-layer multicast addresses (layer 2 ) independently of the information stored in the computer system or network interface multicast state records.
  • IP multicast addresses layer 3
  • link-layer multicast addresses layer 2
  • multicast configuration registers is used hereinafter to refer to these registers that store information about layer 2 and layer 3 multicast traffic that are always filtered or never filtered by the network interface independently of the state records stored in the computer system and/or network interface. In such a case, that will be described in more detail below in conjunction with the discussion of FIG. 11 , the network interface checks first these layers 2 and/or layer 3 multicast configurations registers to see if a multicast packet must always be filtered or never filtered.
  • the network interface accesses the multicast-address, filter-mode and source-list information as previously described to determine whether to transmit or filter the multicast packet.
  • an application executed on the operating system of the host can be used to configure the layer 2 and/or layer 3 multicast configuration registers.
  • the network interface stores layer 2 multicast address and layer 3 multicast address information in different memory locations.
  • the network interface may store the following layer 2 and layer 3 state records:
  • Layer 3 (multicast-address, filter-mode, ⁇ source-list ⁇ )
  • the first data in the record is the multicast layer 2 destination address and the second data in the record comprises information/data indicative of whether to always filter or never filter the multicast packets having the layer 2 destination address.
  • a value “1” indicates that the multicast packet having the layer 2 destination address is to never be filtered and the value “0” indicates that the multicast is always to be filtered.
  • the layer 3 record may be similar to the multicast state records previously explained.
  • FIGS. 9 and 10 are flow charts showing exemplary processes for filtering layer 2 multicast packets and layer 3 multicast packets, respectively.
  • the term “MAC address” is used to refer to a layer 2 address. It is important to note that the present invention is not limited to MAC addresses but is also applicable to other types of layer 2 addresses.
  • the network interface receives at step 910 a layer 2 multicast packet from the data network.
  • the network interface checks if the packet has a multicast destination MAC address. If the packet does not have a multicast destination MAC address (i.e., the first 5 bits of the destination MAC address are different from 01:00:5e), the network interface processes the packets as being a unicast or broadcast packet at step 930 by transmitting the packet to be processed by the host.
  • the network interface at step 940 checks if there is a stored layer 2 state record for this specific multicast destination MAC address specifying that the layer 2 multicast destination address is always to be filtered. If so, the packet is filtered at step 950 . Otherwise, the packet is not filtered and the process continues at step 960 .
  • the network interface determines if there is a stored layer 2 state record for the multicast destination MAC address specifying that multicast packets having this address are to be always transmitted to the host. If so, the multicast packet is transmitted to the computer system at step 970 .
  • the packet received in the network interface is determined to have a layer 2 destination address but no layer 2 state record is stored in the network interface
  • the packet is further processed using layer 3 filtering at step 980 .
  • An exemplary layer 3 filtering process is depicted shown FIG. 10 .
  • a flow chart of a layer 3 source specific multicast filtering process in one embodiment of the present invention is shown.
  • an application in the host may be used to enable or disable the filtering function of a network interface of the present invention, both in layer 2 and layer 3 filtering.
  • Gi multicast group address
  • the network interface checks if it has stored any multicast state records with the Gi multicast address group. If there is no state record stored in the network interface for the Gi multicast group address, the network interface determines that the computer system does not want the Gi multicast group address packets and filters the packet at step 250 . Otherwise, if there is a state record for the Gi multicast group address, the network interface determines the filter mode of the record (i.e., INCLUDE or EXCLUDE).
  • the network interface checks if the state record for the multicast group address Gi has an INCLUDE filter mode. If the filter-mode of the state record is INCLUDE, the network interface checks if the source Sj of the IP packet is included in the ⁇ source-list ⁇ of the state record at step 270 . If the filter-mode is determined to be an INCLUDE filter mode and the source Sj is in the source-list, the network interface transmits the packet at step 280 to be processed by the computer system. If the source Sj is not in the source-list, the network interface filters the packet at step 250 .
  • the filter-mode of the state record (at step 260 ) is not in INCLUDE, it can only be EXCLUDE.
  • the filter-mode is EXCLUDE
  • the network interface checks if the source Sj of the IP packet is in the ⁇ source-list ⁇ of the state record at step 290 . If the source Sj is in the source-list of the state record, the network interface filters the packet at step 250 . If, on the other hand, the source Sj is not in the source-list of the state record with filter-mode EXCLUDE, the network interface transmits the packet to be processed by the computer system at step 280 .
  • a network interface of the present invention consults the multicast state records stored or otherwise accessed by the network interface to perform its multicast traffic filtering function.
  • a network interface of the present invention may use both the accessed state record information and also information stored in the multicast configuration register(s) in the course of performing its multicast traffic filtering function. In the latter case a conflict may exists between the two types of information.
  • a configuration register may indicate to always transmit the multicast traffic from the multicast channel (S 1 ,G 1 ) to the computer system but there may be an accessed multicast state record derived from, for example, the IPMulticastListen function of the computer system for the G 1 multicast address with an EXCLUDE filter mode and S 1 in the EXCLUDE list.
  • the network interface may be configured to behave according to the multicast configuration register(s) or according to the accessed multicast state records derived from, for example, the IPMulticastListen function of the computer system. For example, if the network interface is configured to use by default the multicast configuration registers, then it will always transmit to the computer system the packets from the multicast channel (S 1 ,G 1 ).
  • the network interface may be configured so that the multicast filtering function can be enabled or disabled using a host application.
  • a software application of the “driver” type may be used to configure the manner in which the network interface operates. This allows the network interface to function in a mode where no multicast packets are filtered.
  • the “enable” or “disable” mode of operation is stored in the memory of the network interface in a configuration register.
  • the network interface may use the SNMP protocol to configure the information stored in the multicast status registers (memory location or locations of state record information) and/or the configuration registers.
  • the processing unit 761 can include an SNMP agent that is used to configure the network interface 760 by communicating with an “SNMP control station” also called “SNMP Network Management System” that configures the SNMP agent using the SNMP protocol.
  • FIG. 11 shows an example of the layer 3 source specific multicast filtering in one embodiment of the present invention when the network interface receives a multicast IP packet for a multicast group Gi and the network interface has stored a multicast state record information in a multicast status register for the group Gi and also a multicast configuration register for the same group Gi.
  • step 11 the network interface reads the multicast destination address Gi and the unicast source address Sj of the IP multicast packet.
  • the network interface determines if a conflict exists between the multicast configuration registers and the multicast status registers stored or accessed by the network interface. If a conflict is determined to exists, the network interface selects between either using the multicast configuration registers or the multicast status registers to filter incoming multicast packets at step 211 . Upon selecting the multicast status registers the process continues at step 212 . Upon selecting the multicast configuration register the process continues at step 217 .
  • the network interface controller checks if the multicast status register for the multicast group address Gi has an INCLUDE filter mode. If the filter-mode of the multicast status register is INCLUDE, the network interface controller checks, at step 213 , if the source Sj of the IP packet is included in the INCLUDE list of the multicast status register. If it is in the INCLUDE list, the network interface transmits the packet at step 215 to be processed by the computer system. If the source Sj is not in the INCLUDE list, the network interface filters the packet at step 216 ,
  • the filter-mode of the multicast status register (at step 212 ) is not INCLUDE, it can only be EXCLUDE.
  • the network interface checks if the source Sj of the IP packet is in the EXCLUDE list of the multicast status register at step 214 . If the source Sj is in the EXCLUDE list of the multicast status register, the network interface filters the packet at step 216 . If the source Sj is not in the EXCLUDE list of the multicast status register with filter-mode EXCLUDE, the network interface transmits the packet at step 215 to be processed by the computer system.
  • the network interface checks if the multicast configuration register for the multicast group address Gi has an INCLUDE filter mode. If the filter-mode of the multicast configuration register is INCLUDE, the network interface controller checks, at step 218 , if the source Sj of the IP packet is included in the INCLUDE list of the multicast configuration register, if the source Sj is in the INCLUDE list, the network interface transmits the packet at step 215 B to be processed by the computer system. If the source Sj is not in the INCLUDE list, the network interface filters the packet at step 216 .
  • the filter-mode of the multicast configuration register (at step 217 ) is not INCLUDE, it can only be EXCLUDE.
  • the network interface checks if the source Sj of the IP packet is in the EXCLUDE list of the multicast configuration register at step 219 . If source Sj is in the EXCLUDE list of the multicast configuration register, the network interface filters the packet at step 216 . If the source Sj is not in the EXCLUDE list of the multicast configuration register, the network interface transmits the packet at step 215 B to be processed by the computer system.
  • the network interface of the present invention can be configured, for example manually using a driver or user application or remotely using the SNMP protocol, to always use a multicast status register or to always use a multicast configuration register when both registers exist.
  • the network interface is configured to select between using a multicast status register or a multicast configuration register on a multicast group basis. That is, the net-work interface is configured to use the multicast status register to filter multicast packets having a multicast destination address G 1 when a conflict exists between the multicast status register and the multicast configuration register.
  • the same network interface may be configured to use the multicast configuration register to filter multicast packets having a multicast destination address G 2 when a conflict exists between the multicast status register and the multicast configuration register.
  • the ARP protocol which is known in the art and not explained here, enables a layer 2 unicast address to be associated with a layer 3 unicast address.
  • This relationship between layer 2 addresses and layer 3 addresses may be used in alternative embodiment of the present invention to filter source specific multicast traffic in a network interface by using layers 2 filters that use both the link layer destination address and the link layer source address.
  • the multicast-address, filter-mode and source-list information of a multicast state record of a network interface of the present invention are obtained by the network interface reading multicast traffic membership messages sent by the computer system through the network interface to equipment located in the data network.
  • the network interface reads information in the message and creates multicast state records for the purpose of filtering packets not wanted by the computer system.
  • the processing unit 50 detects in a data packet received from the computer system an IGMP multicast traffic membership message and, in addition to transmitting the packet with the IGMP message through its physical interface 40 to the data network 30 , the processing unit 50 also extracts information from the IGMP message and stores it in a memory of the network interface.
  • the network interface 10 stores the extracted information in a multicast state record in one of the control status register 53 for each multicast group for which the network interface sends an IGMP membership message.
  • the network interface can detect that it is transmitting IGMP messages in several ways.
  • the first way is by analyzing the value of the fields called “Protocol” in the header of the IPv4 packets and “Next Header” in the header of the IPv6 packets.
  • the “Protocol” field of the header of the IPv4 packet transporting the IGMP message has a value of 2.
  • MLD messages the “Next Header” field of the header of the IPv6 packet preceding the MLD message has a value of 58, because MLD messages are sent as a special type of ICMP message.
  • the “Message Type” field of the ICMP message has a value of 130.
  • the network interface 10 can analyze only IP packets in accordance with the destination address of each IP packet that it transmits. For example, in IGMPv3, the Membership Report Messages sent by the hosts have the destination address 224.0.0.22, which all the IGMPv3 routers listen on. Therefore, if the computer system only uses IGMPv3, it is sufficient for the network interface to analyze the IP packets whose destination address is 224.0.0.22. In a similar way, the analysis of MLDv2 packets that use IPv6 address FF02::16 can be limited.
  • IGMPv2 version 2
  • RFC 2236 specifications W. Fenner, November 2007, available at the URL www.ietf.org/rfc/rfc2236.txt.
  • the network interface When the network interface detects that it is transmitting a data packet containing an IGMP message, the network interface can extract the information contained in the IGMP message from the structure of the Membership Report Messages described previously in FIGS. 2 and 3 . In the same way, the present invention can extract information from the IGMP messages corresponding to other versions of the IGMP, like IGMPv1 and IGMPv2.
  • FIG. 12 is a flow chart of one exemplary process using the IGMPv3,
  • a network interface of the present invention receives from the computer system a layer 2 data packet to transmit to a data network through its PHY.
  • the network interface determines if the layer 2 data packet contains an IP packet containing an IGMP Membership Report message. If the data packet doesn't contain an IGMP Membership Report message the process ends at step 1230 .
  • the variable N is used to store the number of Group Records blocks of data included in the Membership Report message. This information is stored in the parameter called “Number of Group Records” in FIG. 2 .
  • the process starts with the first Group Record.
  • the information of each Group Record is processed using, for example, one or a combination of processes of Tables 2, 3, 4, 5 and/or 6 which are explained in more detail below.
  • steps 1270 and 1280 all of the Group Records of the Membership Report message are processed. When all the Group Records of a Membership Report message are processed according to one of the processes of Tables 2, 3, 4, 5 and/or 6 then the process ends at step 1230 .
  • the discussion that follows relates to a process implemented in a network interface for deriving multicast packet filtering information and storing the information in a memory of the network interface.
  • the network interface obtains the filtering information by reading the group records of an IGMPv3 membership report message and storing for each multicast group address the information in a multicast state record of the network interface.
  • the multicast status record for the multicast group address is updated according to one of the processes of Table 2.
  • Table 2 uses the same terminology explained before in the description of Table 1.
  • the six IGMPv3 messages are indicated as IS_IN(B), IS_EX(B), ALLOW(B), BLOCK (B), TO_EX(B) and TO_IN(B).
  • the network interface of the present invention creates and/or updates a set of multicast status records stored in the memory of the network interface.
  • the format of the multicast state records stored in the network interface for a multicast group address may use one of the following formats depending on the filter-mode:
  • the network interface uses source timers to manage the duration of each source in the multicast state record.
  • the filter-mode of a multicast state record is an EXCLUDE filter mode
  • the network interface may also use a group timer to change the filter mode from EXCLUDE to INCLUDE when the group timer expires.
  • a multicast state record for a multicast group may be created by the network interface using two types of messages: IS_IN (B) or IS_EX (B) in the manner depicted below:
  • the network interface updates the multicast state record according to Table 2.
  • the first column represents the two possible initial states (STATE 1) of a multicast state record (INCLUDE(A) or EXCLUDE(X,Y)).
  • STATE 1 the two possible initial states of a multicast state record
  • Table 2 depending on the type of IGMPv3 membership report message received in the network interface (column 2) and the initial state (STATE 1) of the multicast state record (column 1), there are a total of twelve processes for updating the multicast state record as shown in columns 2 and 3.
  • the multicast state record may be deleted from the memory of the network interface.
  • a network interface of the present invention can store in its memory multicast state records that indicate the multicast traffic the computer system wants to receive and can filter the multicast traffic using, for example, the processes of FIG. 9 , 10 or 11 as previously explained.
  • the computer system sends multicast traffic membership message from two or more different applications.
  • one application of the computer system may use an IPMulticastListen operation as previously described, while another application of the computer system uses an operation other than IPMulticastListen to send multicast traffic membership messages.
  • the multicast state records stored in the memory of the network interface used for the purpose of filtering unwanted multicast packets may be updated according to one of the processes of Table 3.
  • the network interface continues transmitting to the computer system multicast traffic from source A after receiving an IS_IN(B) type membership message, while in the embodiment of Table 2 source A is removed from the INCLUDE source list upon receiving an IS_IN(B) type membership message without waiting for the timer associated with source A to reach zero as is the case in the embodiment of Table 3.
  • the computer system merges the multicast traffic requests from the different applications and sends to the network interface a single multicast traffic membership message for each multicast group address.
  • EXCLUDE (X, Y) EXCLUDE ( ⁇ Requested list ⁇ , ⁇ Exclude list ⁇ )
  • the “requested list” has the (X+A) value and in row 10 has the (X ⁇ A) value.
  • the reason the requested list in rows 9 and 10 do not have an empty list is because the initial state (STATE 1) of the multicast state records of both rows 9 and 10 have an initial EXCLUDE (X,Y) status that assumes that the requested list has an initial group of X sources which is not an empty group.
  • EXCLUDE EXCLUDE
  • the requested list of the updated multicast state record of STATE 2 is an empty list. Therefore, the assumption that an initial state (STATE 1) of a multicast state record cannot have an empty “requested list” as represented in rows 9 and 10 of Table 2 is not true.
  • the requested list of a multicast state record of STATE 1 of rows 9 and 10 of Table 2 always has an empty requested list because this EXCLUDE record was created with one of the four processes presented by rows 2, 4, 7, 11 of Table 2.
  • rows 9 and 10 of Table 2 can be rewritten as follows:
  • Table 4 describes an operation of a network interface in which multicast state records do not have a requested list. As a result, when the group timer associated with the multicast state record reaches zero, the multicast state record is deleted or otherwise ignored by the network interface for the purpose of filtering multicast packets. Another advantage associated with the processes of Table 4 is that there is no need for the network interface to maintain or actualize source timers for EXCLUDE filter mode sources since the exclude list of sources have timer values equal to zero.
  • a router that uses IGMPv3 maintains timers to track for each network interface and multicast group time intervals related to when multicast traffic requests are received in the network interface and uses these timers to decide how to manage traffic requests that include different sources from the same multicast group.
  • routers using the MLD protocol also maintain timers
  • Table 1 shows the operation of a router using IGMPv3 which illustrates the use of such timers.
  • the GMI parameter used in Table 1 as an initial value of the timers is a parameter called “Group Membership Interval” that uses a default value of 260 seconds. Below is a detailed explanation of the operation of this GMI parameter and how its value is calculated.
  • the GMI value is calculated using three other parameters, also mentioned in section 8 of RFC 3376, using the following formula:
  • GMI [(Robustness Variable) ⁇ (Query Interval)]+(Query Response Interval)
  • the Robustness Variable parameter allows the adjustment of the GMI value according to the expected number of lost IP packages.
  • This parameter uses the value 2 as default and it is sent from the router to the computer systems with the QRV field of the “Query” messages that the router sends to the computer systems to ask them for the multicast traffic they wish to receive.
  • QRV is an abbreviation of “Queries Robustness Variable”. Its use in Queries is explained in section 4.1.6 of RFC 3378.
  • the Robustness Variable value received through the QRV parameter indicates the number of times that a computer system must re-transmit messages to the router when there is a change in the multicast traffic that this computer system wants to receive.
  • the “Query Interval” parameter is the time interval that passes between two “General Query” messages sent through the router to the computer systems. By default, it takes the value of 125 seconds.
  • a General Query is a message sent from the router to the computer systems so that all of the computer systems respond with messages that detail the multicast traffic that each computer system wants to receive. This way, the IGMPv3 routers update all of the traffic information that the computer systems want to receive every 125 seconds by default.
  • the “Query Response Interval” parameter indicates the maximum time that the computer systems have to respond to a query from the IGMPv3 router. By default, it takes the second value and it is transmitted to the computer systems in the parameter called “Max Rasp Code” from the queries, as explained in section 4.1.1 of RFC 3376.
  • the computer system When a computer system receives a query, the computer system does not respond immediately to the router, instead it delays its response message during a random calculated time between 0 seconds and the “Query Response Interval”, for example 10 seconds. This way, if there are thousands of computer systems connected to one router, the router does not receive thousands responses at the same time; rather, it receives the responses from the thousands of computer systems in a 10-second time interval and this way the router has more time to process the responses.
  • the GMI value is used as a starting value in the timers in all of the cases in which the router receives a multicast traffic request that includes or may include a new multicast data source. This happens in all cases shown in Table 1 except in cases 6 and 10 that correspond to the BLOCK (B) and BLOCK (A) messages, respectively, and that notify the router to stop transmitting multicast traffic from sources B and A respectively from a specific multicast group.
  • the GMI parameter is used as a starting value for the timers for the new data sources from which the computer systems want to receive multicast traffic from a specific multicast group.
  • Table 5 explains the operation of a network interface in accordance with another embodiment of the present invention.
  • the multicast state records maintained by the network interface do not have associated with them any source timers or group timers.
  • the operation of Table 5 also does not involve the use of an EXCLUDE record having a “requested list”. If the filter mode of the multicast state record for a multicast group address is INCLUDE, the network interface transmits to the computer system the traffic from the INCLUDE source list. If the filter mode of the multicast state record for a multicast group address is EXCLUDE, the network interface transmits the traffic from all of the sources, except those from the EXCLUDE list,
  • the deletion of the timers associated with the sources simplifies the network interface filtering process since it does not need to dedicate storage and processing resources to the timers.
  • a network interface that filters multicast packets in accordance with the principles and processes of Table 5 does not need timers or the requested list, for two reasons. The first reason is that the network interface no longer needs to combine messages from different computer systems. Each message sent by the computer system to the router indicates the multicast traffic that the computer system wants to receive and there is no need to mix the traffic requested by different computer systems into one memory record, which is one of the functions for which timers and the requested list are used in IGMPv3.
  • the second reason is that the formula that is used to calculate the GMI parameter ensures that the network interface will receive the multicast traffic information again wanted by the computer system before the timers that initialize with the GMI value reach zero since the GMI parameter will always be greater than or equal to the Query Interval parameter.
  • GMI value in IGMPv3 is calculated as follows:
  • GMI [(Robustness Variable) ⁇ (Query interval)]+(Query Response Interval)
  • Query Interval is the time that passes between two General Query messages sent by a router to the computer system and according to the above mentioned formula, the GMI cannot be less than the Query interval value.
  • the GMI value would be the same as the Query Interval value but never less. However, it is enough to maintain the default value of 10 seconds in the Query Response Interval parameter so that GMI is greater than the Query interval. For example, using the default values, there is no need to assign a 260-second timer to a multicast data source when the information of the sources is updated every 125 seconds, unless they lose the IP packages that carry this information.
  • the filtering operation of a network interface may be further simplified as shown in Table 6.
  • the network interface may create a multicast state record upon receiving an IS_IN, IS_EX, TO_IN or TO_EX type multicast traffic membership message from the computer system without considering an initial state.
  • the upstream network interface of an IGMP Proxy functions like a host, in alternative embodiments of the present invention the upstream network interface of an IGMP proxy implements the one or more of the various processes previously described herein to filter multicast packets the IGMP Proxy does not wish to receive.
  • references throughout this specification to “one embodiment” or “one implementation” or “an embodiment” or “an implementation”, or the like, means that a particular feature, structure or characteristic described in connection with the embodiment/implementation is included in at least one embodiment/implementation of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment(s)” or “an implementation” or “one implementation” or “alternative implementation(s)”, or the like, in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention.
  • INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) GMI 6.
  • INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) GMI 6.
  • INCLUDE (A) TO_IN (B) INCLUDE (B) T(B) GMI DEL(A ⁇ B) 9.
  • EXCLUDE (X, Y) ALLOW (A) EXCLUDE (X + A, Y ⁇ A) T(A) GMI 10.
  • EXCLUDE (X, Y) BLOCK (A) EXCLUDE (X ⁇ A, Y + A) T(A) 0 11.
  • EXCLUDE (X, Y) TO_IN (A) INCLUDE (A) T(A) GMI DEL (X + Y) ⁇ A
  • INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) GMI 6.
  • EXCLUDE (X, Y) ALLOW (A) EXCLUDE (X + A, Y ⁇ A) T(A) GMI 10.
  • EXCLUDE (X, Y) BLOCK (A) EXCLUDE (X + (A ⁇ Y), Y) T(A ⁇ X ⁇ Y) GT 11.
  • EXCLUDE (X, Y) TO_IN (A) EXCLUDE (X + A, Y ⁇ A) T(A) GMI 9.
  • INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) GMI 6.
  • INCLUDE (A) TO_IN (B) INCLUDE (B) T(B) GMI DEL(A ⁇ B) 9.
  • EXCLUDE (Y) BLOCK (A) EXCLUDE (Y + A) T(A) 0 11.
  • EXCLUDE (Y) TO_IN (A) INCLUDE (A) T(A) GMI DEL (Y ⁇ A)

Abstract

A method for filtering in a network interface of a computer system multicast packets in a manner that reduces or obviates altogether the processing of unwanted multicast packets by the processing unit of the computer system. Filtering in the network interface is accomplished by the network interface accessing multicast traffic request information originating in the computer system and comparing the accessed information with the multicast destination address and IP source address of packets received in the network interface.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application claims priority to and the benefit of Spanish Patent Application No. P200930512 filed Jul. 27, 2009.
  • FIELD OF THE INVENTION
  • The invention relates to the field of multicast technology.
  • BACKGROUND
  • Multicast technology makes it possible to send data from a single source to many recipients through a data network, without having to set up unicast communication, i.e. one-to-one individual communication between the source and each of the recipients. To that end, the source sends data, in data packet form, to a single address associated to a multicast group to which the equipment interested in being recipients of the data sending can subscribe. This address referred to as a multicast address or also as a multicast group address, is an IP (Internet Protocol) address chosen within a range that is reserved for multicast applications. The data packets which have been sent by the source to the multicast address are then replicated in the different network routers so that they can reach the recipients that have joined the multicast group.
  • The recipients that receive data in a multicast group are usually, but not always, equipment connected to the data network by means of a proxy or a router. Hereinafter, the term “host” will be used to refer to the recipient equipment. A host can be, for example, a computer, a set-top box (digital signal decoder) connected to a television set, or any other device capable of receiving data packets.
  • When a host wants to receive the information sent by one or several sources of a multicast group, it usually sends via a router or an intermediate proxy a subscription message to subscribe to the group so that the router transmits to it the data arriving through the data network and which has been sent by the sources of the multicast group. Likewise, when a host wishes to stop receiving data packets from a multicast group, it usually sends via the router or the proxy an unsubscribe message to stop receiving the data packets.
  • The messages exchanged between a host and a router to manage membership to a multicast group generally use the IGMP protocol (Internet Group Management Protocol) or the MLD (Multicast Listener Discovery) protocol, according to whether or not the router works with version 4 (IPv4) or version 6 (IPv6) of the IP protocol (Internet Protocol), respectively. When there is a proxy between the host and the router, the proxy also uses the IGMP/MLD protocols to exchange with the host, the closest router or other intermediate proxy, the multicast group membership messages. In these cases, the proxy can receive from different hosts requests to subscribe to or to unsubscribe from a multicast group, and it assembles them to thus reduce IGMP/MLD message traffic it sends to the router. Hereinafter, the generic term IGMP proxy will be used to designate a proxy using the IGMP/MLD protocols.
  • FIGS. 1, 2, and 3 show different messages used in the IGMPv3 (IGMP version 3) protocol. FIG. 1 shows a “Membership Query Message” which is a message sent by IGMPv3 routers to the hosts so that the hosts respond with messages that indicate the multicast traffic that they wish to receive. FIG. 2 shows a “Membership Report Message” which is a message sent by the hosts to the routers to indicate the multicast traffic that they wish to receive. This information sent by the hosts in the Membership Report type messages is organized into different blocks of data referred to as “Group Records”. The structure of these group records is shown in FIG. 3.
  • In addition, routers exchange messages with one another for the purpose of defining the routing which allows efficient routing of the data from the sources to the hosts that have subscribed to a multicast group. To that end, the routers use specific protocols, including the very well known PIM-SM (Protocol Independent Multicast—Sparse Mode).
  • In summary, the routers receive from the hosts, in the form of IGMP/MLD messages, information specifying which multicast groups they want to receive traffic from, and they communicate with other routers, for example by means of the PIM-SM protocol, for the purpose of setting up a routing which takes the traffic requested by the hosts to such hosts. All of the aforementioned protocols are defined and documented by the Internet Engineering Task Force (IETF).
  • The IGMP protocol version currently being used is IGMPv3, which is described in the RFC 3376 specifications published on line by the IETF (B. Cain at al., Engineering Task Force, Network Working Group, Request for Comments 3376, October 2002; currently available at Internet address http://tools.ietf.orghtml/rfc3376).
  • With regard to the MLD protocol, the version currently being used is MLDv2, which is described in the RFC 3810 specifications published on line by the IETF (R. Vida et al., Engineering Task Force, Network Working Group, Request for Comments 3810, June 2004; currently available at Internet address http://tools.ietf.org/htmirfc3810).
  • The operation of an IGMP proxy is described in the RFC 4605 specifications published on line by the IETF (B. Fenner et al., Engineering Task Force, Network Working Group, Request for Comments 4605, August 2006; currently available at Internet address http://tools.ietf.org/htrnl/rfc4605).
  • The PIM-SM protocol used for the communication between routers is described in the RFC 4601 specifications published on line by the IETF (B. Fenner et al., Engineering Task Force, Network Working Group, Request for Comments 4601, August 2006; currently available at Internet address http://tools.ietf.org/html/rfc4601).
  • Multicast technology was initially implemented primarily to be applied to the many-to-many communication model, known as ASM (Any Source Multicast), in which many users communicate with one another and any of them can send data and also receive data from everyone else. A typical ASM application is multiparty calling via Internet. Multicast technology was then implemented to be applied to the one-to-many communication model known as SSM (Source Specific Multicast), in which a single source sends data for many recipients.
  • In earlier IGMP protocol versions, a host could not choose the data sending sources it did not want to subscribe to within a multicast group, rather the host could only subscribe to or unsubscribe from the group for all the sources. The messages a host sent to a router were very simple: Join (G) to receive traffic from the multicast group G and Leave (G) to stop receiving it. Therefore, earlier IGMP protocol versions did not allow SSM. The possibility that the hosts could choose the sources within a multicast group was introduced in the IGMPv3 version of the IGMP protocol to allow SSM. To that end, a host can send IGMP messages containing data blocks referred to as Group Record in which the host defines the sources from which traffic is to be received for each multicast group. These Group Record data blocks in an IGMP message can be of several types:
      • An INCLUDE type Group Record data block containing information on source IP addresses from which the host wishes to receive data sending. According to the terminology of the RFC 3376 specifications, the sources chosen by means of an IGMP message containing an INCLUDE type Group Record are referred to as INCLUDE sources.
      • An EXCLUDE type Group Record data block, containing information on source IP addresses from which the host does not wish to receive data sending. In this case, it is interpreted that the host wishes to receive data sent by all the sources of the multicast group except the sources indicated as excluded in the message. According to the terminology of the RFC 3376 specifications, the excluded sources by means of an IGMP message containing an EXCLUDE type Group Record are referred to as EXCLUDE sources.
  • Channel (S, G) is used hereinafter, and according to the common nomenclature in SSM technology, to refer to the sending of source S of the multicast group G.
  • In the third version of the IGMP protocol (IGMPv3) it was decided that for a multicast group each network interface can only operate in one of the following modes, being able to pass from one to another: the INCLUDE mode, where the network defines a list of INCLUDE sources, or the EXCLUDE mode, where the network defines a list of EXCLUDE sources. The RFC 3376 specifications describe a method with which the hosts can select the multicast traffic that they wish to receive. A brief summary of this operation is provided below.
  • Paragraph 2, entitled “The Service Interface for Requesting IP Multicast Reception” of the RFC 3376 specifications describes a service interface that can be used by the upper network layers of the host protocols or the host programs in order to request that the IP network layer accept or reject the multicast traffic from certain multicast addresses. For this purpose, it uses a function known as IPMulticastListen.
  • The RFC 3376 specifications of the IGMPv3 explain that the systems must support IGMP messages as per the following function, which enables a host to choose the multicast data sources:
  • IPMulticastListen (socket, interface, multicast-address, filter-mode, {source-list})
    where:
    “socket” is a parameter used to distinguish the different applications that are executed on the system (for example, programs and processes) and which call to the IPMulticastListen function.
    “interface” is a local identifier for the network card or network interface on which one wishes to receive the multicast traffic indicated in the call to the IPMulticastListen function. If it is wished to receive the same multicast traffic on more than one network interface, the IPMulticastListen function is called separately for each network interface.
    “multicast-address” is the multicast group address.
    “filter-mode” is the network interface mode, which may be INCLUDE or EXCLUDE. In the INCLUDE mode, the network interface defines the source-list as INCLUDE; this means that it wishes to receive the multicast group traffic sent by all the sources in the list. In the EXCLUDE mode, the network interface defines the source-list as EXCLUDE; this means that it wishes to receive the multicast group traffic from all the sources sent in the multicast group, except the sources in the list.
    “source-list” is the INCLUDE or EXCLUDE source-list.
  • For a given socket combination, network interface, and multicast group, there can only be one “filter mode”, which may be INCLUDE or EXCLUDE.
  • The system stores a state record for each active socket. This register contains the following information:
  • (interface, multicast-address, filter-mode, {source-list})
  • For each socket, the “filter-mode” of the record can only be INCLUDE or EXCLUDE.
  • Likewise, the system stores a state record for each network interface and multicast group. This record contains the following information:
  • (multicast-address, filter-mode, {source-list})
  • Each network interface and multicast group has a state record storing the information on the interface and group and the state record contains a field referred to as filter-mode which can only be of the INCLUDE type, containing only INCLUDE sources, or of the EXCLUDE type, containing only EXCLUDE sources. The rules that are transcribed below are applied when the network interface record must result from the combination of different records:
      • Rule 1. If any of the data sources of a group G1 is EXCLUDE, then the network interface will have an EXCLUDE filter-mode for the group G1 and the source list of the network interface is the intersection of the EXCLUDE source lists minus the sources of the INCLUDE lists.
      • Rule 2. If all the sources are INCLUDE type sources, then the network interface will have an INCLUDE filter-mode for the group G1 and the source list is the union of all the INCLUDE sources.
  • The hosts send IGMP messages to the routers via each network interface in order to request multicast traffic, and the content of the messages is typically derived from information in state records associated with given network interface stored in a memory of the computer system.
  • There are generally two types of events that may cause the host to send IGMP messages to the routers. These are the receipt of an IGMP Query message or a change on the status registers of the network interface caused by, for example, a call to the IPMulticastListen function or other application.
  • Routers using the IGMP and PIM-SM protocols store the multicast traffic information that they must transmit through each network. This information consists of storing, for each network interface of the router, state information about multicast channels (S,G) or multicast groups (*,G) for which there is at least one host interested in receiving this multicast traffic, with a timer associated to each channel or multicast group that indicates the time passed since the router received the last message requesting this multicast traffic.
  • Table 1, extracted from RFC 3376, summarizes the operation of a router according to the IGMPv3 protocol. In Table 1, the first column “State 1” shows the initial state of the record of the IGMP router; the second column “Message” shows the content of a Membership Report message received by the IGMP router; the third column “State 2” shows the state of the record of the IGMP router after having received the Membership Report message; the fourth and last column “Actions” shows the actions that the IGMP router carries out after having received the Membership Report message. Table 1 contains 12 rows respectively corresponding to 12 processes which each illustrates the operation of the router according to its initial state (column 1) and according to the messages it has received (column 2).
  • Table 1 relates to a specific network interface of a router executing the IGMPv3 protocol and to a specific multicast group G. Each network interface and multicast group G will have their own state records which will be affected by the messages that the IGMP router receives through the network interface relating to the group G. The following nomenclature has been used in Table 1:
      • (A+B) means the union of the sets of sources A and B.
      • (A*B) means the intersection of the sets of sources A and B.
      • (A−B) means the set of sources A minus the sources of A that are also found in B.
      • INCLUDE (A) indicates that the IGMP router has a record with INCLUDE filter-mode with a set of sources A.
      • EXCLUDE (X,Y) indicates that the IGMP router has a record with EXCLUDE filter-mode because there are EXCLUDE sources, wherein:
        • X is the Requested List of EXCLUDE sources
        • Y is the Exclude List of EXCLUDE sources.
      • GMI is a parameter referred to as Group Membership Interval containing a value of time. A value of 260 seconds is used by default.
      • T (S) is the source timer of source S.
      • GT is the Group Timer, i.e. the timer of the record for switching from EXCLUDE mode to INCLUDE mode.
      • SEND Q(G, S) means that the IGMP router sends a Group-And-Source-Specific Query message to the hosts to check if there is still a host interested in receiving the sendings from sources S of multicast group G. When this action is carried out, the IGMP router also reduces the timers of the sources S to the LMQT value. If the IGMP router receives in response a message showing interest in any of the sources S, it then initializes the value of the timers of the sources, for which there is an interested host, to an initial value equal to GMI,
      • DEL(A) means that the IGMP router deletes from the record the sources of list A.
      • LMQT is a parameter referred to as Last Member Query Time containing a time value. It is the time a host has to reply to a Group-And-Source-Specific Query type message which has been sent by the IGMP routers. After this time, if no host replies that it is interested in receiving the channels specified in the message, the IGMP router stops transmitting them. The value of LMQT in the IGMPv3 protocol is 20 seconds by default.
  • The messages in column 2 of Table 1 are the six types of IGMP messages defined in the IGMPv3 protocol for indicating to the router the sources from which it wishes to obtain multicast traffic. The meaning of these six IGMP messages is described in RFC 3376 (chapter 4.2.12) and is as follows:
      • IS_IN (Z), IS_EX (Z) indicate that the network interface of the host that has sent the message has an INCLUDE or EXCLUDE filter-mode, respectively, for the sources of list Z.
      • TO_IN (Z), TO_EX (Z) indicate that the network interface of the host that has sent the message has switched the filter-mode from EXCLUDE mode to
      • INCLUDE mode, or from INCLUDE mode to EXCLUDE mode, respectively, for the sources of list Z.
      • ALLOW (Z) indicates that the network interface of the host that has sent the message wishes to receive the traffic from the new sources of list Z. These sources are the sources that the network interface will add to its INCLUDE source list or they are the sources that it will delete from its EXCLUDE source list.
      • BLOCK (Z) indicates that the network interface of the host that has sent the message no longer wishes to receive traffic from the sources of list Z. These sources are the sources that the network interface will delete from its INCLUDE source list or they are the sources that it will add to its EXCLUDE source list.
  • It can be seen that the 12 rows of Table 1 correspond to 12 combinations of an initial state record of the router (column 1) and of a type of IGMP message received (column 2). The router consults the hosts by means of a Group-And-Source-Specific Query message (SEND messages in column 4 of Table 1) for checking if there is a host interested in receiving multicast data from those sources, the traffic of which was being initially transmitted (column 1 of Table 1) and no longer wishes to receive according to the sources indicated in the last received IGMPv3 message (column 2 of Table 1).
  • The presence of switches on data networks is common, especially in “Local Area Networks” (LAN). A switch is an electronic network interconnection device that normally operates at layer 2 (the data link layer) of the OSI model (“Open Systems Interconnection”). The OSI model is the open systems interconnection reference model created by the ISO (“International Organization for Standardization”) and is known to one skilled in the art.
  • In computer networking, a “frame” or a “data frame” is a digital data transmission unit on the layer 2 of the OSI model. RFC 1122 defines a frame as “the unit of transmission in a link layer protocol, and consists of a link layer header followed by a packet”
  • A switch interconnects two or more network segments, passing data frames from one segment to another using the layer 2 destination address of the data frames (for example, the “MAC address” in Ethernet networks). In order to send the data frames to the devices connected to each one of its ports, a switch determines and stores the layer 2 address of each device connected to each of its ports.
  • The low-level protocol group most used on local area networks is currently the Ethernet protocol group, defined according to IEEE (“Institute of Electrical and Electronics Engineers”) specifications. Ethernet defines both the physical layer (layer 1) and the data link layer (layer 2) in the OSI model, and divides the data link layer into two sublayers: one layer known as LLC (“Logical Link Control”) which is established in the IEEE 802.2 specifications, and a MAC (“Media Access Control”) layer, which is established in the different IEEE 802.3 specifications, such as IEEE 802.3u (“Fast Ethernet”) based on electric cabling, or IEEE 802.3z based on fiber-optics. There are also wireless Ethernet protocols, like IEEE 802.11, also known as WIFI, or IEEE 802.16 known as WIMAX.
  • The same LLC (Logical Link Control) protocol can be used with different MAC layer protocols since the IEEE establishes new MAC layer protocols without modifying the LLC protocol. This is one of the reasons for the success of Ethernet.
  • One of the functions of the MAC layer is to determine the physical addresses of the devices. Ethernet uses 6-byte physical addresses referred to as MAC addresses (“Media Access Control Address”).
  • The IEEE has identified three MAC address categories:
      • Unicast MAC addresses; these are MAC addresses that identify each individual network interface. Normally the address is determined by the hardware of each network card.
      • MAC broadcast address: this is the MAC address with 6 bytes having the value FFFF.FFFF.FFFF in hexadecimal format. If a data frame is sent to this address, all the network devices receive the data frame and must process it.
      • MAC multicast addresses: these are addresses used to transport multicast data packets. When IP protocol is used, a MAC multicast address takes the form 0100.5exx.xxxx in the hexadecimal system, where xx.xxxx may be a value between 00.0000 and 7f.ffff.
  • Bit 0 of Octet 0 in an IEEE MAC address indicates whether the destination address is broadcast/multicast address or a unicast address. If this bit is set (value=1) then the frame is a broadcast frame or a multicast frame.
  • In the case of Ethernet IP multicast frames, all of them use MAC layer addresses that begin with the 24 bit prefix 01.00.E.X.XX.XX. But only half of these MAC addresses are avail-able for use by IP multicast. This leaves 23 bits of MAC address space for mapping the layer 3 IP multicast address into the layer 2 MAC address.
  • As there are only 23 bits to determine a MAC multicast address of a data frame, while the IPv4 protocol uses 28 bits to determine an IP multicast address in an IP data packet (the first 4 bits of an IP multicast data packet are always 1110 in binary notation), the 28 bits of the IP multicast address of an IP data packet must be transferred to the 23 bits of the MAC multicast address of the corresponding data frame. Therefore, 5 bits of the IP multicast address are lost in this process. The transfer is therefore made by transferring the 23 least significant bits of the IP multicast address to the 23 bits of the MAC multicast address. Hence, a single MAC multicast address corresponds to 32 IP multicast addresses.
  • Referring now to FIGS. 4 and 5, different types of layer 2 Ethernet packets or frames encapsulating a layer 3 IP packet are shown.
  • The preamble of an Ethernet frame consist of a 56-bit (7-byte) pattern of alternating 1 and 0 bits, which allows device on the network to easily detect a new incoming frame.
  • The Start Frame Delimiter (SFD) is the 8 bit value marking the end of the preamble of an Ethernet frame. It has the value 10101011. The SFD is designed to break the pattern of the preamble, and signal the start of the actual frame. The SFD is immediately followed by the destination MAC address.
  • Every Ethernet network card has a unique 48-bit serial number called MAC address, which is stored in ROM or EEPROM carried on the card. The MAC address identifies the device uniquely on the LAN.
  • The destination MAC address (DA) field indicates the MAC address of the network interface of the intended recipient of the packet. The DA field also indicates whether or not the packet contains a multicast or broadcast data. Other fields within the packet may also indicate whether the data is carrying is multicast or broadcast, for example the IP destination address when the payload is a IPv4 packet.
  • The Source MAC address field provides the identification of the node from which the data packet originated. It identifies the origin node using the MAC address of the network interface of the origin node.
  • The EtherType is a two octet field indicating the data type encapsulated in the payload (the frame data field). For example, an EtherType value of 0x0800 indicates that the payload contains an IPv4 datagram.
  • When the original Ethernet standard, developed by DEC, Intel and Xerox, went through a formal IEEE standardization process, the EtherType field was changed to a data length field in the new 802.3 standard. This standard required an IEEE 802.2 header to follow the length field to specify the packet type.
  • In order to allow packets using different versions of Ethernet framing in the same network. EtherType values must be greater or equal to 1536 (0x0600). That value was chosen because the maximum length of the data field of an Ethernet 802.3 frame is 1500 bytes. If the field's value is greater than or equal to 1536, the field must be an EtherType. If the field's value is less or equal 1500 it must be a length field. Values between 1500 and 1535 are undefined.
  • FIG. 4 shows an Ethernet packet 420 with a Length field 425. To create a Type field for frames that use the EtherType/Length field as Length field, either one or two additional headers 430 are added after the 802.3 header but before layer 3 header 411. For example, when sending IP packets 410 the Ethernet frame has two additional headers: an IEEE 802.2 Logical Link Control (LLC) header 431 and an IEEE Subnetwork Access Protocol (SNAP) header 432. FIG. 4 shows these additional headers in the field 421. The arrow 427 indicates that the structure of the field 421 is detailed in the element 430. Note that the SNAP header Type 435 has the same purpose, with the same reserved values, as the Ethernet EtherType field. The 802.2 LLC Header 431 comprise the DSAP field (Destination Service Access Point), the SSAP field (Source Service Access Point) and a control field indicated as CTL in FIG. 4. The SNAP Header 432 comprises the OUI field (IEEE Organizationally Unique identifier) followed by the 2-octet TYPE field that is a protocol identifier like the ETHERTYPE field.
  • The data portion 422 includes the layer 3 IP packet. In FIG. 4 the data portion 422 is an IP packet 410 comprising an IP Header 411 and IP payload 412. Lines 413 and 414 in FIG. 4 indicate that IP packet 410 is encapsulated in data portion 422.
  • FIG. 5 shows an Ethernet packet 520 with an EtherType field 525. In this case there are no additional headers with the EtherType field indicating the type of data in the data portion 522. In FIG. 5 the data portion 522 is an encapsulated IP packet 410 as indicated by lines 513 and 514.
  • The Frame Check Sequence are the extra checksum characters added to a frame for error detection and correction
  • Although it is not technically correct, the terms packet and frame are sometimes used interchangeably within the art. The IEEE 802.3 standards refer to MAC frames consisting of the destination address, the source address, length/type, data payload and frame check sequence fields. The preamble and the Start Frame Delimiter (SFD) are together considered a header to the MAC frame. This header and the MAC frame are considered a packet.
  • FIG. 6 shows a router 600 (e.g., IGMP router) situated between a first network 610 and a second network 611. In the example of FIG. 6, the first network 610 is connected to the downstream network interface 602 of router 600, and includes three hosts (620, 630 and 640). The second network 611 is connected to the upstream network interface 601 of router 600, and includes four sources (650, 660, 670 and 680) that send data packets. Each of the sources and hosts have a network interface which are represented by elements 625, 635, 645, 655, 665, 675 and 685 in FIG. 6. Each of networks 610 and 611 may be of any of a variety of network types, such as, for example, an Ethernet, WIFI, or WiMAX network, or any other type of data network that uses a shared medium to transmit data.
  • Via their respective network interfaces 625, 635 and 645, the hosts 620, 630 and 640 may receive the multicast data frames (layer 2 of the OSI model) that transport the multicast IP packets (layer 3 of the OSI model) from the multicast channels (S1,G1) and (S3,G1) in the form of physical signals (layer 1 of the OSI model). When network interfaces 625, 635 and 645 receive a layer 2 data frame that transports an IP packet with a multicast destination IP address, such as an Ethernet data frame with a MAC multicast destination address, the network interfaces 625, 635 and 645 process the data frame and transmit its contents to an application of its respective host (e.g., an operating system application) which verifies the destination and/or origin addresses of the packet and decides whether or not the packet must be discarded or sent to one of the applications being run in the host.
  • As shown in FIG. 6, sources 650 and 670 send multicast data packets (represented by elements 691 a and 693 a, respectively) using a multicast address G1. These packets may be link-layer packets that encapsulate multicast IP packets having an IP multicast destination address. Data source 650 sends the multicast IP packets 691 a of the channel (S1,G1) that are encapsulated in frames that use a link layer source address (e.g., a MAC address) of the network interface 655 of source 650 and the multicast link layer destination address corresponding to the multicast group address G1 using the lower 23 bits of the multicast group address G1 as explained before. Data source 670 sends the multicast IP packets 693 a of the channel (S3,G1) that are encapsulated in frames that use a link layer source address (e.g., a MAC address) of the network interface 675 of source 670 and the multicast link layer destination address corresponding to the multicast group address G1.
  • In the example of FIG. 6, hosts 620 and 630 each send a message to router 600 to request multicast traffic from sources S1 and S3, respectively, with host 650 not wishing to receive any multicast traffic. The message from host 620 may be an IGMPv3 message requesting the traffic (S1,G1) coming from source 650, where S1 is the IP address of the data source 650 and G1 is a multicast group address used by data source 650 to transmit multicast traffic. The message from host 630 may be an IGMPv3 message requesting the traffic (S3,G1) coming from source 670, where 53 is the IP address of the data source 670 and G1 is a multicast group address used by data source 660 to transmit multicast traffic. When the IGMP router 600 receives the messages from hosts 620 and 630, it transmits to the network 610 via network interface 602 the multicast IP packets 691 b and 693 b corresponding to data packets 691 a and 693 a sent from channels (S1,G1) and (S3,G1), respectively.
  • A problem that exists is that each of the hosts 620, 630 and 640 in network 610 must devote processing resources to analyze all of the data packets transmitted in network 610 to determine whether to receive or discard the packets. In the example of FIG. 6, host 640 which is not interested in receiving any multicast traffic must nevertheless waste processing resources to analyze and subsequently discard multicast IP packets 691 b and 693 b. In a like manner, hosts 620 and 630 must each waste processing resources to analyze and subsequently discard multicast IP packets 693 b and 691 b, respectively.
  • If the multicast channel (S1,G1) is, for example, an IPTV channel transmitting at about 3 Mbps, the hosts 630 and 640 must analyze a vast number of IP packets every second in order to discard them. As more multicast traffic is circulating through network 610, more processing resources must be assigned by the hosts in order to discard the multicast traffic that they do not want. In addition to affecting processing operations of the hosts, the charge life of batteries that operate mobile computing devices, such as mobile phones, is also reduced.
  • Another problem associated with the operation of the data network system of FIG. 6 is that the sending of multiple IP multicast packets to network 610 is possible for the purpose of attacking and at least partially disabling the operation of one or more of hosts 620, 630 and 640.
  • Even in networks where multicast IP packets are sent from sources to hosts without an intermediary router, multicast filtering using either the layer 2 destination addresses or the layer 2 source addresses of frames. For example using the destination or source MAC address in Ethernet networks, there exists a problem since, for among other reasons, it does not permit source specific multicast filtering due to the fact that one multicast MAC address corresponds to 32 IP multicast addresses.
  • In a data network where a router is situated between the sources that send data and the hosts, source specific filtering is not possible using layer 2 filtering since the layer 2 source address of the multicast IP packets is lost during router processing. In FIG. 6, when router 600 receives in its upstream network interface 601 a link layer data packet containing an IP packet, for example the 691 a and 693 a multicast packets, the router removes the frame header and transmits the IP packet. In general, the routing process forwards only the IP packet and discards link layer headers and trailers along the way. When the router 600 transmits IP packets 691 b and 693 b of the multicast channels (S1,G1) and (S3,G1) to network 610 through its downstream network interface 602, the router 600 creates new link layer data packets to encapsulate the multicast IP packets. These new link layer packets use the link layer source address of the network interface 602 and use the multicast link layer destination address formed using the lowest 23 bits of the multicast group address G1. The link layer packets that encapsulate the IP packets of the multicast channels (S1,G1) and (S3,G1) use the same link layer destination address and the same link layer source address.
  • When the hosts 620, 630 and 640 receive the link layer data packets containing the IP multicast packets of the multicast channels (S1,G1), the link layer source address of the network interface 655 of source 650 is not present in the link layer packet because it was removed in the router 600. The same happens with the link layer packets containing the IF multicast packets of the multicast channel (S3,G1). That is, the link layer source address of the interface 665 is lost during the routing process. For this reason, when a multicast IP packet goes through a router It is not possible to filter the multicast traffic of a multicast group from different sources using the link layer destination address or the link layer source address.
  • In other words, when source specific multicast is used, source specific multicast traffic filtering by a host cannot be accomplished using layer 2 filtering because in source specific multicast the IP source address for the multicast traffic that a host wishes to receive is only located in the IP header of the IP packet when the multicast traffic is transmitted through a router. Prior art host network interfaces that use the multicast MAC destination address for filtering multicast traffic have very limited filtering capability. As an example and with continued reference to FIG. 6, when the network interfaces of host 620, 630 and 640 filter the multicast traffic of the group G1 using the corresponding multicast MAC address, the multicast traffic from all the sources 650, 660, 670 and 680 of group G1 are filtered along with the multicast traffic from all the sources for the other 31 multicast group addresses that have the same lowest 23 bits as the lowest 23 bits of the multicast group G1.
  • SUMMARY OF THE DISCLOSURE
  • In accordance with one embodiment of the present invention a method of filtering multicast packets in a network interface is provided, in one implementation the network interface is situated between and coupled to a multicast data network and a bus of a computer system with the computer system having a first memory, the method comprising storing for the network interface and a multicast group address information in the first memory for the purpose of enabling or disabling transmission through the network interface to the bus of the computer system multicast packets sent from sources using the multicast group address, the information comprising first data that identifies the network interface, second data that identifies the multicast group address, third data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and fourth data that identifies a source-list of zero or more IP source addresses, the network interface accessing the second, third and fourth data, receiving in the network interface a multicast packet from the multicast data network, determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the multicast group address and the IP source address of the multicast packet with the accessed second, third and fourth data; and upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus. In one embodiment accessing of the second, third and fourth data by the network interface is accomplished by the network interface reading the second, third and fourth data from the first memory. In another embodiment accessing of the second, third and fourth data by the network interface is accomplished by the network interface copying the second, third and fourth data from the first memory into a second memory of the network interface. In another embodiment accessing of the second, third and fourth data by the network interface is accomplished by the computer system sending from the first memory the second, third and fourth data to the network interface for storage in a second memory of the network interface. In another embodiment accessing of the second, third and fourth data by the network interface is accomplished by an IPMulticastListen operation in the computer system sending the second, third and fourth data to the network interface for storage in a second memory of the network interface.
  • In accordance with another embodiment, a method of filtering multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the network interface accessing, via the bus, information in the computer system for the purpose of enabling or disabling transmission through the network interface to the bus of the computer system multicast packets sent from sources in the multicast data network, the information comprising first data that identifies a multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, receiving in the network interface a multicast packet from the multicast data network, determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the multicast group address and the IP source address of the multicast packet with the accessed first, second, and third data; and upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the network interface storing information for the purpose of enabling or disabling the transmission of IP multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies an IP multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, receiving in the network interface an IP multicast packet from the multicast data network, determining in the network interface the IP multicast group address and the IP source address of the IP multicast packet, determining in the network interface if transmission of the IP multicast packet from the network interface to the bus is to be enabled or disabled by comparing the IP multicast group address and the IP source address of the IP multicast packet with the first, second and third data; and upon determining that the transmission of the IP multicast packet is to be enabled, the network interface transmitting the IP multicast packet to the bus, or upon determining that the transmission of the IP multicast packet is to be disabled, the network interface not transmitting the IP multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided. The computer system has a first memory and the network interface has a second memory. The method comprising an application of the computer system initiating a request for the purpose of enabling or disabling reception of multicast packets from the multicast data network, the request comprising first data that identifies the network interface, second data that identifies a multicast group address to which the request pertains, third data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and fourth data that identifies a source-list of zero or more IP source addresses, storing the first, second, third and fourth data in the first memory, the network interface accessing the second, third and fourth data, receiving in the network interface a multicast packet from the multicast data network, determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if reception of the multicast packet is to be enabled or disabled by comparing the multicast group address and the IP source address of the multicast packet with the second, third and fourth data stored in the second memory; and upon determining that the reception of the multicast packet is to be enabled, the network interface transmits the multicast packet to the bus, or upon determining that the reception of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the network interface storing first information for the purpose of enabling or disabling the transmission of IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the first information comprising first data that identifies an IP multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, the network interface storing second information for the purpose of always enabling the transmission of selected IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the second information comprising fourth data that identifies an IP multicast group address, fifth data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and sixth data that identifies a source-list of zero or more IP source addresses, receiving in the network interface an IP multicast packet from the multicast data network, determining in the network interface the IP multicast group address and the IP source address of the IP multicast packet, if a filtering conflict exists between the first information and the second information stored in the network interface, selecting either the first information or the second information for use in determining whether to enable or disable transmission of the IP multicast packet to the bus, determining in the network interface if transmission of the IP multicast packet from the network interface to the bus is to be enabled or disabled by 1) comparing the IP multicast group address and the IP source address of the IP multicast packet with the first, second and third data if no conflict exists between the first information and the second information or if the first information is selected for use in determining whether to enable or disable transmission of the IP multicast packet to the bus when a conflict exists between the first information and the second information, or 2) comparing the IP multicast group address and the IP source address of the IP multicast packet with the fourth, fifth and sixth data if the second information is selected for use in determining whether to enable or disable transmission of the IP multicast packet to the bus when a conflict exists between the first information and the second information; and upon determining that the transmission of the IP multicast packet is to be enabled, the network interface transmitting the IP multicast packet to the bus, or upon determining that the transmission of the IP multicast packet is to be disabled, the network interface not transmitting the IP multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the network interface storing first information for the purpose of enabling or disabling the transmission of IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the first information comprising first data that identifies an IP multicast group address, second data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and third data that identifies a source-list of zero or more IP source addresses, the network interface storing second information for the purpose of always disabling the transmission of selected IP multicast packets from the multicast data network through the network interface to the bus of the computer system, the second information comprising fourth data that identifies an IP multicast group address, fifth data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and sixth data that identifies a source-list of zero or more IP source addresses, receiving in the network interface an IP multicast packet from the multicast data network, determining in the network interface the IP multicast group address and the IP source address of the IP multicast packet, if a filtering conflict exists between the first information and the second information stored in the network interface, selecting either the first information or the second information for use in determining whether to enable or disable transmission of the IP multicast packet to the bus, determining in the network interface if transmission of the IP multicast packet from the network interface to the bus is to be enabled or disabled by 1) comparing the IP multicast group address and the IP source address of the IP multicast packet with the first, second and third data if no conflict exists between the first information and the second information or if the first information is selected for use in determining whether to enable or disable transmission of the IP multicast packet to the bus when a conflict exists between the first information and the second information, or 2) comparing the IP multicast group address and the IP source address of the IP multicast packet with the fourth, fifth and sixth data if the second information is selected for use in determining whether to enable or disable transmission of the IP multicast packet to the bus when a conflict exists between the first information and the second information; and upon determining that the transmission of the IP multicast packet is to be enabled, the network interface transmitting the IP multicast packet to the bus, or upon determining that the transmission of the IP multicast packet is to be disabled, the network interface not transmitting the IP multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering multicast data packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the network interface storing information for the purpose of enabling or disabling the transmission of multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies a layer 2 multicast destination address and second data that identifies a layer 2 source address, receiving in the network interface a multicast packet, determining in the network interface the layer 2 destination address and the layer 2 source address of the multicast data packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the layer 2 destination address and the layer 2 source address of the multicast packet with the first and second data; and upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering multicast data packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the network interface storing information for the purpose of enabling or disabling the transmission of multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies a layer 2 multicast destination address and second data that identifies a layer 2 source address, receiving in the network interface a data packet, determining in the network interface if the data packet is a multicast packet, if upon determining the data packet is not a multicast packet, the network interface transmits the data packet to the bus, if upon determining the data packet is a multicast packet, the network interface determines the layer 2 destination address and the layer 2 source address of the multicast packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the layer 2 destination address and the layer 2 source address of the multicast packet with the first and second data; and upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus.
  • In accordance with another embodiment, a method of filtering IP multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system is provided, the method comprising the computer system requesting to receive IP multicast packets from sources of a multicast group address in the multicast data network by sending through the network interface to equipment in the data network a first membership message, the first membership message comprising first data that identifies a multicast group address, second data that denotes an INCLUDE filter-mode, an EXCLUDE filter-mode, a change to INCLUDE mode, or a change to EXCLUDE mode, and third data that identifies a source-list of zero or more IP source addresses, the network interface reading the first, second and third data in the membership message and storing a state record in a memory of the network interface information derived from the first, second and third data that comprises fourth data that identifies the multicast group address, fifth data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and sixth data that identifies a source-list of zero or more IP source addresses, the third, fourth and fifth data being stored in the memory of the network interface for the purpose of being used by the network interface to enable or disable the transmission of IP multicast packets from the multicast data network through the network interface to the bus of the computer system, receiving in the network interface an IP multicast packet from the multicast data network, determining in the network interface the IP multicast group address and the IP source address of the IP multicast packet, determining in the network interface if transmission of the IP multicast packet from the network interface to the bus is to be enabled or disabled by comparing the IP multicast group address and the IP source address of the IP multicast packet with the fourth, fifth and sixth data; and upon determining that the transmission of the IP multicast packet is to be enabled, the network interface transmitting the IP multicast packet to the bus, or upon determining that the transmission of the IP multicast packet is to be disabled, the network interface not transmitting the IP multicast packet to the bus. In one such embodiment the network interface maintains a timer for each IP source address in the source-list, the timer being used to manage the duration of each IP source address stored in the memory of the network interface. In yet another embodiment the network interface maintains a group timer when the state record comprises an EXCLUDE mode, the group timer being used to manage the duration of the EXCLUDE mode.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Other advantages and features of the present invention can be seen in the following description in which, with a non-limiting character, preferred embodiments are referred to in relation to the attached drawings:
  • FIG. 1 shows an IGMPv3 Query type message;
  • FIG. 2 shows an IGMPv3 Membership Report type message;
  • FIG. 3 shows the forming of the “Group Record” blocks contained in IGMPv3 Membership Report type messages;
  • FIG. 4 illustrates a type of Ethernet packet;
  • FIG. 5 illustrates another type of Ethernet packet;
  • FIG. 6 illustrates an exemplary multicast data network;
  • FIG. 7 a is a block diagram of an exemplary computer system that may implement the present invention;
  • FIG. 7 b is a block diagram of another exemplary computer system that may implement the present invention;
  • FIG. 8 is a block diagram of an exemplary network interface that may implement the present invention;
  • FIG. 9 is a flow chart that illustrates a layer 2 multicast filtering method according to one implementation of the present invention;
  • FIG. 10 is a flow chart that illustrates a layer 3 multicast filtering method according to one implementation of the present invention;
  • FIG. 11 illustrates a flow chart that illustrates a multicast filtering method according to another implementation of the present invention;
  • FIG. 12 illustrates a flow chart that illustrates a multicast filtering method according to yet another implementation of the present invention.
  • DETAILED DESCRIPTION
  • By way of illustration and for exemplary purposes only, FIGS. 7 a, 7 b and 8 are provided to aid in the description of the various implementations disclosed herein. It is to be understood that the computer systems of FIGS. 7 a and 7 b and the network interface of FIG. 8, as illustrated and described herein, represent several of many ways to implement the inventions disclosed herein. In addition, although the following description is based primarily on the IGMP protocol, the various implementations described herein may also be applied to the MLD protocol or to protocols similar to the IGMP and MLD protocols.
  • FIG. 7 a is a block diagram of an exemplary computer system environment 100 in which aspects of the invention may be implemented. The computer system environment 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100.
  • The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, televisions, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
  • With reference to FIG. 7 a, an exemplary system for implementing the invention includes a general purpose computing device in the form of a computer system 110. Components of computer 110 may include, but are not limited to, a processing unit 120, a system memory 130, and a system bus 121 that couples various system components including the system memory to the processing unit 120. The system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (also known as Mezzanine bus).
  • Computer system 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and non-volatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
  • The system memory 130 includes computer storage media in the form of volatile and/or non-volatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation, FIG. 7 a illustrates operating system 134, application programs 135, other program modules 136, and program data 137.
  • The computer system 110 may also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example only, FIG. 7 a illustrates a hard disk drive 141 that reads from or writes to non-removable, non-volatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, non-volatile magnetic disk 152, and an optical disk drive 155 that reads from or writes to a removable, non-volatile optical disk 156, such as a CD ROM or other optical media. Other removable/non-removable, volatile/non-volatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive 141 is typically connected to the system bus 121 through an non-removable memory interface such as interface 140, and magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150.
  • The drives and their associated computer storage media discussed above and illustrated in FIG. 7 a, provide storage of computer readable instructions, data structures, program modules and other data for the computer system 110. In FIG. 7 a, for example, hard disk drive 141 is illustrated as storing operating system 144, application programs 145, other program modules 146, and program data 147. Note that these components can either be the same as or different from operating system 134, application programs 135, other program modules 136, and program data 137. Operating system 144, application programs 145, other program modules 146, and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies. The application programs or other program modules of the computer system 110 can contain, among other things, computer instructions which, when executed cause the computer system to operate or perform functions like, for example, the IPMulticastListen function.
  • A user may enter commands and information into the computer through input devices such as a keyboard 162 and pointing device 161, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
  • The computer system 110 operates in a networked environment using logical connections to one or more remote computing devices 180. The remote computing device(s) 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes a portion or all of the elements described above relative to the computer system 110. The logical connections depicted in FIG. 7 a include a local area network (LAN) 171, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • The network interface 170 provides an interface to outside networks, which may comprise many interconnected computer systems/devices and communication links as explained above. These communication links may be wire line links, optical links, wireless links or any other mechanism for communication of information. In an embodiment of the present invention, network 171 supports an Ethernet protocol with the network interface being connected to a LAN networking environment. The network interface 170 may take any of a variety of forms including that of a network card that is installed inside the computer system 110 or an embedded component or chip that is a part of the computer system 110, or it may be a part of another component, like for example a computer motherboard or an expansion card. In one embodiment of the present invention, as will be described in more detail below, the network interface is implemented as part of a chipset of the computer system 110.
  • FIG. 7 b is another example of a computer system 700 which can communicate via a network 770 with other computer systems. Computer system 700 includes or is otherwise connected to a network interface 760 that communicates with the computer system 700 via a bus 721. The computer system 700 includes a processor subsystem 720 which may include a processor, a memory subsystem 730, and a core logic subsystem or chipset 750. The chipset 750 provides bridges among the processor subsystem 720, the computer system memory subsystem 730 and the bus 721. The computer system 700 may also include other devices 740 like, for example, a hard disk or a keyboard.
  • The network interface 760 provides an interface to external networks (e.g., network 770), which may comprise many interconnected computer systems and communication links. These communication links may be wire line links, optical links, wireless links or any other mechanism for communication of information. In an embodiment described herein, network 770 supports an Ethernet protocol. The network interface controller 760 may take the form of a network card that is installed inside the computer system 700 or it may refer to an embedded component or chip that is a part of the computer system 700, like for example a component of other devices 740. As mentioned above in the description of FIG. 7 a, network interface 760 may be implemented as a part of chipset of the computer system 700. FIG. 7 b depicts some of the components of the network interface 760 in accordance with one implementation. As shown, the network interface of FIG. 7 b includes a controller 761, a PHY 763, a memory 762 and a bus interface 764 having a direct memory access (DMA) engine 765.
  • The memory subsystem 730 of computer system 700 typically includes a number of memories including a main random access memory (RAM) for storage of instructions and data during program execution, and a read only memory (ROM) in which fixed instructions and data are stored. The memory subsystem may also include one or more levels of cache memory. For the sake of simplicity, the computer system memory subsystem 730 is sometimes referred to herein as “computer system memory”. As used herein, virtual memory is considered part of the memory subsystem even though part of it may at times be stored physically on a peripheral device. The memory subsystem 730 contains, among other things, computer instructions which, when executed by the processor subsystem 720, cause the computer system to operate or perform functions like, for example, the operating systems 710, applications 711 and the IPMulticastListen function 712.
  • The bus 721 provides a mechanism for allowing the various components and subsystems of computer system 700 to communicate with each other. In one embodiment the bus 721 comprises a PCI bus. Other embodiments may include other buses, like for example PCI-X or PCI Express, and may also include multiple buses.
  • Computer system 700 can be of varying types including a personal computer, a portable computer, a workstation, a computer terminal, a network computer, a television, a mainframe, a server, a router, a switch or any other data processing system or user devices. Due to the ever-changing nature of computers and networks, the computer systems depicted in FIGS. 7 a and 7 b are intended only as examples for purposes of illustrating embodiments of the present invention. Many other computer system configurations are possible having more or less components, and configured similarly or differently than those depicted in FIGS. 7 a and 7 b.
  • Turning now to FIG. 8, a block diagram of an exemplary network interface 10 in which the present invention may be implemented is shown. It is to be appreciated however, that the various implementations described herein are not limited to any particular type of network interface. The network interface 10 may take any of a variety of forms as discussed above. For example, the network interface 10 may take the form of a network card that is installed inside a computer system or it may refer to an embedded component of a chip or chipset of a computer system, or it may be a part of another component, like for example a computer motherboard or an expansion card.
  • As shown in FIG. 8, in one implementation network interface 10 includes a controller 50, a PHY transceiver 40, various forms of memory 51, 53, 56, 58 and a bus interface 60 comprising a DMA engine 62. The bus interface 60 facilitates communication with a bus 20 of a computer system (such as buses 121 and 721 described above) that has a processor 22 and a memory 24. In the description that follows the terms “computer system” and “host” are used to refer to the device to which the network interface belongs.
  • In the example of FIG. 8, the network interface 10 is connected to a data network 30 using the PHY transceiver 40. PHY is a common abbreviation for the physical layer of the OSI model. A PHY connects a link layer device (often called MAC) to a physical medium such as, for example, optical fibers or electrically conductive conduits. Information is transmitted to and received from the physical interface through the PHY transceiver 40.
  • The controller 50 of the network interface 10, which may be a microcontroller or other type of processor, is typically provided to control the transmission and receiving operations of the network interface using appropriate transmit control 52 and receive control 54 programs or state machines. These programs handle the various data control operations required for transmitting and receiving data from a network including, for example, handling error conditions for a collision on the physical medium and retransmitting corrupted data as necessary. In Ethernet networks, for example, most of the functionality desired to implement applicable standards, such as IEEE 802.3, is implemented within the controller 50.
  • In the network interface of FIG. 8, data coming in and out of controller 50 are buffered in the memory of the network interface by a transmit FIFO 56 and a receive FIFO 58. Communications with the host computer, including the transmission of data to the bus 20 of the host computer are managed by the bus interface 60. In the example of FIG. 8, the network interface 10 also includes a CSR (control status registers) block 53 which can provide the control status registers for supporting communication with the host computer and to store configuration data in the network interface 10. The transmit FIFO 56, receive FIFO 58 and control status registers 53, may be part of the same memory in the network interface 10, or may comprise discrete memory components that include any one of the memories or combinations thereof.
  • In one implementation, the network 10 also includes an EEPROM 51 which generally includes programming for the controller 50. In one embodiment, EEPROM 51 provides the MAC address (or addresses) assigned to the network interface 10 for use with the computer system/host to which it is coupled.
  • There are four techniques typically used to transfer data between a peripheral device, such as a network interface, and a processor of a computer system. The transfer of data between a network interface and a computer system may use one or a combination of these techniques. The four techniques are polling, programmed I/O, interrupt-driven I/O and direct memory access (DMA). Direct Memory Access (DMA) is a feature that allows certain hardware components, such as a network interface, associated with a computer system to access the computer system's memory for reading and/or writing with little or no involvement of the computer system's processor. Without DMA, using programmed I/O mode for communicating with peripherals devices, or load/store instructions in the case of multicore chips, the processor of the computer system is typically fully occupied for the entire duration of the read or write operation, and thus unavailable to perform other work. With DMA, the computer system processor can initiate the transfer of data, perform other operations while the transfer is in progress, and receive an interrupt from the DMA controller once the data transfer operation is complete.
  • In accordance with various implementations of the present invention an improved network interface associated with a computer system/host is provided that filters multicast packets in a manner that reduces or obviates altogether the dedication of host processing resources for the purpose of analyzing and discarding unwanted layer 2 and/or layer 3 multicast data packets. The network interfaces of the present invention may be implemented in different ways, such as, for example, using instructions executed in a processor of a network interface card, using an FPGA (Field Programmable Gate Array), or using an application-specific integrated circuit (ASIC). In alternative embodiments, a network interface of the present invention may be implemented within the computer systems itself as a part of the computer system's integrated circuitry. For example, in one embodiment the network interface is implemented as a part of a computer system's chipset.
  • For discussion purposes, FIG. 6 will also be used to describe the operation of the various implementations of the present invention. As previously explained, in the prior art when the host 620 of FIG. 6 sends an IGMPv3 message to receive the multicast channel (S1,G1) and the router 600 transmits the multicast packets 691 b of the multicast channel (S1, G1) to network 610, the hosts 630 and 640 also receive these multicast packets. This disadvantageously requires hosts 630 and 640 to devote processing resources to filter the unwanted packets. In accordance with various implementations of the present invention, network interfaces 635 and 645 of hosts 630 and 640, respectively, are configured to filter the unwanted packets in a manner that reduces or obviates the use of host processing resources normally needed to analyze and discard the unwanted multicast packets.
  • In accordance with one implementation, a computer system of the present invention uses the IPMulticastListen function, or other functions, to store in a memory of the computer system information indicative of the multicast traffic an application wishes to receive. In one embodiment the computer system stores the following first state record in a first status register for each active socket:
  • (interface, multicast-address, filter-mode, {source-list})
  • In one embodiment, the computer system also stores a separate second state record in a second status register for each network interface and multicast group in the form:
  • (multicast-address, filter-mode, {source-list})
    where:
    “multicast-address” is the IP multicast group address.
    “filter-mode” is the network interface mode, which may be INCLUDE or EXCLUDE. In the INCLUDE mode, the network interface defines the source-list as INCLUDE; this means that it wishes to receive the multicast group traffic sent by all the sources in the list. In the EXCLUDE mode, the network interface defines the source-list as EXCLUDE; this means that it wishes to receive the multicast group traffic from all the sources sent in the multicast group, except the sources in the list.
    “source-list” is a list of zero or more IP source addresses.
  • In the description herein the term “status register” is not limited to a single memory location, but may also refer to multiple memory locations within a memory. Moreover, throughout the specification the term “state record” is used to describe a record that contains information used by a network interface to perform its filtering function. It is important to note, that although the information may be stored in a single state record within a single memory location, the present invention is not so limited. For example, different parts of the filtering information may be in the form of different state records that may be stored in a common memory location or in different memory locations. However, for the sake of simplicity, in the following description the terms “status register” and “state record” will be used with the understanding that each term may denote the singular or the plural. The present invention is not limited by the manner in which the multicast traffic information is stored in the computer system or in the network interface, as the case may be. For example, the multicast-address, filter-mode and source-list information/data used by a network interface to filter multicast packets may be stored as a unit in a single state record within a single memory location or may be stored separately, or in any combination, in different state records within one or more status registers of the computer system or network interface, as the case may be. What is important is that adequate information be appropriately stored in a location that is accessible to the network interface to enable the network interface to perform its multicast packet filtering function.
  • In one embodiment, a network interface of the present invention accesses the information of the second status register in the computer system by any of a variety of methods, including, but not limited to polling, programmed I/O, Interrupt-driven I/O and DMA. Filtering of multicast packets in the network interface is achieved by determining in the network interface the multicast group address and IP source address of multicast packets received in the network interface and subsequently comparing the multicast group address and IP source address of the received multicast packet with the accessed data of the second status register.
  • In one implementation a network interface of the present invention accesses the multicast-address, filter-mode and source-list information by reading the information of the second state record located in the second status register of the computer system. In one embodiment, the network interface uses direct access memory to read the information.
  • In another implementation, accessing of the multicast-address, filter-mode and source-list information by the network interface is accomplished by the network interface copying the information of the second status register into a status register of the network interface.
  • In another implementation, accessing of the multicast-address, filter-mode and source-list information by the network interface is accomplished by the computer system sending the information from the second status register to a status register of the network interface. In one embodiment, a driver installed on the computer system sends the information of the second status register to the status register of the network interface.
  • In another implementation, accessing of the multicast-address, filter-mode and source-list information is accomplished by an IPMulticastListen operation, or the like, in the computer system writing the information into a status register of the network interface. In one embodiment, the IPMulticastListen operation, or the like, writes the information to the computer system memory and network interface memory substantially simultaneously.
  • In one or more alternative embodiments, the multicast-address, filter-mode and source-list information is stored in a state record within a status register of the network interface in the same form of the second state stored in the computer system memory (e.g., (interface, multicast-address, filter-mode, {source-list}))
  • When a network interface of the present invention receives a multicast data packet that the host does not wish to receive, the network interface uses the accessed multicast-address, filter-mode and source-list information to filter unwanted multicast data packets in a manner that reduces or prevents altogether the host's operating system 710 and/or the host's hardware 780 from having to assign resources in order to analyze and discard unwanted multicast packets. Alternative network interface filtering examples are explained later in conjunction with FIGS. 9 and 10.
  • In one implementation, a network interface of the present invention is configured to never filter certain multicast packets. For example, in one embodiment the network interface does not filter the multicast packets that have the destination IF address 224.0.0.1 known as “All Hosts Multicast Address” which is used, for example, by the IGMPv3 routers to send IGMPv3 query messages to the hosts. In another embodiment, a network interface (for example 760) always sends to the host hardware 780 and/or operating system 710 multicast packets having the all hosts link-scope address (i.e., the IPv6 address FF02::1).
  • In alternative embodiments of the present invention, the network interface may be configured so that it always filters or always accepts traffic from certain IP multicast addresses (layer 3) or link-layer multicast addresses (layer 2) independently of the information stored in the computer system or network interface multicast state records. The expression “multicast configuration registers” is used hereinafter to refer to these registers that store information about layer 2 and layer 3 multicast traffic that are always filtered or never filtered by the network interface independently of the state records stored in the computer system and/or network interface. In such a case, that will be described in more detail below in conjunction with the discussion of FIG. 11, the network interface checks first these layers 2 and/or layer 3 multicast configurations registers to see if a multicast packet must always be filtered or never filtered. If no multicast configuration register is found for the multicast layer 2 and/or layer 3 destination addresses of the multicast packet, the network interface accesses the multicast-address, filter-mode and source-list information as previously described to determine whether to transmit or filter the multicast packet. In one embodiment, an application executed on the operating system of the host can be used to configure the layer 2 and/or layer 3 multicast configuration registers.
  • In one implementation, the network interface stores layer 2 multicast address and layer 3 multicast address information in different memory locations. For example, the network interface may store the following layer 2 and layer 3 state records:
  • Layer 2: (multicast destination MAC address, TRANSMIT(1)/FILTER(0))
  • Layer 3: (multicast-address, filter-mode, {source-list})
  • Where, in the layer 2 record, the first data in the record is the multicast layer 2 destination address and the second data in the record comprises information/data indicative of whether to always filter or never filter the multicast packets having the layer 2 destination address. In one embodiment a value “1” indicates that the multicast packet having the layer 2 destination address is to never be filtered and the value “0” indicates that the multicast is always to be filtered. The layer 3 record may be similar to the multicast state records previously explained.
  • FIGS. 9 and 10 are flow charts showing exemplary processes for filtering layer 2 multicast packets and layer 3 multicast packets, respectively. In the description of FIG. 9 the term “MAC address” is used to refer to a layer 2 address. It is important to note that the present invention is not limited to MAC addresses but is also applicable to other types of layer 2 addresses.
  • With reference to FIG. 9, the network interface receives at step 910 a layer 2 multicast packet from the data network. At step 920, the network interface checks if the packet has a multicast destination MAC address. If the packet does not have a multicast destination MAC address (i.e., the first 5 bits of the destination MAC address are different from 01:00:5e), the network interface processes the packets as being a unicast or broadcast packet at step 930 by transmitting the packet to be processed by the host.
  • If, on the other hand, the packet has a multicast destination MAC address, the network interface at step 940 checks if there is a stored layer 2 state record for this specific multicast destination MAC address specifying that the layer 2 multicast destination address is always to be filtered. If so, the packet is filtered at step 950. Otherwise, the packet is not filtered and the process continues at step 960.
  • At step 960, the network interface determines if there is a stored layer 2 state record for the multicast destination MAC address specifying that multicast packets having this address are to be always transmitted to the host. If so, the multicast packet is transmitted to the computer system at step 970.
  • In one implementation, when the packet received in the network interface is determined to have a layer 2 destination address but no layer 2 state record is stored in the network interface, the packet is further processed using layer 3 filtering at step 980. An exemplary layer 3 filtering process is depicted shown FIG. 10.
  • With reference to FIG. 10, a flow chart of a layer 3 source specific multicast filtering process in one embodiment of the present invention is shown. As mentioned above, an application in the host may be used to enable or disable the filtering function of a network interface of the present invention, both in layer 2 and layer 3 filtering. In the embodiment of FIG. 10, at step 210 it is determined whether the filtering function of the network interface is enabled. If the filtering function is not enabled all the multicast packets received in the network interface are transmitted to the computer system at step 220. If the network interface filtering function is enabled, the network interface reads the layer 3 destination address Gi (multicast group address) and the source address Sj of the IP packet encapsulated in the received frame at step 230. In step 240, the network interface checks if it has stored any multicast state records with the Gi multicast address group. If there is no state record stored in the network interface for the Gi multicast group address, the network interface determines that the computer system does not want the Gi multicast group address packets and filters the packet at step 250. Otherwise, if there is a state record for the Gi multicast group address, the network interface determines the filter mode of the record (i.e., INCLUDE or EXCLUDE).
  • At step 260, the network interface checks if the state record for the multicast group address Gi has an INCLUDE filter mode. If the filter-mode of the state record is INCLUDE, the network interface checks if the source Sj of the IP packet is included in the {source-list} of the state record at step 270. If the filter-mode is determined to be an INCLUDE filter mode and the source Sj is in the source-list, the network interface transmits the packet at step 280 to be processed by the computer system. If the source Sj is not in the source-list, the network interface filters the packet at step 250.
  • If the filter-mode of the state record (at step 260) is not in INCLUDE, it can only be EXCLUDE. When the filter-mode is EXCLUDE, the network interface checks if the source Sj of the IP packet is in the {source-list} of the state record at step 290. If the source Sj is in the source-list of the state record, the network interface filters the packet at step 250. If, on the other hand, the source Sj is not in the source-list of the state record with filter-mode EXCLUDE, the network interface transmits the packet to be processed by the computer system at step 280.
  • In one implementation, a network interface of the present invention consults the multicast state records stored or otherwise accessed by the network interface to perform its multicast traffic filtering function. In another embodiment, a network interface of the present invention may use both the accessed state record information and also information stored in the multicast configuration register(s) in the course of performing its multicast traffic filtering function. In the latter case a conflict may exists between the two types of information. For example, a configuration register may indicate to always transmit the multicast traffic from the multicast channel (S1,G1) to the computer system but there may be an accessed multicast state record derived from, for example, the IPMulticastListen function of the computer system for the G1 multicast address with an EXCLUDE filter mode and S1 in the EXCLUDE list. In this case the network interface may be configured to behave according to the multicast configuration register(s) or according to the accessed multicast state records derived from, for example, the IPMulticastListen function of the computer system. For example, if the network interface is configured to use by default the multicast configuration registers, then it will always transmit to the computer system the packets from the multicast channel (S1,G1).
  • In one embodiment of the present invention, the network interface may be configured so that the multicast filtering function can be enabled or disabled using a host application. For example, in one embodiment a software application of the “driver” type may be used to configure the manner in which the network interface operates. This allows the network interface to function in a mode where no multicast packets are filtered. In one implementation, the “enable” or “disable” mode of operation is stored in the memory of the network interface in a configuration register.
  • In another embodiment, the network interface may use the SNMP protocol to configure the information stored in the multicast status registers (memory location or locations of state record information) and/or the configuration registers. For example, the processing unit 761 can include an SNMP agent that is used to configure the network interface 760 by communicating with an “SNMP control station” also called “SNMP Network Management System” that configures the SNMP agent using the SNMP protocol.
  • FIG. 11 shows an example of the layer 3 source specific multicast filtering in one embodiment of the present invention when the network interface receives a multicast IP packet for a multicast group Gi and the network interface has stored a multicast state record information in a multicast status register for the group Gi and also a multicast configuration register for the same group Gi.
  • In step 11 the network interface reads the multicast destination address Gi and the unicast source address Sj of the IP multicast packet. As an initial step, the network interface determines if a conflict exists between the multicast configuration registers and the multicast status registers stored or accessed by the network interface. If a conflict is determined to exists, the network interface selects between either using the multicast configuration registers or the multicast status registers to filter incoming multicast packets at step 211. Upon selecting the multicast status registers the process continues at step 212. Upon selecting the multicast configuration register the process continues at step 217.
  • At step 212, the network interface controller checks if the multicast status register for the multicast group address Gi has an INCLUDE filter mode. If the filter-mode of the multicast status register is INCLUDE, the network interface controller checks, at step 213, if the source Sj of the IP packet is included in the INCLUDE list of the multicast status register. If it is in the INCLUDE list, the network interface transmits the packet at step 215 to be processed by the computer system. If the source Sj is not in the INCLUDE list, the network interface filters the packet at step 216,
  • If the filter-mode of the multicast status register (at step 212) is not INCLUDE, it can only be EXCLUDE. When the filter-mode is determined to be an EXLUDE filter mode, the network interface checks if the source Sj of the IP packet is in the EXCLUDE list of the multicast status register at step 214. If the source Sj is in the EXCLUDE list of the multicast status register, the network interface filters the packet at step 216. If the source Sj is not in the EXCLUDE list of the multicast status register with filter-mode EXCLUDE, the network interface transmits the packet at step 215 to be processed by the computer system.
  • When the multicast configuration register is used to transmit or discard the IP packet the process goes to step 217. At step 217, the network interface checks if the multicast configuration register for the multicast group address Gi has an INCLUDE filter mode. If the filter-mode of the multicast configuration register is INCLUDE, the network interface controller checks, at step 218, if the source Sj of the IP packet is included in the INCLUDE list of the multicast configuration register, if the source Sj is in the INCLUDE list, the network interface transmits the packet at step 215B to be processed by the computer system. If the source Sj is not in the INCLUDE list, the network interface filters the packet at step 216.
  • If the filter-mode of the multicast configuration register (at step 217) is not INCLUDE, it can only be EXCLUDE. When the filter-mode is EXCLUDE, the network interface checks if the source Sj of the IP packet is in the EXCLUDE list of the multicast configuration register at step 219. If source Sj is in the EXCLUDE list of the multicast configuration register, the network interface filters the packet at step 216. If the source Sj is not in the EXCLUDE list of the multicast configuration register, the network interface transmits the packet at step 215B to be processed by the computer system.
  • The network interface of the present invention can be configured, for example manually using a driver or user application or remotely using the SNMP protocol, to always use a multicast status register or to always use a multicast configuration register when both registers exist. In one embodiment, the network interface is configured to select between using a multicast status register or a multicast configuration register on a multicast group basis. That is, the net-work interface is configured to use the multicast status register to filter multicast packets having a multicast destination address G1 when a conflict exists between the multicast status register and the multicast configuration register. However, the same network interface may be configured to use the multicast configuration register to filter multicast packets having a multicast destination address G2 when a conflict exists between the multicast status register and the multicast configuration register.
  • The ARP protocol, which is known in the art and not explained here, enables a layer 2 unicast address to be associated with a layer 3 unicast address. This relationship between layer 2 addresses and layer 3 addresses may be used in alternative embodiment of the present invention to filter source specific multicast traffic in a network interface by using layers 2 filters that use both the link layer destination address and the link layer source address.
  • In alternative implementations, the multicast-address, filter-mode and source-list information of a multicast state record of a network interface of the present invention are obtained by the network interface reading multicast traffic membership messages sent by the computer system through the network interface to equipment located in the data network. For example, when the computer system sends an IGMPv3 Membership Report Message to a router or other equipment in the data network, the network interface reads information in the message and creates multicast state records for the purpose of filtering packets not wanted by the computer system. For example, in the network interface 10 of FIG. 8 the processing unit 50 detects in a data packet received from the computer system an IGMP multicast traffic membership message and, in addition to transmitting the packet with the IGMP message through its physical interface 40 to the data network 30, the processing unit 50 also extracts information from the IGMP message and stores it in a memory of the network interface. In one embodiment, the network interface 10 stores the extracted information in a multicast state record in one of the control status register 53 for each multicast group for which the network interface sends an IGMP membership message.
  • The network interface can detect that it is transmitting IGMP messages in several ways. The first way is by analyzing the value of the fields called “Protocol” in the header of the IPv4 packets and “Next Header” in the header of the IPv6 packets. In IGMP messages, the “Protocol” field of the header of the IPv4 packet transporting the IGMP message has a value of 2. In MLD messages, the “Next Header” field of the header of the IPv6 packet preceding the MLD message has a value of 58, because MLD messages are sent as a special type of ICMP message. When an ICMP message transports an MLD message, the “Message Type” field of the ICMP message has a value of 130.
  • In one embodiment of the present invention, to avoid examining all the IP packets that it transmits, the network interface 10 can analyze only IP packets in accordance with the destination address of each IP packet that it transmits. For example, in IGMPv3, the Membership Report Messages sent by the hosts have the destination address 224.0.0.22, which all the IGMPv3 routers listen on. Therefore, if the computer system only uses IGMPv3, it is sufficient for the network interface to analyze the IP packets whose destination address is 224.0.0.22. In a similar way, the analysis of MLDv2 packets that use IPv6 address FF02::16 can be limited.
  • Other versions of the IGMP protocol, such as IGMPv2 version, use different multicast destination addresses and the present invention can take them into consideration in order to detect IGMP messages. The “Internet Group Management Protocol, Version 2” is described in the RFC 2236 specifications, W. Fenner, November 2007, available at the URL www.ietf.org/rfc/rfc2236.txt.
  • When the network interface detects that it is transmitting a data packet containing an IGMP message, the network interface can extract the information contained in the IGMP message from the structure of the Membership Report Messages described previously in FIGS. 2 and 3. In the same way, the present invention can extract information from the IGMP messages corresponding to other versions of the IGMP, like IGMPv1 and IGMPv2.
  • FIG. 12 is a flow chart of one exemplary process using the IGMPv3, At step 1210 a network interface of the present invention receives from the computer system a layer 2 data packet to transmit to a data network through its PHY. At step 1220 the network interface determines if the layer 2 data packet contains an IP packet containing an IGMP Membership Report message. If the data packet doesn't contain an IGMP Membership Report message the process ends at step 1230.
  • If the data packet does contains an IGMP Membership Report message then in step 1240 the variable N is used to store the number of Group Records blocks of data included in the Membership Report message. This information is stored in the parameter called “Number of Group Records” in FIG. 2.
  • At step 1250 the process starts with the first Group Record. At step 1260 the information of each Group Record is processed using, for example, one or a combination of processes of Tables 2, 3, 4, 5 and/or 6 which are explained in more detail below. At steps 1270 and 1280 all of the Group Records of the Membership Report message are processed. When all the Group Records of a Membership Report message are processed according to one of the processes of Tables 2, 3, 4, 5 and/or 6 then the process ends at step 1230.
  • The discussion that follows relates to a process implemented in a network interface for deriving multicast packet filtering information and storing the information in a memory of the network interface. In one implementation, the network interface obtains the filtering information by reading the group records of an IGMPv3 membership report message and storing for each multicast group address the information in a multicast state record of the network interface. In one embodiment, upon receiving an IGMPv3 membership report message for a multicast group address, the multicast status record for the multicast group address is updated according to one of the processes of Table 2. Table 2 uses the same terminology explained before in the description of Table 1. In Table 2 the six IGMPv3 messages are indicated as IS_IN(B), IS_EX(B), ALLOW(B), BLOCK (B), TO_EX(B) and TO_IN(B). Using these messages, in one embodiment the network interface of the present invention creates and/or updates a set of multicast status records stored in the memory of the network interface. The format of the multicast state records stored in the network interface for a multicast group address may use one of the following formats depending on the filter-mode:
  • (multicast address; INCLUDE, {source list and timers})
  • (multicast address, group timer, EXCLUDE, {source list and timers})
  • In this embodiment the network interface uses source timers to manage the duration of each source in the multicast state record. In addition, when the filter-mode of a multicast state record is an EXCLUDE filter mode, the network interface may also use a group timer to change the filter mode from EXCLUDE to INCLUDE when the group timer expires.
  • According to one implementation, when no existing multicast state record exists for a multicast group in the memory of the network interface, the process considers the initial state (STATE 1) of the multicast state record to have an INCLUDE filter mode with an empty source list. In this way, a multicast state record for a multicast group may be created by the network interface using two types of messages: IS_IN (B) or IS_EX (B) in the manner depicted below:
  • STATE 1 MESSAGE STATE 2 ACTIONS
    1. INCLUDE ({ }) IS_IN (B) INCLUDE (B) T(B) = GMI
    2. INCLUDE ({ }) IS_EX (B) EXCLUDE T(B) = 0
    ({ }, B) GT = GMI
  • In the case where a multicast state record for a multicast group already exists in the memory of the network interface, the network interface updates the multicast state record according to Table 2. In the embodiment of Table 2, the first column represents the two possible initial states (STATE 1) of a multicast state record (INCLUDE(A) or EXCLUDE(X,Y)). As shown in Table 2, depending on the type of IGMPv3 membership report message received in the network interface (column 2) and the initial state (STATE 1) of the multicast state record (column 1), there are a total of twelve processes for updating the multicast state record as shown in columns 2 and 3. In addition, when a multicast state record for a multicast group has a filter mode INCLUDE with an empty list of sources, the multicast state record may be deleted from the memory of the network interface.
  • In this way, by creating, updating and removing multicast state records using information derived from the IGMP membership messages, a network interface of the present invention can store in its memory multicast state records that indicate the multicast traffic the computer system wants to receive and can filter the multicast traffic using, for example, the processes of FIG. 9, 10 or 11 as previously explained.
  • There may be instances where the computer system sends multicast traffic membership message from two or more different applications. For example, one application of the computer system may use an IPMulticastListen operation as previously described, while another application of the computer system uses an operation other than IPMulticastListen to send multicast traffic membership messages. In such instances the multicast state records stored in the memory of the network interface used for the purpose of filtering unwanted multicast packets may be updated according to one of the processes of Table 3.
  • By comparing the processes in row 1 of Tables 2 and 3, a difference in the operation of a network interface according to the embodiments of Table 2 and Table 3 becomes evident. As illustrated in Table 3, the network interface continues transmitting to the computer system multicast traffic from source A after receiving an IS_IN(B) type membership message, while in the embodiment of Table 2 source A is removed from the INCLUDE source list upon receiving an IS_IN(B) type membership message without waiting for the timer associated with source A to reach zero as is the case in the embodiment of Table 3.
  • In order to take advantage of the deterministic filtering behavior of a network interface that updates in its memory multicast state records according to the processes of Table 2 (and also Tables 3, 4, 5 and 6 described below), in one embodiment of the present invention the computer system merges the multicast traffic requests from the different applications and sends to the network interface a single multicast traffic membership message for each multicast group address.
  • Turning again to Table 2, in rows 2, 4, 7 and 11 the updated multicast state records of STATE 2 have an EXCLUDE filter mode with an empty “requested list”. The “requested list” is shown by the left part of the group of sources, EXCLUDE:
  • EXCLUDE (X, Y)=EXCLUDE ({Requested list}, {Exclude list})
  • Rows 2, 4, 7 and 11 of Table 2 are reproduced below where these empty groups are shown with the symbol “{ }”:
  • STATE 1 MESSAGE STATE 2 ACTIONS
    2. INCLUDE (A) IS_EX (B) EXCLUDE T(B) = 0
    ({ }, B) DEL(A − B)
    GT = GMI
    4. INCLUDE (X, Y) IS_EX (B) EXCLUDE T(A) = 0
    ({ }, A) OF(X + Y) − A
    GT = GMI
    7. INCLUDE (A) TO_EX (B) EXCLUDE T(B) = 0
    ({ }, B) OF (A − B)
    GT = GMI
    11. EXCLUDE (X, Y) TO_EX (A) EXCLUDE T(A) = 0
    ({ }, A) OF (X + Y) − A
    GT = GMI
  • In rows 9 and 10 of Table 2 the updated multicast status registers of STATE 2 have an EXCLUDE filter mode without an empty “requested list”. Rows 9 and 10 of Table 2 are reproduced below:
  • STATE 1 MESSAGE STATE 2 ACTIONS
    9. EXCLUDE (X, Y) ALLOW (A) EXCLUDE T(A) = GMI
    (X + A, Y − A)
    10. EXCLUDE (X, Y) BLOCK (A) EXCLUDE T(A) = 0
    (X − A, Y + A)
  • In row 9, the “requested list” has the (X+A) value and in row 10 has the (X−A) value. However, the reason the requested list in rows 9 and 10 do not have an empty list is because the initial state (STATE 1) of the multicast state records of both rows 9 and 10 have an initial EXCLUDE (X,Y) status that assumes that the requested list has an initial group of X sources which is not an empty group. However, in order for the network interface to create a multicast state record with filter mode EXCLUDE it is first necessary that the network interface receives one of the two IS_EX or TO_EX type multicast traffic membership messages, the operation of which is indicated in rows 2, 4, 7 and 11 above. As explained above, in all four cases, the requested list of the updated multicast state record of STATE 2 is an empty list. Therefore, the assumption that an initial state (STATE 1) of a multicast state record cannot have an empty “requested list” as represented in rows 9 and 10 of Table 2 is not true. Thus, the requested list of a multicast state record of STATE 1 of rows 9 and 10 of Table 2 always has an empty requested list because this EXCLUDE record was created with one of the four processes presented by rows 2, 4, 7, 11 of Table 2. As a result, rows 9 and 10 of Table 2 can be rewritten as follows:
  • STATE 1 MESSAGE STATE 2 ACTIONS
    9. EXCLUDE ({ }, Y) ALLOW (A) EXCLUDE T(A) = GMI
    ({ }, Y − A)
    10. EXCLUDE ({ }, Y) BLOCK (A) EXCLUDE T(A) = 0
    ({ }, Y + A)
  • Table 4 describes an operation of a network interface in which multicast state records do not have a requested list. As a result, when the group timer associated with the multicast state record reaches zero, the multicast state record is deleted or otherwise ignored by the network interface for the purpose of filtering multicast packets. Another advantage associated with the processes of Table 4 is that there is no need for the network interface to maintain or actualize source timers for EXCLUDE filter mode sources since the exclude list of sources have timer values equal to zero.
  • Turning again to Table 1, a router that uses IGMPv3 maintains timers to track for each network interface and multicast group time intervals related to when multicast traffic requests are received in the network interface and uses these timers to decide how to manage traffic requests that include different sources from the same multicast group. In a similar way, routers using the MLD protocol also maintain timers, Table 1 shows the operation of a router using IGMPv3 which illustrates the use of such timers.
  • The GMI parameter used in Table 1 as an initial value of the timers is a parameter called “Group Membership Interval” that uses a default value of 260 seconds. Below is a detailed explanation of the operation of this GMI parameter and how its value is calculated. The GMI value is calculated using three other parameters, also mentioned in section 8 of RFC 3376, using the following formula:

  • GMI=[(Robustness Variable)×(Query Interval)]+(Query Response Interval)
  • The default values of these three parameters in the IGMPv3 protocol are:
  • Robustness Variable=2
  • Query Interval=125 seconds
  • Query Response Interval=10 seconds
  • This way, the default value of the GMI parameter is
    GMI=(2×125)+10=250+10=260 seconds
  • Below is an explanation of these three parameters that establish the GMI value.
  • The Robustness Variable parameter allows the adjustment of the GMI value according to the expected number of lost IP packages. This parameter uses the value 2 as default and it is sent from the router to the computer systems with the QRV field of the “Query” messages that the router sends to the computer systems to ask them for the multicast traffic they wish to receive. QRV is an abbreviation of “Queries Robustness Variable”. Its use in Queries is explained in section 4.1.6 of RFC 3378.
  • In the computer systems, the Robustness Variable value received through the QRV parameter indicates the number of times that a computer system must re-transmit messages to the router when there is a change in the multicast traffic that this computer system wants to receive.
  • The “Query Interval” parameter is the time interval that passes between two “General Query” messages sent through the router to the computer systems. By default, it takes the value of 125 seconds. A General Query is a message sent from the router to the computer systems so that all of the computer systems respond with messages that detail the multicast traffic that each computer system wants to receive. This way, the IGMPv3 routers update all of the traffic information that the computer systems want to receive every 125 seconds by default.
  • The “Query Response Interval” parameter indicates the maximum time that the computer systems have to respond to a query from the IGMPv3 router. By default, it takes the second value and it is transmitted to the computer systems in the parameter called “Max Rasp Code” from the queries, as explained in section 4.1.1 of RFC 3376.
  • When a computer system receives a query, the computer system does not respond immediately to the router, instead it delays its response message during a random calculated time between 0 seconds and the “Query Response Interval”, for example 10 seconds. This way, if there are thousands of computer systems connected to one router, the router does not receive thousands responses at the same time; rather, it receives the responses from the thousands of computer systems in a 10-second time interval and this way the router has more time to process the responses.
  • In Table 1 the GMI value is used as a starting value in the timers in all of the cases in which the router receives a multicast traffic request that includes or may include a new multicast data source. This happens in all cases shown in Table 1 except in cases 6 and 10 that correspond to the BLOCK (B) and BLOCK (A) messages, respectively, and that notify the router to stop transmitting multicast traffic from sources B and A respectively from a specific multicast group. In other cases in Table 1 the GMI parameter is used as a starting value for the timers for the new data sources from which the computer systems want to receive multicast traffic from a specific multicast group.
  • Table 5 explains the operation of a network interface in accordance with another embodiment of the present invention. In the implementation of Table 5 the multicast state records maintained by the network interface do not have associated with them any source timers or group timers. The operation of Table 5 also does not involve the use of an EXCLUDE record having a “requested list”. If the filter mode of the multicast state record for a multicast group address is INCLUDE, the network interface transmits to the computer system the traffic from the INCLUDE source list. If the filter mode of the multicast state record for a multicast group address is EXCLUDE, the network interface transmits the traffic from all of the sources, except those from the EXCLUDE list,
  • As shown in Table 5, the deletion of the timers associated with the sources simplifies the network interface filtering process since it does not need to dedicate storage and processing resources to the timers. A network interface that filters multicast packets in accordance with the principles and processes of Table 5 does not need timers or the requested list, for two reasons. The first reason is that the network interface no longer needs to combine messages from different computer systems. Each message sent by the computer system to the router indicates the multicast traffic that the computer system wants to receive and there is no need to mix the traffic requested by different computer systems into one memory record, which is one of the functions for which timers and the requested list are used in IGMPv3. The second reason is that the formula that is used to calculate the GMI parameter ensures that the network interface will receive the multicast traffic information again wanted by the computer system before the timers that initialize with the GMI value reach zero since the GMI parameter will always be greater than or equal to the Query Interval parameter.
  • Again, the GMI value in IGMPv3 is calculated as follows:

  • GMI=[(Robustness Variable)×(Query interval)]+(Query Response Interval)
  • The default values of these three parameters were:
  • Robustness variable=2
  • Query Interval=125 seconds
  • Query Response Interval=10 seconds
  • This way, the default value of the GMI parameter is
  • GMI=(2×125)+10=250+10=260 seconds
  • Where Query Interval is the time that passes between two General Query messages sent by a router to the computer system and according to the above mentioned formula, the GMI cannot be less than the Query interval value.
  • In the most critical case, assigning a value of 1 to the Robustness Variable parameter and a value of zero to the Query Response Interval, the GMI value would be the same as the Query Interval value but never less. However, it is enough to maintain the default value of 10 seconds in the Query Response Interval parameter so that GMI is greater than the Query interval. For example, using the default values, there is no need to assign a 260-second timer to a multicast data source when the information of the sources is updated every 125 seconds, unless they lose the IP packages that carry this information. It is impossible for this timer to reach zero, with the initial value of 260 seconds, before the network interface receives the information from the computer system again at 125 seconds where the computer system notifies the router whether to receive the multicast traffic from each source or not. The timer is unnecessary when the IP packages are not lost,
  • Therefore, if the traffic sources from each multicast group requested by the computer system are stored, it is no longer necessary to assign timers to multicast data sources and this helps to greatly simplify the process since the network interface only needs to store the data sources that are requested from the computer system.
  • In another embodiment, the filtering operation of a network interface (as explained in Table 5) may be further simplified as shown in Table 6. In the embodiment of Table 6, the network interface may create a multicast state record upon receiving an IS_IN, IS_EX, TO_IN or TO_EX type multicast traffic membership message from the computer system without considering an initial state.
  • Since the upstream network interface of an IGMP Proxy functions like a host, in alternative embodiments of the present invention the upstream network interface of an IGMP proxy implements the one or more of the various processes previously described herein to filter multicast packets the IGMP Proxy does not wish to receive.
  • It should be appreciated that reference throughout this specification to “one embodiment” or “one implementation” or “an embodiment” or “an implementation”, or the like, means that a particular feature, structure or characteristic described in connection with the embodiment/implementation is included in at least one embodiment/implementation of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment(s)” or “an implementation” or “one implementation” or “alternative implementation(s)”, or the like, in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention.
  • Similarly, it should be appreciated that in the foregoing description of exemplary embodiment/implementations of the invention, various features of the invention are sometimes grouped together in a single embodiment/implementation, figure, table, or description thereof for the purpose of streamlining the disclosure aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim.
  • Moreover, although the various embodiments/implementations have been described in conjunction with the IGMP and MLD protocols and the various versions thereof, it is appreciated that the inventions disclosed herein are also applicable to future versions of these protocols and/or other multicast protocols that may be developed.
  • TABLE 1
    Table 1: Operating example of a prior art IGMPv3 router.
    STATE 1 MESSAGE STATE 2 ACTIONS
    1. INCLUDE (A) IS_IN (B) INCLUDE (A + B) T(B) = GMI
    2. INCLUDE (A) IS_EX (B) EXCLUDE (A*B, B − A) T(B − A) = 0
    DEL(A − B)
    GT = GMI
    3. EXCLUDE (X, Y) IS_IN (A) EXCLUDE (X + A, Y − A) T(A) = GMI
    4. EXCLUDE (X, Y) IS_EX (A) EXCLUDE (A − Y, Y*A) T(A − X − Y) = GMI
    DEL (X − A)
    DEL (Y − A)
    GT = GMI
    5. INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) = GMI
    6. INCLUDE (A) BLOCK (B) INCLUDE (A) SEND Q(G, A*B)
    7. INCLUDE (A) TO_EX (B) EXCLUDE (A*B, B − A) T(B − A) = 0
    DEL (A − B)
    SEND Q(G, A*B)
    GT = GMI
    8. INCLUDE (A) TO_IN (B) INCLUDE (A + B) T(B) = GMI
    SEND Q(G, A − B)
    9. EXCLUDE (X, Y) ALLOW (A) EXCLUDE (X + A, Y − A) T(A) = GMI
    10. EXCLUDE (X, Y) BLOCK (A) EXCLUDE (X + (A − Y), Y) T(A − X − Y) = GT
    SEND Q(G, A − Y)
    11. EXCLUDE (X, Y) TO_EX (A) EXCLUDE (A − Y, Y*A) T(A − X − Y) = GT
    DEL (X − A)
    DEL (Y − A)
    SEND Q(G, A − Y)
    GT = GMI
    12. EXCLUDE (X, Y) TO_IN (A) EXCLUDE (X + A, Y − A) T(A) = GMI
    SEND Q(G, X − A)
    SEND Q(G)
  • TABLE 2
    Table 2: Processes for updating in a network interface multicast
    status records according to an embodiment of the invention.
    STATE 1 MESSAGE STATE 2 ACTIONS
    1. INCLUDE (A) IS_IN (B) INCLUDE (B) T(B) = GMI
    DEL(A − B)
    2. INCLUDE (A) IS_EX (B) EXCLUDE ({ }, B) T(B) = 0
    DEL(A − B)
    GT = GMI
    3. EXCLUDE (X, Y) IS_IN (A) INCLUDE (A) T(A) = GMI
    DEL(X + Y) − A
    4. EXCLUDE (X, Y) IS_EX (A) EXCLUDE ({ }, A) T(A) = 0
    DEL(X + Y) − A
    GT = GMI
    5. INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) = GMI
    6. INCLUDE (A) BLOCK (B) INCLUDE (A − B) DEL(B)
    7. INCLUDE (A) TO_EX (B) EXCLUDE ({ }, B) T(B) = 0
    DEL (A − B)
    GT = GMI
    8. INCLUDE (A) TO_IN (B) INCLUDE (B) T(B) = GMI
    DEL(A − B)
    9. EXCLUDE (X, Y) ALLOW (A) EXCLUDE (X + A, Y − A) T(A) = GMI
    10. EXCLUDE (X, Y) BLOCK (A) EXCLUDE (X − A, Y + A) T(A) = 0
    11. EXCLUDE (X, Y) TO_EX (A) EXCLUDE ({ }, A) T(A) = 0
    DEL (X + Y) − A
    GT = GMI
    12. EXCLUDE (X, Y) TO_IN (A) INCLUDE (A) T(A) = GMI
    DEL (X + Y) − A
  • TABLE 3
    Table 3: Processes for updating in a network interface multicast
    status records according to an embodiment of the invention.
    STATE 1 MESSAGE STATE 2 ACTIONS
    1. INCLUDE (A) IS_IN (B) INCLUDE (A + B) T(B) = GMI
    2. INCLUDE (A) IS_EX (B) EXCLUDE (A*B, B − A) T(B − A) = 0
    DEL(A − B)
    GT = GMI
    3. EXCLUDE (X, Y) IS_IN (A) EXCLUDE (X + A, Y − A) T(A) = GMI
    4. EXCLUDE (X, Y) IS_EX (A) EXCLUDE (A − Y, Y*A) T(A − X − Y) = GMI
    DEL (X − A)
    DEL (Y − A)
    GT = GMI
    5. INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) = GMI
    6. INCLUDE (A) BLOCK (B) INCLUDE (A) SEND Q(G, A*B)
    7. INCLUDE (A) TO_EX (B) EXCLUDE (A*B, B − A) T(B − A) = 0
    DEL (A − B)
    GT = GMI
    8. INCLUDE (A) TO_IN (B) INCLUDE (A + B) T(B) = GMI
    9. EXCLUDE (X, Y) ALLOW (A) EXCLUDE (X + A, Y − A) T(A) = GMI
    10. EXCLUDE (X, Y) BLOCK (A) EXCLUDE (X + (A − Y), Y) T(A − X − Y) = GT
    11. EXCLUDE (X, Y) TO_EX (A) EXCLUDE (A − Y, Y*A) T(A − X − Y) = GT
    DEL (X − A)
    DEL (Y − A)
    GT = GMI
    12. EXCLUDE (X, Y) TO_IN (A) EXCLUDE (X + A, Y − A) T(A) = GMI
  • TABLE 4
    Table 4: Processes for updating in a network interface multicast
    status records according to an embodiment of the invention.
    STATE 1 MESSAGE STATE 2 ACTIONS
    1. INCLUDE (A) IS_IN (B) INCLUDE (B) T(B) = GMI
    DEL(A − B)
    2. INCLUDE (A) IS_EX (B) EXCLUDE (B) T(B) = 0
    DEL(A − B)
    GT = GMI
    3. EXCLUDE (Y) IS_IN (A) INCLUDE (A) T(A) = GMI
    DEL(Y) − A
    4. EXCLUDE (Y) IS_EX (A) EXCLUDE (A) T(A) = 0
    DEL(Y) − A
    GT = GMI
    5. INCLUDE (A) ALLOW (B) INCLUDE (A + B) T(B) = GMI
    6. INCLUDE (A) BLOCK (B) INCLUDE (A − B) DEL(B)
    7. INCLUDE (A) TO_EX (B) EXCLUDE (B) T(B) = 0
    DEL (A − B)
    GT = GMI
    8. INCLUDE (A) TO_IN (B) INCLUDE (B) T(B) = GMI
    DEL(A − B)
    9. EXCLUDE (Y) ALLOW (A) EXCLUDE (Y − A) DEL A
    10. EXCLUDE (Y) BLOCK (A) EXCLUDE (Y + A) T(A) = 0
    11. EXCLUDE (Y) TO_EX (A) EXCLUDE (A) T(A) = 0
    DEL (Y − A)
    GT = GMI
    12. EXCLUDE (Y) TO_IN (A) INCLUDE (A) T(A) = GMI
    DEL (Y − A)
  • TABLE 5
    Table 5: Processes for updating in a network interface multicast
    status records according to an embodiment of the invention.
    STATE 1 MESSAGE STATE 2 ACTIONS
    1. INCLUDE (A) IS_IN (B) INCLUDE (B) DEL(A − B)
    2. INCLUDE (A) IS_EX (B) EXCLUDE (B) DEL(A − B)
    3. EXCLUDE (Y) IS_IN (A) INCLUDE (A) DEL(Y − A)
    4. EXCLUDE (Y) IS_EX (A) EXCLUDE (A) DEL(Y − A)
    5. INCLUDE (A) ALLOW (B) INCLUDE (A + B)
    6. INCLUDE (A) BLOCK (B) INCLUDE (A − B) DEL(B)
    7. INCLUDE (A) TO_EX (B) EXCLUDE (B) DEL(A − B)
    8. INCLUDE (A) TO_IN (B) INCLUDE (B) DEL(A − B)
    9. EXCLUDE (Y) ALLOW (A) EXCLUDE (Y − A) DEL A
    10. EXCLUDE (Y) BLOCK (A) EXCLUDE (Y + A)
    11. EXCLUDE (Y) TO_EX (A) EXCLUDE (A) DEL (Y − A)
    12. EXCLUDE (Y) TO_IN (A) INCLUDE (A) DEL (Y − A)
  • TABLE 6
    Table 6: Processes for updating in a network interface multicast
    status records according to an embodiment of the invention.
    STATE 1 MESSAGE STATE 2 ACTIONS
    1. IS_IN (B) INCLUDE (B) DEL(ALL − B)
    2. IS_EX (B) EXCLUDE (B) DEL(ALL − B)
    3. INCLUDE (A) ALLOW (B) INCLUDE (A + B)
    4. INCLUDE (A) BLOCK (B) INCLUDE (A − B) DEL(B)
    5. EXCLUDE (Y) ALLOW (A) EXCLUDE (Y − A) DEL(A)
    6. EXCLUDE (Y) BLOCK (A) EXCLUDE (Y + A)
    7. TO_EX (B) EXCLUDE (B) DEL(ALL − B)
    8. TO_IN (B) INCLUDE (B) DEL(ALL − B)

Claims (22)

1. A method of filtering multicast packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system, the computer system having a first memory, the method comprising:
storing for the network interface and a multicast group address information in the first memory for the purpose of enabling or disabling transmission through the network interface to the bus of the computer system multicast packets sent from sources using the multicast group address, the information comprising first data that identifies the network interface, second data that identifies the multicast group address, third data that denotes an INCLUDE filter-mode or an EXCLUDE filter-mode, and fourth data that identifies a source-list of zero or more IP source addresses,
the network interface accessing the second, third and fourth data,
receiving in the network interface a multicast packet from the multicast data network,
determining in the network interface the multicast group address and IP source address of the multicast packet, determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the multicast group address and the IP source address of the multicast packet with the accessed second, third and fourth data; and
upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus.
2. A method according to claim 1, wherein accessing of the second, third and fourth data by the network interface is accomplished by the network interface reading the second, third and fourth data from the first memory.
3. A method according to claim 2, wherein the network interface uses direct memory access (DMA) to read the second, third and fourth data from the first memory.
4. A method according to claim 1, wherein accessing of the second, third and fourth data by the network interface is accomplished by the network interface copying the second, third and fourth data from the first memory into a second memory of the network interface.
5. A method according to claim 1, wherein accessing of the second, third and fourth data by the network interface is accomplished by the computer system sending from the first memory the second, third and fourth data to the network interface for storage in a second memory of the network interface.
6. A method according to claim 5, wherein a driver installed on the computer system sends from the first memory the second, third and fourth data to the network interface.
7. A method according to claim 1, wherein the storing of the information in the first memory is accomplished by an IPMulticastListen operation.
8. A method according to claim 1, wherein the accessing of the second, third and fourth data by the network interface is accomplished by an IPMulticastListen operation in the computer system that sends the second, third and fourth data to the network interface for storage in a second memory of the network interface.
9. A method according to claim 1, wherein the storing of the information in the first memory is accomplished by an IPMulticastListen operation writing the first, second, third and fourth data into the first memory and wherein the accessing of the second, third and fourth data by the network interface is accomplished by the IPMulticastListen operation sending the second, third and fourth data to the network interface for storage in a second memory of the network interface.
10. A method according to claim 9, wherein the IPMulticastListen operation writes the first, second, third and fourth data to the first memory and sends the second, third and fourth data to the network interface substantially simultaneously.
11. A method according to claim 1, wherein the first, second, third and fourth data are stored as a first state record in the first memory, the first state record having the form (interface, multicast-address, filter-mode, {source-list}).
12-85. (canceled)
86. A method of filtering multicast data packets in a network interface situated between and coupled to a multicast data network and a bus of a computer system, the method comprising:
the network interface storing information for the purpose of enabling or disabling the transmission of multicast packets from sources in the multicast data network through the network interface to the bus of the computer system, the information comprising first data that identifies a layer 2 multicast destination address and second data that identifies a layer 2 source address,
receiving in the network interface a multicast packet,
determining in the network interface the layer 2 destination address and the layer 2 source address of the multicast data packet,
determining in the network interface if transmission of the multicast packet from the network interface to the bus is to be enabled or disabled by comparing the layer 2 destination address and the layer 2 source address of the multicast packet with the first and second data; and
upon determining that the transmission of the multicast packet is to be enabled, the network interface transmitting the multicast packet to the bus, or upon determining that the transmission of the multicast packet is to be disabled, the network interface not transmitting the multicast packet to the bus.
87. A method according to claim 86, wherein the multicast data network is an Ethernet network and the layer 2 destination address is a destination MAC address and the layer 2 source address is a Source MAC address.
88. A method according to claim 86, wherein the network interface always transmits to the bus multicast packets having a first selected layer 2 destination address irregardless of the stored first and second data.
89. A method according to claim 88, wherein a user application in an operating system of the computer system is used to select the first selected layer 2 destination address.
90. A method according to claim 86, wherein the network interface never transmits to the bus multicast packets having a second selected layer 2 destination address irregardless of the stored first and second data.
91. A method according to claim 90, wherein a user application in an operating system of the computer system is used to select the second selected layer 2 destination address.
92. A method according to claim 88, wherein the network interface is configured to always transmits to the bus multicast packets having the first selected layer 2 destination address by use of the Simple Network Management Protocol (SNMP).
93. A method according to claim 90, wherein the network interface is configured to never transmits to the bus multicast packets having the second selected layer 2 destination address by use of the Simple Network Management Protocol (SNMP).
94. A method according to claim 86, wherein the filtering of multicast packets in the network interface is enabled or disabled by the use of a user application of an operating system of the computer system.
95-116. (canceled)
US13/450,278 2009-07-27 2012-04-18 Multicast Traffic Management in a Network Interface Abandoned US20120201246A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/450,278 US20120201246A1 (en) 2009-07-27 2012-04-18 Multicast Traffic Management in a Network Interface

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
ES200930512 2009-07-27
ESP200930512 2009-07-27
US12/641,199 US8189584B2 (en) 2009-07-27 2009-12-17 Multicast traffic management in a network interface
US13/450,278 US20120201246A1 (en) 2009-07-27 2012-04-18 Multicast Traffic Management in a Network Interface

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/641,199 Continuation US8189584B2 (en) 2009-07-27 2009-12-17 Multicast traffic management in a network interface

Publications (1)

Publication Number Publication Date
US20120201246A1 true US20120201246A1 (en) 2012-08-09

Family

ID=43497292

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/641,199 Expired - Fee Related US8189584B2 (en) 2009-07-27 2009-12-17 Multicast traffic management in a network interface
US13/450,278 Abandoned US20120201246A1 (en) 2009-07-27 2012-04-18 Multicast Traffic Management in a Network Interface

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/641,199 Expired - Fee Related US8189584B2 (en) 2009-07-27 2009-12-17 Multicast traffic management in a network interface

Country Status (2)

Country Link
US (2) US8189584B2 (en)
WO (1) WO2011012582A2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110058548A1 (en) * 2008-02-01 2011-03-10 Media Patents, S.L. Methods and apparatus for managing multicast traffic through a switch
US20120226822A1 (en) * 2011-03-02 2012-09-06 John Peter Norair Method and apparatus for addressing in a resource-constrained network
US8929961B2 (en) 2011-07-15 2015-01-06 Blackbird Technology Holdings, Inc. Protective case for adding wireless functionality to a handheld electronic device
US8976691B2 (en) 2010-10-06 2015-03-10 Blackbird Technology Holdings, Inc. Method and apparatus for adaptive searching of distributed datasets
US9031068B2 (en) 2008-02-01 2015-05-12 Media Patents, S.L. Methods and apparatus for managing multicast traffic through a switch
US9379808B2 (en) 2010-10-06 2016-06-28 Blackbird Technology Holdings, Inc. Method and apparatus for low-power, long-range networking
CN105791225A (en) * 2014-12-23 2016-07-20 北京神州泰岳信息安全技术有限公司 Bogus source address filtering configuration verifying method and system

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101766000A (en) 2007-06-26 2010-06-30 传媒专利有限公司 The method and apparatus of managing multicast group
US8184630B2 (en) 2007-10-15 2012-05-22 Media Patents, S.L. Method for managing multicast traffic in a data network and network equipment using said method
US8064449B2 (en) 2007-10-15 2011-11-22 Media Patents, S.L. Methods and apparatus for managing multicast traffic
WO2009056175A1 (en) 2007-10-30 2009-05-07 Soporte Multivendor S.L. Method for managing multicast traffic between routers communicating by means of a protocol integrating the pim protocol; and router and switch involved in said method
US9204293B2 (en) * 2008-02-21 2015-12-01 Telefonaktiebolaget L M Ericsson (Publ) Apparatuses, methods, and computer program products for data retention and lawful intercept for law enforcement agencies
WO2009109684A1 (en) 2008-03-05 2009-09-11 Media Patents, S. L. Method for monitoring or managing devices connected to a data network
US8189584B2 (en) 2009-07-27 2012-05-29 Media Patents, S. L. Multicast traffic management in a network interface
US8520676B2 (en) * 2010-11-09 2013-08-27 Cisco Technology, Inc. System and method for managing acknowledgement messages in a very large computer network
JP5636995B2 (en) * 2011-02-07 2014-12-10 セイコーエプソン株式会社 Network communication apparatus, method, and program
US8902891B2 (en) * 2011-07-27 2014-12-02 Hewlett-Packard Development Company, L.P. Method of managing broadcasts and multicasts by a network device
EP2592784B1 (en) * 2011-11-14 2013-09-18 Alcatel Lucent Apparatus, method and computer program for routing data packets
CN102437927B (en) * 2011-12-05 2015-05-13 中兴通讯股份有限公司 Management method of management plane of ethernet equipment and system thereof
US9135092B2 (en) 2012-02-02 2015-09-15 International Business Machines Corporation Multicast message filtering in virtual environments
US9800423B1 (en) 2012-05-14 2017-10-24 Crimson Corporation Determining the status of a node based on a distributed system
US8910282B2 (en) * 2012-09-04 2014-12-09 Jonathan Somers System and method for protecting devices on dynamically configured network
US9288136B2 (en) * 2012-09-21 2016-03-15 Cisco Technology, Inc. Method and apparatus for in-band channel change for multicast data
US9634940B2 (en) 2013-01-31 2017-04-25 Mellanox Technologies, Ltd. Adaptive routing using inter-switch notifications
US9647779B2 (en) 2013-04-22 2017-05-09 The Nielsen Company (Us), Llc Systems, methods, and apparatus to identify media devices
EP3393082B1 (en) * 2013-05-10 2020-09-16 Huawei Technologies Co., Ltd. Dynamic multi-destination addressing
US10298416B2 (en) * 2013-09-05 2019-05-21 Pismo Labs Technology Limited Method and system for converting a broadcast packet to a unicast packet at an access point
US9548960B2 (en) * 2013-10-06 2017-01-17 Mellanox Technologies Ltd. Simplified packet routing
US10038566B1 (en) * 2013-10-23 2018-07-31 Ivanti, Inc. Systems and methods for multicast message routing
US10885583B2 (en) * 2013-12-19 2021-01-05 Chicago Mercantile Exchange Inc. Deterministic and efficient message packet management
US9729473B2 (en) 2014-06-23 2017-08-08 Mellanox Technologies, Ltd. Network high availability using temporary re-routing
US9806994B2 (en) 2014-06-24 2017-10-31 Mellanox Technologies, Ltd. Routing via multiple paths with efficient traffic distribution
US9699067B2 (en) 2014-07-22 2017-07-04 Mellanox Technologies, Ltd. Dragonfly plus: communication over bipartite node groups connected by a mesh network
CN105306373B (en) * 2014-07-29 2019-03-15 杭州迪普科技股份有限公司 A kind of IGMP message processing method and device
US10834150B1 (en) 2014-12-26 2020-11-10 Ivanti, Inc. System and methods for self-organizing multicast
US9894005B2 (en) 2015-03-31 2018-02-13 Mellanox Technologies, Ltd. Adaptive routing controlled by source node
JP6556852B2 (en) * 2015-09-08 2019-08-07 株式会社東芝 Multiplexing processing system, multiplexing processing method and program
US9973435B2 (en) 2015-12-16 2018-05-15 Mellanox Technologies Tlv Ltd. Loopback-free adaptive routing
US10819621B2 (en) 2016-02-23 2020-10-27 Mellanox Technologies Tlv Ltd. Unicast forwarding of adaptive-routing notifications
US10178029B2 (en) 2016-05-11 2019-01-08 Mellanox Technologies Tlv Ltd. Forwarding of adaptive routing notifications
US10116526B2 (en) 2016-05-13 2018-10-30 Ivanti, Inc. Systems and methods for providing a self-electing service
US10200294B2 (en) 2016-12-22 2019-02-05 Mellanox Technologies Tlv Ltd. Adaptive routing based on flow-control credits
CN108271155A (en) * 2018-01-16 2018-07-10 无锡小算科技有限公司 A kind of method of integrated management WiFi terminal information
US10644995B2 (en) 2018-02-14 2020-05-05 Mellanox Technologies Tlv Ltd. Adaptive routing in a box
US11005724B1 (en) 2019-01-06 2021-05-11 Mellanox Technologies, Ltd. Network topology having minimal number of long connections among groups of network elements
JP7391116B2 (en) * 2019-06-28 2023-12-04 アナログ・ディヴァイシス・インターナショナル・アンリミテッド・カンパニー 1 port of low complexity Ethernet node (LEN)
US11575594B2 (en) 2020-09-10 2023-02-07 Mellanox Technologies, Ltd. Deadlock-free rerouting for resolving local link failures using detour paths
US11411911B2 (en) 2020-10-26 2022-08-09 Mellanox Technologies, Ltd. Routing across multiple subnetworks using address mapping
CN112838888A (en) * 2021-01-11 2021-05-25 深圳震有科技股份有限公司 Satellite encoding and decoding concurrent computation method and system based on 5G
US11870682B2 (en) * 2021-06-22 2024-01-09 Mellanox Technologies, Ltd. Deadlock-free local rerouting for handling multiple local link failures in hierarchical network topologies
US11765103B2 (en) 2021-12-01 2023-09-19 Mellanox Technologies, Ltd. Large-scale network with high port utilization

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099857A1 (en) * 1999-03-31 2002-07-25 Glen H. Lowe Method and system for filtering multicast packets in a peripheral component environment
US20050157741A1 (en) * 2000-10-16 2005-07-21 Ishan Wu Multicast system for forwarding desired multicast packets in a computer network
US20070183418A1 (en) * 2006-02-08 2007-08-09 Level 5 Networks, Inc. Method and apparatus for multicast packet reception
US20090125739A1 (en) * 2007-11-12 2009-05-14 Shohichi Satoh Apparatus, method, and computer program product for processing information
US20100192218A1 (en) * 2009-01-28 2010-07-29 Broadcom Corporation Method and system for packet filtering for local host-management controller pass-through communication via network controller

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4024505A (en) * 1974-11-18 1977-05-17 Compucorp Interface system for coupling an indeterminate number of peripheral devices to a central processing unit
US4149238A (en) * 1977-08-30 1979-04-10 Control Data Corporation Computer interface
US6370142B1 (en) 1995-07-12 2002-04-09 Nortel Networks Limited Method and apparatus for performing per-port IP multicast pruning
JP3123417B2 (en) * 1995-12-26 2001-01-09 日本ビクター株式会社 Communication method in small-scale network and control device and subordinate device applied to the communication method
US5778187A (en) 1996-05-09 1998-07-07 Netcast Communications Corp. Multicasting method and apparatus
US6331983B1 (en) 1997-05-06 2001-12-18 Enterasys Networks, Inc. Multicast switching
JP4080599B2 (en) 1998-06-17 2008-04-23 富士通株式会社 Communication control apparatus and communication control method applied to multicast-compatible LAN
US6219720B1 (en) * 1998-08-10 2001-04-17 Micron Technology, Inc. Core logic unit with internal register for peripheral status
US6721318B1 (en) 1999-07-29 2004-04-13 Nortel Networks Limited Extending router functionality to report static group membership
US6914907B1 (en) 1999-08-05 2005-07-05 Alcatel Canada Inc. Method and apparatus for providing multi-cast transmissions using a distributed router
US6785294B1 (en) 1999-12-30 2004-08-31 Intel Corporation Methods and apparatuses for supporting IGMP and GMRP concurrently
KR100512755B1 (en) 2000-04-14 2005-09-07 엔티티 도꼬모 인코퍼레이티드 Multicast service providing system, multicast service providing method, information distributor, radio terminal, and radio base station
WO2002003614A2 (en) 2000-06-29 2002-01-10 Cachestream Corporation Virtual multicasting
US7283521B1 (en) * 2000-10-26 2007-10-16 Nortel Networks Limited System and method for reporting communication related information in a packet mode communication
US7068598B1 (en) * 2001-02-15 2006-06-27 Lucent Technologies Inc. IP packet access gateway
US6977891B1 (en) 2001-06-30 2005-12-20 Extreme Networks, Inc. Method and system for multicast traffic reduction
US20030067917A1 (en) 2001-10-04 2003-04-10 Adc Broadband Access Systems, Inc. IGMP proxy
US7355970B2 (en) 2001-10-05 2008-04-08 Broadcom Corporation Method and apparatus for enabling access on a network switch
CN100592731C (en) * 2001-12-07 2010-02-24 艾利森电话股份有限公司 Lawful interception of end-to-end encrypted data traffic
DE60108404T2 (en) 2001-12-10 2005-12-22 Alcatel Apparatus and method for aligning the multiple data traffic in an Ethernet MAN
US7272652B1 (en) 2002-04-30 2007-09-18 Alcatel Lucent Facilitating accelerated processing of internet group management protocol messages
US7346053B1 (en) 2002-05-07 2008-03-18 Cisco Technology, Inc. Methods and apparatus for supporting IP multicast for a mobile router
US6741595B2 (en) * 2002-06-11 2004-05-25 Netrake Corporation Device for enabling trap and trace of internet protocol communications
US7236465B2 (en) 2002-06-13 2007-06-26 International Business Machines Corporation System and method for gathering multicast content receiver data
EP1516449B1 (en) 2002-06-21 2016-06-22 BRITISH TELECOMMUNICATIONS public limited company Timer-based feedback in multicast communication
US7936752B2 (en) * 2002-07-31 2011-05-03 Cisco Technology, Inc. Source specific multicast group to source mapping
ES2229073T3 (en) * 2002-08-08 2005-04-16 Alcatel LEGAL INTERCEPTATION OF VOIP CALLS ON IP-BASED NETWORKS.
US7228356B2 (en) * 2002-12-12 2007-06-05 Alcatel Canada Inc. IGMP expedited leave triggered by MAC address
US7233987B2 (en) 2002-12-20 2007-06-19 Alcatel Canada Inc. System and method for converting requests between different multicast protocols in a communication network
JP4077330B2 (en) * 2003-02-06 2008-04-16 富士通株式会社 Data generator
US7797459B1 (en) * 2003-02-11 2010-09-14 At&T Intellectual Property Ii, L.P. Access independent common architecture for real-time communications services for networking environments
US20040165709A1 (en) * 2003-02-24 2004-08-26 Pence Robert Leslie Stealth interception of calls within a VoIP network
US20040219911A1 (en) * 2003-03-25 2004-11-04 Kouchri Farrokh Mohammadzadeh Virtual communications assistance for law enforcement act (CALEA) device
JP4066867B2 (en) 2003-03-31 2008-03-26 富士通株式会社 Mobile node, packet relay device, and packet transfer method
US7447909B2 (en) * 2003-06-05 2008-11-04 Nortel Networks Limited Method and system for lawful interception of packet switched network services
US7532622B2 (en) 2003-06-16 2009-05-12 National University Of Singapore Methods, devices and software for merging multicast groups in a packet switched network
US7450551B2 (en) 2003-07-14 2008-11-11 Samsung Electronics Co., Ltd. Multicast transmission method in GEM mode in Gigabit-capable passive optical network and method of processing frame
JP2005065045A (en) 2003-08-18 2005-03-10 Kddi Corp L2 switching device and control method therefor
US7412726B1 (en) * 2003-12-08 2008-08-12 Advanced Micro Devices, Inc. Method and apparatus for out of order writing of status fields for receive IPsec processing
US20050175156A1 (en) * 2004-02-05 2005-08-11 Afshar Siroos K. Calea in a VPN environment (formerly called restricted anti-calea
US7587757B2 (en) * 2004-02-11 2009-09-08 Texas Instruments Incorporated Surveillance implementation in managed VOP networks
JP4382528B2 (en) 2004-02-27 2009-12-16 富士通株式会社 Multicast network device, multicast network system, and multicast method
US7502474B2 (en) * 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
DE602004011485T2 (en) 2004-05-28 2009-01-22 Alcatel Lucent Broadband telecommunications system and method used therein for reducing the latency of a channel zapping from a multimedia receiver
WO2006001803A1 (en) 2004-06-14 2006-01-05 Alloptic, Inc. Distributed igmp processing
US8688834B2 (en) 2004-07-09 2014-04-01 Toshiba America Research, Inc. Dynamic host configuration and network access authentication
US20060018255A1 (en) * 2004-07-26 2006-01-26 Avaya Technology Corp. Defining a static path through a communications network to provide wiretap law compliance
US8819213B2 (en) * 2004-08-20 2014-08-26 Extreme Networks, Inc. System, method and apparatus for traffic mirror setup, service and security in communication networks
DE102004040482B4 (en) * 2004-08-20 2006-05-24 Siemens Ag Device for user data acquisition of multimedia connections in a packet network
DE102004040454B4 (en) * 2004-08-20 2006-05-18 Siemens Ag Device for user data acquisition of multimedia connections in a packet network
JP2006101471A (en) 2004-09-06 2006-04-13 Hitachi Communication Technologies Ltd Multicast redundant path router, multicast redundant method
US8619774B2 (en) 2004-10-26 2013-12-31 Cisco Technology, Inc. Method and apparatus for providing multicast messages within a virtual private network across a data communication network
US7464267B2 (en) * 2004-11-01 2008-12-09 Innomedia Pte Ltd. System and method for secure transmission of RTP packets
WO2006053027A2 (en) 2004-11-09 2006-05-18 Nexthop Technologies, Inc. Systems and methods for multicast routing on packet switched networks
US7783880B2 (en) * 2004-11-12 2010-08-24 Microsoft Corporation Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management
US8014390B2 (en) * 2004-11-30 2011-09-06 Broadcom Corporation Policy based routing using a fast filter processor
US7489684B2 (en) 2004-12-08 2009-02-10 Alcatel Lucent Access network architecture for multicasting using xDSL and IGMP
US7835276B2 (en) 2004-12-30 2010-11-16 Cisco Technology, Inc. Admission control mechanism for multicast receivers
US8194640B2 (en) * 2004-12-31 2012-06-05 Genband Us Llc Voice over IP (VoIP) network infrastructure components and method
US20060159091A1 (en) 2005-01-19 2006-07-20 Arjen Boers Active multicast information protocol
CN100396055C (en) 2005-02-04 2008-06-18 华为技术有限公司 Multicasting source filtering treatment method
US7577137B2 (en) 2005-02-15 2009-08-18 Telefonaktiebolage L M Ericsson (Publ) Optimized multicast distribution within a hybrid PPPoE/IPoE broadband access network
US7724739B2 (en) 2005-03-18 2010-05-25 Cisco Technology, Inc. Source specific multicast layer 2 networking device and method
US7646739B2 (en) 2005-04-05 2010-01-12 Cisco Technology, Inc. Multicast routing over unidirectional links
US8089964B2 (en) 2005-04-05 2012-01-03 Cisco Technology, Inc. Transporting multicast over MPLS backbone using virtual interfaces to perform reverse-path forwarding checks
US7477654B2 (en) 2005-04-14 2009-01-13 Alcatel Lucent Method and system for managing access to multicast groups
US7710983B2 (en) 2005-04-21 2010-05-04 Cisco Technology, Inc. Method and apparatus for determining information associated with a particular multicast channel in a multicast network
US7599289B2 (en) * 2005-05-13 2009-10-06 Lockheed Martin Corporation Electronic communication control
US8675653B2 (en) * 2005-05-17 2014-03-18 Alcatel Lucent Co-existing static and dynamic IP multicast
US20070041558A1 (en) * 2005-05-17 2007-02-22 Parayil Shiby S Subscriber status determination and call content interception
CN1881913A (en) 2005-06-15 2006-12-20 上海贝尔阿尔卡特股份有限公司 User interface multicast managing method in network access equipment and its apparatus
US8503446B2 (en) * 2005-08-29 2013-08-06 Alcatel Lucent Multicast host authorization tracking, and accounting
US8689317B2 (en) * 2005-12-19 2014-04-01 Level 3 Communications, Llc Providing SIP signaling data for third party surveillance
US20070168555A1 (en) 2006-01-18 2007-07-19 Dorenbosch Jheroen P Efficient multicast call setup method and system
US7839850B2 (en) 2006-01-30 2010-11-23 Juniper Networks, Inc. Forming equal cost multipath multicast distribution structures
US7512146B1 (en) * 2006-01-31 2009-03-31 Garrettcom, Inc. Method and apparatus for layer 2 multicast traffic management
US7684547B2 (en) * 2006-02-07 2010-03-23 International Business Machines Corporation Wiretapping VoIP calls
CN101438256B (en) 2006-03-07 2011-12-21 索尼株式会社 Information processing device, information communication system, information processing method
US7693146B2 (en) * 2006-03-10 2010-04-06 Cisco Technology, Inc. Method and system for filtering traffic from unauthorized sources in a multicast network
US7599393B1 (en) * 2006-03-24 2009-10-06 Sierra Wireless, Inc. Architecture for emulating an ethernet network interface card
CN101079728B (en) * 2006-05-26 2010-11-10 华为技术有限公司 A method, server and system fro optimizing group management protocol
US8934609B2 (en) * 2006-06-21 2015-01-13 Genband Us Llc Method and apparatus for identifying and monitoring VoIP media plane security keys for service provider lawful intercept use
US8050273B2 (en) * 2006-06-22 2011-11-01 Alcatel Lucent Lawful interception in IP networks
US8249068B2 (en) 2006-10-20 2012-08-21 Alcatel Lucent Method and apparatus for establishing multicast groups
US7672325B2 (en) * 2006-11-28 2010-03-02 Alcatel Lucent Method and apparatus for improved IGMP group membership messaging
ATE531178T1 (en) * 2007-02-09 2011-11-15 Nokia Siemens Networks Gmbh METHOD, APPARATUS AND COMPUTER PROGRAM PRODUCT FOR DYNAMIC BANDWIDTH MANAGEMENT IN AN IP NETWORK
US8724533B2 (en) 2007-03-07 2014-05-13 Cisco Technology, Inc. Multicast support by mobile routers in a mobile ad hoc network
US20100046516A1 (en) 2007-06-26 2010-02-25 Media Patents, S.L. Methods and Devices for Managing Multicast Traffic
CN101766000A (en) * 2007-06-26 2010-06-30 传媒专利有限公司 The method and apparatus of managing multicast group
US7813287B2 (en) 2007-08-29 2010-10-12 Alcatel Lucent Fast TV channel changing in IPTV network
US8064449B2 (en) * 2007-10-15 2011-11-22 Media Patents, S.L. Methods and apparatus for managing multicast traffic
US8346912B2 (en) * 2007-10-15 2013-01-01 Dell Products, Lp System and method of emulating a network controller within an information handling system
US8184630B2 (en) * 2007-10-15 2012-05-22 Media Patents, S.L. Method for managing multicast traffic in a data network and network equipment using said method
WO2009056175A1 (en) * 2007-10-30 2009-05-07 Soporte Multivendor S.L. Method for managing multicast traffic between routers communicating by means of a protocol integrating the pim protocol; and router and switch involved in said method
WO2009065526A1 (en) 2007-11-23 2009-05-28 Media Patents S.L. A process for the on-line distribution of audiovisual contents with advertisements, advertisement management system, digital rights management system and audiovisual content player provided with said systems
US8649309B2 (en) * 2008-01-24 2014-02-11 Samsung Electronics Co., Ltd. Apparatus and method for creating data path for broadcasting service in cellular network
US9031068B2 (en) * 2008-02-01 2015-05-12 Media Patents, S.L. Methods and apparatus for managing multicast traffic through a switch
WO2009095041A1 (en) * 2008-02-01 2009-08-06 Soporte Multivendor S.L. Method for managing multicast traffic through a switch operating in the layer 2 of the osi model, and router and switch involved in said method
WO2009109684A1 (en) * 2008-03-05 2009-09-11 Media Patents, S. L. Method for monitoring or managing devices connected to a data network
US8189584B2 (en) 2009-07-27 2012-05-29 Media Patents, S. L. Multicast traffic management in a network interface

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099857A1 (en) * 1999-03-31 2002-07-25 Glen H. Lowe Method and system for filtering multicast packets in a peripheral component environment
US20050157741A1 (en) * 2000-10-16 2005-07-21 Ishan Wu Multicast system for forwarding desired multicast packets in a computer network
US20070183418A1 (en) * 2006-02-08 2007-08-09 Level 5 Networks, Inc. Method and apparatus for multicast packet reception
US20090125739A1 (en) * 2007-11-12 2009-05-14 Shohichi Satoh Apparatus, method, and computer program product for processing information
US20100192218A1 (en) * 2009-01-28 2010-07-29 Broadcom Corporation Method and system for packet filtering for local host-management controller pass-through communication via network controller

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
B. Cain, "RFC 3376: Internet group management protocol, version 3." (2002). *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110058548A1 (en) * 2008-02-01 2011-03-10 Media Patents, S.L. Methods and apparatus for managing multicast traffic through a switch
US8565140B2 (en) * 2008-02-01 2013-10-22 Media Patents, S.L. Methods and apparatus for managing multicast traffic through a switch
US9031068B2 (en) 2008-02-01 2015-05-12 Media Patents, S.L. Methods and apparatus for managing multicast traffic through a switch
US9379808B2 (en) 2010-10-06 2016-06-28 Blackbird Technology Holdings, Inc. Method and apparatus for low-power, long-range networking
US9357425B2 (en) 2010-10-06 2016-05-31 Blackbird Technology Holdings, Inc. Method and apparatus for adaptive searching of distributed datasets
US8976691B2 (en) 2010-10-06 2015-03-10 Blackbird Technology Holdings, Inc. Method and apparatus for adaptive searching of distributed datasets
US9154392B2 (en) 2011-03-02 2015-10-06 Blackbird Technology Holdings, Inc. Method and apparatus for power autoscaling in a resource-constrained network
US9166894B2 (en) 2011-03-02 2015-10-20 Blackbird Technology Holdings, Inc. Method and apparatus for rapid group synchronization
US9325634B2 (en) 2011-03-02 2016-04-26 Blackbird Technology Holdings, Inc. Method and apparatus for adaptive traffic management in a resource-constrained network
US20120226822A1 (en) * 2011-03-02 2012-09-06 John Peter Norair Method and apparatus for addressing in a resource-constrained network
US9414342B2 (en) 2011-03-02 2016-08-09 Blackbird Technology Holdings, Inc. Method and apparatus for query-based congestion control
US9497715B2 (en) * 2011-03-02 2016-11-15 Blackbird Technology Holdings, Inc. Method and apparatus for addressing in a resource-constrained network
US8929961B2 (en) 2011-07-15 2015-01-06 Blackbird Technology Holdings, Inc. Protective case for adding wireless functionality to a handheld electronic device
US9425847B2 (en) 2011-07-15 2016-08-23 Blackbird Technology Holdings, Inc. Protective case for adding wireless functionality to a handheld electronic device
CN105791225A (en) * 2014-12-23 2016-07-20 北京神州泰岳信息安全技术有限公司 Bogus source address filtering configuration verifying method and system

Also Published As

Publication number Publication date
US20110019673A1 (en) 2011-01-27
WO2011012582A2 (en) 2011-02-03
US8189584B2 (en) 2012-05-29
WO2011012582A3 (en) 2011-03-31

Similar Documents

Publication Publication Date Title
US8189584B2 (en) Multicast traffic management in a network interface
US20110149960A1 (en) Method and apparatus for filtering multicast packets
US9031068B2 (en) Methods and apparatus for managing multicast traffic through a switch
US8565140B2 (en) Methods and apparatus for managing multicast traffic through a switch
US8817816B2 (en) Multicast support for dual stack-lite and internet protocol version six rapid deployment on internet protocol version four infrastructures
US8416778B2 (en) Method for managing multicast traffic in a data network and network equipment using said method
US9031069B2 (en) Method, system, and apparatus for extranet networking of multicast virtual private network
US8320374B2 (en) Method and apparatus for improved multicast routing
US20060198394A1 (en) Network system and gateway device
EP2753029B1 (en) Message learning method, device and system
US7869394B1 (en) Limiting data packet forwarding to trusted ports
JPWO2006093299A1 (en) Tunneling device, tunnel frame sorting method used therefor, and program therefor
US11196631B2 (en) Multi-unicast discovery of devices on a network
JP2001156835A (en) Method and device for compressing destination address of multicast message
US9219688B2 (en) Method and system for network load balancing
JP2023511150A (en) Multicast packet detection method, network device and system
CN108667735A (en) A kind of retransmission method and device of multicast packet
US10298481B1 (en) Method and apparatus for testing VLAN
EP4184820A1 (en) Ipv6 message transmission method, device and system
JP5495175B2 (en) Information transfer system
TWI388154B (en) Method of processing multicast datagram for a router
EP2667298B1 (en) Information processing device and image forming apparatus
KR20050073947A (en) Apparatus and method for processing multicast packet in distributed router

Legal Events

Date Code Title Description
AS Assignment

Owner name: MEDIA PATENTS, S.L., SPAIN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FERNANDEZ GUTIERREZ, ALVARO;REEL/FRAME:028068/0587

Effective date: 20091216

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION