Selecting a differential treatment field value

A first block of packets is sent through a network at a first throughput rate. The first block of packets has a differential treatment field set to a first value. A second block of packets is sent through the network at a second throughput rate. The second block of packets has the differential treatment field set to a second value. A first report indicating that the reception of the first block of packets satisfies a criteria is received. A second report indicating that the reception of the second block of packets satisfies the criteria is received. A treatment field value for the differential treatment field is selected based on the first report and the second report. A packet with the differential treatment field set to the treatment field value is sent to the network.

TECHNICAL BACKGROUND

Modern data networks may carry packets for various types of services. These services include video, voice, web pages, streaming audio, webcasts, shared desktops, web browsing, and email. Each of the services may have different quality of service (QoS) requirements. For example, email generally requires a guarantee that each packet is delivered to the ultimate destination because a lost packet may garble the message. In addition, email does not particularly care how fast the packets are delivered because most email accounts are only checked occasionally. In contrast, a voice service (such as voice over internet protocol—VoIP) can usually tolerate the loss of an occasional packet. A voice service also needs timely delivery of packets or gaps in the conversation will be heard.

To accommodate the different needs of different network carried services, several standards have been drafted. For example, the Internet Engineering Task Force (IETF) has published several documents describing a mechanism for classifying, managing network traffic, and providing quality of service guarantees collectively referred to as DiffServ. DiffServ is further described in RFC-2474, RFC-2475, RFC-2597, and RFC-3246. These documents are available from the IETF at http://www.ietf.org/. Other QoS mechanism have also been proposed by the IETF such as “integrated services” (IntServ). Other entities have also specified QoS mechanisms for networks such as the flow classifications documented in the Institute of Electrical and Electronics Engineers (IEEE) 802.16 (WiMax) standards.

Overview

A method of optimizing data communication is disclosed. A first block of packets is sent through a network at a first throughput rate. The first block of packets has a differential treatment field set to a first value. A second block of packets is sent through the network at a second throughput rate. The second block of packets has the differential treatment field set to a second value. A first report indicating that the reception of the first block of packets satisfies a criteria is received. A second report indicating that the reception of the second block of packets satisfies the criteria is received. A treatment field value for the differential treatment field is selected based on the first report and the second report. A packet with the differential treatment field set to the treatment field value is sent to the network.

A first plurality of blocks is iteratively sent through a network. The first plurality of blocks of packets have a differential treatment field set to a first value. The different iterations of sending the first plurality of blocks of packets are sent at different throughput rates. A first plurality of reports corresponding to each iteration (i.e., each throughput rate) that indicate whether the reception of each of the first plurality of blocks of packets satisfied a criteria is received. A first throughput rate associated with the first value is selected based on the first plurality of reports. A second plurality of blocks is iteratively sent through a network. The second plurality of blocks of packets have a differential treatment field set to a second value. The different iterations of sending the second plurality of blocks of packets are sent at different throughput rates. A second plurality of reports corresponding to each iteration (i.e., each throughput rate) that indicate whether the reception of each of the second plurality of blocks of packets satisfied the criteria is received. A second throughput rate associated with the second value is selected based on the second plurality of reports. The differential treatment field in a packet is set to the first value based on the first throughput rate and the second throughput rate.

DETAILED DESCRIPTION

FIG. 1is a block diagram illustrating a communication system. InFIG. 1, communication system100comprises computer system101, computer system102, and network120. Computer system101is operatively coupled to network120. Computer system102is operatively coupled to network120. Thus, computer system101may be operatively coupled to computer system102via network120.

Network120could be any network or collection of networks that couple, link, or otherwise operatively connect computer system101with other computer systems, networks, or computer system102. In addition, other secondary data networks could be used. In an example, communication network120may include a backhaul network, a local network, a long distance network, a packet network, or any combination thereof, as well as other types of networks.

In an embodiment, network120implements one or more QoS or differential treatment architectures. For example, network120may implement the DiffServ architecture to classify incoming packets. These classifications may then be used by network120to make per-hop behavior (PHB) decisions about further classification, and traffic conditioning functions. Traffic conditioning functions include metering, marking, shaping, or policing. Thus, incoming packets from computer101or computer102may be subject to differential treatment by network120as they are sent through network120.

