SYSTEMS AND METHODS FOR APPLYING BACK-PRESSURE FOR SEQUENCING IN QUALITY OF SERVICE

Abstract
Certain embodiments of the present invention provide systems and methods for data communication. Certain embodiments provide a method including temporarily holding data being transmitted, determining a sequence of the data based at least on data priority and metering transmission of the data based on at least one user-specified metering criterion to provide a level of quality of service in transmitting the data. Certain embodiments provide a computer-readable medium having a set of instructions for execution on a processing device. The set of instructions includes a holding routine for temporarily holding data being transmitted, a sequencing routine for determining a sequence of the data based on at least one sequencing criterion, and a metering routine for metering a flow of the data based on at least one metering criterion to provide a level of quality of service in transmitting the data.
Description

BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS


FIG. 1 illustrates a tactical communications network environment operating with an embodiment of the present invention.



FIG. 2 shows the positioning of the data communications system in the seven layer OSI network model in accordance with an embodiment of the present invention.



FIG. 3 depicts an example of multiple networks facilitated using the data communications system in accordance with an embodiment of the present invention.



FIG. 4 illustrates a data communication environment operating with an embodiment of the present invention.



FIG. 5 illustrates a flow diagram for a method for communicating data in accordance with an embodiment of the present invention.



FIG. 6 illustrates a data communication system with segmentation and reassembly capability in accordance with an embodiment of the present invention.





The foregoing summary, as well as the following detailed description of certain embodiments of the presently described technology, will be better understood when read in con unction with the appended drawings. For the purpose of illustrating the presently described technology, certain embodiments are shown in the drawings. It should be understood, however, that the presently described technology is not limited to the arrangements and instrumentality shown in the attached drawings.


DETAILED DESCRIPTION OF THE INVENTION


FIG. 1 illustrates a tactical communications network environment 100 operating with an embodiment of the presently described technology. The network environment 100 includes a plurality of communication nodes 110, one or more networks 120, one or more links 130 connecting the nodes and network(s), and one or more communication systems 150 facilitating communication over the components of the network environment 100. The following discussion assumes a network environment 100 including more than one network 120 and more than one link 130, but it should be understood that other environments are possible and anticipated.


Communication nodes 110 may be and/or include radios, transmitters, satellites, receivers, workstations, servers, and/or other computing or processing devices, for example. Network(s) 120 may be hardware and/or software for transmitting data between nodes 110, for example. Network(s) 120 may include one or more nodes 110, for example. Link(s) 130 may be wired and/or wireless connections to allow transmissions between nodes 110 and/or network(s) 120.


The communications system 150 may include software, firmware, and/or hardware used to facilitate data transmission among the nodes 110, networks 120, and links 130, for example. As illustrated in FIG. 1, communications system 150 may be implemented with respect to the nodes 110, network(s) 120, and/or links 130. In certain embodiments, every node 110 includes a communications system 150. In certain embodiments, one or more nodes 110 include a communications system 150. In certain embodiments, one or more nodes 110 may not include a communications system 150.


The communication system 150 provides dynamic management of data to help assure communications on a tactical communications network, such as the network environment 100. As shown in FIG. 2, in certain embodiments, the system 150 operates as part of and/or at the top of the transport layer in the OSI seven layer protocol model. The system 150 may give precedence to higher priority data in the tactical network passed to the transport layer, for example. The system 150 may be used to facilitate communications in a single network, such as a local area network (LEAN) or wide area network (WAN), or across multiple networks. An example of a multiple network system is shown in FIG. 3. The system 150 may be used to manage available bandwidth rather than add additional bandwidth to the network, for example.


In certain embodiments, the system 150 is a software system, although the system 150 may include both hardware and software components in various embodiments The system 150 may be network hardware independent, for example. That is, the system 150 may be adapted to function on a variety of hardware and software platforms. In certain embodiments, the system 150 operates on the edge of the network rather than on nodes in the interior of the network. However, the system 150 may operate in the interior of the network as well, such as at “choke points” in the network.


The system 150 may use rules and modes or profiles to perform throughput management functions such as optimizing available bandwidth, setting information priority, and managing data links in the network. By “optimizing” bandwidth, it is meant, for example, that the presently described technology may be employed to increase an efficiency of bandwidth use to communicate data in one or more networks. Optimizing bandwidth usage may include removing functionally redundant messages, message stream management or sequencing, and message compression, for example. Setting information priority may include differentiating message types at a finer granularity than Internet Protocol (IP) based techniques and sequencing messages onto a data stream via a selected rule-based sequencing algorithm, for example. Data link management may include rule-based analysis of network measurements to affect changes in rules, modes, and/or data transports, for example. A mode or profile may include a set of rules related to the operational needs for a particular network state of health or condition. The system 150 provides dynamic, “on-the-fly” reconfiguration of modes, including defining and switching to new modes on the fly.


