Method and system for transmission control protocol (TCP) traffic smoothing
Summary by NHIP
TCP Traffic Smoothing
The method controls data transmission from a TCP offload engine by scheduling packet timing based on a token count value. The system suspends transmission when the token count meets criteria, decreases the value after sending a packet, and increases it based on a determined time rate.
Claim Score by NHIP
Abstract
Various aspects of a method and system for transmission control protocol (TCP) traffic smoothing are presented. Traffic smoothing may comprise a method for controlling data transmission in a communications system that further comprises scheduling the timing of transmission of information from a TCP offload engine (TOE) based on a traffic profile. Traffic smoothing may comprise transmitting information from a TOE at a rate that is either greater than, approximately equal to, or less than, the rate at which the information was generated. Some conventional network interface cards (NIC) that utilize TOEs may not provide a mechanism that enables traffic shaping. By not providing a mechanism for traffic shaping, there may be a greater probability of lost packets in the network.

Term
Term ended
Expired 21 July 2025, 1.2 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
20 claims: 2 independent, 18 dependent
- 1Broadest claimClaim Score 86, broad(NHIP)A method, comprising:in a network interface chip: determining a token count value associated with said network interface chip;and scheduling based on said token count value, transmission of a packet to be transmitted via said network interface chip, wherein said scheduling comprises suspending said transmission when said token count value meets one or more criteria.
- 11A system, comprising:one or more circuits that are operable to determine a token count value associated with a network interface chip;and said one or more circuits are operable to schedule based on said token count value transmission of a packet to be transmitted via said network interface chip, wherein said scheduling comprises suspending said transmission when said token count value meets one or more criteria.
Independent claims2
88 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS/INCORPORATION BY REFERENCE
0001This application is a continuation of U.S. application Ser. No. 11/187,404 filed Jul. 21, 2005, which makes reference to, claims priority to, and claims the benefit of U.S. Provisional Application Ser. No. 60/673,898 filed on Apr. 22, 2005.
0002The application makes reference to:
0000U.S. application Ser. No. 10/651,459 filed Aug. 29, 2003; and
0000U.S. Provisional Application Ser. No. 60/661,064 filed Mar. 11, 2005.
0003The above referenced applications are hereby incorporated herein by reference in their entirety.
FIELD OF THE INVENTION
0004Certain embodiments of the invention relate to communication networks. More specifically, certain embodiments of the invention relate to a method and system for transmission control protocol (TCP) traffic smoothing.
BACKGROUND OF THE INVENTION
0005In some conventional network interface cards (NIC) installed in end stations, applications that utilize long lived information flows may transmit information for extended periods of time. An end station may also be referred to as a terminal. The information may be transmitted, via a network, between a transmitting terminal and a receiving terminal. The network may comprise a plurality of communications media and communications devices that facilitate the transfer of information between a transmitting terminal and a receiving terminal. Information may be transmitted via a network in structures that may be variously referred to as messages, packets, or frames. The method for transmitting the structure, that comprises the information, may be referred to as a protocol. Some transport layer data protocols may control the amount of information that may be transmitted during a time interval. The transmission control protocol (TCP) may be considered to be an example of one such protocol. TCP may limit the amount of information that is transmitted during a time interval based on a congestion window and slow start. At the beginning of transmission of an information flow, the congestion window may be set to an initial value. This may result in a relatively small amount of information being transmitted from a transmitting terminal to a receiving terminal. The receiving terminal may subsequently communicate an acknowledgement upon receipt of the information that was transmitted by the transmitting terminal.
0006Upon receipt of the acknowledgement, the transmitting terminal may increase the value associated with the congestion window to a number larger than the initial value, and transmit subsequent information based on the larger value that is associated with the congestion window. This may result in a larger amount of information being transmitted than during a comparable time interval in which the value associated with the congestion window is smaller. The size of the congestion window may increase with the increase in the value associated with the congestion window. A larger congestion window may also result in a higher information transfer rate between the transmitting terminal and the receiving terminal. The receiving terminal may communicate subsequent acknowledgements upon receipt of subsequent information. The transmitting terminal may continue to increase the size of the congestion window upon receipt of a subsequent acknowledgement.
0007In an instance in which the transmitting terminal does not receive a corresponding acknowledgement to previously transmitted information, the transmitting terminal may determine that the receiving terminal did not receive the previously transmitted information. The transmitting terminal may retransmit, or resend, previously transmitted information for which a corresponding acknowledgement was not received. In addition, the transmitting terminal may determine that congestion may exist in the network resulting in the previously transmitted information not being received by the receiving terminal. The previously transmitted information may be considered by the transmitting terminal to be “lost” in the network. In response to a determination of congestion in the network, or network congestion, the transmitting terminal may also reduce the size of the congestion window. The reduction in the size of the congestion window may result in a reduction in the information transfer rate between the transmitting terminal and the receiving terminal. Once reduced, the size of the congestion window may subsequently begin to increase once again. A maximum information transfer rate for a terminal may be determined by the speed of the NIC, which may represent the maximum rate at which the NIC may transmit or receive information via a communications media to a network.
0008As NIC speeds increase, the processing demands required to receive and transmit information at those speeds may also increase. For example, when a frame is received at receiving terminal, the NIC card in the receiving terminal may send a notification to the central processing unit (CPU) in the receiving terminal. The CPU may perform protocol related processing tasks related to the processing of received or transmitted packets. As the NIC speed increases, the number of such notifications, or interrupts, in a time interval may also increase. The volume of such interrupts may increase to the extent that the CPU is not able to perform other tasks. A user of the receiving terminal may observe degraded performance in applications, and/or in response to user input.
0009A TCP offload engine, or TOE, may comprise a technology for a TCP/IP (Internet Protocol) optimized NIC that processes TCP packets. This may result in an offload of these tasks from the CPU. An example of an application of the TOE may be in 10 Gigabit Ethernet NICs. 10 Gigabit Ethernet may comprise a standard that is specified in IEEE 802.3ae, and may define an information transfer rate of 10 gigabits per second. This rate may also be referred to as the “line rate”. In some applications, 10 Gigabit Ethernet may be utilized to provide high speed interconnection between terminals, such as personal computers and computer workstations, and computer storage devices, such as disk drives, based on the Internet small computer systems interface (iSCSI). In addition, iSCSI may be utilized to provide high speed interconnect between various devices in a network comprising end stations, such as personal computers and computer workstations, and server devices, such as world wide web (WWW) servers, email servers, and streaming media servers. In some of these applications, information may be transmitted between, for example, a computer storage device, and a computer workstation, for a time duration that is long in comparison to a typical duration of an information transfer over the network. These long time duration information transfers may be referred to as “long lived” information flows, or long lived flows.
0010A plurality of devices that are connected to a network may transmit information. The aggregate quantity of traffic generated by the plurality of devices may exceed the capacity of the network for transporting information between a transmitting terminal or end station and a receiving terminal or end station. A portion of the quantity of traffic generated may be discarded by a device within the network. Packets that comprise information that is discarded may be regarded as lost packets. As interface speeds at NICs increase, the likelihood of congestion in the network may also increase. In addition, as the number of long lived flows increases, the likelihood of network congestion may also increase.
0011Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.
BRIEF SUMMARY OF THE INVENTION
0012A system and/or method is provided for TCP traffic smoothing, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
0013These and other advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref><i>a </i>is a diagram of an exemplary network and end stations that may be utilized in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 1</figref><i>b </i>is a block diagram of an exemplary end station that may be utilized for transmission control protocol (TCP) traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 1</figref><i>c </i>is a block diagram of an exemplary end station comprising a network interface card that may be utilized for transmission control protocol (TCP) traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 2</figref><i>a </i>illustrates an exemplary packet transmission via a TCP network that may be utilized in connection with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 2</figref><i>b </i>illustrates an exemplary subsequent packet transmission via a TCP network that may be utilized in connection with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 2</figref><i>c </i>illustrates an exemplary packet discard in a TCP network that may be utilized in connection with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 3</figref><i>a </i>illustrates information transmission that is compliant with a traffic profile in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 3</figref><i>b </i>illustrates information transmission that is noncompliant with a traffic profile, and with token bucket fill in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 3</figref><i>c </i>illustrates information transmission that is noncompliant with a traffic profile, and with a full token bucket in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 3</figref><i>d </i>illustrates information transmission that is compliant with a traffic profile, and with token bucket emptying in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 4</figref> is a block diagram of an exemplary system that may be utilized to perform traffic smoothing on a per information flow basis, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 5</figref><i>a </i>is a block diagram of an exemplary system that may be utilized to perform traffic smoothing on a per class of service (COS) basis, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 5</figref><i>b </i>is a block diagram of an exemplary system that may be utilized to perform traffic smoothing on aggregate NIC traffic, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 6</figref><i>a </i>is a flow chart illustrating steps that may be utilized in an exemplary system for token bucket fill, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 6</figref><i>b </i>is a flow chart illustrating steps that may be utilized in an exemplary system for token bucket based TCP traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram illustrating ingress switch traffic smoothing, in accordance with an embodiment of the invention.
<figref idref="DRAWINGS">FIG. 8</figref> is a block diagram illustrating egress switch traffic smoothing, in accordance with an embodiment of the invention.
DETAILED DESCRIPTION OF THE INVENTION
0031Certain embodiments of the invention may be found in a method and system for TCP traffic smoothing. Traffic smoothing may comprise a method for controlling data transmission in a communications system that further comprises scheduling the timing of transmission of information from a TCP offload engine (TOE) based on a traffic profile. Traffic smoothing may comprise transmitting information from a TOE at a rate that is either greater than, approximately equal to, or less than, the rate at which the information was generated. Some conventional network interface cards (NIC) that utilize TOEs may not provide a mechanism that enables traffic shaping. By not providing a mechanism for traffic shaping, there may be a greater probability of lost packets in the network.
0032<figref idref="DRAWINGS">FIG. 1</figref><i>a </i>is a diagram of an exemplary network and end stations that may be utilized in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 1</figref><i>a </i>there is shown a network comprising a plurality of Ethernet switches <b>10</b>, <b>20</b>, <b>30</b>, <b>40</b>, and <b>50</b>, an external network <b>60</b>, and a plurality of end stations comprising computer workstations and servers. In <figref idref="DRAWINGS">FIG. 1</figref><i>a</i>, there is shown a plurality of computer workstations <b>22</b>, <b>24</b>, <b>26</b>, <b>32</b>, <b>34</b>, and <b>36</b>, in addition to a plurality of servers, comprising a database server <b>12</b>, a streaming media server <b>14</b>, a file server <b>16</b>, and a network management server <b>52</b>. Also shown is a plurality of end station to network interfaces, <b>11</b>, <b>13</b>, <b>15</b>, <b>21</b>, <b>23</b>, <b>25</b>, <b>31</b>, <b>33</b>, <b>35</b>, and <b>50</b>, and a plurality of network device to network device interfaces <b>41</b>, <b>51</b>, <b>53</b>, <b>55</b>, <b>57</b>, and <b>59</b>.
0033The computer workstations <b>22</b>, <b>24</b>, <b>26</b>, <b>32</b>, <b>34</b>, and <b>36</b> may comprise end stations that may be utilized by a user to execute programs and applications, for example, email, World Wide Web (WWW) browsers, database access programs, and media players. Computer workstation <b>22</b> may comprise a NIC that is coupled to interface <b>21</b>. Computer workstation <b>22</b> may utilize a TOE to transmit information to, or receive information from, the network, via interface <b>21</b>. Similarly, computer workstations <b>24</b>, <b>26</b>, <b>32</b>, <b>34</b>, and <b>36</b> may utilize interfaces <b>23</b>, <b>25</b>, <b>31</b>, <b>33</b>, and <b>35</b> respectively.
0034The database server <b>12</b> may store information in one or more databases. Database server <b>12</b> may comprise a NIC that is coupled to interface <b>13</b>. One or more records comprising information may be retrieved from a database and subsequently transmitted to the network via interface <b>13</b>. One or more records may be received from the network, via interface <b>13</b>, and stored in a database.
0035The streaming media server <b>14</b> may store one or more video, audio, or multimedia programs. Streaming media server <b>14</b> may comprise a NIC that is coupled to interface <b>15</b>. At least a portion of a program may be retrieved from secondary storage, and/or buffered in primary storage, and transmitted to the network via interface <b>15</b>. The time duration of the transmission via the network may be greater than, approximately equal to, or less than the time duration of the program. A program may be received from the network, via interface <b>15</b>, and stored.
0036The file server <b>16</b> may store information in one or more files. File server <b>16</b> may comprise a NIC that is coupled to interface <b>11</b>. Files may be retrieved and subsequently transmitted to the network via interface <b>11</b>. One or more files may be received from the network via interface <b>11</b>, and stored.
0037The network management server <b>52</b> may store information pertaining to the configuration and/or availability of various network communication devices and/or interfaces within the network. The network management server <b>52</b> may also store information pertaining to the configuration and/or availability of end stations and interfaces connected to those end stations. Network management server <b>52</b> may comprise a NIC that is coupled to interface <b>51</b>. The network management server <b>52</b> may be utilized to set configuration parameters that control the performance and/or behavior of network communication devices, interfaces, and/or end stations. The server <b>52</b> may utilize manage a network by utilizing a protocol such as the simple network management protocol (SNMP). The server <b>52</b> may transmit information comprising commands to set configuration parameters, or information comprising a report of current values of configuration parameters to the network via interface <b>51</b>. The server <b>52</b> may also receive information comprising requests for configuration parameters from the network via interface <b>51</b>.
0038The Ethernet switches <b>10</b>, <b>20</b>, <b>30</b>, <b>40</b>, and <b>50</b> may comprise exemplary network communications devices that may be utilized to facilitate the transfer of information between end stations that are coupled to the network. The switch <b>10</b> may comprise one or more line cards that are coupled to interfaces <b>11</b>, <b>13</b>, <b>15</b>, and <b>53</b>. The switch <b>10</b> may communicate with server <b>12</b> via interface <b>13</b>, with server <b>14</b> via interface <b>10</b>, with server <b>16</b> via interface <b>11</b>, and with switch <b>50</b> via interface <b>53</b>. The switch <b>10</b> may facilitate the transfer of information from any of the group comprising end stations <b>12</b>, <b>14</b>, and <b>16</b>, and the switch <b>50</b>, to any other end station or switch among this group.
0039The switch <b>20</b> may comprise one or more line cards that are coupled to interfaces <b>21</b>, <b>23</b>, <b>25</b>, and <b>55</b>. The switch <b>20</b> may communicate with workstation <b>22</b> via interface <b>21</b>, with workstation <b>24</b> via interface <b>23</b>, with workstation <b>26</b> via interface <b>25</b>, and with switch <b>50</b> via interface <b>55</b>. The switch <b>20</b> may facilitate the transfer of information from any of the group comprising end stations <b>22</b>, <b>24</b>, and <b>26</b>, and the switch <b>50</b>, to any other end station or switch among this group.
0040The switch <b>30</b> may comprise one or more line cards that are coupled to interfaces <b>31</b>, <b>33</b>, <b>35</b>, and <b>41</b>. The switch <b>30</b> may communicate with workstation <b>32</b> via interface <b>31</b>, with workstation <b>34</b> via interface <b>35</b>, with workstation <b>36</b> via interface <b>33</b>, and with switch <b>40</b> via interface <b>41</b>. The switch <b>30</b> may facilitate the transfer of information from any of the group comprising end stations <b>32</b>, <b>34</b>, and <b>36</b>, and the switch <b>40</b>, to any other end station or switch among this group.
0041The switch <b>30</b> may comprise one or more line cards that are coupled to interlaces <b>31</b>, <b>33</b>, <b>35</b>, and <b>41</b>. The switch <b>30</b> may communicate with workstation <b>32</b> via interface <b>31</b>, with workstation <b>34</b> via interface <b>35</b>, with workstation <b>36</b> via interface <b>33</b>, and with switch <b>40</b> via interface <b>41</b>. The switch <b>30</b> may facilitate the transfer of information from any of the group comprising end stations <b>32</b>, <b>34</b>, and <b>36</b>, and the switch <b>40</b>, to any other end station or switch among this group.
0042The switch <b>40</b> may comprise one or more line cards that are coupled to interfaces <b>41</b>, and <b>57</b>. The switch <b>40</b> may communicate with switch <b>30</b> via interface <b>41</b>, and with switch <b>50</b> via interface <b>57</b>. The switch <b>30</b> may facilitate the transfer of information from either of the group comprising switches <b>30</b> and <b>50</b>, to either other switch among this group.
0043The switch <b>50</b> may comprise one or more line cards that are coupled to interfaces <b>51</b>, <b>53</b>, <b>55</b>, <b>57</b> and <b>59</b>. The switch <b>50</b> may communicate with server <b>52</b> via interface <b>51</b>, with switch <b>10</b> via interface <b>53</b>, with switch <b>20</b> via interface <b>55</b>, with switch <b>40</b> via interface <b>57</b>, and with the external network <b>60</b> via interface <b>59</b>. The switch <b>50</b> may facilitate the transfer of information from any of the group comprising end station <b>52</b>, switches <b>10</b>, <b>20</b>, <b>40</b>, external network <b>60</b> to any other end station, switch, or external network among this group.
0044The external network <b>60</b> may comprise one or more networks that may be coupled, directly or indirectly, to interface <b>59</b>. One or more end stations may be coupled to the external network <b>60</b>.
0045In operation, the network shown in <figref idref="DRAWINGS">FIG. 1</figref><i>a </i>may comprise a communications system that enables a transmission of information between end stations that are coupled to the network. The network may also enable the end stations to transmit information to, or receive information from, an external network <b>60</b>. Network congestion may occur that may result in packets being lost. For example, the plurality of servers <b>12</b>, <b>14</b>, and <b>16</b>, and the plurality of workstations <b>22</b>, <b>24</b>, <b>26</b>, <b>32</b>, <b>34</b>, and <b>36</b> may transmit information to the external network <b>60</b> during approximately overlapping time intervals. If the aggregate line rate of interfaces <b>11</b>, <b>13</b>, and <b>15</b> is greater than the line rate of interface <b>53</b>, network congestion may occur at switch <b>10</b>. If the aggregate line rate of interfaces <b>21</b>, <b>23</b>, and <b>25</b> is greater than the line rate of interface <b>55</b>, network congestion may occur at switch <b>20</b>. If the aggregate line rate of interfaces <b>31</b>, <b>33</b>, and <b>35</b> is greater than the line rate of interface <b>41</b>, network congestion may occur at switch <b>30</b>. If the aggregate line rate of interfaces <b>53</b>, <b>55</b>, and <b>57</b> is greater than the line rate of interface <b>59</b>, network congestion may occur at switch <b>50</b>.
0046<figref idref="DRAWINGS">FIG. 1</figref><i>b </i>is a block diagram of an exemplary end station that may be utilized for transmission control protocol (TCP) traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 1</figref><i>b </i>there is shown an end system <b>100</b>, and a network interface <b>160</b>. The end system <b>100</b> may comprise a central processing unit (CPU) <b>110</b>, a memory controller <b>120</b>, a host memory <b>130</b>, a host interface <b>140</b>, and a NIC <b>150</b>. The NIC <b>150</b> may comprise a TOE or a TCP-enabled Ethernet controller (TEEC) <b>170</b>.
0047The CPU <b>110</b> may be coupled to the memory controller <b>120</b>, and to host memory <b>130</b>. The CPU <b>110</b> may comprise suitable logic, circuitry, and/or code to communicate commands and/or information packets to the memory controller <b>120</b> or to host memory <b>130</b>. The host memory <b>130</b> may be coupled to the CPU <b>110</b>, the memory controller <b>120</b>, and the host interface <b>140</b>. The host memory <b>130</b> may comprise suitable logic, circuitry, and/or code to be utilized to store, or write, and retrieve, or read, information. It may comprise a plurality of memory technologies such as random access memory (RAM). The memory controller <b>120</b> may be coupled to the CPU <b>110</b>, the host memory <b>130</b>, and to the host interface <b>140</b>. The memory controller <b>120</b> may comprise suitable logic, circuitry, and/or code to communicate commands to the host memory <b>130</b> to control writes to and/or reads from host memory <b>130</b>. The effect of control of reads from host memory may schedule the timing of reads from and/or writes to host memory <b>130</b>. The memory controller <b>130</b> may be a component in a chip set that comprises a plurality of integrated circuit devices. The host interface <b>140</b> may be coupled to the memory controller <b>120</b>, to the host memory <b>130</b>, and to the NIC <b>150</b>. The host interface <b>140</b> may comprise suitable logic, circuitry, and/or code to be utilized to communicate information being read, from host memory <b>130</b>, to the NIC <b>150</b>. The host interface <b>140</b> may also be utilized to communicate information being received, from the NIC <b>150</b>, to the host memory <b>130</b> where the information may be written. The NIC <b>150</b> may be coupled to the host interface <b>140</b> and to the network interface <b>160</b>. The NIC <b>150</b> may comprise suitable logic, circuitry, and/or code to be utilized to transmit information from the host interface <b>140</b> to a network via the interface <b>160</b>. The NIC <b>150</b> may be utilized to receive information from the network via the interface <b>160</b>, and to communicate the received information to the host interface <b>140</b>. The TOE <b>170</b> may comprise suitable logic, circuitry, and/or code to perform protocol processing and to construct one or more packets and/or one or more frames that may be utilized to transmit information to the network via the interface <b>140</b>.
0048In operation, the CPU <b>110</b> may execute steps in an application program that utilizes the TOE <b>170</b> in the NIC <b>150</b> to transmit information to a network via the interface <b>160</b>. The CPU <b>110</b> may communicate instructions that cause a computer storage device, such as a disk drive, to transfer data to the host memory <b>130</b>. The CPU <b>110</b> may subsequently communicate instructions to the memory controller <b>120</b> that causes host memory <b>130</b> to transfer the data to the host interface <b>140</b>. The host interface <b>140</b> may communicate the data to the NIC <b>150</b>. The TOE <b>170</b> within the NIC may perform protocol processing on the data to construct one or more packets and/or one or more frames that may be utilized to transmit the data across the network to a receiving terminal. The memory controller <b>120</b> may schedule the timing of reading of data from host memory <b>130</b> such that the memory controller may also schedule the timing of transmission of packets comprising the data from the TCP offload engine to the network. The memory controller <b>120</b> may utilize a traffic profile to determine a schedule. For example, a traffic profile may specify a rate at which information is to be transmitted from the TOE to the network. That rate may be greater than, approximately equal to, or less than a rate at which information is transferred from the CPU <b>110</b> to the host memory <b>130</b>. The rate may also be greater than, approximately equal to, or less than a rate at which information is transferred from a computer storage device to the host memory <b>130</b>. The rate at which information is transferred to the host memory <b>130</b> for subsequent transmission to the network via an interface <b>160</b>, may be referred to as the rate at which information was generated.
0049<figref idref="DRAWINGS">FIG. 1</figref><i>c </i>is a block diagram of an exemplary end station comprising a network interface card that may be utilized for transmission control protocol (TCP) traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 1</figref><i>c </i>there is shown an end system <b>105</b>, and a network interface <b>160</b>. The end system <b>105</b> may comprise a central processing unit (CPU) <b>110</b>, a host memory <b>130</b>, and a NIC <b>155</b>. The NIC <b>155</b> may comprise a memory controller <b>120</b>, a dedicated memory <b>135</b>, and a TOE or a TEEC <b>170</b>.
0050In comparison to <figref idref="DRAWINGS">FIG. 1</figref><i>b</i>, the memory controller <b>120</b> may be resident on the NIC in the exemplary end system illustrated in <figref idref="DRAWINGS">FIG. 1</figref><i>c</i>. This may enable at least a portion of traffic shaping to be performed by the NIC <b>155</b>. The CPU <b>110</b>, memory controller <b>120</b>, host memory <b>130</b>, and TOE <b>170</b> may be as described in connection with <figref idref="DRAWINGS">FIG. 1</figref><i>b</i>. The memory controller <b>120</b> may be coupled to the TOE <b>170</b> in <figref idref="DRAWINGS">FIG. 1</figref><i>c</i>. The dedicated memory <b>135</b> may comprise suitable logic, circuitry, and/or code to be utilized to store, or write, and retrieve, or read, information. In operation the memory controller <b>120</b> and/or TOE <b>170</b> may utilize the dedicated memory <b>135</b> to perform tasks related to traffic smoothing.
0051<figref idref="DRAWINGS">FIG. 2</figref><i>a </i>illustrates an exemplary packet transmission via a TCP network that may be utilized in connection with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 2</figref><i>a </i>there is shown an Ethernet switch <b>202</b>, a plurality of end stations <b>210</b>, and <b>220</b>, a plurality of interfaces <b>211</b>, <b>221</b>, <b>231</b>, a plurality of packets <b>216</b>, <b>226</b>, and an external network <b>234</b>. The Ethernet switch <b>202</b> may comprise memory <b>204</b>. The end station <b>210</b> may comprise a NIC <b>212</b>, and a CPU <b>214</b>. The end station <b>220</b> may comprise a NIC <b>222</b>, and a disk drive <b>224</b>.
0052The NIC <b>212</b> may utilize a protocol, such as TCP, to transmit packet <b>216</b> via interlace <b>211</b>. The NIC <b>222</b> may utilize a protocol, such as TCP, to transmit packet <b>226</b> via interface <b>221</b>. The packet <b>216</b> may comprise information that is generated by CPU <b>214</b>. The packet <b>226</b> may comprise information that is generated by disk drive <b>224</b>. The NIC <b>212</b> may be coupled to interface <b>211</b>. The NIC <b>222</b> may be coupled to interface <b>221</b>. The Ethernet switch <b>202</b> may be coupled to interfaces <b>211</b>, <b>221</b>, and <b>231</b>.
0053In operation, the end station <b>210</b> may transmit a packet <b>216</b> to a receiving end station attached to the external network <b>234</b>. The Ethernet switch <b>202</b> may receive the packet <b>216</b> via interface <b>221</b>. The Ethernet switch <b>202</b> may subsequently transmit the packet <b>216</b>, via interface <b>231</b>, to the external network <b>234</b>. Similarly, the end station <b>220</b> may transmit a packet <b>226</b> to a receiving end station attached to the external network <b>234</b> via Ethernet switch <b>202</b>. The interlaces <b>211</b>, and <b>221</b>, and <b>231</b> may be characterized by a line rate of approximately 10 gb/s. The packet <b>216</b> may comprise a plurality of binary bits that may be transmitted via interface <b>211</b> at a rate of 10 gb/s. The packet <b>216</b> may comprise a plurality of binary bits that may be transmitted via interface <b>221</b> at a rate of 10 gb/s. The packet <b>216</b> may be transmitted from the end station <b>210</b> to the Ethernet switch <b>202</b>. The received packet <b>216</b> may be stored in memory <b>204</b> at the Ethernet switch <b>202</b> prior to being forwarded to the external network <b>234</b> via interface <b>231</b>. The packet <b>226</b> may be transmitted from the end station <b>220</b> to the Ethernet switch <b>202</b>. The received packet <b>226</b> may be stored in memory <b>204</b> at the Ethernet switch <b>202</b> prior to being forwarded to the external network <b>234</b> via interface <b>231</b>.
0054<figref idref="DRAWINGS">FIG. 2</figref><i>b </i>illustrates an exemplary subsequent packet transmission via a TCP network that may be utilized in connection with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 2</figref><i>b </i>there is shown an Ethernet switch <b>202</b>, a plurality of end stations <b>210</b>, and <b>220</b>, a plurality of interfaces <b>211</b>, <b>221</b>, <b>231</b>, a plurality of packets <b>216</b>, <b>217</b>, <b>226</b>, <b>227</b> and an external network <b>234</b>. The Ethernet switch <b>202</b> may comprise memory <b>204</b>. The end station <b>210</b> may comprise a NIC <b>212</b>, and a CPU <b>214</b>. The end station <b>220</b> may comprise a NIC <b>222</b>, and a disk drive <b>224</b>.
0055In comparison to <figref idref="DRAWINGS">FIG. 2</figref><i>a</i>, <figref idref="DRAWINGS">FIG. 2</figref><i>b </i>may illustrate packet transmission at a subsequent time instant. In <figref idref="DRAWINGS">FIG. 2</figref><i>b</i>, the packets <b>216</b> and <b>226</b> may have been received by the Ethernet switch <b>202</b>, and stored in memory <b>204</b>. The packets <b>216</b> and <b>226</b> may utilize the full storage capacity of the memory <b>204</b>. The NIC <b>212</b> may not utilize traffic smoothing. After transmitting packet <b>216</b>, end station <b>210</b> may continue to transmit information at a 10 gb/s rate, subsequently transmitting packet <b>217</b> via interface <b>211</b>. The NIC <b>222</b> may not utilize traffic smoothing. After transmitting packet <b>226</b>, end station <b>220</b> may continue to transmit information at a 10 gb/s rate, subsequently transmitting packet <b>227</b> via interface <b>221</b>.
0056<figref idref="DRAWINGS">FIG. 2</figref><i>c </i>illustrates an exemplary packet discard in a TCP network that may be utilized in connection with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 2</figref><i>c </i>there is shown an Ethernet switch <b>202</b>, a plurality of end stations <b>210</b>, and <b>220</b>, a plurality of interfaces <b>211</b>, <b>221</b>, <b>231</b>, a plurality of packets <b>216</b>, <b>217</b>, <b>226</b>, <b>227</b> and an external network <b>234</b>. The Ethernet switch <b>202</b> may comprise memory <b>204</b>. The end station <b>210</b> may comprise a NIC <b>212</b>, and a CPU <b>214</b>. The end station <b>220</b> may comprise a NIC <b>222</b>, and a disk drive <b>224</b>.
0057In comparison to <figref idref="DRAWINGS">FIG. 2</figref><i>b</i>, <figref idref="DRAWINGS">FIG. 2</figref><i>c </i>may illustrate packet transmission and discard. Traffic received by the Ethernet switch <b>202</b> via interfaces <b>211</b> and <b>221</b> may be transmitted via interface <b>231</b>. The aggregate line rate of the interfaces <b>211</b> and <b>221</b> may equal approximately 20 gb/s. This aggregate line rate may be greater than the approximately 10 gb/s line rate of the interface <b>231</b>. As a result, packets may arrive at the Ethernet switch <b>202</b>, and be stored in memory <b>204</b>, at a rate that is greater than the rate at which packets may be transmitted by the Ethernet switch <b>202</b>, and retrieved from memory <b>204</b>. <figref idref="DRAWINGS">FIG. 2</figref><i>c </i>may illustrate that the packet <b>226</b> has been retrieved from memory <b>204</b> and transmitted via interface <b>231</b>. The retrieval of packet <b>226</b> from memory <b>204</b> may free space in memory for a subsequent packet. Packet <b>217</b> may be stored in memory <b>204</b>. The memory <b>204</b> may not comprise free space to receive a subsequent packet <b>227</b>. Consequently, the Ethernet switch <b>202</b> may discard packet <b>227</b>.
0058<figref idref="DRAWINGS">FIG. 3</figref><i>a </i>illustrates information transmission that is compliant with a traffic profile in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 3</figref><i>a </i>there is shown a NIC <b>302</b>. The NIC <b>302</b> may comprise a token bucket <b>304</b>, a token <b>305</b>, a TOE <b>350</b>, and a plurality of packets <b>306</b>, <b>308</b>, . . . , <b>310</b>. The packets <b>306</b>, <b>308</b>, . . . , <b>310</b> may be generated by the TOE <b>350</b>.
0059The NIC <b>302</b> may utilize a traffic profile that specifies a rate of transmission of information that is approximately equal to R bytes/second. The rate of R bytes/second may be less than the line rate for the NIC <b>302</b>. As long as the rate at which traffic was generated is approximately equal to R bytes/second, the traffic smoothing may comprise scheduling the transmitting information in packets <b>306</b>, <b>308</b>, . . . , <b>310</b> from the TOE <b>350</b> at a rate that is approximately equal to the rate at which the information was generated. At a given time instant, the state of the token bucket <b>304</b> may comprise a token <b>305</b>. Tokens may arrive in the token bucket <b>304</b> at a rate, for example a rate of R. With each arrival a corresponding token count associated with the token bucket <b>304</b> may increase. The token count may increase to a maximum value, T<sub>max</sub>. The token bucket <b>304</b> may be considered to be in a full state, or full, when the current token count value is T<sub>max</sub>. Subsequent to the transmission of the packet <b>306</b> by the TOE <b>350</b>, the number of tokens contained in the token bucket <b>304</b> may decrease. This decrease may change a corresponding token count associated with the token bucket <b>304</b>. If a current value of the token count is less than or equal to 0, the traffic shaping algorithm may inhibit the NIC <b>302</b> from transmitting a subsequent packet <b>308</b> until the token count achieves a value greater than 0. The token bucket <b>304</b> may be considered to be in an empty state, or empty, when the current token count is less than or equal to 0. If the rate at which information is generated is approximately equal to R bytes/second, then the token count associated with the token bucket <b>304</b> may be greater than 0 at time instants when packets <b>306</b>, <b>308</b>, and <b>310</b> are transmitted by the TOE <b>350</b>.
0060<figref idref="DRAWINGS">FIG. 3</figref><i>b </i>illustrates information transmission that is noncompliant with a traffic profile, and with token bucket fill in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 3</figref><i>b </i>there is shown a NIC <b>302</b>. The NIC <b>302</b> may comprise a token bucket <b>304</b>, a plurality of tokens <b>305</b>, <b>307</b>, <b>309</b>, and <b>311</b>, a TOE <b>350</b>, and a plurality of packets <b>316</b>, <b>318</b>, <b>320</b>, . . . , <b>322</b>. The packets <b>316</b>, <b>318</b>, <b>320</b>, . . . , <b>322</b> may be generated by the TOE <b>350</b>.
0061The NIC <b>302</b> may utilize a traffic profile that specifies a rate of transmission of information that is approximately equal to R bytes/second. The rate of R bytes/second may be less than the line rate for the NIC <b>302</b>. If the rate at which traffic was generated is approximately equal to Q bytes/second, where the rate Q is greater than the rate R, the traffic smoothing may comprise scheduling the transmitting information in packets <b>316</b>, <b>318</b>, <b>320</b>, . . . , <b>322</b> from the TOE <b>350</b> at a rate that is approximately equal to the rate at which the information was generated for a limited period of time. That period of time may be determined based on the state of the token bucket <b>304</b>. If packets are transmitted at the rate Q>R for a time increment, the token count may be reduced at a rate that exceeds the rate at which tokens may be replenished. At the start of transmission at the rate Q>R, the token count associated with the token bucket <b>304</b> may have achieved a value of T<sub>max</sub>. This may indicate that the token bucket <b>304</b> is full and can accept no more token arrivals. The time interval during which information may be transmitted at a rate Q>R, t<sub>burst</sub>, may be less than or equal to T<sub>max</sub>/(Q−R), for example.
0062<figref idref="DRAWINGS">FIG. 3</figref><i>c </i>illustrates information transmission that is noncompliant with a traffic profile, and with a full token bucket in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 3</figref><i>c </i>there is shown a NIC <b>302</b>. The NIC <b>302</b> may comprise a token bucket <b>304</b>, a TOE <b>350</b>, and a plurality of packets <b>318</b>, <b>320</b>, . . . , <b>322</b>, <b>324</b>. The packets <b>318</b>, <b>320</b>, . . . , <b>322</b>, <b>324</b> may be generated by the TOE <b>350</b>.
0063Continuing from the discussion of <figref idref="DRAWINGS">FIG. 3</figref><i>b</i>, if the token count associated with the token bucket <b>304</b> reaches a value that is less than or equal to 0 while the rate at which traffic is generated continues at a rate approximately equal to Q bytes/second, where the rate Q is greater than the rate R, the traffic smoothing may comprise scheduling the transmitting information in packets <b>318</b>, <b>320</b>, . . . , <b>322</b>, <b>324</b> from the TOE <b>350</b> at a rate that is less than the rate at which the information was generated. When the token bucket <b>304</b> is in an empty state, traffic smoothing may no longer permit information to be transmitted by the TOE <b>350</b> at the rate of approximately Q bytes/second. In this case, information generated for inclusion in packet <b>324</b> may not be transmitted by the TOE <b>350</b> in accordance with the schedule in which the packet <b>324</b> was generated. As a result of traffic smoothing, the transmission of packet <b>324</b> may be blocked in <figref idref="DRAWINGS">FIG. 3</figref><i>c</i>. The end system <b>105</b> that comprises the NIC <b>302</b> may be required to buffer the information in host memory <b>130</b> until it is allowed to be scheduled for transmission. The packet <b>324</b> may not be allowed to be scheduled for transmission by the TOE <b>350</b> until the token count associated with the token bucket <b>304</b> reaches a value greater than 0, and is no longer in an empty state.
0064<figref idref="DRAWINGS">FIG. 3</figref><i>d </i>illustrates information transmission that is compliant with a traffic profile, and with token bucket emptying in an exemplary NIC that may be utilized for TCP traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 3</figref><i>d </i>there is shown a NIC <b>302</b>. The NIC <b>302</b> may comprise a token bucket <b>304</b>, a plurality of tokens <b>305</b>, <b>307</b>, <b>309</b> and <b>311</b>, and a plurality of packets <b>336</b>, <b>338</b>, . . . , <b>340</b>. The packets <b>336</b>, <b>338</b>, . . . , <b>340</b> may be generated by the TOE <b>350</b>.
0065Continuing from the discussion of <figref idref="DRAWINGS">FIG. 3</figref><i>c</i>, if the rate at which traffic was generated is reduced to a rate of approximately T bytes/second, where the rate T is less than the rate R for a decrementing time increment, the rate at which tokens arrive in the token bucket <b>304</b> may be greater than the rate at which tokens are removed. As transmission continues at the rate T<R the token count associated with the token bucket <b>304</b> may increase. If at the start of a time interval, the token bucket <b>304</b> is empty, over a time interval during which the rate T<R, the state of the token bucket <b>304</b> may change as a result of the addition of a token <b>305</b>. If transmission continues at this rate for a subsequent time interval, the state of the token bucket <b>304</b> may subsequently change due to the arrival of token <b>307</b>. As transmission continues at this rate, the state of the token bucket <b>304</b> may change by the addition of token <b>309</b>, and afterwards, token <b>311</b>. With addition of tokens <b>305</b>, <b>307</b>, <b>309</b>, and <b>311</b> to the token bucket <b>304</b>, the associated token count may also increase. In various embodiments of the invention, the token count may increase until it reaches a maximum value, T<sub>max</sub>. At that point, the token bucket <b>304</b> may be full and no further token arrivals may occur while the token bucket <b>304</b> remains in a full state.
0066<figref idref="DRAWINGS">FIG. 4</figref> is a block diagram of an exemplary system that may be utilized to perform traffic smoothing on a per information flow basis, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 4</figref> there is shown a NIC <b>402</b>. The NIC <b>402</b> may comprise a traffic shaper <b>404</b>. The traffic shaper may perform traffic shaping on at least a portion of the aggregate of information flows <b>406</b> that may be transmitted by the NIC <b>402</b>. The aggregate of flows <b>406</b> may comprise a plurality of individual information flows <b>408</b>, <b>410</b>, . . . , <b>412</b>, and a plurality of traffic shapers <b>414</b>, <b>416</b>, . . . , <b>418</b>. The traffic shaper <b>414</b> may perform traffic shaping on the individual information flow <b>408</b>. The traffic shaper <b>416</b> may perform traffic shaping on the individual information flow <b>410</b>. The traffic shaper <b>418</b> may perform traffic shaping on the individual information flow <b>412</b>.
0067An information flow may be uniquely identified based on information contained in header information contained in frames and/or packets that may be generated by the TOE or higher layer protocols. The information flow may, for example, be uniquely identified based on a protocol, a source address, a destination address, a source port, a destination port and/or header fields found in higher layer protocols. A protocol may identify a protocol being utilized to transmit a packet via a network. Examples of protocol may comprise TCP, or the user datagram protocol (UDP), or iSCSI, which operates above TCP. An example of source and/or destination address is an internet protocol (IP) address. A source and/or destination port may identify an application being utilized by the transmitting end station and receiving end station that are engaged in a communication. Examples of ports may represent the hypertext transfer protocol (HTTP), the file transfer protocol (FTP), or the simple mail transfer protocol (SMTP).
0068In various embodiments of the invention, a traffic shaper <b>414</b> may utilize a traffic profile to perform traffic shaping on information transmitted in association with an information flow <b>408</b>. A subsequent traffic shaper <b>416</b> may utilize a traffic profile that is different from that of traffic shaper <b>414</b>. Traffic shaper <b>416</b> may perform traffic shaping on information transmitted in associated with an information flow <b>410</b>. For some information flows among the plurality of information flows <b>408</b>, <b>410</b>, . . . , <b>412</b>, no traffic shaping may be performed.
0069<figref idref="DRAWINGS">FIG. 5</figref><i>a </i>is a block diagram of an exemplary system that may be utilized to perform traffic smoothing on a per class of service (COS) basis, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 5</figref><i>a </i>there is shown a NIC <b>502</b>. The NIC <b>502</b> may comprise a traffic shaper <b>524</b>. The traffic shaper may perform traffic shaping on at least a portion of the aggregate of information flows <b>526</b> that may be transmitted by the NIC <b>502</b>. The aggregate of flows <b>526</b> may comprise a plurality of individual classes of service <b>528</b>, . . . , <b>528</b><i>a</i>. The class of service <b>528</b> may comprise a plurality of individual information flows <b>508</b>, <b>510</b>, . . . , <b>512</b>, and a traffic shaper <b>530</b>. The class of service <b>528</b><i>a </i>may comprise a plurality of individual information flows <b>508</b><i>a</i>, <b>510</b><i>a</i>, . . . , <b>512</b><i>a</i>, and a traffic shaper <b>530</b><i>a. </i>
0070The traffic shaper <b>530</b> may perform traffic shaping on the information transmitted among an aggregate of individual information flows <b>508</b>, <b>510</b>, . . . , <b>512</b>. The traffic shaper <b>530</b><i>a </i>may perform traffic shaping on the information transmitted among an aggregate of individual information flows <b>508</b><i>a</i>, <b>510</b><i>a</i>, . . . , <b>512</b><i>a. </i>
0071An information flow may be associated with a specific COS based on information contained in header information contained in frames and/or packets that may be generated by the TOE. The COS may be uniquely identified based on a type of service (TOS) field, for example contained in header information. A plurality of information flows may be associated with a common COS. A COS may identify information flows with common transmission characteristics. For example, a COS may identify information flows for which information is transmitted at a rate that is approximately constant. Another example of a COS may identify information flows for which information is transmitted at a rate that varies but with a specified maximum rate. A COS may also be utilized to identify information flows that utilize one or more protocols. A COS may also identify information flows for which the rate at which information is transmitted is not specified, for example.
0072In various embodiments of the invention, a traffic shaper <b>528</b> may utilize a traffic profile to perform traffic shaping on information transmitted in association with a COS <b>528</b>. The information transmitted in association with COS <b>528</b> may comprise an aggregate of the information transmitted in a plurality of information flows <b>508</b>, <b>510</b>, . . . , <b>512</b>. A subsequent traffic shaper <b>530</b><i>a </i>may utilize a traffic profile that is different from that of traffic shaper <b>530</b>. The information transmitted in association with COS <b>528</b><i>a </i>may comprise an aggregate of the information transmitted in a plurality of information flows <b>508</b><i>a</i>, <b>510</b><i>a</i>, . . . , <b>512</b><i>a</i>. For some COSs among the plurality of COSs <b>528</b>, . . . , <b>528</b><i>a</i>, no traffic shaping may be performed.
0073<figref idref="DRAWINGS">FIG. 5</figref><i>b </i>is a block diagram of an exemplary system that may be utilized to perform traffic smoothing on aggregate NIC traffic, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 5</figref><i>b </i>there is shown a NIC <b>502</b>. The NIC <b>502</b> may comprise a traffic shaper <b>544</b>. The traffic shaper may perform traffic shaping on the aggregate of information flows <b>546</b> that may be transmitted by the NIC <b>502</b>. The aggregate of flows <b>546</b> may comprise a traffic shaper <b>548</b>, a plurality of individual classes of service <b>552</b>, . . . , <b>552</b><i>a</i>. The class of service <b>552</b> may comprise a plurality of individual information flows <b>508</b>, <b>510</b>, . . . , <b>512</b>, and a traffic aggregator <b>550</b>. The traffic aggregator <b>550</b> may aggregate information transmitted among a plurality of information flows <b>508</b>, <b>510</b>, . . . , <b>512</b>. The class of service <b>552</b><i>a </i>may comprise a plurality of individual information flows <b>508</b><i>a</i>, <b>510</b><i>a</i>, . . . , <b>512</b><i>a</i>, and a traffic aggregator <b>550</b><i>a</i>. The traffic aggregator <b>550</b><i>a </i>may aggregate information transmitted among a plurality of information flows <b>508</b><i>a</i>, <b>510</b><i>a</i>, . . . , <b>512</b><i>a. </i>
0074The traffic shaper <b>548</b> may perform traffic shaping on the aggregate of information transmitted by the NIC <b>502</b> comprising an aggregate among individual COSs <b>552</b> and <b>552</b><i>a</i>, and among individual information flows <b>508</b>, <b>510</b>, . . . , <b>512</b>, <b>508</b><i>a</i>, <b>510</b><i>a</i>, . . . , <b>512</b><i>a</i>. In various embodiments of the invention, a traffic shaper <b>548</b> may utilize a traffic profile to perform traffic shaping on the aggregate of information transmitted by a NIC <b>502</b>.
0075<figref idref="DRAWINGS">FIG. 6</figref><i>a </i>is a flow chart illustrating steps that may be utilized in an exemplary system for token bucket fill, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 6</figref><i>a</i>, in step <b>602</b> state variable, T<sub>max</sub>, may be set to a determined value. The state variable Token_Cnt=0, and Token_Fill_Rate=R. The variable T<sub>max </sub>may be utilized to determine a maximum number of tokens that may be stored in the token bucket <b>304</b>. The variable Token_Cnt may be utilized to determine the current number of tokens contained in the token bucket. The variable Token_Fill_Rate may be utilized to determine a rate at which tokens may be added to the token bucket <b>304</b>.
0076At step <b>604</b> may indicate an elapse of one time unit. Step <b>606</b> may determine if the current token count value, token_cnt, has reached a maximum value, T<sub>max</sub>, for the token bucket <b>304</b>. If the current token count value, token_cnt, has reached the maximum value, T<sub>max</sub>, then step <b>604</b> may be next. If the current token count value has not reached the maximum value, T<sub>max</sub>, then the token count value, token_cnt, may be increased by a determined rate, for example, R. Thus, the token count value, token_cnt, may be increased according to: <br />Token<sub>—</sub><i>Cnt=</i>Token<sub>—</sub><i>Cnt+R</i> equation[1]<br /> Step <b>604</b> may follow.
0077<figref idref="DRAWINGS">FIG. 6</figref><i>b </i>is a flow chart illustrating steps that may be utilized in an exemplary system for token bucket based TCP traffic smoothing, in accordance with an embodiment of the invention. The process flow illustrated in <figref idref="DRAWINGS">FIG. 6</figref><i>b </i>may be performed concurrently with the process flow illustrated in <figref idref="DRAWINGS">FIG. 6</figref><i>a</i>, in various embodiments of the invention. Referring to <figref idref="DRAWINGS">FIG. 6</figref><i>b</i>, step <b>604</b> may determine whether a packet has arrived at the TOE <b>350</b> for transmission, or whether a packet previously arrived packet has been suspended due to traffic smoothing, in accordance with an embodiment of the invention. If not, the process flow may wait at step <b>612</b> until a packet has arrived. If step <b>612</b> determines that a packet has arrived or that a packet is currently suspended, step <b>614</b> may determine if the current token count value, token_cnt, is greater than 0. If not, then the token bucket may be empty. Consequently, transmission of the packet may be suspended, due to TCP traffic shaping, in step <b>620</b>. Step <b>612</b> may follow. If the token count value, token_cnt, is greater than 0, then step <b>616</b> may transmit the packet. Step <b>618</b> may decrease the of the token count value, token_cnt, in accordance with the number of binary octets contained in the data frame that may have been transmitted, for example. For example, if the transmitted packet comprises a plurality of octets, LEN, then the token count value, token_cnt, may be decreased according to: <br />Token<sub>—</sub><i>Cnt</i>=Token<sub>—</sub><i>Cnt−LEN</i> equation[2]<br /> Step <b>612</b> may follow.
0078Various embodiments of the invention may provide a method and a system for TCP traffic smoothing. By performing traffic smoothing, large bursts of traffic into a switching device within a network may be averted. This may further result in improved performance for applications that execute at devices, such as computer workstations, personal computers, and servers, which connect to the network. This may also result in lower cost switching devices by enabling a reduction in the amount of memory storage required.
0079Various embodiments of the invention may not be limited to performing traffic shaping for information transmitted utilizing the transmission control protocol (TCP). Traffic smoothing may comprise the scheduled timing of transmission of information, and may be applied to information transmitted by a TCP offload engine (TOE) for at least one class of service, or on one or more information flows. An information flow may be identified based on a protocol, a source address, a destination address, a source port, a destination port and/or at least one header field associated with higher layer protocols layers <b>5</b> through <b>7</b> of the OSI protocol reference model. A class of service may comprise one or more information flows. Traffic smoothing may also be applied to an aggregate quantity of information transmitted by a TOE comprising one or more information flows, and/or one or more classes of service. Traffic smoothing also be applied in combinations. For example, traffic smoothing may be applied to one or more information flows, and/or applied to one or more classes of service, and/or applied to an aggregate quantity of information transmitted by a TOE.
0080Various embodiments of the invention may perform traffic smoothing by determining a quantity of information transmitted by a NIC. The quantity of information transmitted may be measured based on at least a portion of the total number of bits of information that are transmitted by the NIC. For example, traffic smoothing may be performed on a quantity of information comprising one or more entire frames or packets that are transmitted by the NIC, or on a quantity of information comprising a payload portion of each of one or more entire frames or packets.
0081<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram illustrating ingress switch traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 7</figref>, there is shown an Ethernet switch <b>702</b>, an ingress port <b>704</b>, a plurality of buffer fill levels <b>706</b>, <b>708</b>, <b>710</b>, <b>712</b>, an interface <b>715</b>, and a NIC <b>722</b>. The NIC <b>722</b> may transmit information via interface <b>715</b> to the ingress port <b>704</b>. The ingress port <b>704</b> may determine a fill level, comprising buffer fill levels <b>706</b>, <b>708</b>, <b>710</b>, or <b>712</b>, for example, based upon reception the information from the NIC <b>722</b>. The fill levels <b>706</b>, <b>708</b>, <b>710</b>, and <b>712</b> may indicate corresponding buffer fill levels of ¼, ½, ¾ and FULL respectively, for example. Based on a traffic profile, and on a value of the buffer fill level, the Ethernet switch <b>702</b> may communicate a rate control message to the NIC <b>722</b>. The rate control message may instruct the NIC to reduce a rate at which information is transmitted via the interface <b>715</b>. The rate control message may instruct the NIC to reduce the rate at which information is transmitted by a rate that corresponds to the buffer fill level. For example for a buffer fill level of <b>706</b>, <b>708</b>, <b>710</b>, or <b>712</b>, the rate control message may correspondingly instruct the NIC <b>722</b> to reduce the rate at which information is transmitted by ¼, ½, ¾ or halt transmission, respectively. For buffer fill levels below buffer fill level <b>706</b>, no rate control message may be sent. For buffer fill levels between <b>706</b> and <b>708</b>, the rate control message may correspond to the fill level <b>706</b>. For buffer fill levels between <b>708</b> and <b>710</b>, the rate control message may correspond to the fill level <b>708</b>. For buffer fill levels between <b>710</b> and <b>712</b>, the rate control message may correspond to the fill level <b>710</b>. The Ethernet switch <b>702</b> may comprise a plurality of ingress ports <b>704</b>. The Ethernet switch <b>702</b> may utilize a traffic profile for one or more ingress ports <b>704</b>. The Ethernet switch <b>702</b> may comprise a plurality of ingress ports, and utilize a corresponding plurality of traffic profiles. The Ethernet switch <b>702</b> may utilize a traffic profile in conjunction with information received at the ingress port <b>704</b> in association with one or more information flows.
0082<figref idref="DRAWINGS">FIG. 8</figref> is a block diagram illustrating egress switch traffic smoothing, in accordance with an embodiment of the invention. Referring to <figref idref="DRAWINGS">FIG. 8</figref>, there is shown an Ethernet switch <b>708</b>, a plurality of ingress ports <b>814</b>, <b>816</b>, <b>818</b>, an egress port <b>804</b> a plurality of buffer fill levels <b>806</b>, <b>808</b>, <b>810</b>, <b>812</b>, a plurality of interfaces <b>815</b>, <b>817</b>, <b>819</b>, and a plurality of NICs <b>822</b>, <b>824</b>, <b>826</b>. The NIC <b>822</b> may transmit information via interface <b>815</b> to the ingress port <b>814</b>. The NIC <b>824</b> may transmit information via interface <b>817</b> to the ingress port <b>816</b>. The NIC <b>826</b> may transmit information via interface <b>819</b> to the ingress port <b>818</b>. The Ethernet switch <b>802</b> may direct information received via any of ingress ports <b>814</b>, <b>816</b>, <b>818</b>, to be transmitted via the egress port <b>804</b>. The Ethernet switch <b>802</b> may transmit information from the egress port <b>804</b> via interface <b>821</b>. The egress port <b>804</b> may determine a buffer fill level, comprising fill levels <b>806</b>, <b>808</b>, <b>810</b>, or <b>812</b>, for example, based upon reception the information from any of the ingress ports <b>814</b>, <b>816</b>, <b>818</b>. The buffer fill levels <b>806</b>, <b>808</b>, <b>810</b>, and <b>812</b> may represent buffer fill levels corresponding to the buffer fill levels <b>706</b>, <b>708</b>, <b>710</b>, and <b>712</b> respectively, for example. Based on a traffic profile, and on a value representative of the buffer fill level, the Ethernet switch <b>802</b> may communicate a rate control message to any of the NICs <b>822</b>, <b>824</b>, <b>826</b>. The rate control message may instruct the NIC to reduce a rate at which information is transmitted to the Ethernet switch via the corresponding interface. The rate control message may instruct the NIC to reduce the rate at which information is transmitted by a rate that corresponds to the buffer fill level. For example, for a buffer level of <b>806</b>, <b>808</b>, <b>810</b>, or <b>812</b>, the rate control message may correspondingly instruct a NIC to reduce the rate at which information is transmitted by ¼, ½, ¾, or halt transmission, respectively. For buffer fill levels below buffer fill level <b>806</b>, no rate control message may be sent. For buffer fill levels between <b>806</b> and <b>808</b>, the rate control message may correspond to the fill level <b>806</b>. For buffer fill levels between <b>808</b> and <b>810</b>, the rate control message may correspond to the fill level <b>808</b>. For buffer fill levels between <b>810</b> and <b>812</b>, the rate control message may correspond to the fill level <b>810</b>. The rate control message may be sent to one NIC or to a plurality of NICs based on the degree to which information transmitted by the NIC, and received at the corresponding ingress port, has contributed to the level of buffer fill at the egress port <b>804</b>.
0083The Ethernet switch <b>802</b> may comprise a plurality of egress ports <b>804</b>. The Ethernet switch <b>802</b> may utilize a traffic profile in association with one or more ingress ports <b>814</b>, <b>816</b>, <b>818</b>. The Ethernet switch <b>802</b> may comprise a plurality of ingress ports and egress ports, and utilize a corresponding plurality of traffic profiles based on combinations of ingress and egress ports. The Ethernet switch <b>802</b> may utilize a traffic profile in conjunction with information received at of the ingress ports <b>814</b>, <b>816</b>, <b>818</b>, and transmitted via an egress port <b>804</b>. The Ethernet switch <b>802</b> may utilize a traffic profile in association with one or more information flows received via an ingress port, and transmitted via an egress port.
0084Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
0085The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
0086While the present 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 present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
Contents6
19 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2022021618A1 | Cited by | United States of America | Search report |
| US11552894B2 | Cited by | United States of America | Search report |
| WO0192997A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO0219604A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| EP1469853A1 | Cites | European Patent Office (EPO) | Applicant |
| US2002034182A1 | Cites | United States of America | Applicant |
| US2002191604A1 | Cites | United States of America | Applicant |
| US2002194445A1 | Cites | United States of America | Applicant |
| US2003046330A1 | Cites | United States of America | Applicant |
| US2004037319A1 | Cites | United States of America | Applicant |
| US2004042458A1 | Cites | United States of America | Applicant |
| US2006203728A1 | Cites | United States of America | Applicant |
| US5541995A | Cites | United States of America | Applicant |
| US5588000A | Cites | United States of America | Applicant |
| US6167027A | Cites | United States of America | Search report |
| US6411621B1 | Cites | United States of America | Applicant |
| US6434620B1 | Cites | United States of America | Applicant |
| US6496481B1 | Cites | United States of America | Applicant |
| US6522628B1 | Cites | United States of America | Search report |
| US6965941B2 | Cites | United States of America | Applicant |
| US6996070B2 | Cites | United States of America | Applicant |
| US7162630B2 | Cites | United States of America | Applicant |
| US7373500B2 | Cites | United States of America | Applicant |
| US7376755B2 | Cites | United States of America | Applicant |
| US7411959B2 | Cites | United States of America | Applicant |
| US7460473B1 | Cites | United States of America | Applicant |
| US7643420B2 | Cites | United States of America | Applicant |
| US20020034182A1 | Cites | United States of America | Third party observation |
| US20020191604A1 | Cites | United States of America | Third party observation |
| US20020194445A1 | Cites | United States of America | Third party observation |
| US20030046330A1 | Cites | United States of America | Third party observation |
| US20040037319A1 | Cites | United States of America | Third party observation |
| US20040042458A1 | Cites | United States of America | Third party observation |
| US20060203728A1 | Cites | United States of America | Third party observation |
| EP1469853A2 | Cites | European Patent Office (EPO) | Third party observation |
| WO0192997 | Cites | World Intellectual Property Organization (WIPO) | Third party observation |
| WO0219604 | Cites | World Intellectual Property Organization (WIPO) | Third party observation |
| Senapathi et al, Introduction to TCP Offload Engines, downloadable at www.dell.com/powersolutions, 5 pages, 2004. | Non-patent | – | Search report |
| Boon S. Ang, "An Evaluation of an Attempt at Offloading TCP/IP Protocol Processing onto an i690RN-based iNIC", Hewlett-Packard, 33 pages, Jan. 2001. | Non-patent | – | Applicant |
| Communication with European Search Report relating to European Application No. 06003525, mailed Jul. 12, 2006. | Non-patent | – | Applicant |
| International Search Report relating to International Application No. PCT/US03/27129, Mar. 25, 2004. | Non-patent | – | Applicant |
| W. Stevens, TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms, RFC 2001 (RFC2001), (www.faqs.org.rfcs/rfc2001.html), Jan. 1997. | Non-patent | – | Applicant |
| Senapathi et al, Introduction to TCP Offload Engines, downloadable at www.dell.com/powersolutions, 5 pages, 2004. | Non-patent | – | Search report |
| Boon S. Ang, “An Evaluation of an Attempt at Offloading TCP/IP Protocol Processing onto an i690RN-based iNIC”, Hewlett-Packard, 33 pages, Jan. 2001. | Non-patent | – | Third party observation |
| Communication with European Search Report relating to European Application No. 06003525, mailed Jul. 12, 2006. | Non-patent | – | Third party observation |
| International Search Report relating to International Application No. PCT/US03/27129, Mar. 25, 2004. | Non-patent | – | Third party observation |
| W. Stevens, TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms, RFC 2001 (RFC2001), (www.faqs.org.rfcs/rfc2001.html), Jan. 1997. | Non-patent | – | Third party observation |
196 members in 6 offices
Priority claims12
| Document | Office | Kind | Date |
|---|---|---|---|
| 66106405 | United States of America | P | |
| 66106405 | United States of America | P | |
| 67389805 | United States of America | P | |
| 67389805 | United States of America | P | |
| 18740405 | United States of America | A | |
| 18740405 | United States of America | A | |
| 65240210 | United States of America | A | |
| 11187404 | – | – | – |
| US20050187404 | – | – | – |
| US20050661064P | – | – | – |
| US20050673898P | – | – | – |
| US20100652402 | – | – | – |
Members196
| Document | Office | Kind | |
|---|---|---|---|
| US2003172342A1 | United States of America | A1 | |
| EP1345382A2 | European Patent Office (EPO) | A2 | |
| EP1357721A2 | European Patent Office (EPO) | A2 | |
| EP1385313A1 | European Patent Office (EPO) | A1 | |
| US2004019689A1 | United States of America | A1 | |
| US2004034725A1 | United States of America | A1 | |
| WO2004017173A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004017220A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2004042412A1 | United States of America | A1 | |
| US2004042458A1 | United States of America | A1 | |
| US2004042464A1 | United States of America | A1 | |
| US2004042483A1 | United States of America | A1 | |
| US2004044798A1 | United States of America | A1 | |
| EP1396977A2 | European Patent Office (EPO) | A2 | |
| US2004049591A1 | United States of America | A1 | |
| WO2004021143A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004021150A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004021626A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004021627A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004021628A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2004054814A1 | United States of America | A1 | |
| EP1401172A2 | European Patent Office (EPO) | A2 | |
| US2004073622A1 | United States of America | A1 | |
| WO2004036381A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004036387A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2004036805A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2004085984A1 | United States of America | A1 | |
| US2004093411A1 | United States of America | A1 | |
| WO2004021626A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1420561A2 | European Patent Office (EPO) | A2 | |
| US2004095949A1 | United States of America | A1 | |
| US2004098369A1 | United States of America | A1 | |
| WO2004017173A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1420561A3 | European Patent Office (EPO) | A3 | |
| WO2004036387A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2004036805A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1345382A3 | European Patent Office (EPO) | A3 | |
| WO2004021628A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2004036381A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2004021143A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US2004133713A1 | United States of America | A1 | |
| EP1357721A3 | European Patent Office (EPO) | A3 | |
| US2004153578A1 | United States of America | A1 | |
| WO2004021150A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2004021627A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1460804A2 | European Patent Office (EPO) | A2 | |
| EP1460805A2 | European Patent Office (EPO) | A2 | |
| EP1460806A2 | European Patent Office (EPO) | A2 | |
| EP1460818A1 | European Patent Office (EPO) | A1 | |
| US2004184459A1 | United States of America | A1 | |
| EP1396977A3 | European Patent Office (EPO) | A3 | |
| EP1513321A2 | European Patent Office (EPO) | A2 | |
| US2005105531A1 | United States of America | A1 | |
| EP1537695A2 | European Patent Office (EPO) | A2 | |
| EP1540473A2 | European Patent Office (EPO) | A2 | |
| EP1543658A2 | European Patent Office (EPO) | A2 | |
| EP1552408A2 | European Patent Office (EPO) | A2 | |
| EP1552409A1 | European Patent Office (EPO) | A1 | |
| EP1554842A2 | European Patent Office (EPO) | A2 | |
| EP1559022A2 | European Patent Office (EPO) | A2 | |
| EP1559222A2 | European Patent Office (EPO) | A2 | |
| EP1513321A3 | European Patent Office (EPO) | A3 | |
| CN1679015A | China | A | |
| CN1679282A | China | A | |
| US2005281261A1 | United States of America | A1 | |
| US2005281262A1 | United States of America | A1 | |
| US2005281280A1 | United States of America | A1 | |
| US2005283545A1 | United States of America | A1 | |
| EP1460804A3 | European Patent Office (EPO) | A3 | |
| EP1559022A4 | European Patent Office (EPO) | A4 | |
| WO2006002126A2 | World Intellectual Property Organization (WIPO) | A2 | |
| EP1543658A4 | European Patent Office (EPO) | A4 | |
| US2006007926A1 | United States of America | A1 | |
| US2006015655A1 | United States of America | A1 | |
| EP1540473A4 | European Patent Office (EPO) | A4 | |
| EP1559222A4 | European Patent Office (EPO) | A4 | |
| EP1460806A3 | European Patent Office (EPO) | A3 | |
| WO2006002126A3 | World Intellectual Property Organization (WIPO) | A3 | |
| CN1757016A | China | A | |
| EP1460805A3 | European Patent Office (EPO) | A3 | |
| EP1385313B1 | European Patent Office (EPO) | B1 | |
| DE60307000D1 | Germany | D1 | |
| CN1832483A | China | A | |
| EP1701506A1 | European Patent Office (EPO) | A1 | |
| US2006203728A1 | United States of America | A1 | |
| EP1345382B1 | European Patent Office (EPO) | B1 | |
| EP1734720A2 | European Patent Office (EPO) | A2 | |
| DE60309527D1 | Germany | D1 | |
| TW200708008A | Taiwan Province of China | A | |
| EP1759317A2 | European Patent Office (EPO) | A2 | |
| DE60307000T2 | Germany | T2 | |
| EP1734720A3 | European Patent Office (EPO) | A3 | |
| EP1396977B1 | European Patent Office (EPO) | B1 | |
| US7224692B2 | United States of America | B2 | |
| DE60313550D1 | Germany | D1 | |
| CN1985492A | China | A | |
| DE60309527T2 | Germany | T2 | |
| EP1543658B1 | European Patent Office (EPO) | B1 | |
| US7295555B2 | United States of America | B2 | |
| US2007263630A1 | United States of America | A1 |
55 transactions on the USPTO file
Allowed after 1 non-final rejection and 1 RCE.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| Applicant has submitted new drawings to correct Corrected Papers problemsCORRDRW | CORRDRW | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Corrected PaperCPAP | CPAP | |
| Cleared by OIPE CSRL194 | L194 | |
| Preliminary AmendmentA.PE | A.PE | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
22 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Notice of allowance mailedORIGINAL CODE: MN/=.ZAAB | ZAAB | |
| Notice of allowance and fees dueORIGINAL CODE: NOAZAAA | ZAAA | |
| Notice of allowance mailedORIGINAL CODE: MN/=.ZAAB | ZAAB | |
| Notice of allowance and fees dueORIGINAL CODE: NOAZAAA | ZAAA |
Numbers
- Publication
- 08072886
- Publication, DOCDB
- 8072886
- Publication, EPODOC
- US8072886
- Application
- 12652402
- Application, DOCDB
- 65240210
- Application, EPODOC
- US20100652402
Titles
- English
- Method and system for transmission control protocol (TCP) traffic smoothing
Patent term adjustment
- Applicant delay
- −57 days
- Net adjustment
- 0 days
Classification
- CPC, 3
- H04L47/193
- H04L47/22
- H04L47/10
- IPC, 1
- H04J1 16
- USPC, 1
- 370235000