Network120may comprise one or more groups of routers (or other network devices) that implement a common set of differential treatment policies. Each of these groups implementing a common set of differential treatment policies are differential treatment domains. In an embodiment, a group of routers that implement a common, administratively defined set of DiffServ policies may be referred to as a DiffServ domain.

Traffic entering or traversing network120may be subject to classification and conditioning by one or more differential treatment domains. Traffic may be classified by each differential treatment domain in network120by different parameters. For example, a differential treatment domain may classify or mark traffic by source address, destination address, traffic type, or a differential treatment field. Differential treatment domains may elect to ignore or override the classification or differential treatment field value of the sending device or domain. For example, a DiffServ domain may ignore the internet protocol differential services code point (DSCP) field in incoming traffic and assign a new classification based on a different set of classification rules.

Computer system101operates to select an optimized value for a differential treatment field that may be used to send communications through network120. For example, computer system101may operate to select a value for a differentiated services field in an internet protocol packet that optimizes communication to or through network120. In an embodiment, computer system101operates to select a value for the internet protocol differentiated services code point field.

To select a value for a differential treatment field, computer system101sets the differential treatment field in a block of packets to a first value. Computer system101then sends this block of packets to computer system102via network120at a first throughput (e.g., Kbits/s) rate. Computer system101then sends this block of packets to computer system102via network120at successively increasing throughput rates.

Computer system102sends reports on the received blocks of packets back to computer system101. For example, computer system102may report the received throughput rate of the blocks of packets. In another example, computer system102may report an indication of whether, or how many, packets were lost.

These reports may be processed by either computer101or computer102to determine if the reception of these blocks of packets satisfies one or more criteria. For example, computer101may process a report from computer102to determine if more than a specified percent (e.g., 1% or 10%) of a block of packets sent at a particular throughput rate and differential treatment field value were lost.

Computer system101may then generate new blocks of packets with different (e.g., second, third, etc.) differential treatment field values. Computer system101may then send these blocks of packets to computer system102via network120at successively increasing throughput rates. Computer system101may then receive reports from computer system102about the received blocks of packets. Thus, for each differential treatment field value, computer system101is able to measure a performance parameter. For example, for a given differential treatment field value, computer system101may measure the maximum throughput before a threshold amount of packet loss occurs.

The measured performance parameters for each differential treatment field value may be compared by computer system101to select a differential treatment field value. For example, if a first differential treatment field value provides better throughput than a second, then the first differential treatment field value may be selected.

In another example, a service level agreement (SLA) with the operator of network120may provide for differing charges depending on the value of the differential treatment field. Thus, if a first differential treatment field value provides approximately the same performance as a second, then the least expensive of the two differential treatment field values may be selected.

Computer system101may then use the selected differential treatment field value to send one of more packets to network120. These packets may be destined for computer system102, an internal component of network120, or another system or network external to network120.

FIG. 2is a flowchart illustrating a method of optimizing communication. The method illustrated inFIG. 2may be performed by one or more elements communication system100.

A first block of packets is sent at a first throughput rate and with a differential treatment field set to a first value (202). For example, computer101may send a first block of packets to computer102at a first throughput rate (e.g., 100 KB/s) with a differential treatment field set to a first value (e.g., DSCP=000000).

A second block of packets is sent at a second throughput rate and with a differential treatment field set to a second value (204). For example, computer101may send a second block of packets to computer102at a second throughput rate (e.g., 110 KB/s) with a differential treatment field set to a second value (e.g., DSCP=111111).

A first report indicating that the reception of the first block of packets satisfied a criteria is received (206). For example, computer system101may receive a report from computer system102indicating that 1% of the first block of packets were lost. Consider a case where the criteria specifies a threshold level of packet lost must be less than 5%. In this case, the report from computer system102that 1% of the first block of packets were lost indicates that the criteria was satisfied.

