[go: up one dir, main page]

Skip to content
/ pygmp Public

A Python Library for Multicast Routing in Linux

License

Notifications You must be signed in to change notification settings

jackhart/pygmp

Repository files navigation

pygmp - A Python Library for Multicast Routing in Linux

A Python library that supports interacting with the Linux kernel for multicast routing.

Limitations / Roadmap

This is a work in progress. Currently, only IPv4 multicast routing is supported. I've also only tested with IGMPv2 on an Ubuntu 22.04.2 LTS (v6.0.0-1013-oem) host.

There are no daemon implementations yet. The only implemented program is an interactive interface.

Quick Start

Pip Install

Coming Soon

Interactive Multicast Router Shell

Run an interactive terminal for interacting with multicast constructs in the kernel.

sudo python3 pygmp interactive

Developer Quick Start

Install the task utility. This utility is used to standardize build and test processes.

Start the interactive shell. (This will automatically setup the development environment.)

task run

Roadmap

  • CI/CD / semantic versioning / create a pip registry
  • MLD/IPv6 support
  • smcrouted daemon implementation
  • pimd daemon implementation
  • Dockerized daemon example
  • expand testing to other distros

Host Configuration Gotchas

Most new distibutions set the IGMP version to 3. To test with IGMPv2, you'll need to set it to 2 and reboot. Also, make sure mc_forwarding is enabled. Change the values in /etc/sysctl.conf. Then, reboot.

net.ipv4.ip_forward = 1
net.ipv4.conf.all.force_igmp_version = 2
net.ipv4.conf.default.force_igmp_version = 2
net.ipv4.conf.all.mc_forwarding = 1
net.ipv4.conf.default.mc_forwarding = 1

Relevant RFCs

RFCs often refer to, build upon, or obsolete, previous RFCs. This can lead to a complex web of interrelated documents. This is my collection of RFCs relevant to multicast routing.

IGMP

MLD

IGMPv3/MLDv2

TODO

About

A Python Library for Multicast Routing in Linux

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published