[ 
https://issues.apache.org/activemq/browse/AMQ-2636?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jessie Berlin updated AMQ-2636:
-------------------------------

    Attachment: addToSSupportAndRefactoring.patch

> Add support for setting the Differentiated Services or Type Of Service on 
> outgoing TCP/IP packets to support Quality Of Service
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2636
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2636
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Transport
>    Affects Versions: 5.3.0
>         Environment: Affects all OSes, proposed fix has only been tested on 
> Ubuntu 9.10
>            Reporter: Jessie Berlin
>            Assignee: Rob Davies
>            Priority: Minor
>             Fix For: 5.4.0
>
>         Attachments: addDiffServToTcpTransport.patch, 
> addToSSupportAndRefactoring.patch
>
>
> It should be possible to specify the desired Differentiated Services class, 
> as outlined in RFC 2475 (http://tools.ietf.org/html/rfc2475), or Type of 
> Service value, on outgoing TCP/IP packets by specifying a diffServ or 
> typeOfService Tcp Transport Option 
> (http://activemq.apache.org/tcp-transport-reference.html).
> e.g. tcp://somehost:61616?trace=false&soTimeout=60000&diffServ=AF21
> e.g. tcp://somehost:61616?trace=false&soTimeout=60000&typeOfService=3
> I am part of a student group 
> (http://maljub01.svnrepository.com/comp190/trac.cgi/wiki) at Tufts University 
> that is implementing this functionality in ActiveMQ for potential use by MIT 
> Lincoln Labs as part of the NextGen Network Enabled Weather Program 
> (https://wiki.ucar.edu/display/NNEWD/The+NNEW+Wiki)..
> We would like to contribute our changes back to the ActiveMQ trunk, if 
> possible. Attached is a initial patch against the 5.3.0 release version, 
> which implements setting the Differentiated Services class via a Tcp 
> Transport Option on the connection URI.
> Some notes about this approach:
> The basic underlying mechanism for actually setting the bits in the packet 
> headers is the java.net.Socket.setTrafficClass method. This was
> the most elegant implementation out of all the possible implementations that 
> we came up with.
> In order for setTrafficClass to work in JDK 6, it is necessary to set the 
> System property java.net.preferIPv4Stack to be true. We found that this has 
> precedent in ActiveMQ 
> (http://activemq.apache.org/multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.html),
>  but we are hoping that  this issue will be resolved in JDK 7, so that we can 
> use the IPv6 stack when possible.
> In addition, the current implementation only sets the specified 
> Differentiated Services bits on the outgoing packets, and has no control over 
> the Acknowledgments sent back for those packets. We have yet to find an 
> elegant and cross-platform way to have the ActiveMQ Broker find out what the 
> Differentiated Services bits on the incoming packets are directly in Java, 
> although we are considering approaches that would involve calling a shell 
> script from TcpTransportServer that would utilize IPtables.
> We would like to know if might be interested in accepting this work into the 
> ActiveMQ trunk. The sooner you let us know one way or another, the better, as 
> this is a single-semester project.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to