Modifications for IPv6 Multicast Address Allocation
Assume ROOT = agtk-cvs
FILES:
- ROOT/ag-media/vic-build
- ROOT/ag-media/rat-build
Both scripts used to configure and build the tools without IPv6 support. Parameter --enable_ipv6 is now passed to ./configure, as well as any previous build is now cleaned (not sure this is the right thing to do). The files are called by ROOT/services/node/AudioService.build.py, ROOT/services/node/VideoProducerService.build.py, ROOT/services/node/VideoConsumerService.build.py, which in turn get called by ROOT/AccessGrid/packaging/BuidRat.py, ROOT/AccessGrid/packaging/BuidVic.py (called by ROOT/AccessGrid/tools/CvsSetup.py).
- possibly: ROOT/ag-media/make-ag-rpm (for rat)
- possibly: ROOT/ag-media/make-ag-vic-rpm
Haven't performed any changes on these files yet (don't know how they are used in AGTk), but they follow the same logic as the files above.
- ROOT/AccessGrid/bin/VenueManagement.py
Most of the session announcement is configured in here, so various changes have been made.
Mainly, we modified the GUI (wxPython) so that we can now select an IPv6/IPv4 RadioButton under the panel: Venue -> Modify -> Addressing. Text controls to enter an IPv6 address have also been added. Note that with the current GUI one can possibly announce a session with mixed v4/v6 addresses for the media tools, i.e.: vic on 224.2.2.2/2424 and rat on ff1e::4/2468. There is no strict error control on the format of the v6 addresses. This could be added at a later stage.
Then, we modified the dynamic address allocation (Configuration) panel to allow users to dynamically allocate IPv6 multicast addresses. It calls MulticastAddressAllocator() (See next)
- ROOT/AccessGrid/AccessGrid/MulticastAddressAllocator.py
This file requires changes in packing and unpacking (in python terms) IPv6 addresses. It also implements the "unicast prefix-based multicast" address allocation scheme, as described in RFC3306, RFC3307, and extends the class with the method AllocateAddress6(). It also reads details of multiple IPv6-enabled network interfaces, if available, and allows users to choose one (Linux only for the moment).
- ROOT/AccessGrid/AccessGrid/Venue.py
The method AllocateMulticastLocation() around line 926 needs to be aware of selection of dynamic IPv6 address from the Venue Management client. Currently this is not part of a Venue's persistent info and an attribute may need to be added to the VenueServer class to hold this info. Have e-mailed ag-tech@anl.