From Nsnam
Jump to: navigation, search

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Return to GSoC 2014 Accepted Projects page.

Project overview

  • Project:Multicast IPv6 traffic support
  • Student: Krishna Teja Yadavalli
  • Mentors: Tommaso Pecorella,Tom Henderson
  • Abstract: As of now NS-3 is not supporting MLDv2 or PIM-SM. As a result of this we are setting up the routes manually. In real life nodes join and leave different multicast groups quite frequently and they also mention the sources in which they are interested in. By using this information there is lot of scope for optimization of the multicast traffic. The goal of this project is to make NS-3 support to Multicast more realistic by implementing MLDv2 protocol.
  • Future Plans:Implementing Multicast Routing protocols like PIM-SM ,PIM-DM which would create a solid Multicasting platform to develop and test ideas in IPV6 Multicast domain.
  • Code:
  • About me: I am currently an undergraduate student in Computer Science at International Institute of Information Technology, Hyderabad. My research area is in improving the efficiency of Multicast.

MLDv2 Overview

  • The purpose of MLD is to enable each multicast router to learn, for each of its directly attached links, which multicast addresses and which sources have interested listeners on that link.
  • It is an asymmetric protocol has two parts router part ,host part.

Socket and Interfaces

  • Applications that run on host mention the multicast groups they are interested in along with the sources they are interested or not interested in on a interface.
  • The interface record is derived from the socket records.
- Example : socket1(Interface1,Include,a,b) + socket2 (Interface1,Include,b,c)  => Interface1(Include,a,b,c) where a,b,c are source addresses.


There are two types of exchanges between host and router.

  • Exchange One  : General Query
    • Router periodically sends General Queries to learn multicast address listener information from an attached link.
    • Nodes respond to these queries by reporting their per-interface Multicast Address Listening state, through Current State Report messages.
  • Exchange Two  : State Change
    • If the listening state of a node changes, the node immediately reports these changes through a State Change Report message
    • The router must query for other listeners of the multicast address or multicast source address if the changes are to delete a multicast address or source of a multicast address them through Multicast Address Query or Source Specific Query respectively.

Block Diagram


Listeners Logic

Multicast Address Listeners.png

Querier Logic

Router Part.png


  • A platform to develop Multicast routing protocols.
  • Documentation describing MLDv2 protocol and this platform.
  • Example scripts which will demonstrate the usage of MLDv2.
  • Test cases for above implementations.


  • 19th May - 3rd June - Creating report,query packets.
  • 3rd June - 17th June - Modifying sockets and Creating Call backs to MLDv2Functions.
  • 17th June - 1st July - Implementation of General Queries and testing the same
  • Submit Mid Term evaluation on 23rd June
    • Implementation of Group Join Queries
    • Processing of General Queries.
  • 1st July - 15th July - Handling address specific Queries and responses and testing the same.
  • 15th July- 1st August - Handling source specific Queries and testing the same.
  • 1st August- 18th August - Clean up code,Fix the bugs if any,Integration ,Documentation .
  • 19th August - Submit Final Evaluation.

Weekly progress

Week 1 (May 19, 2014 - May 23, 2014)

  • Implemented Report message.
  • Example for generating Report messages.

Week 2 (May 26, 2014 - May 30, 2014)

  • Implemented Query messages.
  • Example for generating Report messages.

Week 3 (June 1, 2014 - June 7, 2014)

  • Planning extension for socket API.
  • Planning router part of Mldv2 protocol.
  • Did not go as planned router query partially implemented it will be covered up in week 4.

Week 4 (June 9, 2014 - June 13, 2014)

  • Periodic generation of General Query at router.
  • Report by the nodes to these General Queries.
  • Cleaned the code.

Week 5 (June 16, 2014 - June 20, 2014)

  • Finalized the socket API for Multicast Group join and leaves and implemented them.
  • Basic working model of Mldv2 protocol.
  • Improved the Wiki page.

Mid-term code review

  • This is my midterm code review for the GSoC 2014 project, MulticastIPv6.* The code to be reviewed can be found in Rietveld issue 103570043.
  • The code contains implementation of
    • State change Reports.
    • Router Periodic General Queries.
    • Current State Reports.
  • Protocol
- mldv2.h
  • Implemented headers
- icmpv6-header.h -
  • Created Call Backs
- icmpv6-l4-protocol.h
  • Extended Socket API
- ipv6-raw-socket-impl.h
- socket.h
  • Test
- As of now I am using ping6 application for testing socket calls
  and mldv2 protocol so I created a copy of ping6 named as sample.
- For testing the working there is an example
- waf --run Mldv2-example which generates a pcap which contains
   * State change Reports.
   * Router Periodic General Queries.
   * Node replying with current state reports

Week 6 (June 23, 2014 - June 27, 2014)

  • Improved Wiki Page.
  • Completed state change reports.
  • Cleaned some parts of the code.

Week 7 (June 30, 2014 - July 4, 2014)

  • Completed half of the router processing.
  • Current State report processing is done.
  • Cleaned some parts of the code.

Week 8 (July 7, 2014 - July 11, 2014)

  • Completed filter state changes handling.
  • Late join handling
  • Most of the source address handling.

Final review