Terminology

IGMPInternet Group Management Protocol
CPECustomer Premise Equipment
ONOSOpen Network Operation System
OFOpenFlow
vOLTVirtualized Optical Line Terminal
ONTOptical Network Terminal
SD-OLTSoftware Defined Optical Line Terminal
  1. IGMP Overview and feature list

    1. Support Igmp join

IGMP Proxy app receives and decodes igmp report messega from hosts. if the host ask to join a group, Igmpproxy will add flow rule for the multicast traffic to olt .And if it is the first host join into the group, Igmpproxy will forward the message to olt uplink port.

If it is not the first host that joins into the multicast group, Igmpproxy will add bucket into the flow rule, but will not forward to uplink port.

Support Igmp leave

IGMP Proxy app receives and decodes igmp report message from host, if the host ask to leave a group, igmpproxy will raise a query to the group and wait for hosts’ response. If any host not response for the query, Igmpproxy will remove the host from this group.

Support Igmp fast leave

IGMP Proxy app receives and decodes igmp report message from host, if the host ask to leave a group, Igmpproxy will remove bucket from the group’s flow rule.

If it is the latest host that existing in the group, Igmpproxy will forward the message to olt uplink port.

Support Igmp period query and keep alive

Igmpproxy will periodical sent query message to each existing group, If any host not response for the query, Igmpproxy will remove the host from this group.

  1. Software Architecture

    1. IGMP Deployment Architecture

      cid:image001.png@01D2036E.8855DCA0

    2. ONOS APP Architecture

App layer:

  • Igmpproxy: Nokia developed app for igmp (use proxy mode).

  • IgmpSnoop: ONOS official app for igmp (use snoop mode).

  • Cordmcast: ONOS official app , as the adapter between onos core service and specific igmp implements

Onos Core Layer:

  • Flow objective: for specific device and behavior, to find a driver for adaption

  • Netconfig Service: Used for our REST interface

  • Packet Service: To receive , decode, encode and dispatch openflow messages from/to devices

  • Device Service: To communicate with device via connection point

Driver Layer:

  • Olt pipeline: driver for our OLT device.

    1. Igmp Message Flow

Comment:

For step 9, for performance purpose, is not really removing the rules. Just remove the output port from the group rule.

IGMP Subsystem Structure

Apps and Sub-systems:

Igmpproxy App

  1. Host state machine(interact with multicast source), refer to RFC 2236
  • To join group, send add sink to Cordmcast

  • To leave group, send remove sink to Cordmcast

  1. source host management(interact with hosts)
  • accept and process Igmp join/leave packet form hosts

  • Find first join host and last leave host, inform the state machine

  1. Igmp packet encode/decode and dispatch
  • To decode v2/v3 igmp packet, and dispatch them into different subsystems

  • For v3 join packet, divided it with different group addresses

  1. Rest interface (use onos network configuration service) subsystems, for user configuration

    Cordmcast App:

    Receive add sink/ remove sink message, translate into forward and next primitives, and send those primitives to olt pipeline

    Olt pipeline:

    Receive forward/next primitives, translate to openflow rules, send group add/remove, flow add/remove messages to OLT

  2. Subsystem Design

    1. host State Machine

      Index: mvlan + group ip + devid , we use this index to indicate a host. And for each host, we implement a independent state machine, see the chart below, refer to RFC 2236

Event description:

  1. join/leave comes from packet-in message , received from the uni port

  2. query comes from packet-in message m received from the uplink port

Action description:

  1. send report/leave means send those IGMP packet to the uplink port of device;

  2. Timer:

    for join event, the timer is [0, Unsolicited Report Interval], Unsolicited Report Interval is an user configured value.

    for query event,the timer is [0, Max Resp Time], Max Resp Time is a field in query packet.

Implementation:

  1. For general query,retrieve all hosts which belong to the group, and send query message.

    For specific query, only send the message to the specific host

  2. If last member leave the group, the state machine will be removed , and a remove sink message will be sent to Cordmcast. For performance purpose, ONOS will not really remove the rules. Just remove the output port from the group rule.

  3. South host management

    1. Description

South host management divided into 2 sub-module:Southbound Hosts Management and Northbound Reporter,as the chart below:

Southbound Hosts Management

Index: mvlan + group ip + devid + port

Action:

  1. When receive join/leave message to a new index, forward message to Northbound Reporter;

    Filter messages with same index

  2. When receive the leave message and the fast leave switch is turned off, send query to all hosts which belong to the same group. It is because maybe some hosts join into same group.

  3. Aging: we will send query message to each hosts in a fixed period, if no response, we will remove the host.

    1. Northbound Reporter

Index:mvlan + groupip + devid

Action:

  1. Receive join leave messages from Southbound Hosts Management.

  2. If it is the first host that join into a specific group, send add sink to Cordmcast;

    If it is not the first host to join , just increase the group’s host counter;

    If it is the last host leave from the group, send remove sink to Cordmcast;

    If it is not the last host to leave, just decrease the group’s host counter.

    1. IGMP packet encode/decode and dispatch

Action:

  1. Receive igmp message from device, decode it;

  2. If it is IGMP v3 reporter and include multiple groups, divided it into some packet with single group;

  3. Dispatch the packet to different subsystems.

The flow chart:

  1. External Interface

    1. NBI REST-API

Parameter Unsolicited TimeOut, Max Respose times, Keep Alive Interval, Last Query Interval, Last Query Count, Fast Leave flags can be configured through REST-API provided by ONOS

Please refer to REST-API for ONOS APP (3HH-12876-0211-DDZZA) for details

  1. SBI Openflow

    1. Lift Rule:
typeCall situationMatch fieldMatch valueAction fieldAction value
Add flowigmp app activateEthernetIPV4Output portcontroller
ProtocolIGMP
port{all activated port }
Delete flowigmp app deactivate, or port state change to disableEthernetIPV4
ProtocolIGMP
port{All activated port if app goes down, or the port which change state to disable}N/A

This flow rule is used for instructing olt to transmit the received igmp packets to the controller. Once the igmp app is initialized , the device information is registered in ONOS, and the port is enabled, Igmp app will send this flow rule to the device for each of its activated port automatically.

The flow rules would be removed while igmpproxy app deactivated.

Multicast Rule:

typeCall situationMatch fieldMatch valueAction fieldAction value
Group addReceive igmp joinWith group id as the keyN/AOutput port{host port}
Group mod (delete port)Receive igmp leaveWith group id as the keyN/AN/AN/A
Add flowReceive igmp joinEthernetIPV4GroupGroup id
In Port{uplink port}
IPDst{group address}
Vlan Idmcast vlan

This flow rule is used for instructing olt to forward the igmp traffic from uplink port to the ONU port. Once the igmp join packet was received and processed succesfully , Igmp app will send this flow rule (a group add message and a flow add message) to the port which report the igmp join;

If host request to leave a group, a group mod message will send to olt, and the out port of group rule would be removed;

If host re-send join message to ONOS, a group mod message will send to olt, which to add the out port again.

IPTV STB/Source packet interface

Packet TypesDescription
Membership Query MessageMembership Queries are sent by IP multicast routers to query the multicast reception state of neighboring interfaces
Version 3 Membership Report MessageVersion 3 Membership Reports are sent by IP systems to report (to neighboring routers) the current multicast reception state, or changes in the multicast reception state, of their interfaces.

For more Igmp packet detail, please refer to RFC 3376