[AG-TECH] Static Unicast Ports - diffs

Todd Zimmerman toddz at sfu.ca
Fri Jun 8 15:03:44 CDT 2007


The diffs...
/usr/bin/Bridge (AG3)
/usr/bin/BridgeServer.py (AG2)

Todd Zimmerman wrote:
> Within WestGrid, we have a need to have static unicast ports for venues so that firewall
> administrators can limit the ports required to be opened for AG usage.  Assigning static multicast
> ports is easy; however, assigning static unicast ports is not.
> 
> I thought I'd post to the list the small hacks I've implemented to achieve static unicast ports on
> our Venueserver/Bridgeservers.
> 
> For background, WestGrid utilizes static multicast addresses from the Netera Alliance glop space
> (233.59.192.x) which we have authorization to use.  We also use a port numbering convention that
> utilizes ports in the range of 60500 - 60800 for these multicast addresses/venues.  For static
> unicast ports, we have use a 'multicast port - 10000' convention - so our unicast range is 50500 -
> 50800.
> 
> For AG3 bridging, we still want to offer the bridge to users not using the WestGrid Venueserver - so
> I start the bridge giving a range of usable ports outside of our statically used range
> (55000-57000).  I then added a check in /usr/bin/Bridge to statically assign WestGrid venues while
> leaving non-WestGrid venues to be assigned within the range assigned above.
> 
> Disclaimer - I am not a doctor nor do I play one on TV.  I'm not sure if there are any side effects
> to using this hack - so don't blame me if something breaks ;-)  To use this hack you'll need access
> to a multicast glop space and you need to make sure your static port range will not collide with
> your non-static port range since all checks are bypassed.
> 
> This is the code I added at line 59 of /usr/bin/Bridge - just after the 'uaddr =
> SystemConfig.instance().GetHostname()' line:
> 
> 
> uport = None
> if mnl["host"].startswith( "233.59.192" ):
>    uport = mnl["port"] - 10000;
> 
> Then changed lines 64/65 from:
> 
> retBridge = self.bridgeFactory.CreateBridge(id=mnl["id"], maddr=mnl["host"], mport=mnl["port"],
> mttl=mnl["ttl"], uaddr=uaddr,uport=none)
> 
> to
> 
> retBridge = self.bridgeFactory.CreateBridge(id=mnl["id"], maddr=mnl["host"], mport=mnl["port"],
> mttl=mnl["ttl"], uaddr=uaddr,uport=uport)
> 
> 
> For AG2.4, the hack was easier since we were only bridging our own venueserer - so we didn't have to
> worry about setting up bridges outside of our range.  I added the following at line 560 (just after
> 'uport = 0' in __AddBridge:
> 
> uport = streamDesc.location.port - 10000;
> 
> I then commented out the proceeding lines 561-571 (the port allocation part) since we no longer need
> to allocate ports.
> 
> I've attached diffs for anyone interested.  These hacks are just that - hacks and I wouldn't
> recommend using them; however I know other people are in the same circumstance as WestGrid and need
> to limit port usage for security administrators.  If anyone has any thoughts ideas on how best to
> implement these in a better/more practical and configurable way I'd be interested to hear (I suppose
> we could add a static bridge section to the bridge config file  etc.) and perhaps I could look at
> coding something up for inclusion in the main source.
> 
> Cheers,
> 
> Todd
> 
> 
> 
> 
> 
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Bridge.diff
Type: text/x-patch
Size: 424 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/ag-tech/attachments/20070608/c9ed2411/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: BridgeServer.py.diff
Type: text/x-patch
Size: 126 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/ag-tech/attachments/20070608/c9ed2411/attachment-0001.bin>


More information about the ag-tech mailing list