A second report indicating that the reception of the first block of packets satisfied a criteria is received (208). For example, computer system101may receive a report from computer system102indicating that 3% of the second block of packets were lost. Also in this case, the report from computer system102that 3% of the second block of packets were lost indicates that the criteria was satisfied.

A value for the differential treatment field is selected based on the first and second reports (210). For example, computer system101may select the first value for the differential treatment field because the first report indicated a lower packet loss than the second report (e.g., 1% compared to 3%). In an embodiment, the differential treatment field value may be selected based on the throughput associated with the first and second reports. For example, since both the first report and the second report indicated a packet loss rate that satisfied the criteria, computer system101may select the second value because the second report was associated with a higher throughput rate than the first report.

A packet is sent to the network with the differential treatment field set to the selected value (212). For example, computer system101may send a packet to network120with the differential treatment field set to the selected value. This packet may be destined for computer system102, an internal component of network120, or another system or network external to network120.

Network320could be any network or collection of networks that couple, link, or otherwise operatively connect computer system301with other computer systems, networks, or computer system302. In addition, other secondary data networks could be used. In an example, communication network320may include a backhaul network, a local network, a long distance network, or a packet network, or any combination thereof, as well as other types of networks.

Network320may use the internet protocol DiffServ field to determine how it will treat incoming packet from computer301. DiffServ is further described in RFC-2474, RFC-2475, RFC-2597, and RFC-3246. These documents are available from the IETF at http://www.ietf.org/ and are hereby incorporated herein by reference. Network320may ignore the DiffServ field. Network320may use only some of the DiffServ classifications to determine how it will treat incoming packets from computer system301. Network320may override the DiffServ field on incoming packets from computer system301. Typically, router321would be responsible for ignoring or overriding all or part the DiffServ field in packets received from computer301. However, routers322and323may also ignore or override the DiffServ field on packets passing through network320.

The Diffserv field, and the DSCP field in particular, may be used by network320to make per-hop behavior (PHB) decisions about further classification, and traffic conditioning functions. Traffic conditioning functions include metering, marking, shaping, or policing. Thus, incoming packets from computer301or computer302may be subject to differential treatment by routers321-323as they are sent through network320.

Network320may implement a common set of differential treatment policies amongst routers321-323. Thus, network320may constitute a DiffServ domain.

Traffic entering or traversing network320may be subject to classification and conditioning by one or more of routers321-323. For example, a router321may override the DSCP field in traffic received from computer301based on source address, destination address, traffic type, or some other packet field.

Computer system301operates to select an optimized value for all or part of a DiffServ field that may be used to send packets through network320. Computer system301may operate to select a value for the DSCP field in an internet protocol packet to optimize some aspect of communication to or through network320.

To select a value for a DiffServ field, computer system301sets the DiffServ field in a block of packets to a first value. Computer system301then sends this block of packets to computer system302via network320at a first throughput (e.g., KB/s) rate. Computer system301then sends this block of packets to computer system302via network320at successively increasing throughput rates.

Computer system302sends reports on the received blocks of packets back to computer system301. For example, computer system302may report the received throughput rate of the blocks of packets. In another example, computer system302may report an indication of whether, or how many, packets were lost.

These reports may be processed by either computer301or computer302to determine if the reception of these blocks of packets satisfies one or more criteria. For example, computer301may process a report from computer302to determine if more than a specified percent (e.g., 1% or 10%) of a block of packets sent at a particular throughput rate and DiffServ field value were lost.

Computer system301may then generate a new blocks of packets with different (e.g., second, third, etc.) DiffServ field values. In an embodiment, computer system301successively generates blocks of packets with different DiffServ precedence levels. In another embodiment, computer system301sucessively generates blocks of packets with different drop probabilities. Computer system301may then send these blocks of packets to computer system302via network320at successively increasing throughput rates. Computer system301may then receive reports from computer system302about the received blocks of packets. Thus, for each DiffServ field value, computer system301is able to measure a performance parameter. For example, for a given DiffServ field value, computer system301is able to measure the maximum throughput before a threshold amount of packet loss occurs.

