|
| Message Precedence | DSCP | Port | Connection Type |
|---|---|---|---|
| Flash | CS3 (Flash) | 5003 | Permanent |
| Immediate | CS2 (Immediate) | 5002 | Permanent |
| Priority | CS1 (Priority) | 5001 | Permanent |
| Routine | CS0 (Routine) | 5000 | On Demand |
In order to support differentiated services, a key capability of Isode's M-Switch X.400 product is the ability to configure multiple independent connections between a pair of MTAs. Associated with each of these connections is a schedule and other control options. There are four items shown in the table above which are relevant to this setup:
This sophisticated configuration at the X.400 application level leads to a very simple effect at the IP level. When a message is sent, the IP packets associated with that message have an appropriate DSCP value. Once set up, the messaging application was simply used for load generation. There was no requirement to change configuration, and no need for tuning or parameter changing.
A dummy load generator sent UDP packets from JFC Naples to ACT (i.e., over the same path as the messaging). The packet rate delivered 1 MBit/second which was higher than the shaped 512 kbps network bandwidth limit, so the dummy load could saturate the network. This provided an "aggressive" load, as it remained constant when packets are dropped. The DSCP value of the dummy load was selectively configured at lower, competing and higher QoS labels to generate background traffic and the impact was monitored.
Differentiated Services control was applied at a single local router
(SAR). It would have been too complex to attempt to analyze interactions
between different policies at different routers. Changes to router configuration
were key to providing effective DSCP based control. Policy choices are
specific to router product, although the functions noted here are quite
generic. EF traffic uses priority queuing and all other use a form of
Class Based Weighted Fair queuing. The routers used were CISCO 2811
running Advanced IP services - IOS version 12.4.
The router configuration is based on the following parts:
| ACL to mark incoming background dummy load packets |
|---|
| p access-list extended acl-cs1-blast |
| remark Packets Service Class - cs1 |
| permit ip host 10.10.64.31 any |
| permit ip host 10.10.64.11 any |
| ip access-list extended acl-cs2-blast |
| remark Packets Service Class – cs2 |
| permit ip host 10.10.64.40 any |
| Class definition |
|---|
| class-map match-any cmap-cs4-blast |
| match access-group name acl-cs4-blast |
| class-map match-any cmap-cs2-blast |
| match access-group name acl-cs2-blast |
| class-map match-any cmap-cs1-blast |
| match access-group name acl-cs1-blast |
| Policy definition - Input marking the dummy load: |
|---|
| policy-map blast |
| class cmap-cs1-blast |
| set dscp cs1 |
| class cmap-cs2-blast |
| set dscp cs2 |
| Policy definition - Output child policy (queue definition and dropping policy) |
| policy-map WAN-out-sub |
| class class-default |
| bandwidth 512 |
| random-detect dscp-based |
| random-detect dscp 0 15 20 10 |
| random-detect dscp 8 30 40 10 |
| random-detect dscp 16 40 60 10 |
| random-detect dscp 46 60 80 10 |
| random-detect dscp 48 80 100 10 |
| Policy definition - Output parent policy ( shaper ) |
| policy-map WAN-out |
| class class-default |
| shape average 512000 512000 |
| Applying the policy - Input interface |
|---|
| interface FastEthernet0/1 |
| description LAN-JFCNAPLES |
| ip address 10.10.64.1 255.255.255.0 |
| no ip redirects |
| no ip proxy-arp |
| ip pim sparse-dense-mode |
| ip ospf message-digest-key 10 md5 7 011D01074819030B |
| ip ospf priority 255 |
| load-interval 30 |
| duplex full |
| speed 100 |
| service-policy input blast |
| Applying the policy - Output interface |
| interface FastEthernet0/0 |
| description FE0-0 to WAN |
| bandwidth 512 |
| ip address 10.10.249.1 255.255.255.252 |
| no ip redirects |
| no ip proxy-arp |
| load-interval 30 |
| duplex half |
| speed 10 |
| no cdp enable |
| max-reserved-bandwidth 100 |
| service-policy output WAN-out |
In the initial set of tests, the router had a default configuration with no queuing, shaping or background loading, and provided JFC Naples with access to 2 MBit/second throughput. The first set of tests looked at message throughput with different size of messages. One message was sent at a time, so the numbers shown give the transfer rate for one message with no other network traffic. The best result is shown over a small number of tests. For 1kByte messages, there was quite significant variation in transfer time. For larger messages, results were very similar;
| Size | Transfer Time (seconds) | Throughput (kBits/second) |
|---|---|---|
| 1k Byte | .031 | 258 |
| 10 kByte | .109 | 734 |
| 100 kByte | 1.719 | 465 |
| 1 MByte | 15.078 | 533 |
| 10 MByte | 165.032 | 484 |
It can be seen that larger messages get around 500 kBits/second throughput. 1kByte messages could not go so fast. 10kByte messages went faster.
For some reason, a single transfer would stabilize at about 25% of the available bandwidth. This was not an application limit, and it is suspected that the router is in some way limiting the amount of bandwidth given to a single long lived TCP connection.
For single message transfer, the DSCP setting did not appear to affect throughput at all (which is what would be expected).
In order to test message against message interaction, it was important to get M-Switch to transfer multiple messages together. This is not easy, as M-Switch's intelligent queuing came into play:
These queue management approaches are good, but made test traffic generation hard. The approach that was used was to send a low precedence messages, followed by a higher precedence message. In this scenario, M-Switch continues to send the lower precedence message and immediately starts to send the higher precedence message. Because of the time taken to send messages from a GUI, only the larger messages were useful for this testing. Tests were done for multiple 10 MBbyte messages in parallel, and each group in the following table shows messages sent at the same time. Note that overlap is not perfect, due to the time taken to start off the subsequent messages.
| Precedence | DSCP | Transfer Time (secs) | Throughput (kBit/sec) |
|---|---|---|---|
| Routine | CSO | 177.672 | 450 |
| Flash | CS3 | 177.297 | 451 |
| Precedence | DSCP | Transfer Time (secs) | Throughput (kBit/sec) |
|---|---|---|---|
| Routine | CSO | 190.329 | 420 |
| Priority | CS1 | 216.547 | 369 |
| Flash | CS3 | 184.812 | 433 |
| Precedence | DSCP | Transfer Time (secs) | Throughput (kBit/sec) |
|---|---|---|---|
| Routine | CSO | 193.616 | 413 |
| Priority | CS1 | 211.031 | 379 |
| Immediate | CS2 | 172.594 | 464 |
| Flash | CS3 | 189.43 | 422 |
| Precedence | DSCP | Transfer Time (secs) | Throughput (kBit/sec) |
|---|---|---|---|
| Routine | CSO | 202.593 | 395 |
| Priority | CS1 | 223.062 | 359 |
| Immediate | CS2 | 240.172 | 333 |
| Flash | CS3 | 247.484 | 324 |
| Override | CS4 | 213.078 | 375 |
The key point on these test results is that as extra messages are added, they get bandwidth that was not being made available to the other messages. This means that although there is some slowdown, the reduction in performance is not that great. This gives a poor test scenario for looking at the effect of DSCP values. The default router settings did not appear to give any benefit to higher precedence messages.
In the second round of tests, a key change was made to the router configuration to restrict (shape) outbound data rate to 512 kBit/second. It was decided to focus on larger messages only, as they provided traffic for long enough to monitor externally. Baseline tests were repeated on an unloaded network.
| Size | Transfer Time (seconds) | Throughput (kBits/second) |
|---|---|---|
| 1 MByte | 22.25 | 359 |
| 10 MByte | 212.969 | 376 |
Monitoring at the IP level suggested a network throughput which was just over 400 kBit/second. This is higher than the application value, do to overhead of the intermediate protocol layers. A single message appeared to give reasonable utilization of the available bandwidth. The dummy load was measured, and it was able to get close to 500 kBit/second utilization.
The router was set up with three queues, and the following bandwidth reservation, using queues for two specific DSCPs, each with a bandwidth reservation, that guaranteed a percentage of the overall bandwidth for the queue.
| Router Queue | DSCP | Reservation |
|---|---|---|
| 1 | CS1 | 50% |
| 2 | CS2 | 50% |
| 3 | Other | No reservation |
A large message was sent at CS0 priority, followed by a shorter message at CS3 that was transferred during the transfer of the larger message. The following table shows the transfer time for these two messages. These DSCP values were chosen so that a router queue was shared.
| Precedence | Size | DSCP | Transfer Time (secs) | Throughput (kBit/sec) | % Base Rate |
|---|---|---|---|---|---|
| Routine | 10 MByte | CSO | 229.18 | 349 | 93% |
| Flash | 1 MByte | CS3 | 25.84 | 309 | 86% |
The Flash (CS3) message was able to be transferred at a rate that was only slightly less than the rate in the reference tests, and thus obtained the majority of the bandwidth that was available during the transfer. There was some reduction of throughput relative to the base rate, which suggests that although the router strongly favored the higher priority traffic, that the fairness approach did not throttle back the CS0 traffic completely. This fairness is probably desirable.
To achieve the high throughput for the CS3 message, transfer of the Routine (CS0) message was throttled back while the CS3 message was being transferred. Overall transfer rate for the CS0 message was reduced as a consequence. This test shows the DSCP setting working to allocate resources in favor of the higher precedence message. If packets had been dropped evenly during the 25 seconds that the CS3 message was being transferred, this would have led to bandwidth being shared evenly between the two messages, and the throughput would have been somewhat less that 250 kBit /sec (half of the available bandwidth).
This was done with a single router queue, and ordered dropping.
Background traffic was sent at the CS1 level, and various messages
were sent. Each of the following messages was sent on its own, with
the background traffic.
| Precedence | DSCP | Size | Transfer Time (secs) | Throughput (kBit/sec) | % Base Rate |
|---|---|---|---|---|---|
| Immediate | CS2 | 1 MByte | 39.8 | 201> | 55% |
| Immediate | CS2 | 10 MByte | 427.828 | 187 | 49% |
| Routine | CS0 | 1 MByte | 2964 | 3 | 0.8% |
| Routine | CS0 | 10 kByte | 32.953 | 2.4 | |
| Priority | CS1 | 10 kByte | More than 3 mins | Less than 0.3 |
It can be seen for the CS2 traffic, that the bandwidth reservation worked, and that the message received half of the available bandwidth. CS0 traffic, which used a separate queue with no bandwidth reservation got low throughput. CS1 traffic, which shared a router queue with the dummy load got almost no bandwidth.
At this point the router was reconfigured to use a single queue with ordered dropping. The baseline tests were re-run:
| Size | Transfer Time (seconds) | Throughput (kBits/second) |
|---|---|---|
| 1 MByte | 17.2 | 465 |
| 10 MByte | 175.25 | 456 |
The single queue gave better throughput & the reasons for this are unclear.
A test was run with CS1 dummy load, and transferring a 1MByte CS2 message:
| Precedence | DSCP | Transfer Time | Throughput (kBit/sec) |
|---|---|---|---|
| Immediate | CS2 | More than 9 min 40 sec | Less than 13 |
The dummy load was so aggressive, that it effectively blocked out the test message. Although the queue was preferentially dropping the CS1 packets, sufficient CS2 packets were dropped to cause the TCP to slow right down.
The router configuration was then changed to use standard CISCO dropping with a varying queue depth. The goal of this was to have the router drop the lower precedence packets more aggressively. The previous test was then repeated:
| Precedence | DSCP | Transfer Time (secs) | Throughput (kBit/sec) |
|---|---|---|---|
| Immediate | CS2 | 136.078 | 59 |
This was a substantial improvement over the previous ordered dropping settings, but the aggressive lower priority traffic still had a major impact on the less aggressive higher precedence traffic. This suggests that for traffic of such differing characteristics, simple ordered dropping approaches with standard Cisco settings do not work as a mechanism to give priority for higher precedence traffic. Ordered dropping may be useful in this scenario if a more aggressive dropping strategy was used.
The key questions to be answered at the messaging level were set out in the Isode white paper Sending FLASH Messages Quickly: Techniques for Low Latency Message Switching and Precedence Handling. This paper made a number of points relevant to these measurements.
That in practice, automatic message pre-emption (stopping transfer of a lower priority when a higher priority one arrives) would not be useful in most situations. This was strongly borne out during the testing. It proved difficult to get M-Switch X.400 to send messages of different precedence in parallel. Also, performance issues were always in the context of other traffic, and it seems clear that the major issue will not be a switch interacting with its own traffic.
In situations where messages of different precedence are being transferred, differentiated services can be used to ensure that the higher precedence message gets as much bandwidth as it can use and is not limited by the lower precedence message. The third table in "round 2" shows that this works in practice.
We conclude that use of Differentiated Services can work well in support of messaging applications with variable message precedence, where there is a desire to give priority to higher precedence messages and network capacity is limited.
The messaging setup gives a clear cut network behavior, and a simple "it works" conclusion can be drawn. A number of points came out of the work: