activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jessie Berlin (JIRA)" <>
Subject [jira] Updated: (AMQ-2636) Add support for setting the Differentiated Services or Type Of Service on outgoing TCP/IP packets to support Quality Of Service
Date Wed, 07 Apr 2010 23:45:08 GMT


Jessie Berlin updated AMQ-2636:

    Attachment: fixECNBits.patch

This patch fixes an issue that was discovered by running our automated wireshark test scripts
where I was assuming the wrong two bits for the ECN bits, and so only multiples of 4 were
working on machines which use 0 for the default ECN.

(tested against trunk)

The code for the automated wireshark test scripts can currently be found here:

Is there some way we can either include the automated wireshark test scripts somewhere in
the ActiveMQ trunk (maybe as an example, since it involves a Producer that communicates with
the ActiveMQ broker) or put it somewhere on the ActiveMQ website so that future uses can benefit
from it?

> 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:
>             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 (, or Type of Service value, on outgoing TCP/IP
packets by specifying a diffServ or typeOfService Tcp Transport Option (
> 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 (
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 (
> 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 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 to be true. We found that this has precedent in ActiveMQ (,
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

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

View raw message