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
> 
> 
> 
> 
> 
> 
> 

58a59,63
>         uport = None
>         log.info ("Checking Multicast Address")
>         if mnl["host"].startswith( "233.59.192" ):
>              uport = mnl["port"] - 10000;    
>              log.info("WestGrid Venue! uport %s" %(str(uport)))
60c65
<                     mport=mnl["port"], mttl=mnl["ttl"], uaddr=uaddr,uport=None)
---
>                     mport=mnl["port"], mttl=mnl["ttl"], uaddr=uaddr,uport=uport)
560c560,561
<         
---
>         uport = streamDesc.location.port - 10000;
>         """
570c571
<     
---
>         """

Reply via email to