The communication system 150 may be configured to accommodate changing priorities and grades of service, for example, in a volatile, bandwidth-limited network. The system 150 may be configured to manage information for improved data flow to help increase response capabilities in the network and reduce communications latency. Additionally, the system 150 may provide interoperability via a flexible architecture that is upgradeable and scalable to improve availability, survivability, and reliability of communications. The system 150 supports a data communications architecture that may be autonomously adaptable to dynamically changing environments while using predefined and predictable system resources and bandwidth, for example.


In certain embodiments, the system 150 provides throughput management to bandwidth-constrained tactical communications networks while remaining transparent to applications using the network. The system 150 provides throughput management across multiple users and environments at reduced complexity to the network. As mentioned above, in certain embodiments, the system 150 runs on a host node in and/or at the top of layer four (the transport layer) of the OSI seven layer model and does not require specialized network hardware. The system 150 may operate transparently to the layer four interface. That is, an application may utilize a standard interface for the transport layer and be unaware of the operation of the system 150. For example, when an application opens a socket, the system 150 may filter data at this point in the protocol stack. The system 150 achieves transparency by allowing applications to use, for example, the TCP/IP socket interface that is provided by an operating system at a communication device on the network rather than an interface specific to the system 150. System 150 rules may be written in extensible markup language (XML) and/or provided via custom dynamic link libraries (DLLs), for example.


In certain embodiments, the system 150 provides quality of service (QoS) on the edge of the network. The system's QoS capability offers content-based, rule-based data prioritization on the edge of the network, for example. Prioritization may include differentiation and/or sequencing, for example. The system 150 may differentiate messages into queues based on user-configurable differentiation rules, for example. The messages are sequenced into a data stream in an order dictated by the user-configured sequencing rule (e.g., starvation, round robin, relative frequency, etc.). Using QoS on the edge, data messages that are indistinguishable by traditional QoS approaches may be differentiated based on message content, for example. Rules may be implemented in XML, for example. In certain embodiments, to accommodate capabilities beyond XML and/or to support extremely low latency requirements, the system 150 allows dynamic link libraries to be provided with custom code, for example.


Inbound and/or outbound data on the network may be customized via the system 150. Prioritization protects client applications from high-volume, low-priority data, for example. The system 150 helps to ensure that applications receive data to support a particular operational scenario or constraint.


In certain embodiments, when a host is connected to a LAN that includes a router as an interface to a bandwidth-constrained tactical network, the system may operate in a configuration known as QoS by proxy. In this configuration, packets that are bound for the local LAN bypass the system and immediately go to the LAN. The system applies QoS on the edge of the network to packets bound for the bandwidth-constrained tactical link.


In certain embodiments, the system 150 offers dynamic support for multiple operational scenarios and/or network environments via commanded profile switching. A profile may include a name or other identifier that allows the user or system to change to the named profile. A profile may also include one or more identifiers, such as a functional redundancy rule identifier, a differentiation rule identifier, an archival interface identifier, a sequencing rule identifier, a pre-transmit interface identifier, a post-transmit interface identifier, a transport identifier, and/or other identifier, for example. A functional redundancy rule identifier specifies a rule that detects functional redundancy, such as from stale data or substantially similar data, for example. A differentiation rule identifier specifies a rule that differentiates messages into queues for processing, for example. An archival interface identifier specifies an interface to an archival system, for example. A sequencing rule identifier identifies a sequencing algorithm that controls samples of queue fronts and, therefore, the sequencing of the data on the data stream. A pre-transmit interface identifier specifies the interface for pre-transmit processing, which provides for special processing such as encryption and compression, for example. A post-transmit interface identifier identifies an interface for post-transmit processing, which provides for processing such as de-encryption and decompression, for example. A transport identifier specifies a network interface for the selected transport.


A profile may also include other information, such as queue sizing information, for example. Queue sizing information identifiers a number of queues and amount of memory and secondary storage dedicated to each queue, for example.


In certain embodiments, the system 150 provides a rules-based approach for optimizing bandwidth. For example, the system 150 may employ queue selection rules to differentiate messages into message queues so that messages may be assigned a priority and an appropriate relative frequency on the data stream. The system 150 may use functional redundancy rules to manage functionally redundant messages. A message is functionally redundant if it is not different enough (as defined by the rule) from a previous message that has not yet been sent on the network, for example. That is, if a new message is provided that is not sufficiently different from an older message that has already been scheduled to be sent, but has not yet been sent, the newer message may be dropped, since the older message will carry functionally equivalent information and is further ahead in the queue. In addition, functional redundancy many include actual duplicate messages and newer messages that arrive before an older message has been sent. For example, a node may receive identical copies of a particular message due to characteristics of the underlying network, such as a message that was sent by two different paths for fault tolerance reasons. As another example, a new message may contain data that supersedes an older message that has not yet been sent. In this situation, the system 150 may drop the older message and send only the new message. The system 150 may also include priority sequencing rules to determine a priority-based message sequence of the data stream. Additionally, the system 150 may include transmission processing rules to provide pre-transmission and post-transmission special processing, such as compression and/or encryption.


In certain embodiments, the system 150 provides fault tolerance capability to help protect data integrity and reliability. For example, the system 150 may use user-defined queue selection rules to differentiate messages into queues. The queues are sized according to a user-defined configuration, for example. The configuration specifies a maximum amount of memory a queue may consume, for example. Additionally, the configuration may allow the user to specify a location and amount of secondary storage that may be used for queue overflow. After the memory in the queues is filled, messages may be queued in secondary storage. When the secondary storage is also full, the system 150 may remove the oldest message in the queue, logs an error message, and queues the newest message. If archiving is enabled for the operational mode, then the de-queued message may be archived with an indicator that the message was not sent on the network.


Memory and secondary storage for queues in the system 150 may be configured on a per-link basis for a specific application, for example. A longer time between periods of network availability may correspond to more memory and secondary storage to support network outages. The system 150 may be integrated with network modeling and simulation applications, for example, to help identify sizing to help ensure that queues are sized appropriately and time between outages is sufficient to help achieve steady-state and help avoid eventual queue overflow.


Furthermore, in certain embodiments, the system 150 offers the capability to meter inbound (“shaping”) and outbound (“policing”) data. Policing and shaping capabilities help address mismatches in timing in the network. Shaping helps to prevent network buffers form flooding with high-priority data queued up behind lower-priority data. Policing helps to prevent application data consumers from being overrun by low-priority data. Policing and shaping are governed by two parameters: effective link speed and link proportion. The system 150 may form a data stream that is no more than the effective link speed multiplied by the link proportion, for example. The parameters may be modified dynamically as the network changes. The system may also provide access to detected link speed to support application level decisions on data metering. Information provided by the system 150 may be combined with other network operations information to help decide what link speed is appropriate for a given network scenario.


In certain embodiments, QoS may be provided to a communication network above the transport layer of the OSI protocol model. Specifically, QoS technology may be implemented just below the socket layer of a transport protocol connection. The transport protocol may include a Transmission Control Protocol (TCP), User Datagram Protocol (UDP), or Stream Control Transmission Protocol (SCTP), for example. As another example, the protocol type may include Internet Protocol (IP), Internetwork Packet Exchange (IPX), Ethernet, Asynchronous Transfer Mode (ATM), File Transfer Protocol (FTP), and/or Real-time Transport Protocol (RTP). For purposes of illustration, one or more examples will be provided using TCP.



FIG. 4 illustrates a data communication environment 400 operating with an embodiment of the present invention. The environment 400 includes a data communication system 410, one or more source nodes 420, and one or more destination nodes 430. The data communication system 410 is in communication with the source node(s) 420 and the destination node(s) 430. The data communication system 410 may communicate with the source node(s) 420 and/or destination node(s) 430 over links, such as radio, satellite, network links, and/or through inter-process communication, for example. In certain embodiments, the data communication system 410 may communication with one or more source nodes 420 and/or destination nodes 430 over one or more tactical data networks.


The data communication system 410 may be similar to the communication system 150, described above, for example. In certain embodiments, the data communication system 410 is adapted to receive data from the one or more source nodes 420. In certain embodiments, the data communication system 410 may include one or more queues for holding, storing, organizing, and/or prioritizing the data. Alternatively, other data structures may be used for holding, storing, organizing, and/or prioritizing the data. For example, a table, tree, or linked list may be used. In certain embodiments, the data communication system 410 is adapted to communicate data to the one or more destination nodes 430.


The data received, stored, prioritized, processed, communicated, and/or otherwise transmitted by data communication system 410 may include a block of data. The block of data may be, for example, a packet, cell, frame, and/or stream of data. For example, the data communication system 410 may receive packets of data from a source node 420. As another example, the data communication system 410 may process a stream of data from a source node 420.


In certain embodiments, data includes a header and a payload. The header may include protocol information and time stamp information, for example. In certain embodiments, protocol information, time stamp information, content, and other information may be included in the payload. In certain embodiments, the data may or may not be contiguous in memory. That is, one or more portions of the data may be located in different regions of memory. In certain embodiments, data may include a pointer to another location containing data, for example.


Source node(s) 420 provide and/or generate, at least in part, data handled by the data communication system 410. A source node 420 may include, for example, an application, radio, satellite, or network. The source node 420 may communicate with the data communication system 410 over a link, as discussed above. Source node(s) 420 may generate a continuous stream of data or may burst data, for example. In certain embodiments, the source node 420 and the data communication system 410 are part of the same system. For example, the source node 420 may be an application running on the same computer system as the data communication system 410.


Destination node(s) 430 receive data handled by the data communication system 410. A destination node 430 may include, for example, an application, radio, satellite, or network. The destination node 430 may communicate with the data communication system 410 over a link, as discussed above. In certain embodiments, the destination node 430 and the data communication system 410 are part of the same system. For example, the destination node 430 may be an application running oil the same computer system as the data communication system 410.


The data communication system 410 may communicate with one or more source nodes 420 and/or destination nodes 430 over links, as discussed above. In certain embodiments, the one or more links may be part of a tactical data network. In certain embodiments, one or more links may be bandwidth constrained. In certain embodiments, one or more links may be unreliable and/or intermittently disconnected. In certain embodiments, a transport protocol, such as TCP, opens a connection between sockets at a source node 420 and a destination node 430 to transmit data on a link from the source node 420 to the destination node 430.


In operation, data is provided and/or generated by one or more data sources 420. The data is received at the data communication system 410. The data may be received over one or more links, for example. For example, data may be received at the data communication system 410 from a radio over a tactical data network. As another example, data may be provided to the data communication system 410 by an application running on the same system by an inter-process communication mechanism. As discussed above, the data may be a block of data, for example.


In certain embodiments, the data communication system 410 may organize and/or prioritize the data. In certain embodiments, the data communication system 410 may determine a priority for a block of data. For example, when a block of data is received by the data communication system 410, a prioritization component of the data communication system 410 may determine a priority for that block of data. As another example, a block of data may be stored in a queue in the data communication system 410 and a prioritization component may extract the block of data from the queue based on a priority determined for the block of data and/or for the queue.


The prioritization of the data by the data communication system 410 may be used to provide QoS, for example. For example, the data communication system 410 may determine a priority for a data received over a tactical data network. The priority may be based on the source address of the data, for example. For example, a source IP address for the data from a radio of a member of the same platoon as the platoon the data communication system 410 belongs to may be given a higher priority than data originating from a unit in a different division in a different area of operations. The priority may be used to determine which of a plurality of queues the data should be placed into for subsequent communication by the data communication system 410. For example, higher priority data may be placed in a queue intended to hold higher priority data, and in turn, the data communication system 410, in determining what data to next communicate may look first to the higher priority queue.


The data may be prioritized based at least in part on one or more rules. As discussed above, the rules may be user defined. In certain embodiments, rules may be written in extensible markup language (“XML,”) and/or provided via custom dynamically linked libraries (“DLLs”), for example. Rules may be used to differentiate and/or sequence data on a network, for example. A rule may specify, for example, that data received using one protocol be favored over data utilizing another protocol. For example, command data may utilize a particular protocol that is given priority, via a rule, over position telemetry data sent using another protocol. As another example, a rule may specify that position telemetry data coming from a first range of addresses may be given priority over position telemetry data coming from a second range of addresses. The first range of addresses may represent IP addresses of other aircraft in the same squadron as the aircraft with the data communication system 410 running on it, for example. The second range of addresses may then represent, for example, IP addresses for other aircraft that are in a different area of operations, and therefore of less interest to the aircraft on which the data communication system 410 is running.


In certain embodiments, the data communication system 410 does not drop data. That is, although data may be low priority, it is not dropped by the data communication system 410. Rather, the data may be delayed for a period of time, potentially dependent on the amount of higher priority data that is received. In certain embodiments, data may be queued or otherwise stored, for example, to help ensure that the data is not lost or dropped until bandwidth is available to send the data.


