sreeds82 / amt Goto Github PK
View Code? Open in Web Editor NEWThis project forked from grumpyoldtroll/amt
Fork of the AMT protocol reference implementation (RFC 7450) from http://www.utdallas.edu/~ksarac/amt/
License: Other
This project forked from grumpyoldtroll/amt
Fork of the AMT protocol reference implementation (RFC 7450) from http://www.utdallas.edu/~ksarac/amt/
License: Other
$Id: README,v 1.1.1.8 2007/05/09 20:40:42 sachin Exp $ Copyright (c) 2004-2005, Juniper Networks, Inc. All rights reserved. Automatic Multicast without Explicit Tunnels (AMT) AMT provides a way for a host, proxy, or router on a non-multicast capable network to join multicast groups on a remote multicast capable network through a relay on that network. AMT is the product of the MBONED Working Group of the Operations and Management Area of the IETF. More information about the MBONED Working group can be found at http://www.ietf.org/html.charters/mboned-charter.html. The lastest version of the internet-draft describing this protocol at the time of this release are provided in this distribution. Later versions of the draft or an RFC of this protocol may be found at the IETF location above. This distribution provides AMT relay and AMT gateway implementations. It was developed using FreeBSD 4 and FreeBSD 5. Porting to other similar operating systems should require only minor modifications. The gateway in particular uses the tun(4) pseudo-interface driver which may require modifications for porting. The relay uses some low-level socket options that may require changes for use on other similar operating systems. Funding for this work was provided by Juniper Networks, Inc. More information about Juniper Networks, Inc. can be found at http://www.juniper.net. Formatting applied with: clang-format -style="{BasedOnStyle: mozilla, ColumnLimit: 76, IndentWidth: 4, BinPackParameters: false, AlignAfterOpenBracket: DontAlign, ContinuationIndentWidth: 6}" Currently open issues: 1. Deal with this error correctly when the relay shuts down amtgwd: recv relay communication trouble: Connection refused 2. fprintf -> syslog 3. Carefully go through daemonize code and close file descriptors. 4. periodic IGMP queries/timeout through some stateful firewalls 5. SIGINT needs to dump stats 6. XMLRPC interface for management 7. get mtu and allocate packet buffer based on mtu size 8. check for memory leaks (I know there is at least one). To build: ~~~ apt-get install \ autoconf \ libtool-bin \ make \ cmake \ build-essential ./configure make ~~~ To build the docker container: ~~~ docker build -t amtgw:latest -f gateway/docker/Dockerfile . ~~~ 1. v4 data inside v4 tunnel (using mcrx-check from https://github.com/GrumpyOldTroll/libmcrx): ~~~ # point source of (S,G) to docker: # (NB: use the group's route instead for some apps like VLC) sudo ip route add 23.212.185.0/24 dev docker0 docker container run -d --rm --name amtgw --privileged amtgw:latest -d 4 -t 4 $(python3 ~/libmcrx/driad.py -f 4 23.212.185.6) sleep 1 libmcrx/mcrx-check -g 232.1.1.1 -p 5001 -s 23.212.185.6 -c 0 -d 0 -v ~~~ 2-4: For any use of v6 traffic you first need to enable v6 in docker: ~~~ # enable IPv6 using a /64 in a ULA prefix (RFC4193) cat <<EOF | sudo tee /etc/docker/daemon.json { "ipv6": true, "fixed-cidr-v6": "$(python3 -c 'import os; import ipaddress; print(ipaddress.ip_network("fd%s:%s%s:%s%s::/64"%tuple("%02x"%b for b in os.urandom(5))))')" } EOF sudo systemctl reload docker ~~~ 2. v6 data inside v4 tunnel: ~~~ # point source of (S,G) to docker: sudo ip -6 route add 2600:14e0::/48 dev docker0 docker container run -d --rm --name amtgw --privileged \ grumpyoldtroll/amtgw -d 6 $(python3 ~/libmcrx/driad.py -f 4 2600:14e0::6) sleep 1 libmcrx/mcrx-check -g ff3e::8000:1 -p 5001 -s 2600:14e0::6 -c 0 -d 0 -v ~~~ 3. v6 data inside v6 tunnel: (breadcrumbs for the v6 nat: https://medium.com/@skleeschulte/how-to-enable-ipv6-for-docker-containers-on-ubuntu-18-04-c68394a219a2) ~~~ # set up v6 nat for the ULA: DKRNET=$(grep fixed-cidr-v6 /etc/docker/daemon.json | awk '{print $2;}' | sed -e 's/"\([^"]*\)"/\1/') sudo ip6tables -t nat -A POSTROUTING -s ${DKRNET} ! -o docker0 -j MASQUERADE # point source of (S,G) to docker: sudo ip -6 route add 2600:14e0::/48 dev docker0 docker container run -d --rm --name amtgw --privileged \ grumpyoldtroll/amtgw -d 6 -t 6 $(python3 ~/libmcrx/driad.py -f 6 2600:14e0::6) sleep 1 libmcrx/mcrx-check -g ff3e::8000:1 -p 5001 -s 2600:14e0::6 -c 0 -d 0 -v ~~~ 4. v4 data inside v6 tunnel: ~~~ # set up v6 nat for the ULA: DKRNET=$(grep fixed-cidr-v6 /etc/docker/daemon.json | awk '{print $2;}' | sed -e 's/"\([^"]*\)"/\1/') sudo ip6tables -t nat -A POSTROUTING -s ${DKRNET} ! -o docker0 -j MASQUERADE # point source of (S,G) to docker: sudo ip route add 23.212.185.0/24 dev docker0 docker container run -d --rm --name amtgw --privileged amtgw:latest -d 4 -t 6 $(python3 ~/libmcrx/driad.py -f 6 23.212.185.6) sleep 1 libmcrx/mcrx-check -g 232.1.1.1 -p 5001 -s 23.212.185.6 -c 0 -d 0 -v ~~~
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.