The measured performance parameters for each DiffServ field value may be processed by computer system301to select a DiffServ field value. For example, if a first DiffServ field value provides better throughput than a second, then the first DiffServ field value may be selected.

In another example, a service level agreement with the operator of network320may provide for differing charges depending on the value of the DiffServ field. Thus, if a first DiffServ field value provides approximately the same performance as a second, then the least expensive of the two DiffServ field values may be selected.

Computer system301may then use the selected DiffServ field value to send one of more packets to network320. These packets may be destined for computer system302, an internal component of network320, or another system or network external to network320such as computer system303.

FIG. 4is a flowchart illustrating a method of optimizing communication. The method ofFIG. 4may be performed by communication system100or communication system300.

A differential treatment field is set in a block of packets (402). For example, computer system301may set the DiffServ field in a block of packets to a first value. In another example, computer system301may set the precedence level portion of the DiffServ field in the block of packets to a first value.

The block of packets is sent though the network to a far end host at multiple throughput rates (404). For example, computer system301may send a block of packets with a particular DiffServ field value through network320to computer302at successively increasing throughput rates.

The blocks of packets sent at the multiple throughput rates are received at the far end host (406). For example, computer system302may receive blocks of packets sent by computer system301at successively higher throughput rates. Computer system302may then generate a report with information about the received blocks of packets. This information may include such things as throughput, packet loss, or whether each block of packets satisfied a criteria.

A report from the far end host is received (408). This report may include such information as received throughput, packet loss, or whether each block of packets satisfied a criteria. For example, computer system301may receive a report from computer system302with information such as throughput, packet loss, or whether each block of packets satisfied a criteria.

If there are more untested differential treatment field values, flow proceeds to block412. Otherwise, flow proceeds to block414(410). If there are untested differential treatment values, a new differential treatment value is selected for testing (412). Flow then proceeds back to block402. For example, if all of the precedence levels have not been tested, computer system301may select a new precedence level for the DiffServ field and then proceed to generate a block of packets with the new DiffServ field value.

A differential treatment field value is selected based on the reports (414). For example, computer system301may select a DiffServ field value based on the reports it received from computer system302that related each DiffServ field value to a throughput rate and/or packet loss rate.

A packet is sent to the network with the selected differential treatment value (416). For example, computer system301may send a packet with the DiffServ value it selected in block414to network320. This packet may be destined for computer system302, an internal component of network320, or another system or network external to network320such as computer system303.

The methods, systems, networks, and routers described above may be implemented with, contain, or be executed by one or more computer systems. The methods described above may also be stored on a computer readable medium. Many of the elements of communication network100and communication network300may be, comprise, or include computers systems. This includes, but is not limited to: communication systems100and300; computer system101; computer system102; network120; computer system301; computer system302; computer system303; network320; router321; router322; and router323.

FIG. 5illustrates a block diagram of a computer system. Computer system500includes communication interface520, processing system530, and user interface560. Processing system530includes storage system540. Storage system540stores software550. Processing system530is linked to communication interface520and user interface560. Computer system500could be comprised of a programmed general-purpose computer, although those skilled in the art will appreciate that programmable or special purpose circuitry and equipment may be used. Computer system500may be distributed among multiple devices that together comprise elements520-560.

Communication interface520could comprise a network interface, modem, port, transceiver, or some other communication device. Communication interface520may be distributed among multiple communication devices. Processing system530could comprise a computer microprocessor, logic circuit, or some other processing device. Processing system530may be distributed among multiple processing devices. User interface560could comprise a keyboard, mouse, voice recognition interface, microphone and speakers, graphical display, touch screen, or some other type of user device. User interface560may be distributed among multiple user devices. Storage system540could comprise a disk, tape, integrated circuit, server, or some other memory device. Storage system540may be distributed among multiple memory devices.

Processing system530retrieves and executes software550from storage system540. Software550may comprise an operating system, utilities, drivers, networking software, and other software typically loaded onto a computer system. Software550could comprise an application program, firmware, or some other form of machine-readable processing instructions. When executed by processing system530, software550directs processing system530to operate as described herein.