In certain embodiments, the data communication system 410 includes a mode or profile indicator. The mode indicator may represent the current mode or state of the data communication system 410, for example. As discussed above, the data communications system 410 may use rules and modes or profiles to perform throughput management functions such as optimizing available bandwidth, setting information priority, and managing data links in the network. The different modes may affect changes in rules, modes, and/or data transports, for example. A mode or profile may include a set of rules related to the operational needs for a particular network state of health or condition. For example, different modes may have different rules associated with them. That is, one set of rules may be utilized in mode A, and a different, although potentially overlapping, set of rules may be utilized in mode B. A mode or profile may include a set of rules related to the operational needs for a particular network state of health or condition. In certain embodiments, a rule selected to be applied to data and/or communication may be selected based at least in part on the mode or profile. The data communication system 410 may provide dynamic reconfiguration of modes, including defining and switching to new modes “on-the-fly,” for example.


In certain embodiments, the data communication system 410 is transparent to other applications. For example, the processing, organizing, and/or prioritization performed by the data communication system 410 may be transparent to one or more source nodes 420 or other applications or data sources. For example, an application running on the same system as data communication system 410, or on a source node 420 connected to the data communication system 410, may be unaware of the prioritization of data performed by the data communication system 410.


Data is communicated via the data communication system 410. The data may be communicated to one or more destination nodes 430, for example. The data may be communicated over one or more links, for example. For example, the data may be communicated by the data communication system 410 over a tactical data network to a radio. As another example, data may be provided by the data communication system 410 to an application running on the same system by an inter-process communication mechanism.


As discussed above, the components, elements, and/or functionality of the data communication system 410 may be implemented alone or in combination in various forms in hardware, firmware, and/or as a set of instructions in software, for example. Certain embodiments may be provided as a set of instructions residing on a computer-readable medium, such as a memory, hard disk, DVD, or CD, for execution on a general purpose computer or other processing device.


In certain embodiments, data may be communicated via a communication connection having a limited bandwidth and/or availability for data transport. Such a connection may implement rules regarding data selection, update frequency, congestion control and/or prioritization, for example. Variability in rules and/or format may help efficiency in communication via the connection. Such rules, format and/or other parameters may be specified in a mode or profile, for example. The mode/profile may be generated automatically by software in the communications system, may be generated by an administrator or technician, may be generated by a user, and/or may be provided as a default, for example. In certain embodiments, the mode/profile may be modified by software, administrator, and/or user, for example.


In certain embodiments, links between nodes in the system are managed (e.g., dynamically managed) based on a mode or profile. A mode includes a collection of rules and configuration information for controlling data propagation to and from the transport layer on a network link, for example. The communication system detects the network health (e.g., available bandwidth, data traffic, buffer flooding, etc.) and dynamically commands the system to operate in an appropriate mode. Additionally, as the operational scenario changes, the communication system may be commanded to change the mode. The system may be manually and/or automatically commanded to change the mode. The mode specifies throughput management rules, archival configuration, pre- and post-transmission rules, and/or transport selection, for example. Thus, transparent link management may be enabled at the presentation and session layers of the OSI protocol stack, for example.


In certain embodiments, a profile and/or other representation provides a description of an operational scenario or mode within which a communication system may operate. The communication system may switch into one or more different modes based on operating circumstances for the communication system. For example, if communication system users are on the attack, the system may operate in an attack mode. If users are retreating, the system may operate in a retreat mode. If users are on patrol, the system may operate in a patrol mode. Different data may have different priorities in different modes. Different networks may have different characteristics for different modes. Thus, the system may be placed in a particular mode based on operating conditions and/or objectives, for example.


In certain embodiments, a command, such as a single command, may be used to place the communication system in a particular mode. The command may be executed manually and/or automatically to place the communication system in a certain mode, for example. A different command may correspond to a different mode, for example. A single command, for example, may change a plurality of characteristics or parameters of the system. Characteristics or parameters may include selection rules, functional redundancy rules, archiving capability, sequencing rules, pre-transmission rules and/or link characteristics, for example. Thus, a situation may be translated into a context that includes a plurality of parameters/settings “wrapped” or incorporated into the context. In certain embodiments, an application programming interface may be implemented to allow mode-based communication capability to be integrated with network operation software and/or other high-level decision-making software. In certain embodiments, a command used to switch modes may be a voice command, for example.


