1. Field of the Invention
The invention relates to integrated data traffic communications. More particularly, the invention relates to methods and systems for integrating packet data traffic using dynamic packet fragmentation.
2. Description of the Related Art
Packet switched networks, such as the Internet Protocol, involve the use of data that is broken down into packets and labeled or otherwise provided with header or other information regarding the data origin, destination and the data's sequence within the original data file. The data packets are routed individually between communication system nodes, over shared data links, and re-assembled at the destination. The ability to integrate different kinds of packetized information, e.g., isochronous (ISO) data traffic and “best-effort” (BE) data traffic, over a shared link, often with limited bandwidth, has become increasingly important in managing data traffic in such networks.
Packets associated with isochronous data traffic are time-sensitive such that they must be delivered within certain time constraints to maintain quality. Isochronous traffic includes voice data and digital video transmission data. Other data packets that are less time constrained are considered “best-effort” (BE) packets and do not necessarily need to be delivered within a certain time period. However, in integrated packet switched networks, BE packets of variable size can hinder the ability of the network to guarantee no more than a certain amount of packet delay and delay variation for ISO packets. For example, oversized BE packets can cause relatively significant delay of ISO packets.
Conventional methods for managing integrated data traffic include frame-based time-division (FBTD) scheduling, in which time is divided into fixed-length frames, where the length of each frame is set to be equal to the ISO packet transmission period. Each frame begins with an ISO transmission interval (ITI), during which ISO packets can be delivered, and ends with a BE transmission interval (BETI), during which BE packets can be delivered. To guarantee that any delays or delay variations of ISO packets do not rise above an acceptable level, oversized BE packets that can not fit in a BETI are fragmented.
Conventional methods for fragmenting packets can be grouped into two categories: fixed size packet fragmentation and dynamic packet fragmentation. Fixed size packet fragmentation methods typically estimate the speed of the shared link, then calculate the maximum fragment size allowed that would not delay transmission of any ISO packet. The calculated maximum fragment size then is applied to all data packets to be transmitted over the shared link, e.g., by setting the maximum transmission unit (MTU) size, or by using a packet fragmenter. To ensure in-time delivery of ISO packets, the fragment size must be set to accommodate the largest possible number of active ISO sessions. Therefore, the system suffers lower efficiency when the number of active ISO sessions is relatively small.
One example of a conventional dynamic packet fragmentation method is the Next-Fit method. In this method, data packets are processed in first-in-first-out (FIFO) order. If the data packet at the head of queue fits in the BETI, the packet is delivered. If the data packet at the head of queue does not fit in the BETI, the packet either is delayed until the next available BETI, or fragmented if the size of the remaining window is greater than a certain predetermined size. Although such method makes use of dynamic fragmentation to improve efficiency, the method also may introduce unnecessary packet fragmentation, thus reducing efficiency.
In the following description, like reference numerals indicate like components to enhance the understanding of the graphics scaling method and apparatus through the description of the drawings. Also, although specific features, configurations and arrangements are discussed hereinbelow, it should be understood that such specificity is for illustrative purposes only. A person skilled in the relevant art will recognize that other steps, configurations and arrangements are useful without departing from the spirit and scope of the invention.
Referring to
The device 10 can be part of any suitable home networking product that manages the flow of data traffic in a home network. For example, in a home network arrangement in which ISO data traffic shares a broadband modem with BE data traffic, the device 10 can be part of the system configuration between the network gateway and the broadband modem. The broadband modem connects to an Internet Service Provider (ISP) or other suitable network that delivers data to the home network.
The device 10 can be partially or completely configured in the form of hardware circuitry and/or other hardware components within a larger device or group of components. Alternatively, the device 10 can be partially or completely configured in the form of software, e.g., as processing instructions and/or one or more sets of logic or computer code. In such configuration, the logic or processing instructions typically are stored in a data storage device (not shown), which typically is coupled to a processor or controller (not shown). The processor accesses the necessary instructions from the data storage device and executes the instructions or transfers the instructions to the appropriate location within the device 10.
The device 10 includes a scheduler 12 and a dynamic packet fragmenter 14 coupled to the scheduler 12. The device 10 also can include a packet queuing system (PQS) or data packet queuing system 16 and a fragment queuing system (FQS) or data fragment queuing system 18. As shown, the scheduler 12 and the dynamic packet fragmenter 14 are coupled to each of the packet queuing system 16 and the fragment queuing system 18. One or more of the scheduler 12, the dynamic packet fragmenter 14, the packet queuing system 16 and the fragment queuing system 18 can be comprised partially or completely of any suitable structure or arrangement, e.g., one or more integrated circuits. Also, it should be understood that the device 10 includes other components, hardware and software (not shown) that are used for the operation of other features and functions of the device 10 not specifically described herein.
The device 10 receives data traffic, in the form of ISO data packets and BE data packets, from an appropriate ISO data traffic source (not shown) and an appropriate BE data traffic source (not shown), respectively. Such data traffic sources can deliver the respective data packets to the device via an appropriate communications channel or network connection, e.g., via a multimedia end device, such as a voice over Internet protocol (VoIP) terminal and a personal computer. As shown, the ISO data packets typically are delivered to the scheduler 12 and the BE data packets typically are delivered to the packet queuing system 16. The device 10 outputs or transmits integrated data, via the scheduler 12, in the form of data transmission time frames, as will be discussed in greater detail hereinbelow.
Referring now to
The method 20 includes a step 21 of determining the size of a data transmission time frame in accordance with a given ISO packet transmission period. The ISO packet transmission period can be obtained through a device level signaling protocol, such as session initiation protocol (SIP). The method 20 also includes a step 22 of determining the size of the ITI in the current data transmission time frame. For example, the size of the ITI is based on the number of ISO packets currently needed to be delivered. The method 20 also includes a step 23 of defining or determining the size of BETI in the current data transmission time frame.
A diagram of a typical data transmission time frame 24 is shown in
Once the current BETI is defined, the method 20 can begin to serve or assign BE data packets to the BETI. In general, the method 20 assigns the largest available BE data packet that will fit in the currently-defined BETI from the available queues of BE data packets, as will be discussed in greater detail hereinbelow. However, if there is no available BE data packet that will fit in the current BETI, the method 20 will dynamically fragment the current BE data packet so that the first fragment will fit in and can be assigned to the current BETI. The second fragment is queued in a fragment queuing system. Then, in general, the method 20 selects the largest available BE data packet or BE fragment from the available packet queuing system for assignment to the next defined BETI. Such process continues until the BE data packets and/or the BE fragments are assigned to a given BETI, i.e., until the BE data packet queuing system and the BE fragment queuing system are empty.
The method 20 includes a step 32 of determining whether the defined BETI is greater than or equal to a minimum size. In the device 10, such step is performed by an appropriate component, e.g., the dynamic packet fragmenter 14. The minimum size can be predetermined, and typically is based on various system parameters whose values may be unique to the given method. For example, the minimum size can be based on protocol header size or implementation specific efficiency criteria. If the BETI is not greater than or equal to the minimum size, the method 20 terminates. If the BETI is greater than or equal to the minimum size, the method 20 proceeds to a step 33 of determining if the packet queuing system is empty. In the device 10, the determining step 33 can be performed by the dynamic packet fragmenter 14 or other appropriate components in the device 10.
If the packet queuing system is empty, the method 20 continues to a step 38 of determining if the BE fragment queuing system is empty, as will be discussed in greater detail hereinbelow. If the packet queuing system is not empty, the method continues to a step 34 of determining if the volume (e.g., the number of bytes) of BE data packets that have been served or assigned to a BETI is greater than a given threshold value. The volume of BE data packets served is recorded by a counter, e.g., a counter named Data Served.
In the device 10, the determining step 34 can be performed by the dynamic packet fragmenter 14 or other appropriate components in the device 10. With respect to the determining step 34, the threshold value can be predetermined, and typically is based on various system parameters whose values may be unique to the given method. For example, the system parameters may include a timeout period for packet discard.
If the volume of BE data packets that have been served or assigned to a BETI is less than or equal to the given threshold value, the method 20 continues to a step 36 of choosing the best-fit BE data packet for assignment in the BETI according to a best-fit algorithm, as will be discussed in greater detail hereinbelow. Also, if the volume of BE data packets that has been served or assigned to a BETI is greater than the given threshold value, the method 20 continues to the step 38 of determining if the BE fragment queuing system is empty, as will be discussed in greater detail hereinbelow. In the device 10, one or both of the step 36 and the step 38 can be performed by the dynamic packet fragmenter 14 or by other appropriate components in the device 10.
According to the step 38, if the BE fragment queuing system is empty, i.e., if there is no backlog of BE fragments, the method 20 resets the counter (Data Served) to zero (shown generally as 42) and the method 20 terminates. If the BE fragment queuing system is not empty, the method 20 continues to a step 44 of choosing the best-fit BE fragment for assignment in the BETI according to a best-fit algorithm. In the device 10, the choosing step 44 can be performed by the dynamic packet fragmenter 14 or by other appropriate components in the device 10.
As stated hereinabove, according to the determining step 34, if the volume of BE data packets that has been served or assigned to a BETI is less than or equal to the given threshold value, the step 36 of choosing the best-fit BE data packet according to a best-fit algorithm is performed. The BE data packet best suited for assignment to the BETI is chosen from among the available BE data packets in the packet queuing system (PQS). As shown in
The BE data packets delivered to the packet queuing system 16 are sorted or organized within one or more queue levels according to any suitable criteria, such as the size of the packet delivered to the packet queuing system 16. For example, BE data packets delivered to a particular level of the packet queuing system 16 can be queued on a first-in-first-out (FIFO) basis at that level.
For example, referring to
Referring now to
Initially, the algorithm typically starts at the first queue level of the multi-level data packet queuing system, i.e., the queue level having the largest data units. Such is shown generally as a step 52 in the flow chart 50. For example, in the queuing system 46 shown in
The flow chart 50 includes a step 54 of determining whether the size of the data unit at the head of the starting queue level is less than or equal to the size of the BETI. That is, the step 54 determines whether the data unit at the head of queue can fit in the BETI. If the data unit at the head of queue can fit in the BETI, the data packet is chosen for possible assignment in the BETI. Such is shown generally as a step 56. If the size of the data packet at the head of the starting queue level is greater than the size of the BETI, the data packet is too large for the BETI and will not be chosen. If the data packet at the head of the starting queue level is not chosen, the algorithm then determines whether all queue levels have been visited. Such determination is shown generally as a step 58.
If not all of the queue levels have been visited, the algorithm moves to or visits the next queue level. Such is shown generally as a step 62. The algorithm then returns to the step 54 of determining whether the size of the data unit at the head of the new or current queue level is less than or equal to the size of the BETI. If so, the particular data unit is chosen for possible assignment in the BETI (step 56). If not, the algorithm determines if all queue levels have been visited or approached (step 58). If not all queue levels have been visited, the algorithm moves to the next queue level (step 62) and the process cycles back to the step 54.
If no data unit has been chosen for possible assignment in the BETI and all queue levels in the packet queuing system have been visited, the data unit at the head of the first non-empty queue level is chosen for possible assignment to the BETI. Such is shown generally as a step 64. This scenario usually occurs when the data unit at the head of every queue level in the packet queuing system is too large for assignment in the BETI. As will be discussed in greater detail hereinbelow, the data unit chosen as a result of the step 64 usually will be fragmented during a subsequent step to be performed by the method 20. Once a data unit is chosen for possible assignment to the BETI, via either the step 56 or the step 64, the process terminates.
Returning again to
As a result of the packet assignment step 68, the size of the BETI, as well as the counter (Data Served) are updated accordingly. More specifically, the size of the BETI is reduced by the size of the newly assigned BE data packet, and the value of the counter (Data Served) is increased by the size of the newly assigned BE data packet. Once the packet assignment step 68 is performed, the method 20 cycles back to the step 32 of determining whether the defined BETI still is greater than or equal to a minimum size, herein previously described.
If the size of the selected BE data packet is greater than the BETI, the selected BE data packet should be fragmented. The method 20 includes a step 72 of dynamically fragmenting the selected BE data packet into a first BE fragment and a second BE fragment. The fragmenting step 72 fragments the selected BE data packet in such a way that the size of the first BE fragment is equal to the current size of the BETI.
Alternatively, the fragmenting step 72 can fragment the selected BE data packet to be smaller in size than the BETI when fragmentation results in one or more of the BE fragments having a minimum size. The minimum size can be predetermined and/or based on any suitable number of system parameters whose values may be unique to the given method, as described previously herein.
Referring now to
In the device 10, the dynamic packet fragmenter 14 performs the data packet fragmentation, e.g., the fragmenting step 72. The dynamic packet fragmenter 14 places the BE fragments in appropriate queue levels in the fragment queuing system 18. For example, the dynamic packet fragmenter 14 can transmit the first BE fragment to the scheduler 12 for assignment in the BETI. Also, the dynamic packet fragmenter 14 can transmit the second BE fragment to the fragment queuing system 18 for queuing therein.
As discussed previously herein, in conventional methods for managing integrated data packets, packets that do not fit in the BETI either are delayed or are fragmented when the current size of the BETI is greater than a predetermined size. The fragmenting step 72 in the method 20 eliminates the inefficiency associated with delaying or selectively fragmenting data packets, such as is done in many conventional methods.
As a result of the fragmenting step 72, the value of the counter (Data Served) is increased by the size of the newly assigned BE fragment. Also, since the first BE fragment is equal in size to the BETI, the size of the BETI is reduced to zero once the first BE fragment is assigned therein. After the fragmenting step 72 is performed, the method terminates.
Returning to the step 44 of the method 20, if a given volume of BE data packets has been served or if the packet queuing system is empty, the fragment queuing system is next served. That is, the method 20 performs the step 44 of choosing the best-fit BE fragment for assignment in the BETI according to a best-fit algorithm, as long as the fragment queuing system is not empty (step 38).
In the method 20, the determining step 34 provides a counter for the method 20 to keep track of the volume of BE data packets assigned to the BETI before a BE fragment is assigned. In this manner, the determining step 34 makes sure that when the first BE fragment is assigned to the BETI, the second BE fragment or subsequent fragments from that same BE fragment are assigned to the BETI within a given volume of other data packets being assigned. Thus, the entire BE data packet (in the form of two or more BE fragments) is assigned to the BETI within a given volume of data packets assigned. This improves overall system efficiency, as many system processes rely on the complete delivery of data packets before those processes can be resumed or completed.
The BE fragment choosing step 44 is performed similar to the BE data packet choosing step 36, except the algorithm is being applied to the fragment queuing system rather than to the packet queuing system. The choosing process is similar. In general, the largest BE fragment in the fragment queuing system that will fit in the BETI is selected for assignment in the BETI. As with the packet queuing system, the fragment queuing system can include a plurality of BE fragments sorted or arranged by size within a plurality of fragment queuing system levels. Within a given queue level, the BE fragments can be arranged on a FIFO basis.
Once the step 44 of selecting the best-fit BE fragment for assignment in the BETI according to the best-fit algorithm is performed, the method 20 can begin serving or assigning the selected BE fragment (or a portion thereof if the size of the fragment is greater than the size of the BETI). The method 20 includes a step 82 of determining whether the size of the selected BE fragment is greater than the current size of the BETI. If the size of the selected BE fragment is not greater than the BETI, the method 20 proceeds to a step 84 of assigning the selected BE fragment to the BETI. In the device 10, one or both of the determining step 82 and the assigning step 84 can be performed by the scheduler 12 or by one or more other appropriate components in the device 10.
As a result of the fragment assignment step 84, the size of the BETI available for future packet assignment is reduced by the size of the newly assigned fragment. Once the fragment assignment step 84 is performed, the method 20 returns to the step 32 of determining whether the defined BETI is greater than or equal to a minimum size, herein previously described, and the process of allocating the BETI to serve more fragments continues. It should be noted that the value of the counter (Data Served) is not updated because all of the fragments need to be served to guarantee timely delivery of these fragments.
If the size of the selected BE fragment is greater than the BETI, the selected BE fragment should be fragmented again. The method 20 includes a step 86 of dynamically fragmenting the selected fragment into another set of fragments, e.g., a first subfragment or first BE data subfragment and a second subfragment or second BE data subfragment. Similar to the fragmenting step 72, the fragmenting step 82 fragments the selected BE fragment in such a way that the size of the first subfragment is equal to the current size of the BETI. The fragment fragmenting step 82 assigns the first subfragment to the BETI and queues the second subfragment in the fragment queuing system 18. After the fragmenting step 82 is performed, the process terminates. It should be noted that the value of the counter (Data Served) is not updated because all of the fragments need to be served to guarantee timely delivery of these fragments.
In the device 10, the dynamic packet fragmenter 14 performs the data fragment fragmentation, e.g., the fragmenting step 86. The dynamic packet fragmenter 14 can transmit the data packet fragments to any suitable component in the device 10. For example, the dynamic packet fragmenter 14 can transmit the first BE fragment to the scheduler 12 for assignment in the BETI. Also, the dynamic packet fragmenter 14 can transmit the second BE fragment to the fragment queuing system 18 for queuing therein.
The method 20 continues in the manner described hereinabove until the packet queuing system 16 is empty or until a given amount of BE data has been assigned to the BETI (step 34). The method 20 then serves the fragment queuing system 18 until the fragment queuing system 18 is empty. Alternatively, the scheduler 12 can alternate between serving the packet queuing system 16 and serving the fragment queuing system 18 in any other suitable manner.
The method shown in
It will be apparent to those skilled in the art that many changes and substitutions can be made to the dynamic data packet fragmentation method and system herein described without departing from the spirit and scope of the invention as defined by the appended claims and their full scope of equivalents.