2023-12-26 14:26:03 +00:00
|
|
|
[![Build Status](https://cicd.apps.glenux.net/api/badges/glenux/igmpgen/status.svg)](https://cicd.apps.glenux.net/glenux/igmpgen)
|
|
|
|
![License LGPL3.0-or-later](https://img.shields.io/badge/license-LGPL3.0--or--later-blue.svg)
|
|
|
|
[![Donate on patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://patreon.com/glenux)
|
|
|
|
|
2018-07-15 18:27:59 +00:00
|
|
|
# IGMP Packet Generator
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
2023-12-26 14:17:55 +00:00
|
|
|
The IGMP Packet Generator (`igmpgen`) is a specialized tool designed for
|
2023-12-28 08:42:14 +00:00
|
|
|
generating various types of [Internet Group Management Protocol
|
|
|
|
(IGMP)](https://en.wikipedia.org/wiki/Internet_Group_Management_Protocol)
|
|
|
|
packets.
|
2023-12-25 19:27:59 +00:00
|
|
|
|
|
|
|
This tool is particularly useful for network administrators, developers, and
|
|
|
|
researchers involved in testing and analyzing multicast network protocols.
|
2018-07-15 18:27:59 +00:00
|
|
|
|
|
|
|
## Features
|
|
|
|
|
2023-12-25 19:27:59 +00:00
|
|
|
* **Support for Multiple IGMP Versions**: Compatible with IGMPv1, IGMPv2, and
|
|
|
|
IGMPv3.
|
|
|
|
* **Variety of IGMP Packets**: Capable of generating Query, Report, Leave, and
|
|
|
|
other IGMP packet types.
|
|
|
|
* **Customizable Packet Parameters**: Allows setting of source/destination IPs,
|
|
|
|
ports, and multicast groups.
|
2023-12-24 19:27:59 +00:00
|
|
|
* **Router Alert Option**: Implements the Router Alert IP option (IPOPT_RA).
|
2018-07-15 18:27:59 +00:00
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
* Unix-like operating system.
|
|
|
|
* `libnet` library
|
|
|
|
* CMake for building the project.
|
2018-07-15 18:27:59 +00:00
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
For debian/ubuntu, simply type:
|
2018-07-15 18:27:59 +00:00
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
```shell-session
|
2023-12-26 14:17:55 +00:00
|
|
|
sudo apt-get install cmake libnet1-dev gcc rpm
|
2023-12-24 19:27:59 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Install
|
|
|
|
|
|
|
|
### Clone the Repository (if applicable):
|
2018-07-15 18:27:59 +00:00
|
|
|
|
|
|
|
```bash
|
2023-12-26 14:17:55 +00:00
|
|
|
git clone https://code.apps.glenux.net/glenux/igmpgen
|
2023-12-24 19:27:59 +00:00
|
|
|
cd igmpgen
|
2018-07-15 18:27:59 +00:00
|
|
|
```
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
### Build with CMake:
|
2018-07-15 18:27:59 +00:00
|
|
|
|
2023-12-26 14:17:55 +00:00
|
|
|
Run CMake and build the project:
|
2018-07-15 18:27:59 +00:00
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
```shell-session
|
2023-12-26 14:17:55 +00:00
|
|
|
cmake -S . -B _build
|
|
|
|
cmake --build _build
|
2023-12-24 19:27:59 +00:00
|
|
|
```
|
2018-07-15 18:27:59 +00:00
|
|
|
|
2023-12-26 14:17:55 +00:00
|
|
|
### Install binaries
|
|
|
|
|
|
|
|
Either with your favorite packaging system
|
2023-12-24 19:27:59 +00:00
|
|
|
|
|
|
|
```shell-session
|
2023-12-26 14:17:55 +00:00
|
|
|
cpack
|
2023-12-24 19:27:59 +00:00
|
|
|
```
|
|
|
|
|
2023-12-26 14:17:55 +00:00
|
|
|
Or directly
|
2023-12-24 19:27:59 +00:00
|
|
|
|
|
|
|
```shell-session
|
2023-12-26 14:17:55 +00:00
|
|
|
cmake --install _build
|
2018-07-15 18:27:59 +00:00
|
|
|
```
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
After building, you can run `igmpgen` with the necessary command-line arguments:
|
|
|
|
|
2018-07-15 18:27:59 +00:00
|
|
|
### Command-Line Arguments
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
```bash
|
|
|
|
IGMP packet generator
|
|
|
|
|
|
|
|
Usage: ./igmpgen [options]
|
|
|
|
|
|
|
|
Options:
|
|
|
|
-i <interface> Specify the network interface (e.g., eth0)
|
|
|
|
-t <type> Specify the IGMP packet type and version (e.g., 1.query)
|
|
|
|
-g <group> Specify the IGMP group (e.g., 224.0.0.1)
|
|
|
|
-s <source> Specify the source IP and port (e.g., 192.168.1.1:1234)
|
|
|
|
-d <destination> Specify the destination IP and port (e.g., 224.0.0.2:5678)
|
|
|
|
-n <number> Specify delay between packets in seconds (optional)
|
|
|
|
|
|
|
|
Available IGMP packet types:
|
|
|
|
- 1.query
|
|
|
|
- 1.report
|
|
|
|
- 1.dvmrp
|
|
|
|
- 2.query
|
|
|
|
- 2.report
|
|
|
|
- 2.leave
|
|
|
|
- 3.report
|
|
|
|
```
|
2018-07-15 18:27:59 +00:00
|
|
|
|
|
|
|
### Example
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
Generate an IGMPv2 Membership Report for group `224.0.0.1` on `eth0`:
|
2018-07-15 18:27:59 +00:00
|
|
|
|
|
|
|
```bash
|
2023-12-24 19:27:59 +00:00
|
|
|
./igmpgen -i eth0 -g 224.0.0.1 -t 2.report
|
2018-07-15 18:27:59 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
Contributions to `igmpgen` are welcome. Please feel free to report issues,
|
|
|
|
suggest features, or submit pull requests.
|
2018-07-15 18:27:59 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
2023-12-24 19:27:59 +00:00
|
|
|
This project is licensed under the LGPL 3.0-or-later.
|
|
|
|
|
2023-12-26 14:17:55 +00:00
|
|
|
## Related projects
|
|
|
|
|
2023-12-28 08:42:14 +00:00
|
|
|
* [IGMPproxy (Official Version)](https://github.com/pali/igmpproxy): The
|
|
|
|
official version of the IGMPproxy tool.
|
|
|
|
* [IGMPproxy with IGMPv3 & FreeBSD
|
|
|
|
support](https://github.com/ViToni/igmpproxy/): A version of IGMPproxy with
|
|
|
|
added support for IGMPv3 and FreeBSD.
|
|
|
|
* [pierf packet generator and analyzer](https://pierf.sourceforge.net/): A
|
|
|
|
packet injection tool.
|
|
|
|
* [Send IGMP](https://sendigmp.com/#examples): A simple command-line tool to
|
|
|
|
send IGMP packets
|
|
|
|
* [Ostatino](https://github.com/pstavirs/ostinato): Traffic generator for
|
|
|
|
network engineers.
|
|
|
|
* [individuwill/mcast](https://github.com/individuwill/mcast)
|
|
|
|
* [troglobit/mcjoin](https://github.com/troglobit/mcjoin)
|
|
|
|
* [troglobit/mrdisc](https://github.com/troglobit/mrdisc)
|
|
|
|
* [troglobit/mrouted](https://github.com/troglobit/mrouted)
|
|
|
|
* [scapy](https://scapy.net/)
|
|
|
|
* <https://itecnote.com/tecnote/python-send-igmp-packets-with-scapy/>
|
|
|
|
* <https://gist.github.com/sdir/6e44c14f6fd29149689b2f9fe37ba6b9>
|
|
|
|
|
|
|
|
* <https://github.com/Abaco-Systems/WinPcap-igmp-join>
|
|
|
|
|
|
|
|
## References
|
|
|
|
|
|
|
|
* https://www.ietf.org/proceedings/50/I-D/idmr-snoop-00.txt
|
|
|
|
* https://www.rfc-editor.org/rfc/rfc4541
|
|
|
|
* [Wikipedia: IGMP Snooping](https://en.wikipedia.org/wiki/IGMP_snooping)
|
|
|
|
* [Wikipedia: Multicast Listener Discovery](https://en.wikipedia.org/wiki/Multicast_Listener_Discovery)
|
2023-12-26 14:17:55 +00:00
|
|
|
|