For example, a fighter plane may be far apart from another fighter plane, resulting in decreased signal strength, or weather may cause a bandwidth of a communications link between the planes to change. As the bandwidth deteriorates between the planes, network operation software running on the fighter planes instructs the communication system to switch to a different mode, such as a lower bandwidth mode that keeps high priority data flowing across the communication link more effectively.


In certain embodiments, a profile provides parameters for a mode in an XML file or XML section of a configuration file that defines the mode. A mode may be defined by one or more XML, elements, and the communications system may be instructed to select an existing XML mode or XML, element and/or a new XML mode may be added and selected dynamically, for example. In certain embodiments, a mode-based communication system may react dynamically to change an existing mode and/or add a new mode and switch to the new mode based on communication conditions, for example. In certain embodiments, a publish and subscribe system may be used to “publish” XML, mode documents to one or more servers to be made available for use in communication. Alternatively, one or more DLLs may specify profiles and/or corresponding modes.


In certain embodiments, sequencing algorithms are provided to service data priority queues or other message data storage or holding structure. Data is pulled from the queues according to the sequencing algorithms and transmitted onto the network. A user-configurable “shaping” capability meters the rate at which data is sequenced from the priority queues and placed onto the network. Thus, certain embodiments apply back-pressure based on user-defined data shaping and/or metering parameters to a QoS-based sequencing mechanism for sequencing and transmitting data on the network. Shaping and sequencing are integrated with a QoS solution for a data communication network.


Certain embodiments apply back pressure on incoming data to cause the data to back up. That is, incoming data is arriving faster than data is transmitted out to the network, thereby putting “pressure” on the incoming data stream. By “backing up” or slowing the data, prioritization algorithms may function to process the data accordingly to help improve algorithm effectiveness, priority data transmission and network health. Thus, for example, higher priority data may be identified and transmitted first by prioritization and sequencing algorithms.


In certain embodiments, back pressure may be defined at least in part by a user and/or other configuration parameters/preferences. In certain embodiments, for example, link speed (e.g., a communication speed or speed capability of a communication link) and link (proportion (e.g., a proportion of time that a link is carrying data traffic) are examined to determine back pressure to apply to incoming data. For example, if link speed multiplied by link proportion is lower than the data input rate, priority queues start to back up to allow prioritization algorithms to operate on the data. For example, if the link speed is 1 megabit and the link proportion is 0.5, then the output is 0.5 megabit. That is, data will be fed to the network at a rate of half a megabit. If 10 megabits are incoming, the data is enqueued, and the queues begin to fill. Higher priority data get service first, which helps the higher priority data be transmitted through the network first. Thus, once back pressure is applied, sequencing and other prioritization algorithms, along with shaping/metering parameters, sequence the held data for transmission. Data is sequenced on the network as long as the data rate does not exceed the link speed times link proportion expectation, for example. In certain embodiments, link speed and link proportion may be altered by mode, system parameters, user preferences, and/or operating conditions. As link speed and/or link proportion change, back pressure may also be configured and/or otherwise adjusted dynamically. In certain embodiments, back pressure is automatically adjusted based on link speed and link proportion.


In certain embodiments, a system measure, such as link speed multiplied by link proportion, may be used to divide the available bandwidth instead of and/or in addition to creating back pressure in the data communications system. For example, five people are trying to use a common ten kilobit radio link, which results in each people using two kilobits of the available bandwidth. Shaping may be used to configure each person's transmissions to two kilobits of the ten kilobit bandwidth.



FIG. 5 illustrates a flow diagram for a method 500 for communicating data in accordance with an embodiment of the present invention. The method 500 includes the following steps, which will be described below in more detail. At step 510, data is enqueued. At step 520, data flow is shaped. At step 530, data is sequenced. The method 500 is described with reference to elements of systems described above, but it should be understood that other implementations are possible.


At step 510, data is enqueued or otherwise temporarily stored. Alternatively and/or in addition to one or more queues, other data structures may be used for holding, storing, organizing, and/or prioritizing the data. For example, a table, tree, or linked list may be used. Data may be enqueued or otherwise held/stored for transmission from a source node to a destination node, during transmission in a network, and/or upon receipt at a destination node prior to routing to an application, for example.


One or more blocks or pieces of data may be enqueued during communication in order to prioritize and/or otherwise process the message(s) based on one or more rules and/or criteria, which may be dependent upon mode. Message(s) may be enqueued in the order in which they were received and/or in an alternate order, for example. In certain embodiments, messages may be stored in one or more queues or other storage. The one or more queues may be assigned differing priorities and/or differing processing rules, for example. The differing priorities and/or rules may be based upon mode, for example. Messages in the queues may be prioritized and/or otherwise processed based at least in part on operating mode, for example.


For example, the communication system may determine a priority for a message received over a tactical communication network. The priority may be based on the source address of the message, for example. For example, a source IP address for the message from a radio of a member of the same platoon as the platoon the communication system belongs to may be given a higher priority than a message originating from a unit in a different division in a different area of operations. The priority may be used to determine which of a plurality of queues the message should be placed into for subsequent communication. For example, higher priority data may be placed in a queue intended to hold higher priority data, and in turn, the communication system, in determining what data to next communicate, may look first to the higher priority queue.


In certain embodiments, a mode or profile indicator may represent the current mode or state of the communication system, for example. As discussed above, the rules and modes or profiles may be used to perform throughput management functions such as optimizing available bandwidth, setting information priority, and managing data links in the network. The different modes may affect changes in rules, modes, and/or data transports, for example. A mode or profile may include a set of rules related to the operational needs for a particular network state of health or condition. The communication system may provide dynamic reconfiguration of modes, including defining and switching to new modes “on-the-fly,” for example.


In certain embodiments, the prioritization of messages is transparent to other applications. For example, the processing, organizing, and/or prioritization performed by the communication system may be transparent to one or more source nodes or other applications or data sources. For example, an application running on the same system as a communication system, or on a source node connected to the communication system, may be unaware of the prioritization of messages performed by the communication system


At step 520, data flow is shaped or metered. As discussed above, shaping determines a rate at which data is output from the queue(s) or other storage. Shaping parameters and/or system clocking data, for example, help to provide an idle time or rate at which data is output from the queue(s). A transmitted bit count and/or other information may provide feedback to affect a shaping or metering rate. In certain embodiments, a user and/or system may provide and/or modifying shaping/metering parameters to help govern data flow from one or more queues or other holding/storage.


At step 530, data is sequenced. That is, an order of data for transmission or other routing or delivery may be determined based on one or more factors. For example, information relating to the queue(s) and/or other data storage, such as content and/or capacity information, may be used to help sequence data. One or more sequencing rules based on message content, transmission protocol, and/or environmental/operating information may be used to help sequence data. Shaping/metering information, such as clocking information and/or shaping parameters (e.g., user- and/or system-defined shaping parameters), may be used to providing timing information to help sequence data. For example, back pressure may be applied to data leaving the queue(s) to help ensure that a certain data flow rate or speed is not exceeded.


One or more of the steps of the method 500 may be implemented alone or in combination in hardware, firmware, and/or as a set of instructions in software, for example. Certain embodiments may be provided as a set of instructions residing on a computer-readable medium, such as a memory, hard disk, DVD, or CD, for execution on a general purpose computer or other processing device.


Certain embodiments of the present invention may omit one or more of these steps and/or perform the steps in a different order than the order listed. For example, some steps may not be performed in certain embodiments of the present invention. As a further example, certain steps may be performed in a different temporal order, including simultaneously, than listed above.



FIG. 6 illustrates a data communication system 600 allowing shaping and sequencing of data transmission in accordance with an embodiment of the present invention. The system 600 includes one or more queues 610 including queue statistics 615, one or more sequencing rules 620, a system clock 630, and one or more shaping parameters 640.


Message data is enqueued in one or more the queues 610 to allow, among other things, data to be prioritized and/or data flow to be metered at a rate. Alternatively and/or in addition to enqueuing, data may be temporarily stored, held or delayed using other structures such as a table, tree, linked list and/or other data structure. As shown in FIG. 6, a plurality of queues 610 may be provided to hold data (shown as shaded blocks in the queues 610 of FIG. 6). Queues 610 may be organized according to differing priority (e.g., queue 0 holds higher priority data than queue 9) and/or may be of equal priority (e.g., queues are not differentiated based on priority), for example. The system 600 may generate statistics 615 regarding the content, capacity and flow rate of the queue(s) 610 and/or data within the queue(s) 610, for example.


Shaping parameters 640 and/or system clocking data 630, for example, may be used to help provide an idle time or rate at which data is output from the queue(s) 610. A transmitted bit count and/or other information may provide feedback to affect a shaping/metering rate. Communication parameters, such as link speed and/or link proportion, may be used to set and/or modify the shaping/metering rate. In certain embodiments, a user and/or system may provide and/or modifying shaping/metering parameters or criteria 640 to help govern data flow from one or more queues 610 or other holding/storage. Providing back pressure on data coming out of the queue(s) 610 allows one or more quality of service techniques, such as priority sequencing and/or redundancy analysis, to be applied to data in the queue(s) 610.


A sequence or order of data for transmission or other routing or delivery may be determined based on one or more factors. For example, statistics 615 relating to the queue(s) 610 and/or other data storage, such as content and/or capacity information, may be used to help sequence data. One or more sequencing rules and/or criteria 620 based on message content, transmission protocol, and/or environmental/operating information may be used to help sequence the data flowing out of the queue(s) 610. Shaping/metering information, such as clocking information 630 and/or shaping parameters 640 (e.g., user- and/or system-defined shaping parameters), may be used to providing timing information to help sequence data. Data may then be sequenced and metered from the queue(s) 610 to a destination node, for example.


Thus, certain embodiments of the present invention provide systems and methods for metering and sequencing of data in a network. Certain embodiments provide a technical effect of applying back-pressure based on user defined data shaping/metering parameters to a QoS-based sequencing mechanism. Certain embodiments provide a user configurable “shaping” capability to meter a rate at which data is sequenced from priority queues and placed onto a network.


While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from its scope. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed, but that the invention will include all embodiments falling within the scope of the appended claims.

Claims
  • 1. A method for providing quality of service in data communication, said method comprising: holding data in a queue;determining a sequence of said data in said queue based on at least one sequencing criterion; andmetering a flow of said data out of said queue based on at least one metering criterion to provide a level of quality of service in communicating said data related to said at least one sequencing criterion and said at least one metering criterion.
  • 2. The method of claim 1, wherein said at least one sequencing criterion comprises at least one of content and protocol of said data.
  • 3. The method of claim 1, wherein said determining step further comprises determining said sequence based on queue statistics.
  • 4. The method of claim 1, wherein said at least one metering criterion comprises at least one of link speed and link proportion.
  • 5. The method of claim 1, wherein said network comprises a tactical data network having a bandwidth constrained by an environment in which said network operates, wherein selection of a mode for network operation is based at least in part on said environment.
  • 6. The method of claim 5, wherein said mode comprises different rules for different types of messages.
  • 7. The method of claim 1, wherein said metering step further comprises applying back pressure on said data flowing out of said queue to slow a rate of data flow below a threshold.
  • 8. The method of claim 1, wherein at least one of said at least one sequencing criterion and at least one metering criterion is user-defined.
  • 9. A computer-readable medium having a set of instructions for execution on a processing device, said set of instructions comprising: a holding routine for temporarily holding data being transmitted;a sequencing routine for determining a sequence of said data based on at least one sequencing criterion; anda metering routine for metering a flow of said data based on at least one metering criterion to provide a level of quality of service in transmitting said data related to said at least one sequencing criterion and said at least one metering criterion.
  • 10. The set of instructions of claim 9, wherein said at least one sequencing criterion comprises at least one of content and protocol of said data.
  • 11. The set of instructions of claim 9, wherein said determining step further comprises determining said sequence based on queue statistics.
  • 12. The set of instructions of claim 9, wherein said at least one metering criterion comprises at least one of link speed and link proportion.
  • 13. The set of instructions of claim 9, wherein routines operate according to a mode of operation, wherein selection of said mode of operation is based at least in part on a bandwidth constraint.
  • 14. The set of instructions of claim 13, wherein said mode comprises different rules for different types of messages.
  • 15. The set of instructions of claim 9, wherein said metering routine applies back pressure on said data to slow a rate of data flow below a threshold.
  • 16. The set of instructions of claim 9, wherein at least one of said at least one sequencing criterion and at least one metering criterion is user-defined.
  • 17. A method for providing quality of service in data communication, said method comprising: temporarily holding data being transmitted;determining a sequence of said data based at least on data priority; andmetering transmission of said data based on at least one user-specified metering criterion to provide a user-defined level of quality of service in transmitting said data related to said at least one user-specified metering criterion and said data priority.
  • 18. The method of claim 17, wherein said data priority is based on at least one of content and protocol of said data.
  • 19. The method of claim 17, wherein said at least one user-specified metering criterion comprises at least one of link speed and link proportion.
  • 20. The method of claim 1, wherein said metering step further comprises applying back pressure on said data to enable prioritization and sequencing of said data for transmission.