US20140369348A1 - Enhanced Flow Entry Table Cache Replacement in a Software-Defined Networking Switch - Google Patents

Enhanced Flow Entry Table Cache Replacement in a Software-Defined Networking Switch Download PDF

Info

Publication number
US20140369348A1
US20140369348A1 US13/919,793 US201313919793A US2014369348A1 US 20140369348 A1 US20140369348 A1 US 20140369348A1 US 201313919793 A US201313919793 A US 201313919793A US 2014369348 A1 US2014369348 A1 US 2014369348A1
Authority
US
United States
Prior art keywords
flow
list
value
values
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US13/919,793
Other versions
US9160650B2 (en
Inventor
Hong Zhang
Kalyan Das
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
FutureWei Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FutureWei Technologies Inc filed Critical FutureWei Technologies Inc
Priority to US13/919,793 priority Critical patent/US9160650B2/en
Assigned to FUTUREWEI TECHNOLOGIES, INC. reassignment FUTUREWEI TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DAS, KALYAN, ZHANG, HONG
Publication of US20140369348A1 publication Critical patent/US20140369348A1/en
Application granted granted Critical
Publication of US9160650B2 publication Critical patent/US9160650B2/en
Assigned to Huawei Cloud Computing Technologies Co., Ltd. reassignment Huawei Cloud Computing Technologies Co., Ltd. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FUTUREWEI TECHNOLOGIES, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/121Shortest path evaluation by minimising delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/023Delayed use of routing table updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/563Software download or update

Definitions

  • SDN Software-defined networking
  • a data plane data-forwarding functionality
  • a routing, resource, and other management functionality sometimes referred as a control plane
  • an SDN node e.g., a switch
  • a centralized SDN controller may provide the control plane functionality.
  • control plane functionality may be extracted from each individual switch to a centralized SDN controller, which may be remotely coupled to a plurality of switches in the SDN.
  • the SDN controller may build a flow table (sometimes referred to interchangeably as a flow entry table or flow forwarding table), which comprises a plurality of flow entries. Each flow entry comprises matching fields that classify a traffic flow and an action that should be executed on the traffic flow.
  • each switch may keep a cached copy of some or all flow entries of the flow table. A switch may forward incoming packets based on the flow entries in its cache.
  • a cache of a switch which may be called a table-miss or cache-miss.
  • the switch may either drop the packet or send the packet to the SDN controller for a forwarding decision.
  • potential delay may be introduced into routing a packet, e.g., in case an entry-miss is not as trivial as that in a non-SDN model. Packet delay may be a problem for certain application packets (e.g., voice packets) that are latency sensitive. Therefore, it is desirable to improve packet switching to minimize or reduce packet delay.
  • a flow table is maintained in a software-defined networking (SDN) switch and comprises one or more flow entries. Further, a replacement index (RI) value is computed for each of the one or more flow entries, thereby resulting in one or more RI values.
  • RI replacement index
  • computing an RI value for a flow entry is at least partially based on latency sensitivity of a forwarding path specified by the flow entry. Since different forwarding paths may carry different latency sensitivities, subsequent replacement of the one or more flow entries in the SDN switch may be performed more efficiently.
  • an SDN switch is configured to store a cached flow table comprising a plurality of flow entries, and compute an RI value for each of the plurality of flow entries resulting in a plurality of RI values, wherein computing an RI value for a flow entry is at least partially based on usage recency of the flow entry and usage frequency of the flow entry, and wherein a value of the usage frequency is updatable with reuses of the flow entry. Since the updatable usage frequency takes into account the variable nature of this parameter, subsequent replacement of the one or more flow entries in the SDN switch may be performed more efficiently.
  • an SDN controller is configured to receive a packet from a SDN switch, wherein the packet comprises a connection between a source and a destination.
  • the SDN controller determines a forwarding path for the packet, and transmits data comprising the forwarding path to the SDN switch, wherein the data comprises latency sensitivity of the packet. Due to the latency sensitivity sent to the SDN switch, the performance of cache replacement in the SDN switch can be improved.
  • FIG. 1 illustrates an example embodiment of a software-defined network (SDN).
  • SDN software-defined network
  • FIG. 2 illustrates an example embodiment of a cache replacement implementation.
  • FIG. 3 illustrates an example embodiment of a cache replacement method.
  • FIG. 4 illustrates an example embodiment of a network unit.
  • FIG. 5 illustrates an example embodiment of a computer system or network device (ND).
  • ND network device
  • a recency-based CR strategy may implement a least recently used (LRU) queue, and may replace one or more LRU entries in the queue.
  • a frequency-based CR strategy may implement a least frequently used (LFU) queue, and may replace one or more LFU entries in the queue.
  • a strategy (e.g., adaptive replacement cache mechanism) may be based on both recency and frequency.
  • This type of strategy may either implement a least recently and frequently used (LRFU) queue or two separate queues (LRU and LFU) with ghost extensions.
  • LRFU least recently and frequently used
  • LRU and LFU two separate queues
  • randomized strategies may be used, e.g., as an attempt to use the variable nature of usage frequencies.
  • existing algorithms may assign a fixed weight or a qualitative weight (e.g., high or low but no counting) to the frequency factor irrespective of the actual number of times an entry is reused. Consequently, inappropriate weights or credits may be given to cache entries that are more frequently used, vis-à-vis cache entries that are less frequently used.
  • a software-defined network (SDN)-enabled switch replacement of a flow entry may consider the latency sensitivity of a flow, the usage recency of the flow entry, and/or the usage frequency of the flow entry.
  • SDN software-defined network
  • the usage frequency may be assigned a variable or countable weight, which may be updated periodically.
  • replacement index (RI) value may be calculated for some or all flow entries of a cached flow table. A fraction of the flow entries may be referenced by a newly established eviction list, which corresponds to flow entries with the lowest RI values.
  • an entry of the eviction list having the lowest RI value may be removed from the eviction list, and a cached flow entry referenced by this entry of the eviction list may be filled with a new flow entry.
  • the eviction list may be re-created after being fully emptied, or may be continuously replenished by a background process running in a network switch.
  • FIG. 1 illustrates an example embodiment of a software-defined network (SDN) 100 , in which disclosed example embodiments may operate.
  • the network 100 comprises an SDN controller 110 and a switch 120 , although it should be understood that the network 100 may comprise any suitable number of SDN controllers and/or switches.
  • the switch 120 may be coupled to the SDN controller 110 via a control network 130 , which may be implemented as any type of network, such as the Internet.
  • the SDN controller 110 may be located in a centralized location of the network 100 and coupled to multiple switches including the switch 120 .
  • a flow table 112 may be stored in a memory inside the SDN controller 110 and may comprise a plurality of flow entries. At least a portion of the flow entries in the flow table 112 may be copied by the switch 120 and stored in a cached flow table 122 , which may reside in a memory inside the switch 120 .
  • the switch 120 may be implemented as any suitable type of switching device, such as a physical or a virtual switch, configured to route or forward a packet from an ingress port to an egress port.
  • the cached flow table 122 sometimes referred to as a flow table cache, may be implemented using any suitable data structure.
  • the switch 120 may receive incoming packets and determine their forwarding path based on the flow entries in the cached flow table 122 .
  • a switch forwarding engine 124 implemented within the switch 120 may receive a packet 140 from an ingress port of the switch 120 .
  • the packet 140 may be a formatted unit of data used in network communications and may comprise any data.
  • the switch forwarding engine 124 may interpret or read the packet 140 to obtain information regarding a source of the packet 140 and a destination of the packet 140 .
  • the source may determine an ingress port of a switch
  • the destination may determine an egress port of the switch.
  • the switch forwarding engine 124 may read the cached flow table 122 to determine whether any of its cached flow entries comprises a switching or forwarding path (e.g., an egress port or a next table to forward the packet) of the packet 140 . If the forwarding path is found in the cached flow table 122 , it is a cache hit and the switch forwarding engine 124 may then forward the packet 140 to an egress port based on the forwarding path. Otherwise, if the forwarding path is not found in the cached flow table 122 , which is a case of cache miss illustrated in FIG. 1 (dashed line shows a path of information flow), the switch forwarding engine 124 may forward the packet 140 to the SDN controller 110 through the control network 130 .
  • a switching or forwarding path e.g., an egress port or a next table to forward the packet
  • the SDN controller 110 may also read the header of the packet 140 , which may comprise its source and destination.
  • a traffic flow comprising the packet 140 may be defined by Layer 2 (L2) to L7 headers of the packet 140 , wherein source and destination information may be part of the L2-L7 headers. Then, the SDN controller 110 may find in the flow table 112 a flow entry that comprises a forwarding path for this packet flow.
  • L2 Layer 2
  • the SDN controller 110 may resolve the forwarding path based on its internal control logic, policy from its control applications, and/or instructions from an administrator of the SDN controller 110 . Further, the flow entry may comprise information of the levels of latency sensitivity. The SDN controller 110 may obtain information of a flow entry's latency sensitivity from, for example, an upper flow service manager.
  • the SDN controller 110 may send the corresponding forwarding path along with corresponding latency sensitivity information to the switch 120 , which may then accordingly forward the packet 140 . Further, the switch 120 may store this forwarding path into an entry of the cached flow table 122 , such that if a second packet belonging to the same flow arrives at a later time, the switch 120 may directly forward the second packet without going through the SDN controller 110 . In the event of a cache miss, the switch 120 may not be able to properly forward a packet until receiving a forwarding path from the SDN controller 110 . Consequently, delivery of the packet may be delayed, which is undesirable especially for latency sensitive applications, such as voice over Internet Protocol (VoIP) communication or certain financial transactions.
  • VoIP voice over Internet Protocol
  • Example embodiments of the present disclosure provide the ability to maximize a cache hit rate and/or minimize a cache miss rate. More specifically, in order to improve the efficiency of cache replacement while avoiding significant resource overhead, example embodiments incorporate a new parameter—latency sensitivity—into the CR strategy.
  • replacement of a flow entry may consider the latency sensitivity of a flow, the usage recency of the flow entry, and/or the usage frequency of the flow entry.
  • an RI value may be calculated for some or all of the flow entries of a cached flow table (e.g., the cached flow table 122 ). If the cached flow table is full, an entry with the lowest RI may be evicted to make room for a new entry.
  • usage recency is a term coined in conjunction with cache replacement algorithms. Recency may define how recently a cached entry was used or referred to by the switch. Recency can be represented by a time stamp of the most recent usage of the cached entry.
  • usage frequency (in short as “frequency”) may indicate the number of times a cache entry is referred while the entry is in the cache. When an entry is reused, the usage frequency may be incremented by one and recency may be reset to the current time.
  • latency sensitivity generally refers to a qualifier or parameter attached to a flow entry, usually when the flow entry is added to a cached flow table for the first time.
  • SDN controller e.g., the SDN controller 110
  • the value of latency sensitivity typically will not change in the SDN switch, unless the SDN controller renews or updates it. It can be seen that by taking latency sensitivity into consideration, certain latency sensitive applications or traffic flows may be given a higher chance of getting a cache hit in a cached flow table, thereby reducing their latency.
  • RI replacement index
  • recency a normalized value indicating the usage recency of a cached flow entry
  • the value range for each of these three components may be normalized or scaled to any suitable value range, e.g., as between 0 and 1, inclusive. For example, the oldest flow entry in a cached flow table has the lowest recency value, and this value may be mapped to 0, whereas the latest flow entry in the cached flow table has the highest recency value, and this value may be mapped to 1.
  • r i , f i , and l i are normalized values (e.g., between 0 to 1) of recency, frequency, and latency sensitivity parameters, respectively.
  • the normalized values r i , f i , and l i can be computed using the following formulas:
  • T oldest a time reference for the oldest flow entry in the cached flow table
  • T now current time
  • F max is an integer, greater than one, indicating an upper limit on a reference counter (i.e., F i stops incrementing after reaching F max );
  • L max is a positive integer indicating a highest latency sensitivity value.
  • each of the weights W r , W f , and W l may have any suitable value.
  • the three weights add up to one, as shown by equation (6).
  • the weights may add up to any other value, e.g., as long as they maintain their relative values with respect to each other (e.g., all values may scale up by a factor of 5).
  • the weights may be configured as:
  • the RI value can be computed for the i-th entry. Further, the same formulas (may have different values) may be used to compute RI values for some or all flow entries in a cached flow table.
  • flow entries may comprise or correspond to active connections, which may encounter continuous inflow of traffic (e.g., in the form of packets). Therefore, updating recency and frequency of all flow entries with every incoming packet may be both expensive and misguiding.
  • a continuous traffic flow which may comprise a plurality of consecutive packets from a given source for a given destination, may be considered herein as a single instance of cache hit.
  • recency and frequency values are updated when an SDN switch (e.g., the switch 120 ) encounters a new instance of the same traffic flow. For example, when the SDN switch sequentially receives two continuous traffic flows, the SDN switch may forward a first continuous traffic flow based on a forwarding path specified by a flow entry. During or after forwarding the first continuous traffic flow, the SDN switch may update the usage recency and the usage frequency resulting in a first updated value of the usage recency (e.g., set to current time stamp) and a first updated value of the usage frequency (e.g., increase by one).
  • a first updated value of the usage recency e.g., set to current time stamp
  • a first updated value of the usage frequency e.g., increase by one.
  • the SDN switch may forward a second continuous traffic flow based on the same forwarding path, and then update the usage recency and the usage frequency again resulting in a second updated value of the usage recency (e.g., set to new current time stamp) and a second updated value of the usage frequency (e.g., increase again by one).
  • a second updated value of the usage recency e.g., set to new current time stamp
  • a second updated value of the usage frequency e.g., increase again by one.
  • the flow entry for a connection with continuous traffic flow may be evicted mid-instance (or mid-session), e.g., if the flow entry has not been updated for long. Therefore, if desired, the recency and frequency values for relatively long-lasting flows may be updated periodically for multiple times, but may not be with every incoming packet.
  • the recency and frequency parameters may be updated using the same temporal interval or different intervals. Further, it is expected that for any terminated connection, a restart of traffic flow may update both the recency and frequency values, regardless or irrespective of how short the restart interval is.
  • FIG. 2 illustrates an example embodiment of a CR implementation 200 , in which an eviction list 220 is used.
  • the CR implementation 200 may be implemented by a switch (e.g., the switch 120 ) in an SDN network (e.g., the network 100 ). As shown in FIG.
  • a cached flow table comprises a plurality of flow entries 210 including an i-th entry 212 (shown as an example of the flow entries 210 ).
  • the flow entry 212 may comprise flow information, such as a source of a packet (e.g., the packet 140 ) and a destination of the packet.
  • the flow entry 212 may comprise or be attached with its CR components, which may include at least one of the three parameters—recency (denoted as T i ), frequency (denoted as F i ), and latency sensitivity (denoted as L i ).
  • a pointer (denoted as E ptr ) may be contained or attached to the flow entry 212 to point to the reference entry 222 . If the flow entry 212 is not referred to or pointed to by the eviction list 220 , the pointer E ptr value may be set to null or any arbitrary value.
  • the eviction list 220 may be implemented as a separate data structure stored in the cache of a switch, and may comprise entries that correspond to a fraction of the flow entries 210 .
  • each list entry (in short as entry) in the eviction list 220 may comprise or be attached to a pointer or table index (denoted as C ptr ), which points to one of the flow entries 210 .
  • the eviction list 220 may be maintained as a linked list in sorted order of RI values of their respective cached flow entries. For example, as shown in FIG.
  • the leftmost entry 224 in the eviction list 220 may have the highest RI value among entries in the eviction list 220
  • the rightmost entry 226 in the eviction list 220 may have the lowest RI value among entries in the eviction list 220 .
  • any flow entry not referenced by the eviction list 220 may have an RI value higher than some or all flow entries referenced by the eviction list 220 .
  • the entry 226 (with lowest RI value) is removed from the eviction list 220 .
  • the entry 226 may be removed even if some of the flow entries 210 are not full.
  • the flow data in a flow entry 216 pointed to by the entry 226 may be evicted so that the new connection may be added to the evicted flow entry 216 thereafter.
  • the eviction list 220 gets shorter.
  • the eviction list 220 may get shorter if any of the referenced flow entries gets reused while in the cached flow table.
  • the referenced flow entry may be removed from the eviction list 220 (no longer a contender for eviction), because the flow entry may be updated in terms of its recency and frequency.
  • the RI value may be recomputed consequently, which may turn out to be higher than the original highest RI value (upper bound) in the eviction list 220 .
  • entries may be removed from the eviction list 220 one by one until the eviction list 220 reduces to empty. At that point, RI may be recomputed for the entire cached flow table, and a new eviction list may be generated. The generation of a new eviction list from scratch may incur a computational complexity in the order of O(n 2 ), where n is the number of flow entries in a cached flow table. In an alternative example embodiment, once created, the eviction list 220 may be replenished continuously, which may help reduce computation complexity.
  • a flow entry e.g., the flow entry 212
  • the flow entry stays in the cached flow table, and its CR components may be updated.
  • the recency value of the flow entry 212 may get a new time stamp, and a counter counting the frequency of the flow entry 212 may be incremented by one, which leads to an increased RI value.
  • the E ptr for the flow entry 212 is not null, the increased RI value may be compared with an upper bound of RI value (e.g., the RI value corresponding to the leftmost entry 224 ) of the eviction list 220 .
  • the corresponding entry 222 may be removed from the eviction list 220 , and the E ptr value of the flow entry 212 may be reset to null. Otherwise, if the updated RI value of the flow entry 212 is still equal to or less than the current upper bound of the eviction list 220 , the corresponding entry 222 may be kept in the eviction list 220 but moved to a new position in the eviction list 220 according to the updated RI value of the flow entry 212 .
  • entries in the eviction list 220 continue to have the lowest RI values among the flow entries 210 . Further, it may be assumed that entries in the eviction list 220 continue to maintain their relative RI values (i.e., entries do not need to be re-ordered with respect to other entries in the eviction list 220 ). Both of these assumptions may be approximations of practical cases, and could be proven wrong in very rare circumstances. In practice, for a given frequency and latency sensitivity, the RI values for flow entries in a cached flow table may normally maintain their relative orders with respect to other flow entries in the same table.
  • a recomputation of RI values for some or all of the flow entries 210 may be required in order to create a new eviction list, since the new eviction list needs to have the lowest range of RI values. Recomputing all RI values may be resource-intensive and time-consuming, which may cause traffic interruption. Therefore, in some example embodiments, entries of the eviction list 220 may be continuously replenished so that the eviction list 220 , once created, does not reduce to empty.
  • a background process or application may run continuously in an SDN switch (e.g., the switch 120 ).
  • the background process may be implemented as a replenishment module or unit 230 and may be used to compute RI values following a pre-configured algorithm, e.g., in a round robin fashion.
  • the background process may be running at a relatively low priority compared to other processes (e.g., packet forwarding processes) to avoid affecting the other processes or operations.
  • the priority of the background process may be increased accordingly, so that the size of the eviction list 220 may remain unchanged or relatively stable.
  • a maximal size of the eviction list 220 may be pre-configured, e.g., as an absolute number or as a percentage of the total number of flow entries 210 in a cached flow table.
  • the RI values of some or all of the flow entries 210 may be distributed over a certain range, that is, between the lowest and highest RI values computed most recently.
  • the updated eviction list may be mapped to flow entries at the lower end of the distribution.
  • the replenishment unit 230 may count the number of flow entries starting from the lowest RI value of flow entries. When the number of flow entries reaches the pre-configured maximal size of the eviction list, the last counted flow entry will then have the upper bound of RI value in the updated eviction list.
  • FIG. 3 illustrates an example embodiment of a cache replacement method 300 , which may be implemented by a switch (e.g., the switch 120 ) in an SDN network (e.g., the network 100 ).
  • the method 300 starts in step 310 , in which the method 300 may store and maintain a flow table comprising a plurality of flow entries.
  • the method 300 may compute an RI value for each of the plurality of flow entries resulting in a plurality of RI values, wherein computing an RI value for a flow entry is at least partially based on latency sensitivity of a forwarding path specified by the flow entry.
  • the step 320 may be used to create an initial eviction list.
  • computing the RI value for the flow entry is further based on usage recency of the flow entry and usage frequency of the flow entry. Further, the usage frequency may be adjustable, e.g., incrementing by one after a reuse instance of the flow entry.
  • the method 300 may generate, based on the plurality of RI values, an eviction list comprising a pre-configured number of list entries.
  • each of the list entries refers or points to one of at least a fraction of the flow entries, wherein the fraction of the flow entries have RI values between the lowest of the plurality of RI values and an upper boundary RI value, wherein any flow entry not referenced by the eviction list has an RI value greater or equal to the upper boundary RI value.
  • the method 300 may receive a continuous traffic flow comprising a group of (one or more) packets from a source network unit.
  • the method 300 may determine whether a cache miss occurs. The cache miss occurs when a forwarding path determined by a source and a destination of the continuous traffic flow cannot be obtained from any flow entry in the flow table stored in step 310 . If the condition in the step 350 is met, the method 300 may proceed to step 360 ; otherwise, if a cache hit occurs, the method 300 may proceed to step 394 .
  • the method 300 may send at least one of the group of packets to an SDN controller (e.g., the SDN controller 110 ).
  • the SDN controller may determine a new flow entry for the received packet(s), and send back to the switch data comprising the new flow entry.
  • the new flow entry sent from the SDN controller may comprise the determined latency sensitivity of the packet(s).
  • the method 300 may receive the new flow entry corresponding to the continuous traffic flow from the SDN controller.
  • the method 300 may remove, from the eviction list, a list entry that references an existing flow entry having the lowest RI value in the eviction list.
  • the method 300 may evict the existing flow entry referenced by the removed list entry.
  • the method 300 may store the new flow entry referenced by the removed list entry.
  • the method 300 may forward the continuous traffic flow based on its corresponding forwarding path.
  • the method 300 may update a value of the usage recency and a value of the usage frequency during or after forwarding the continuous traffic flow, since a cache hit brings a reuse of a flow entry comprising the forwarding path. It should be understood that the method 300 may only serve as one example to illustrate the CR strategy or policy disclosed herein. A person of ordinary skill in the art will recognize that variations of the method 300 can be implemented. Also, the execution steps of the method 300 may be changed flexibly, if desired, as long as a following step does not depend on its preceding step.
  • the step 390 may be performed before, simultaneously with, or after the step 380 .
  • the method 300 may only include a portion of all necessary steps in implementing a CR policy, and other steps may be added accordingly. For example, recreation or replenishment of the eviction list may be needed.
  • the CR strategy disclosed herein may take the latency sensitivity into consideration, which enhances the forwarding performance of latency sensitive applications or flows. Moreover, The CR strategy disclosed herein may compute the relative strength of a cached flow entry based on its variable usage frequency, its latency sensitivity level, and the period between references (recency). Further, The CR strategy disclosed herein may not need any complex or unbounded data structures, thus adding little overhead.
  • FIG. 4 illustrates an example embodiment of a network device or unit 400 , which may be any device configured to transport packets through a network.
  • the network unit 400 may correspond to the switch 120 .
  • the network unit 400 may comprise one or more ingress ports 410 coupled to a receiver 412 (Rx), which may be configured for receiving packets or frames, objects, options, and/or type length values (TLVs) from other network components.
  • the network unit 400 may comprise a logic unit or processor 420 coupled to the receiver 412 and configured to process the packets or otherwise determine which network components to send the packets.
  • the processor 420 may be implemented using hardware, or a combination of hardware and software.
  • the network unit 400 may further comprise a memory 422 , which may be a memory configured to store a flow table, or a cache memory configured to store a cached flow table.
  • the network unit 400 may also comprise one or more egress ports 430 coupled to a transmitter 432 (Tx), which may be configured for transmitting packets or frames, objects, options, and/or TLVs to other network components.
  • Tx transmitter 432
  • the ingress ports 410 and the egress ports 430 may be co-located or may be considered different functionalities of the same ports that are coupled to transceivers (Rx/Tx).
  • the processor 420 , the memory 422 , the receiver 412 , and the transmitter 432 may also be configured to implement or support any of the schemes and methods described above, such as the CR implementation 200 and the CR method 300 .
  • a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design.
  • a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an application specific integrated circuit (ASIC), because for large production runs the hardware implementation may be less expensive than the software implementation.
  • ASIC application specific integrated circuit
  • a design may be developed and tested in a software form and later transformed, by well-known design rules, to an equivalent hardware implementation in an application specific integrated circuit that hardwires the instructions of the software.
  • a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus.
  • FIG. 5 illustrates an example embodiment of a computer system or network device (ND) 500 suitable for implementing one or more embodiments of the systems and methods disclosed herein, such as the SDN controller 110 .
  • ND network device
  • the ND 500 includes a processor 502 that is in communication with memory devices including secondary storage 504 , read only memory (ROM) 506 , random access memory (RAM) 508 , input/output (I/O) devices 510 , and transmitter/receiver 512 .
  • the processor 502 may be implemented as one or more central processor unit (CPU) chips, cores (e.g., a multi-core processor), field-programmable gate arrays (FPGAs), ASICs, and/or digital signal processors (DSPs).
  • the processor 502 may be configured to implement any of the schemes described herein, including the CR implementation 200 and the CR method 300 .
  • the processor 502 may be implemented using hardware or a combination of hardware and software.
  • the secondary storage 504 is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if the RAM 508 is not large enough to hold all working data.
  • the secondary storage 504 may be used to store programs that are loaded into the RAM 508 when such programs are selected for execution.
  • the ROM 506 is used to store instructions and perhaps data that are read during program execution.
  • the ROM 506 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of the secondary storage 504 .
  • the RAM 508 is used to store volatile data and perhaps to store instructions. Access to both the ROM 506 and the RAM 508 is typically faster than to the secondary storage 504 .
  • the transmitter/receiver 512 may serve as an output and/or input device of the ND 500 .
  • the transmitter/receiver 512 may transmit data out of the ND 500 .
  • the transmitter/receiver 512 may receive data into the ND 500 .
  • the transmitter/receiver 512 may include one or more optical transmitters, one or more optical receivers, one or more electrical transmitters, and/or one or more electrical receivers.
  • the transmitter/receiver 512 may take the form of modems, modem banks, Ethernet cards, universal serial bus (USB) interface cards, serial interfaces, token ring cards, fiber distributed data interface (FDDI) cards, and/or other well-known network devices.
  • the transmitter/receiver 512 may enable the processor 502 to communicate with an Internet or one or more intranets.
  • the I/O devices 510 may be optional or may be detachable from the rest of the ND 500 .
  • the I/O devices 510 may include a video monitor, liquid crystal display (LCD), touch screen display, or other type of display.
  • the I/O devices 510 may also include one or more keyboards, mice, or track balls, or other well-known input devices.
  • the network unit 400 Similar to the network unit 400 , it is understood that by programming and/or loading executable instructions onto the ND 500 , at least one of the processor 502 , the secondary storage 504 , the RAM 508 , and the ROM 506 are changed, transforming the ND 500 in part into a particular machine or apparatus (e.g. an SDN controller or switch having the functionality taught by the present disclosure).
  • the executable instructions may be stored on the secondary storage 504 , the ROM 506 , and/or the RAM 508 and loaded into the processor 502 for execution.
  • Any processing of the present disclosure may be implemented by causing a processor (e.g., a general purpose CPU) to execute a computer program.
  • a computer program product can be provided to a computer or a network device using any type of non-transitory computer readable media.
  • the computer program product may be stored in a non-transitory computer readable medium in the computer or the network device.
  • Non-transitory computer readable media include any type of tangible storage media. Examples of non-transitory computer readable media include magnetic storage media (such as floppy disks, magnetic tapes, hard disk drives, etc.), optical magnetic storage media (e.g.
  • the computer program product may also be provided to a computer or a network device using any type of transitory computer readable media.
  • Examples of transitory computer readable media include electric signals, optical signals, and electromagnetic waves. Transitory computer readable media can provide the program to a computer via a wired communication line (e.g. electric wires, and optical fibers) or a wireless communication line.
  • R R l +k*(R u ⁇ R l ), wherein k is a variable ranging from 1 percent to 100 percent with a 1 percent increment, i.e., k is 1 percent, 2 percent, 3 percent, 4 percent, 5 percent, . . . , 50 percent, 51 percent, 52 percent, . . . , 95 percent, 96 percent, 97 percent, 98 percent, 99 percent, or 100 percent.
  • any numerical range defined by two R numbers as defined in the above is also specifically disclosed.

Abstract

In a network switch of a software-defined network (SDN) architecture, a method for improving cache replacement (CR) efficiency implemented therein, the method comprising maintaining a flow table comprising a plurality of flow entries, computing a replacement index (RI) value for each of the plurality of flow entries resulting in a plurality of RI values, wherein computing an RI value for a flow entry is at least partially based on latency sensitivity of a forwarding path specified by the flow entry, and generating, based on at least some of the computed RI values, an eviction list comprising a number of list entries, wherein each of the list entries points to one of at least a fraction of the flow entries.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • Not applicable.
  • STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
  • Not applicable.
  • REFERENCE TO A MICROFICHE APPENDIX
  • Not applicable.
  • BACKGROUND
  • Modern communication networks comprise network nodes, such as routers, switches, bridges, and other devices, that transport data through the networks. Over the years, the networks have become increasingly complex, leading to inter-woven webs of network nodes. As a result, node vendors have struggled to customize, optimize, and improve the performance of the nodes. Software-defined networking (SDN) is an emerging network technology that may improve customization, optimization, and improvement of networks. SDN may simplify networks by decoupling data-forwarding functionality (sometimes referred as a data plane) from a routing, resource, and other management functionality (sometimes referred as a control plane). As a result, while traditional network nodes may provide both the data plane functionality and the control plane functionality, an SDN node (e.g., a switch) may provide the data plane functionality and a centralized SDN controller may provide the control plane functionality.
  • In an SDN architecture, the control plane functionality may be extracted from each individual switch to a centralized SDN controller, which may be remotely coupled to a plurality of switches in the SDN. On one hand, the SDN controller may build a flow table (sometimes referred to interchangeably as a flow entry table or flow forwarding table), which comprises a plurality of flow entries. Each flow entry comprises matching fields that classify a traffic flow and an action that should be executed on the traffic flow. On the other hand, each switch may keep a cached copy of some or all flow entries of the flow table. A switch may forward incoming packets based on the flow entries in its cache.
  • Sometimes, no flow entry can be found in a cache of a switch, which may be called a table-miss or cache-miss. In this case, the switch may either drop the packet or send the packet to the SDN controller for a forwarding decision. Since in SDN architecture, the control plane and the data plane are put into different devices and they communicate via a network, potential delay may be introduced into routing a packet, e.g., in case an entry-miss is not as trivial as that in a non-SDN model. Packet delay may be a problem for certain application packets (e.g., voice packets) that are latency sensitive. Therefore, it is desirable to improve packet switching to minimize or reduce packet delay.
  • SUMMARY
  • In one example embodiment, a flow table is maintained in a software-defined networking (SDN) switch and comprises one or more flow entries. Further, a replacement index (RI) value is computed for each of the one or more flow entries, thereby resulting in one or more RI values. In this example embodiment, computing an RI value for a flow entry is at least partially based on latency sensitivity of a forwarding path specified by the flow entry. Since different forwarding paths may carry different latency sensitivities, subsequent replacement of the one or more flow entries in the SDN switch may be performed more efficiently.
  • In another example embodiment, an SDN switch is configured to store a cached flow table comprising a plurality of flow entries, and compute an RI value for each of the plurality of flow entries resulting in a plurality of RI values, wherein computing an RI value for a flow entry is at least partially based on usage recency of the flow entry and usage frequency of the flow entry, and wherein a value of the usage frequency is updatable with reuses of the flow entry. Since the updatable usage frequency takes into account the variable nature of this parameter, subsequent replacement of the one or more flow entries in the SDN switch may be performed more efficiently.
  • In yet another example embodiment, an SDN controller is configured to receive a packet from a SDN switch, wherein the packet comprises a connection between a source and a destination. The SDN controller determines a forwarding path for the packet, and transmits data comprising the forwarding path to the SDN switch, wherein the data comprises latency sensitivity of the packet. Due to the latency sensitivity sent to the SDN switch, the performance of cache replacement in the SDN switch can be improved.
  • These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
  • FIG. 1 illustrates an example embodiment of a software-defined network (SDN).
  • FIG. 2 illustrates an example embodiment of a cache replacement implementation.
  • FIG. 3 illustrates an example embodiment of a cache replacement method.
  • FIG. 4 illustrates an example embodiment of a network unit.
  • FIG. 5 illustrates an example embodiment of a computer system or network device (ND).
  • DETAILED DESCRIPTION
  • It should be understood at the outset that, although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
  • The cache memory in a switch is limited in storage capacity, thus at some point, a cached flow table in the cache memory will be fully filled. Consequently, existing flow entries need to be replaced by new flow entries, e.g., through eviction of the existing flow entry, and filling-in of the new entry. Various cache replacement (CR) strategies or policies have been used in existing CR strategies. In a first example, a recency-based CR strategy may implement a least recently used (LRU) queue, and may replace one or more LRU entries in the queue. In a second example, a frequency-based CR strategy may implement a least frequently used (LFU) queue, and may replace one or more LFU entries in the queue. In a third example, a strategy (e.g., adaptive replacement cache mechanism) may be based on both recency and frequency. This type of strategy may either implement a least recently and frequently used (LRFU) queue or two separate queues (LRU and LFU) with ghost extensions. In a fourth example, randomized strategies may be used, e.g., as an attempt to use the variable nature of usage frequencies. When both recency and frequency factors are incorporated in a CR strategy, existing algorithms may assign a fixed weight or a qualitative weight (e.g., high or low but no counting) to the frequency factor irrespective of the actual number of times an entry is reused. Consequently, inappropriate weights or credits may be given to cache entries that are more frequently used, vis-à-vis cache entries that are less frequently used.
  • Disclosed herein are example embodiments that may improve the efficiency of CR while avoiding significant resource overhead. According to an example embodiment, in a software-defined network (SDN)-enabled switch, replacement of a flow entry may consider the latency sensitivity of a flow, the usage recency of the flow entry, and/or the usage frequency of the flow entry. By taking a new parameter—latency sensitivity—into consideration, certain latency sensitive applications or traffic flows may be given a higher chance of getting a cache hit in a cached flow table, thereby reducing their latency. Also, the usage frequency may be assigned a variable or countable weight, which may be updated periodically. To use this strategy, replacement index (RI) value may be calculated for some or all flow entries of a cached flow table. A fraction of the flow entries may be referenced by a newly established eviction list, which corresponds to flow entries with the lowest RI values.
  • In an embodiment of a CR operation, an entry of the eviction list having the lowest RI value may be removed from the eviction list, and a cached flow entry referenced by this entry of the eviction list may be filled with a new flow entry. The eviction list may be re-created after being fully emptied, or may be continuously replenished by a background process running in a network switch.
  • FIG. 1 illustrates an example embodiment of a software-defined network (SDN) 100, in which disclosed example embodiments may operate. For illustrative purposes, the network 100 comprises an SDN controller 110 and a switch 120, although it should be understood that the network 100 may comprise any suitable number of SDN controllers and/or switches. The switch 120 may be coupled to the SDN controller 110 via a control network 130, which may be implemented as any type of network, such as the Internet.
  • The SDN controller 110 may be located in a centralized location of the network 100 and coupled to multiple switches including the switch 120. A flow table 112 may be stored in a memory inside the SDN controller 110 and may comprise a plurality of flow entries. At least a portion of the flow entries in the flow table 112 may be copied by the switch 120 and stored in a cached flow table 122, which may reside in a memory inside the switch 120. The switch 120 may be implemented as any suitable type of switching device, such as a physical or a virtual switch, configured to route or forward a packet from an ingress port to an egress port. The cached flow table 122, sometimes referred to as a flow table cache, may be implemented using any suitable data structure.
  • In use, the switch 120 may receive incoming packets and determine their forwarding path based on the flow entries in the cached flow table 122. As shown in FIG. 1, a switch forwarding engine 124 implemented within the switch 120 may receive a packet 140 from an ingress port of the switch 120. The packet 140 may be a formatted unit of data used in network communications and may comprise any data. The switch forwarding engine 124 may interpret or read the packet 140 to obtain information regarding a source of the packet 140 and a destination of the packet 140. In some example embodiments, the source may determine an ingress port of a switch, and the destination may determine an egress port of the switch.
  • Then, the switch forwarding engine 124 may read the cached flow table 122 to determine whether any of its cached flow entries comprises a switching or forwarding path (e.g., an egress port or a next table to forward the packet) of the packet 140. If the forwarding path is found in the cached flow table 122, it is a cache hit and the switch forwarding engine 124 may then forward the packet 140 to an egress port based on the forwarding path. Otherwise, if the forwarding path is not found in the cached flow table 122, which is a case of cache miss illustrated in FIG. 1 (dashed line shows a path of information flow), the switch forwarding engine 124 may forward the packet 140 to the SDN controller 110 through the control network 130.
  • Upon reception of the packet 140 from the switch 120, the SDN controller 110 may also read the header of the packet 140, which may comprise its source and destination. In an example embodiment, a traffic flow comprising the packet 140 may be defined by Layer 2 (L2) to L7 headers of the packet 140, wherein source and destination information may be part of the L2-L7 headers. Then, the SDN controller 110 may find in the flow table 112 a flow entry that comprises a forwarding path for this packet flow. Note that if this entry is not present in the flow table 112, e.g., if a new connection is added to the SDN, the SDN controller 110 may resolve the forwarding path based on its internal control logic, policy from its control applications, and/or instructions from an administrator of the SDN controller 110. Further, the flow entry may comprise information of the levels of latency sensitivity. The SDN controller 110 may obtain information of a flow entry's latency sensitivity from, for example, an upper flow service manager.
  • The SDN controller 110 may send the corresponding forwarding path along with corresponding latency sensitivity information to the switch 120, which may then accordingly forward the packet 140. Further, the switch 120 may store this forwarding path into an entry of the cached flow table 122, such that if a second packet belonging to the same flow arrives at a later time, the switch 120 may directly forward the second packet without going through the SDN controller 110. In the event of a cache miss, the switch 120 may not be able to properly forward a packet until receiving a forwarding path from the SDN controller 110. Consequently, delivery of the packet may be delayed, which is undesirable especially for latency sensitive applications, such as voice over Internet Protocol (VoIP) communication or certain financial transactions.
  • Example embodiments of the present disclosure provide the ability to maximize a cache hit rate and/or minimize a cache miss rate. More specifically, in order to improve the efficiency of cache replacement while avoiding significant resource overhead, example embodiments incorporate a new parameter—latency sensitivity—into the CR strategy. In an example embodiment, in an SDN-enabled switch (e.g., the switch 120), replacement of a flow entry may consider the latency sensitivity of a flow, the usage recency of the flow entry, and/or the usage frequency of the flow entry. In order to use this strategy, an RI value may be calculated for some or all of the flow entries of a cached flow table (e.g., the cached flow table 122). If the cached flow table is full, an entry with the lowest RI may be evicted to make room for a new entry.
  • As used herein, the term “usage recency” (in short as “recency”) is a term coined in conjunction with cache replacement algorithms. Recency may define how recently a cached entry was used or referred to by the switch. Recency can be represented by a time stamp of the most recent usage of the cached entry.
  • Similarly, usage frequency (in short as “frequency”) may indicate the number of times a cache entry is referred while the entry is in the cache. When an entry is reused, the usage frequency may be incremented by one and recency may be reset to the current time.
  • On the other hand, latency sensitivity generally refers to a qualifier or parameter attached to a flow entry, usually when the flow entry is added to a cached flow table for the first time. When evaluating a proper path for an incoming flow, the value of latency sensitivity may be assigned by an SDN controller (e.g., the SDN controller 110) and then sent from the SDN controller to the SDN switch. The value of latency sensitivity typically will not change in the SDN switch, unless the SDN controller renews or updates it. It can be seen that by taking latency sensitivity into consideration, certain latency sensitive applications or traffic flows may be given a higher chance of getting a cache hit in a cached flow table, thereby reducing their latency.
  • When calculating a replacement index (RI) of a cached flow entry, a weight may be assigned to one or more of the three parameters, which are also referred to as replacement components. In an example embodiment, RI is computed using the following formula:

  • RI=recency*W r+frequency*W f+LS*W l   (1)
  • where recency=a normalized value indicating the usage recency of a cached flow entry,
      • frequency=a normalized value indicating the usage frequency of the flow entry,
      • LS=a normalized value indicating the latency sensitivity of a connection represented by the flow entry,
      • Wr=a weight assigned to the flow entry's recency and may have any value between 0 and 1, inclusive,
      • Wf=a weight assigned to the flow entry's frequency and may have any value between 0 and 1, and
      • Wl=a weight assigned to the flow entry's latency sensitivity and may have any value between 0 and 1.
  • The value range for each of these three components (recency, frequency, and LS) may be normalized or scaled to any suitable value range, e.g., as between 0 and 1, inclusive. For example, the oldest flow entry in a cached flow table has the lowest recency value, and this value may be mapped to 0, whereas the latest flow entry in the cached flow table has the highest recency value, and this value may be mapped to 1.
  • Specifically, for an i-th entry (i is an entry index) in a cached flow table that has recency=Ti, frequency=Fi, and latency sensitivity=Li, its RI can be computed as:

  • RIi =W r *r i +W f *f i +W l *l i   (2)
  • where ri, fi, and li are normalized values (e.g., between 0 to 1) of recency, frequency, and latency sensitivity parameters, respectively.
  • In an example embodiment, the normalized values ri, fi, and li can be computed using the following formulas:

  • r i=(T i —T oldest)/(T now —T oldest)   (3)
  • where Toldest=a time reference for the oldest flow entry in the cached flow table, Tnow=current time, and Tnow>Toldest

  • f i=(F i)/(F max)   (4)
  • where Fmax is an integer, greater than one, indicating an upper limit on a reference counter (i.e., Fi stops incrementing after reaching Fmax);

  • l i=(L i,/(L max))   (5)
  • where Lmax is a positive integer indicating a highest latency sensitivity value.
  • Note that each of the weights Wr, Wf, and Wl may have any suitable value. In an example embodiment, the three weights add up to one, as shown by equation (6). Although it should be understood that the weights may add up to any other value, e.g., as long as they maintain their relative values with respect to each other (e.g., all values may scale up by a factor of 5).

  • W r +W f +W l=100%   (6)
  • For example, the weights may be configured as:

  • W r =W f =W l=1/3   (7)
  • It can be seen that by combining some of the above formulas, such as formulas (2)-(5) and (7), the RI value can be computed for the i-th entry. Further, the same formulas (may have different values) may be used to compute RI values for some or all flow entries in a cached flow table.
  • In a cached flow table, flow entries may comprise or correspond to active connections, which may encounter continuous inflow of traffic (e.g., in the form of packets). Therefore, updating recency and frequency of all flow entries with every incoming packet may be both expensive and misguiding. For practical purposes, a continuous traffic flow, which may comprise a plurality of consecutive packets from a given source for a given destination, may be considered herein as a single instance of cache hit.
  • In an example embodiment, recency and frequency values are updated when an SDN switch (e.g., the switch 120) encounters a new instance of the same traffic flow. For example, when the SDN switch sequentially receives two continuous traffic flows, the SDN switch may forward a first continuous traffic flow based on a forwarding path specified by a flow entry. During or after forwarding the first continuous traffic flow, the SDN switch may update the usage recency and the usage frequency resulting in a first updated value of the usage recency (e.g., set to current time stamp) and a first updated value of the usage frequency (e.g., increase by one). Further, after forwarding the first continuous traffic flow, the SDN switch may forward a second continuous traffic flow based on the same forwarding path, and then update the usage recency and the usage frequency again resulting in a second updated value of the usage recency (e.g., set to new current time stamp) and a second updated value of the usage frequency (e.g., increase again by one).
  • However, it should be noted that there is a chance that the flow entry for a connection with continuous traffic flow may be evicted mid-instance (or mid-session), e.g., if the flow entry has not been updated for long. Therefore, if desired, the recency and frequency values for relatively long-lasting flows may be updated periodically for multiple times, but may not be with every incoming packet.
  • Moreover, the recency and frequency parameters may be updated using the same temporal interval or different intervals. Further, it is expected that for any terminated connection, a restart of traffic flow may update both the recency and frequency values, regardless or irrespective of how short the restart interval is.
  • As mentioned previously, the present disclosure may enable simplified implementation, which may avoid the computation of RI values for flow entries in the cache during cache replacement operations. Instead, a smaller list of flow entries, referred to herein as an “eviction list”, is created to hold references to a fraction of flow entries that have a low range of RI values among all the flow entries. FIG. 2 illustrates an example embodiment of a CR implementation 200, in which an eviction list 220 is used. The CR implementation 200 may be implemented by a switch (e.g., the switch 120) in an SDN network (e.g., the network 100). As shown in FIG. 2, a cached flow table comprises a plurality of flow entries 210 including an i-th entry 212 (shown as an example of the flow entries 210). The flow entry 212 may comprise flow information, such as a source of a packet (e.g., the packet 140) and a destination of the packet. In addition, the flow entry 212 may comprise or be attached with its CR components, which may include at least one of the three parameters—recency (denoted as Ti), frequency (denoted as Fi), and latency sensitivity (denoted as Li). Further, if there is any entry of the eviction list 220, such as an entry 222, that points or refers to the flow entry 212, a pointer (denoted as Eptr) may be contained or attached to the flow entry 212 to point to the reference entry 222. If the flow entry 212 is not referred to or pointed to by the eviction list 220, the pointer Eptr value may be set to null or any arbitrary value.
  • The eviction list 220 may be implemented as a separate data structure stored in the cache of a switch, and may comprise entries that correspond to a fraction of the flow entries 210. In the CR implementation 200, each list entry (in short as entry) in the eviction list 220 may comprise or be attached to a pointer or table index (denoted as Cptr), which points to one of the flow entries 210. The eviction list 220 may be maintained as a linked list in sorted order of RI values of their respective cached flow entries. For example, as shown in FIG. 2, the leftmost entry 224 in the eviction list 220 may have the highest RI value among entries in the eviction list 220, while the rightmost entry 226 in the eviction list 220 may have the lowest RI value among entries in the eviction list 220. Note that any flow entry not referenced by the eviction list 220 may have an RI value higher than some or all flow entries referenced by the eviction list 220.
  • In an example embodiment of a CR operation, when all of the flow entries 210 are full and a new connection needs to be added to the flow entries 210, the entry 226 (with lowest RI value) is removed from the eviction list 220. Although, it should be understood throughout this disclosure and by one of ordinary skill in the art that, in some cases, the entry 226 may be removed even if some of the flow entries 210 are not full. Further, to complete the CR operation, the flow data in a flow entry 216 pointed to by the entry 226, may be evicted so that the new connection may be added to the evicted flow entry 216 thereafter.
  • It can be seen that with each eviction operation, the eviction list 220 gets shorter. In addition, the eviction list 220 may get shorter if any of the referenced flow entries gets reused while in the cached flow table. In such cases, the referenced flow entry may be removed from the eviction list 220 (no longer a contender for eviction), because the flow entry may be updated in terms of its recency and frequency. The RI value may be recomputed consequently, which may turn out to be higher than the original highest RI value (upper bound) in the eviction list 220.
  • Various approaches may be used herein to replenish the eviction list 220. In an example embodiment, entries may be removed from the eviction list 220 one by one until the eviction list 220 reduces to empty. At that point, RI may be recomputed for the entire cached flow table, and a new eviction list may be generated. The generation of a new eviction list from scratch may incur a computational complexity in the order of O(n2), where n is the number of flow entries in a cached flow table. In an alternative example embodiment, once created, the eviction list 220 may be replenished continuously, which may help reduce computation complexity.
  • In a cached flow table, when a flow entry (e.g., the flow entry 212) is reused, the flow entry stays in the cached flow table, and its CR components may be updated. For example, the recency value of the flow entry 212 may get a new time stamp, and a counter counting the frequency of the flow entry 212 may be incremented by one, which leads to an increased RI value. Further, if the Eptr for the flow entry 212 is not null, the increased RI value may be compared with an upper bound of RI value (e.g., the RI value corresponding to the leftmost entry 224) of the eviction list 220. If the updated RI value of the flow entry 212 is higher than the current upper bound of the eviction list 220, the corresponding entry 222 may be removed from the eviction list 220, and the Eptr value of the flow entry 212 may be reset to null. Otherwise, if the updated RI value of the flow entry 212 is still equal to or less than the current upper bound of the eviction list 220, the corresponding entry 222 may be kept in the eviction list 220 but moved to a new position in the eviction list 220 according to the updated RI value of the flow entry 212.
  • To simplify implementation, in some example embodiments, it may be assumed that, after repeated recomputation of RI values, entries in the eviction list 220 continue to have the lowest RI values among the flow entries 210. Further, it may be assumed that entries in the eviction list 220 continue to maintain their relative RI values (i.e., entries do not need to be re-ordered with respect to other entries in the eviction list 220). Both of these assumptions may be approximations of practical cases, and could be proven wrong in very rare circumstances. In practice, for a given frequency and latency sensitivity, the RI values for flow entries in a cached flow table may normally maintain their relative orders with respect to other flow entries in the same table. It is possible that, when recency value approaches zero (flow entry not used for the longest time), two flow entries with different frequency values may end up exchanging their orders if their RI values are recomputed. However, this occasion may be rare and may have very little or no impact on the overall effectiveness of disclosed CR schemes and implementations.
  • As mentioned previously, if the eviction list 220 shrinks to empty after multiple CR operations, a recomputation of RI values for some or all of the flow entries 210 may be required in order to create a new eviction list, since the new eviction list needs to have the lowest range of RI values. Recomputing all RI values may be resource-intensive and time-consuming, which may cause traffic interruption. Therefore, in some example embodiments, entries of the eviction list 220 may be continuously replenished so that the eviction list 220, once created, does not reduce to empty.
  • To accomplish continuous replenishment of the eviction list 220, a background process or application may run continuously in an SDN switch (e.g., the switch 120). The background process may be implemented as a replenishment module or unit 230 and may be used to compute RI values following a pre-configured algorithm, e.g., in a round robin fashion. In use, the background process may be running at a relatively low priority compared to other processes (e.g., packet forwarding processes) to avoid affecting the other processes or operations. However, if the eviction list 220 is losing entries faster that replenishing them (i.e., size of the eviction lists 220 decreases), the priority of the background process may be increased accordingly, so that the size of the eviction list 220 may remain unchanged or relatively stable.
  • In use, a maximal size of the eviction list 220 may be pre-configured, e.g., as an absolute number or as a percentage of the total number of flow entries 210 in a cached flow table. At any point in time, the RI values of some or all of the flow entries 210 may be distributed over a certain range, that is, between the lowest and highest RI values computed most recently. To locate the upper boundary RI value of an updated eviction list, the updated eviction list may be mapped to flow entries at the lower end of the distribution. The replenishment unit 230 may count the number of flow entries starting from the lowest RI value of flow entries. When the number of flow entries reaches the pre-configured maximal size of the eviction list, the last counted flow entry will then have the upper bound of RI value in the updated eviction list.
  • FIG. 3 illustrates an example embodiment of a cache replacement method 300, which may be implemented by a switch (e.g., the switch 120) in an SDN network (e.g., the network 100). The method 300 starts in step 310, in which the method 300 may store and maintain a flow table comprising a plurality of flow entries.
  • In step 320, the method 300 may compute an RI value for each of the plurality of flow entries resulting in a plurality of RI values, wherein computing an RI value for a flow entry is at least partially based on latency sensitivity of a forwarding path specified by the flow entry. The step 320 may be used to create an initial eviction list. In an example embodiment, computing the RI value for the flow entry is further based on usage recency of the flow entry and usage frequency of the flow entry. Further, the usage frequency may be adjustable, e.g., incrementing by one after a reuse instance of the flow entry.
  • In step 330, the method 300 may generate, based on the plurality of RI values, an eviction list comprising a pre-configured number of list entries. In an example embodiment, each of the list entries refers or points to one of at least a fraction of the flow entries, wherein the fraction of the flow entries have RI values between the lowest of the plurality of RI values and an upper boundary RI value, wherein any flow entry not referenced by the eviction list has an RI value greater or equal to the upper boundary RI value.
  • In step 340, the method 300 may receive a continuous traffic flow comprising a group of (one or more) packets from a source network unit. In step 350, the method 300 may determine whether a cache miss occurs. The cache miss occurs when a forwarding path determined by a source and a destination of the continuous traffic flow cannot be obtained from any flow entry in the flow table stored in step 310. If the condition in the step 350 is met, the method 300 may proceed to step 360; otherwise, if a cache hit occurs, the method 300 may proceed to step 394.
  • In step 360, the method 300 may send at least one of the group of packets to an SDN controller (e.g., the SDN controller 110). The SDN controller may determine a new flow entry for the received packet(s), and send back to the switch data comprising the new flow entry. The new flow entry sent from the SDN controller may comprise the determined latency sensitivity of the packet(s). In step 370, the method 300 may receive the new flow entry corresponding to the continuous traffic flow from the SDN controller. In step 380, the method 300 may remove, from the eviction list, a list entry that references an existing flow entry having the lowest RI value in the eviction list. In step 390, the method 300 may evict the existing flow entry referenced by the removed list entry. In step 392, the method 300 may store the new flow entry referenced by the removed list entry.
  • If a cache hit occurs in step 350, in step 394, the method 300 may forward the continuous traffic flow based on its corresponding forwarding path. In step 396, the method 300 may update a value of the usage recency and a value of the usage frequency during or after forwarding the continuous traffic flow, since a cache hit brings a reuse of a flow entry comprising the forwarding path. It should be understood that the method 300 may only serve as one example to illustrate the CR strategy or policy disclosed herein. A person of ordinary skill in the art will recognize that variations of the method 300 can be implemented. Also, the execution steps of the method 300 may be changed flexibly, if desired, as long as a following step does not depend on its preceding step. For example, the step 390 may be performed before, simultaneously with, or after the step 380. Further, the method 300 may only include a portion of all necessary steps in implementing a CR policy, and other steps may be added accordingly. For example, recreation or replenishment of the eviction list may be needed.
  • The CR strategy disclosed herein may take the latency sensitivity into consideration, which enhances the forwarding performance of latency sensitive applications or flows. Moreover, The CR strategy disclosed herein may compute the relative strength of a cached flow entry based on its variable usage frequency, its latency sensitivity level, and the period between references (recency). Further, The CR strategy disclosed herein may not need any complex or unbounded data structures, thus adding little overhead.
  • FIG. 4 illustrates an example embodiment of a network device or unit 400, which may be any device configured to transport packets through a network. For instance, the network unit 400 may correspond to the switch 120. The network unit 400 may comprise one or more ingress ports 410 coupled to a receiver 412 (Rx), which may be configured for receiving packets or frames, objects, options, and/or type length values (TLVs) from other network components. The network unit 400 may comprise a logic unit or processor 420 coupled to the receiver 412 and configured to process the packets or otherwise determine which network components to send the packets. The processor 420 may be implemented using hardware, or a combination of hardware and software.
  • The network unit 400 may further comprise a memory 422, which may be a memory configured to store a flow table, or a cache memory configured to store a cached flow table. The network unit 400 may also comprise one or more egress ports 430 coupled to a transmitter 432 (Tx), which may be configured for transmitting packets or frames, objects, options, and/or TLVs to other network components. Note that, in practice, there may be bidirectional traffic processed by the network unit 400, thus some ports may both receive and transmit packets. In this sense, the ingress ports 410 and the egress ports 430 may be co-located or may be considered different functionalities of the same ports that are coupled to transceivers (Rx/Tx). The processor 420, the memory 422, the receiver 412, and the transmitter 432 may also be configured to implement or support any of the schemes and methods described above, such as the CR implementation 200 and the CR method 300.
  • It is understood that by programming and/or loading executable instructions onto the network unit 400, at least one of the processor 420 and the memory 422 are changed, transforming the network unit 400 in part into a particular machine or apparatus (e.g. an SDN switch having the functionality taught by the present disclosure). The executable instructions may be stored on the memory 422 and loaded into the processor 420 for execution. It is fundamental to the electrical engineering and software engineering arts that functionality that can be implemented by loading executable software into a computer can be converted to a hardware implementation by well-known design rules. Decisions between implementing a concept in software versus hardware typically hinge on considerations of stability of the design and numbers of units to be produced rather than any issues involved in translating from the software domain to the hardware domain. Generally, a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design. Generally, a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an application specific integrated circuit (ASIC), because for large production runs the hardware implementation may be less expensive than the software implementation. Often a design may be developed and tested in a software form and later transformed, by well-known design rules, to an equivalent hardware implementation in an application specific integrated circuit that hardwires the instructions of the software. In the same manner, as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus.
  • The schemes described above may be implemented on a network component, such as a computer or network component with sufficient processing power, memory resources, and network throughput capability to handle the necessary workload placed upon it. FIG. 5 illustrates an example embodiment of a computer system or network device (ND) 500 suitable for implementing one or more embodiments of the systems and methods disclosed herein, such as the SDN controller 110.
  • The ND 500 includes a processor 502 that is in communication with memory devices including secondary storage 504, read only memory (ROM) 506, random access memory (RAM) 508, input/output (I/O) devices 510, and transmitter/receiver 512. Although illustrated as a single processor, the processor 502 is not so limited and may comprise multiple processors. The processor 502 may be implemented as one or more central processor unit (CPU) chips, cores (e.g., a multi-core processor), field-programmable gate arrays (FPGAs), ASICs, and/or digital signal processors (DSPs). The processor 502 may be configured to implement any of the schemes described herein, including the CR implementation 200 and the CR method 300. The processor 502 may be implemented using hardware or a combination of hardware and software.
  • The secondary storage 504 is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if the RAM 508 is not large enough to hold all working data. The secondary storage 504 may be used to store programs that are loaded into the RAM 508 when such programs are selected for execution. The ROM 506 is used to store instructions and perhaps data that are read during program execution. The ROM 506 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of the secondary storage 504. The RAM 508 is used to store volatile data and perhaps to store instructions. Access to both the ROM 506 and the RAM 508 is typically faster than to the secondary storage 504.
  • The transmitter/receiver 512 (sometimes referred to as a transceiver) may serve as an output and/or input device of the ND 500. For example, if the transmitter/receiver 512 is acting as a transmitter, it may transmit data out of the ND 500. If the transmitter/receiver 512 is acting as a receiver, it may receive data into the ND 500. Further, the transmitter/receiver 512 may include one or more optical transmitters, one or more optical receivers, one or more electrical transmitters, and/or one or more electrical receivers. The transmitter/receiver 512 may take the form of modems, modem banks, Ethernet cards, universal serial bus (USB) interface cards, serial interfaces, token ring cards, fiber distributed data interface (FDDI) cards, and/or other well-known network devices. The transmitter/receiver 512 may enable the processor 502 to communicate with an Internet or one or more intranets. The I/O devices 510 may be optional or may be detachable from the rest of the ND 500. The I/O devices 510 may include a video monitor, liquid crystal display (LCD), touch screen display, or other type of display. The I/O devices 510 may also include one or more keyboards, mice, or track balls, or other well-known input devices.
  • Similar to the network unit 400, it is understood that by programming and/or loading executable instructions onto the ND 500, at least one of the processor 502, the secondary storage 504, the RAM 508, and the ROM 506 are changed, transforming the ND 500 in part into a particular machine or apparatus (e.g. an SDN controller or switch having the functionality taught by the present disclosure). The executable instructions may be stored on the secondary storage 504, the ROM 506, and/or the RAM 508 and loaded into the processor 502 for execution.
  • Any processing of the present disclosure may be implemented by causing a processor (e.g., a general purpose CPU) to execute a computer program. In this case, a computer program product can be provided to a computer or a network device using any type of non-transitory computer readable media. The computer program product may be stored in a non-transitory computer readable medium in the computer or the network device. Non-transitory computer readable media include any type of tangible storage media. Examples of non-transitory computer readable media include magnetic storage media (such as floppy disks, magnetic tapes, hard disk drives, etc.), optical magnetic storage media (e.g. magneto-optical disks), compact disc ROM (CD-ROM), compact disc recordable (CD-R), compact disc rewritable (CD-R/W), digital versatile disc (DVD), Blu-ray (registered trademark) disc (BD), and semiconductor memories (such as mask ROM, programmable ROM (PROM), erasable PROM), flash ROM, and RAM). The computer program product may also be provided to a computer or a network device using any type of transitory computer readable media. Examples of transitory computer readable media include electric signals, optical signals, and electromagnetic waves. Transitory computer readable media can provide the program to a computer via a wired communication line (e.g. electric wires, and optical fibers) or a wireless communication line.
  • At least one embodiment is disclosed and variations, combinations, and/or modifications of the embodiment(s) and/or features of the embodiment(s) made by a person having ordinary skill in the art are within the scope of the disclosure. Alternative embodiments that result from combining, integrating, and/or omitting features of the embodiment(s) are also within the scope of the disclosure. Where numerical ranges or limitations are expressly stated, such express ranges or limitations may be understood to include iterative ranges or limitations of like magnitude falling within the expressly stated ranges or limitations (e.g., from about 1 to about 10 includes, 2, 3, 4, etc.; greater than 0.10 includes 0.11, 0.12, 0.13, etc.). For example, whenever a numerical range with a lower limit, Rl, and an upper limit, Ru, is disclosed, any number falling within the range is specifically disclosed. In particular, the following numbers within the range are specifically disclosed: R=Rl+k*(Ru−Rl), wherein k is a variable ranging from 1 percent to 100 percent with a 1 percent increment, i.e., k is 1 percent, 2 percent, 3 percent, 4 percent, 5 percent, . . . , 50 percent, 51 percent, 52 percent, . . . , 95 percent, 96 percent, 97 percent, 98 percent, 99 percent, or 100 percent. Moreover, any numerical range defined by two R numbers as defined in the above is also specifically disclosed. The use of the term “about” means +/−10% of the subsequent number, unless otherwise stated. Use of the term “optionally” with respect to any element of a claim means that the element is required, or alternatively, the element is not required, both alternatives being within the scope of the claim. Use of broader terms such as comprises, includes, and having may be understood to provide support for narrower terms such as consisting of, consisting essentially of, and comprised substantially of Accordingly, the scope of protection is not limited by the description set out above but is defined by the claims that follow, that scope including all equivalents of the subject matter of the claims. Each and every claim is incorporated as further disclosure into the specification and the claims are embodiment(s) of the present disclosure. The discussion of a reference in the disclosure is not an admission that it is prior art, especially any reference that has a publication date after the priority date of this application. The disclosure of all patents, patent applications, and publications cited in the disclosure are hereby incorporated by reference, to the extent that they provide exemplary, procedural, or other details supplementary to the disclosure.
  • While several embodiments have been provided in the present disclosure, it may be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
  • In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and may be made without departing from the spirit and scope disclosed herein.

Claims (20)

We claim:
1. In a network switch of a software-defined network (SDN) architecture, a method for improving cache replacement (CR) efficiency implemented therein, the method comprising:
maintaining a flow table comprising one or more flow entries;
computing a replacement index (RI) value for each of the one or more flow entries resulting in one or more RI values, wherein computing an RI value for a flow entry is at least partially based on latency sensitivity of a forwarding path specified by the flow entry; and
generating, based on at least some of the computed RI values, an eviction list comprising a number of list entries, wherein each of the list entries points to one of at least a fraction of the flow entries.
2. The method of claim 1, wherein computing the RI value for the flow entry is further based on usage recency of the flow entry and usage frequency of the flow entry.
3. The method of claim 2, further comprising:
forwarding a first continuous traffic flow based on the forwarding path specified by the flow entry;
updating the usage recency and the usage frequency resulting in a first updated value of the usage recency and a first updated value of the usage frequency;
after forwarding the first continuous traffic flow, forwarding a second continuous traffic flow based on the forwarding path; and
updating the usage recency and the usage frequency again resulting in a second updated value of the usage recency and a second updated value of the usage frequency.
4. The method of claim 2, further comprising:
periodically updating the usage recency at a first temporal interval; and
periodically updating the usage frequency at a second temporal interval that is no shorter than the first temporal interval.
5. The method of claim 2, wherein the fraction of the flow entries have RI values between the lowest of the computed RI values and an upper boundary RI value, wherein any flow entry not referenced by the eviction list has an RI value greater or equal to the upper boundary RI value.
6. The method of claim 5, further comprising:
removing, from the eviction list, a list entry that references a flow entry having the lowest of the fraction of RI values; and
evicting a forwarding path from the flow entry referenced by the removed list entry.
7. The method of claim 6, further comprising:
repeatedly removing, from the eviction list, a list entry that references a flow entry having a currently lowest RI value, until the eviction list becomes empty;
after the eviction list becomes empty, recomputing an RI value for each of the one or more flow entries resulting in a second set of RI values; and
generating, based on the second set of RI values, a new eviction list comprising the same number of list entries as the eviction list, wherein any flow entry not referenced by the new eviction list has an RI value greater or equal to the upper boundary RI value referenced by the second eviction list.
8. The method of claim 6, further comprising:
recomputing RI values for at least some of the flow entries that are not referenced by the eviction list; and
replenishing the eviction list by adding at least one flow entry into the eviction list such that the eviction list does not reduce to empty, wherein the at least one flow entry have recomputed RI values not greater than the upper boundary RI value.
9. The method of claim 8, wherein recomputing the RI values and replenishing the eviction list are implemented by a background process continuously running in the network switch.
10. A computer program product comprising computer executable instructions stored on a non-transitory computer readable medium such that when executed by a processor cause a switch to:
maintain a cached flow table comprising a plurality of flow entries;
compute a replacement index (RI) value for each of the plurality of flow entries resulting in a plurality of RI values, wherein computing an RI value for a flow entry is at least partially based on usage recency of the flow entry and usage frequency of the flow entry, wherein a value of the usage frequency is updatable with reuses of the flow entry; and
generate, based on at least some of the computed RI values, an eviction list comprising a number of list entries, wherein each of the list entries points to one of a fraction of the flow entries.
11. The method of claim 10, wherein computing the RI value for the flow entry is further based on latency sensitivity of the forwarding path.
12. The computer program product of claim 11, further comprising instructions that cause the switch to:
forward a first continuous traffic flow based on the forwarding path specified by the flow entry;
update the usage recency and the usage frequency resulting in a first updated value of the usage recency and a first updated value of the usage frequency;
after forwarding the first continuous traffic flow, forward a second continuous traffic flow based on the forwarding path; and
update the usage recency and the usage frequency again resulting in a second updated value of the usage recency and a second updated value of the usage frequency.
13. The computer program product of claim 11, further comprising instructions that cause the switch to:
periodically update the usage recency at a first temporal interval; and
periodically update the usage frequency at a second temporal interval that is no shorter than the first temporal interval.
14. The computer program product of claim 11, wherein the fraction of the flow entries have RI values between the lowest of the plurality of RI values and an upper boundary RI value, wherein any flow entry not referenced by the eviction list has an RI value greater or equal to the upper boundary RI value.
15. The computer program product of claim 14, further comprising instructions that cause the switch to:
remove, from the eviction list, a list entry that references a flow entry having the lowest of the fraction of RI values; and
evict the forwarding path from the flow entry having the lowest of the plurality of RI values.
16. The computer program product of claim 15, further comprising instructions that cause the switch to:
repeatedly removing, from the eviction list, a list entry that references a flow entry having a currently lowest RI value, until the eviction list becomes empty;
after the eviction list becomes empty, recompute an RI value for each of the plurality of flow entries resulting in second plurality of RI values; and
generate, based on the second plurality of RI values, a new eviction list comprising the same number of list entries as the eviction list, wherein any flow entry not referenced by the new eviction list has an RI value greater or equal to the upper boundary RI value referenced by the second eviction list.
17. The computer program product of claim 15, further comprising instructions that cause the switch to:
recompute RI values for at least some of the flow entries that are not referenced by the eviction list; and
replenish the eviction list by adding one or more flow entries into the eviction list such that the eviction list does not reduce to empty, wherein the one or more flow entries have recomputed RI values not greater than the upper boundary RI value.
18. The computer program product of claim 17, wherein recomputing the RI values and replenishing the eviction list are implemented by a background process continuously running in the computer program product.
19. A method implemented by a software-defined network (SDN) controller, the method comprising:
receiving a packet from a switch, wherein the packet comprises a connection between a source and a destination;
determining a forwarding path for the packet; and
transmitting data comprising the forwarding path to the switch, wherein the data comprises latency sensitivity of the packet.
20. The method of claim 19, wherein a level of the latency sensitivity is determined based on an application corresponding to the packet.
US13/919,793 2013-06-17 2013-06-17 Enhanced flow entry table cache replacement in a software-defined networking switch Active 2033-11-05 US9160650B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/919,793 US9160650B2 (en) 2013-06-17 2013-06-17 Enhanced flow entry table cache replacement in a software-defined networking switch

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/919,793 US9160650B2 (en) 2013-06-17 2013-06-17 Enhanced flow entry table cache replacement in a software-defined networking switch

Publications (2)

Publication Number Publication Date
US20140369348A1 true US20140369348A1 (en) 2014-12-18
US9160650B2 US9160650B2 (en) 2015-10-13

Family

ID=52019175

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/919,793 Active 2033-11-05 US9160650B2 (en) 2013-06-17 2013-06-17 Enhanced flow entry table cache replacement in a software-defined networking switch

Country Status (1)

Country Link
US (1) US9160650B2 (en)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150169451A1 (en) * 2013-12-13 2015-06-18 Nicira, Inc. Dynamically Adjusting the Number of Flows Allowed in a Flow Table Cache
US20150169457A1 (en) * 2013-12-13 2015-06-18 Nicira, Inc. Installing and Managing Flows in a Flow Table Cache
US20150281125A1 (en) * 2014-03-31 2015-10-01 Nicira, Inc. Caching of service decisions
CN105187325A (en) * 2015-10-27 2015-12-23 上海斐讯数据通信技术有限公司 SDN flow table management method, SDN flow table management system and switchboard
US20160028620A1 (en) * 2014-07-28 2016-01-28 Alcatel-Lucent Usa Inc. Software-defined networking controller cache
US20160072696A1 (en) * 2014-09-05 2016-03-10 Telefonaktiebolaget L M Ericsson (Publ) Forwarding table precedence in sdn
US20160087894A1 (en) * 2014-09-22 2016-03-24 Industrial Technology Research Institute Method and system for changing path and controller thereof
US20160156552A1 (en) * 2013-08-05 2016-06-02 Hangzhou H3C Technologies Col, Ltd. Flow table entry in software defined networking
CN105791160A (en) * 2014-12-25 2016-07-20 中国移动通信集团公司 Event processing method, device and system in software defined network
US20160226795A1 (en) * 2015-01-30 2016-08-04 Nicira, Inc. Datapath cache
US20160283290A1 (en) * 2013-12-06 2016-09-29 Huawei Technologies Co., Ltd. Method and controller for chaining applications in a software defined network
US9602398B2 (en) 2013-09-15 2017-03-21 Nicira, Inc. Dynamically generating flows with wildcard fields
US9674087B2 (en) 2013-09-15 2017-06-06 Nicira, Inc. Performing a multi-stage lookup to classify packets
US9680748B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US9680738B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US9686185B2 (en) 2013-09-15 2017-06-20 Nicira, Inc. Generating flows using common match techniques
WO2017157347A1 (en) * 2016-03-18 2017-09-21 Huawei Technologies Co., Ltd. Method and apparatus for programmable buffers in mobile networks
WO2018015425A1 (en) * 2016-07-19 2018-01-25 Schneider Electric Industries Sas Time-sensitive software defined networking
US10193816B2 (en) * 2013-09-12 2019-01-29 Nec Corporation Method for operating an information-centric network and network
CN109600313A (en) * 2017-09-30 2019-04-09 迈普通信技术股份有限公司 Message forwarding method and device
US10432501B2 (en) * 2014-09-15 2019-10-01 Xi'an Zhongxing New Software Co., Ltd. SDN architecture and method for forwarding message based on SDN architecture
US10848427B2 (en) 2018-11-21 2020-11-24 Amazon Technologies, Inc. Load balanced access to distributed endpoints using global network addresses and connection-oriented communication session handoff
US10855580B2 (en) 2019-03-27 2020-12-01 Amazon Technologies, Inc. Consistent route announcements among redundant controllers in global network access point
WO2021076211A1 (en) * 2019-10-14 2021-04-22 Advanced Micro Devices, Inc. Cache management based on reuse distance
US11169932B2 (en) * 2019-05-17 2021-11-09 Google Llc Flow table aging optimized for dram access
US11178051B2 (en) 2014-09-30 2021-11-16 Vmware, Inc. Packet key parser for flow-based forwarding elements
US11343187B2 (en) * 2017-12-05 2022-05-24 Intel Corporation Quantitative exact match distance in network flows
US11374859B2 (en) 2020-08-04 2022-06-28 Pensando Systems, Inc. Flow table programming using flow miss metadata and burst action assist via CPU offload
US11394636B1 (en) 2020-12-10 2022-07-19 Amazon Technologies, Inc. Network connection path obfuscation using global access points
US11456952B2 (en) 2020-08-04 2022-09-27 Pensando Systems, Inc. Methods and systems for removing expired flow table entries using an extended packet processing pipeline
US11960413B2 (en) * 2023-02-27 2024-04-16 Google Llc Flow table aging optimized for DRAM access

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9577924B2 (en) * 2013-11-14 2017-02-21 Electronics And Telecommunications Research Institute SDN-based network device with extended function and method of processing packet in the same device
US10148756B2 (en) 2015-12-09 2018-12-04 At&T Intellectual Property I, L.P. Latency virtualization in a transport network using a storage area network
TWI626837B (en) 2016-12-01 2018-06-11 財團法人工業技術研究院 Method, apparatus and non-transitory computer-readable medium for delivering packets
US10684960B2 (en) 2017-12-04 2020-06-16 Mellanox Technologies Tlv Ltd. Managing cache memory in a network element based on costs associated with fetching missing cache entries
US10515015B2 (en) 2018-03-20 2019-12-24 Mellanox Technologies Tlv Ltd. Hash table-based mask length computation for longest prefix match caching
US10706035B2 (en) * 2018-04-04 2020-07-07 Sap Se Auto unload
US10616113B2 (en) 2018-07-19 2020-04-07 Mellanox Technologies Tlv Ltd. Longest prefix match using a binary search tree with compressed hash tables
US11502957B2 (en) 2020-05-14 2022-11-15 Mellanox Technologies, Ltd. Avoiding markers for longest prefix match based on binary search tree algorithm
US11516133B2 (en) 2020-07-06 2022-11-29 Nokia Solutions And Networks Oy Flow cache management
US11909656B1 (en) 2023-01-17 2024-02-20 Nokia Solutions And Networks Oy In-network decision for end-server-based network function acceleration

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020021675A1 (en) * 1999-10-19 2002-02-21 At&T Corp. System and method for packet network configuration debugging and database
US6636944B1 (en) * 1997-04-24 2003-10-21 International Business Machines Corporation Associative cache and method for replacing data entries having an IO state
US20040264384A1 (en) * 2003-06-30 2004-12-30 Manasi Deval Methods and apparatuses for route management on a networking control plane
US6996678B1 (en) * 2002-07-31 2006-02-07 Cisco Technology, Inc. Method and apparatus for randomized cache entry replacement
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US20070156964A1 (en) * 2005-12-30 2007-07-05 Sistla Krishnakanth V Home node aware replacement policy for caches in a multiprocessor system
US20100325365A1 (en) * 2009-06-17 2010-12-23 International Business Machines Corporation Sectored cache replacement algorithm for reducing memory writebacks
US20110153949A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Delayed replacement of cache entries
US20120124295A1 (en) * 2010-11-17 2012-05-17 Lsi Corporation Methods and structure for determining cache size in a storage system
US20120151149A1 (en) * 2010-12-14 2012-06-14 Lsi Corporation Method and Apparatus for Caching Prefetched Data
US20120233349A1 (en) * 2011-03-09 2012-09-13 Juniper Networks, Inc. Methods and apparatus for path selection within a network based on flow duration
US20130089094A1 (en) * 2010-07-01 2013-04-11 Telefonaktiebolaget L M Ericsson (Publ) Method and Apparatus for Dissemination of Information Between Routers
US20130114606A1 (en) * 2011-11-03 2013-05-09 Qualcomm Atheros, Inc. Multiple delivery route packet ordering
US20130254491A1 (en) * 2011-12-22 2013-09-26 James A. Coleman Controlling a processor cache using a real-time attribute
US20140098669A1 (en) * 2012-10-08 2014-04-10 Vipin Garg Method and apparatus for accelerating forwarding in software-defined networks
US20140115260A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for prioritizing data in a cache
US20140115261A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation Apparatus, system and method for managing a level-two cache of a storage appliance
US20140122634A1 (en) * 2012-10-29 2014-05-01 Patrick Conner Numa aware network interface
US20140149651A1 (en) * 2012-11-27 2014-05-29 Andrew T. Forsyth Providing Extended Cache Replacement State Information

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255628B2 (en) 2006-07-13 2012-08-28 International Business Machines Corporation Structure for multi-level memory architecture with data prioritization

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636944B1 (en) * 1997-04-24 2003-10-21 International Business Machines Corporation Associative cache and method for replacing data entries having an IO state
US20020021675A1 (en) * 1999-10-19 2002-02-21 At&T Corp. System and method for packet network configuration debugging and database
US6996678B1 (en) * 2002-07-31 2006-02-07 Cisco Technology, Inc. Method and apparatus for randomized cache entry replacement
US20040264384A1 (en) * 2003-06-30 2004-12-30 Manasi Deval Methods and apparatuses for route management on a networking control plane
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US20070156964A1 (en) * 2005-12-30 2007-07-05 Sistla Krishnakanth V Home node aware replacement policy for caches in a multiprocessor system
US20100325365A1 (en) * 2009-06-17 2010-12-23 International Business Machines Corporation Sectored cache replacement algorithm for reducing memory writebacks
US20110153949A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Delayed replacement of cache entries
US20130089094A1 (en) * 2010-07-01 2013-04-11 Telefonaktiebolaget L M Ericsson (Publ) Method and Apparatus for Dissemination of Information Between Routers
US20120124295A1 (en) * 2010-11-17 2012-05-17 Lsi Corporation Methods and structure for determining cache size in a storage system
US20120151149A1 (en) * 2010-12-14 2012-06-14 Lsi Corporation Method and Apparatus for Caching Prefetched Data
US20120233349A1 (en) * 2011-03-09 2012-09-13 Juniper Networks, Inc. Methods and apparatus for path selection within a network based on flow duration
US20130114606A1 (en) * 2011-11-03 2013-05-09 Qualcomm Atheros, Inc. Multiple delivery route packet ordering
US20130254491A1 (en) * 2011-12-22 2013-09-26 James A. Coleman Controlling a processor cache using a real-time attribute
US20140098669A1 (en) * 2012-10-08 2014-04-10 Vipin Garg Method and apparatus for accelerating forwarding in software-defined networks
US20140115260A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for prioritizing data in a cache
US20140115261A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation Apparatus, system and method for managing a level-two cache of a storage appliance
US20140122634A1 (en) * 2012-10-29 2014-05-01 Patrick Conner Numa aware network interface
US20140149651A1 (en) * 2012-11-27 2014-05-29 Andrew T. Forsyth Providing Extended Cache Replacement State Information

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Aaron Rosen, Network service delivery and throughput optimization via software defined networking, 2012, pages 4-9 and 31-46. *
Paul Congdon, Packet Prediction for Speculative Cut-Through Switching, 2008, pages 1-7. *
Xiaocui Sun, An effective Caching on Forwarding Table Scheme for Metro Ethernet, 2010, pages 1-6.. *

Cited By (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160156552A1 (en) * 2013-08-05 2016-06-02 Hangzhou H3C Technologies Col, Ltd. Flow table entry in software defined networking
US10193816B2 (en) * 2013-09-12 2019-01-29 Nec Corporation Method for operating an information-centric network and network
US9674087B2 (en) 2013-09-15 2017-06-06 Nicira, Inc. Performing a multi-stage lookup to classify packets
US9686185B2 (en) 2013-09-15 2017-06-20 Nicira, Inc. Generating flows using common match techniques
US9680738B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US10498638B2 (en) 2013-09-15 2019-12-03 Nicira, Inc. Performing a multi-stage lookup to classify packets
US9680748B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US9602398B2 (en) 2013-09-15 2017-03-21 Nicira, Inc. Dynamically generating flows with wildcard fields
US10382324B2 (en) 2013-09-15 2019-08-13 Nicira, Inc. Dynamically generating flows with wildcard fields
US20160283290A1 (en) * 2013-12-06 2016-09-29 Huawei Technologies Co., Ltd. Method and controller for chaining applications in a software defined network
US10255120B2 (en) * 2013-12-06 2019-04-09 Huawei Technologies Co., Ltd. Method and controller for chaining applications in a software defined network
US10380019B2 (en) 2013-12-13 2019-08-13 Nicira, Inc. Dynamically adjusting the number of flows allowed in a flow table cache
US20150169451A1 (en) * 2013-12-13 2015-06-18 Nicira, Inc. Dynamically Adjusting the Number of Flows Allowed in a Flow Table Cache
US9569368B2 (en) * 2013-12-13 2017-02-14 Nicira, Inc. Installing and managing flows in a flow table cache
US20150169457A1 (en) * 2013-12-13 2015-06-18 Nicira, Inc. Installing and Managing Flows in a Flow Table Cache
US9996467B2 (en) * 2013-12-13 2018-06-12 Nicira, Inc. Dynamically adjusting the number of flows allowed in a flow table cache
US11431639B2 (en) 2014-03-31 2022-08-30 Nicira, Inc. Caching of service decisions
US9985896B2 (en) * 2014-03-31 2018-05-29 Nicira, Inc. Caching of service decisions
US10659373B2 (en) 2014-03-31 2020-05-19 Nicira, Inc Processing packets according to hierarchy of flow entry storages
US9686200B2 (en) 2014-03-31 2017-06-20 Nicira, Inc. Flow cache hierarchy
US20150281125A1 (en) * 2014-03-31 2015-10-01 Nicira, Inc. Caching of service decisions
US20160028620A1 (en) * 2014-07-28 2016-01-28 Alcatel-Lucent Usa Inc. Software-defined networking controller cache
US9692684B2 (en) * 2014-09-05 2017-06-27 Telefonaktiebolaget L M Ericsson (Publ) Forwarding table precedence in SDN
US20160072696A1 (en) * 2014-09-05 2016-03-10 Telefonaktiebolaget L M Ericsson (Publ) Forwarding table precedence in sdn
US10432501B2 (en) * 2014-09-15 2019-10-01 Xi'an Zhongxing New Software Co., Ltd. SDN architecture and method for forwarding message based on SDN architecture
US20160087894A1 (en) * 2014-09-22 2016-03-24 Industrial Technology Research Institute Method and system for changing path and controller thereof
US9455916B2 (en) * 2014-09-22 2016-09-27 Industrial Technology Research Institute Method and system for changing path and controller thereof
US11178051B2 (en) 2014-09-30 2021-11-16 Vmware, Inc. Packet key parser for flow-based forwarding elements
CN105791160A (en) * 2014-12-25 2016-07-20 中国移动通信集团公司 Event processing method, device and system in software defined network
US10084726B2 (en) * 2015-01-30 2018-09-25 Nicira, Inc. Dynamic datapath at edge gateway
CN108293021A (en) * 2015-01-30 2018-07-17 Nicira股份有限公司 Dynamic data access at Border Gateway
US9973445B2 (en) 2015-01-30 2018-05-15 Nicira, Inc. Datapath with service stages
US20160226763A1 (en) * 2015-01-30 2016-08-04 Nicira, Inc. Dynamic datapath at edge gateway
US20160226795A1 (en) * 2015-01-30 2016-08-04 Nicira, Inc. Datapath cache
US10341257B2 (en) 2015-01-30 2019-07-02 Nicira, Inc. Datapath for multiple tenants
US10057191B2 (en) 2015-01-30 2018-08-21 Nicira, Inc. Datapath with centralized and distributed routers
US10110514B2 (en) * 2015-01-30 2018-10-23 Nicira, Inc. Datapath cache
US11343204B2 (en) 2015-01-30 2022-05-24 Nicira, Inc. Datapath for multiple tenants
US11706159B2 (en) 2015-01-30 2023-07-18 Nicira, Inc. Datapath for multiple tenants
US10700997B2 (en) 2015-01-30 2020-06-30 Nicira, Inc. Datapath for multiple tenants
CN105187325A (en) * 2015-10-27 2015-12-23 上海斐讯数据通信技术有限公司 SDN flow table management method, SDN flow table management system and switchboard
US10645009B2 (en) 2016-03-18 2020-05-05 Futurewei Technologies, Inc. Method and apparatus for programmable buffers in mobile networks
WO2017157347A1 (en) * 2016-03-18 2017-09-21 Huawei Technologies Co., Ltd. Method and apparatus for programmable buffers in mobile networks
CN109691038A (en) * 2016-07-19 2019-04-26 施耐德电器工业公司 The software-defined network of time-sensitive
WO2018015425A1 (en) * 2016-07-19 2018-01-25 Schneider Electric Industries Sas Time-sensitive software defined networking
RU2734895C2 (en) * 2016-07-19 2020-10-26 Шнейдер Электрик Эндюстри Сас Time-sensitive program-determined network
US11706123B2 (en) 2016-07-19 2023-07-18 Schneider Electric Industries Sas Time-sensitive software defined networking
AU2017300019B2 (en) * 2016-07-19 2022-04-14 Schneider Electric Industries Sas Time-sensitive software defined networking
US10805205B2 (en) 2016-07-19 2020-10-13 Schneider Electric Industries Sas Time-sensitive software defined networking
CN109600313A (en) * 2017-09-30 2019-04-09 迈普通信技术股份有限公司 Message forwarding method and device
US11343187B2 (en) * 2017-12-05 2022-05-24 Intel Corporation Quantitative exact match distance in network flows
US10880218B2 (en) 2018-11-21 2020-12-29 Amazon Technologies, Inc. Load balanced access to distributed endpoints using resiliently advertised global network addresses
US10924411B2 (en) * 2018-11-21 2021-02-16 Amazon Technologies, Inc. Load balanced access to distributed endpoints using anycasted global network addresses and network address translation
US10848427B2 (en) 2018-11-21 2020-11-24 Amazon Technologies, Inc. Load balanced access to distributed endpoints using global network addresses and connection-oriented communication session handoff
US10855580B2 (en) 2019-03-27 2020-12-01 Amazon Technologies, Inc. Consistent route announcements among redundant controllers in global network access point
US11169932B2 (en) * 2019-05-17 2021-11-09 Google Llc Flow table aging optimized for dram access
US11620237B2 (en) * 2019-05-17 2023-04-04 Google Llc Flow table aging optimized for DRAM access
US20230205708A1 (en) * 2019-05-17 2023-06-29 Google Llc Flow Table Aging Optimized For Dram Access
US20220043756A1 (en) * 2019-05-17 2022-02-10 Google Llc Flow Table Aging Optimized For Dram Access
WO2021076211A1 (en) * 2019-10-14 2021-04-22 Advanced Micro Devices, Inc. Cache management based on reuse distance
US11797455B2 (en) 2019-10-14 2023-10-24 Advanced Micro Devices, Inc. Cache management based on reuse distance
US11374859B2 (en) 2020-08-04 2022-06-28 Pensando Systems, Inc. Flow table programming using flow miss metadata and burst action assist via CPU offload
US11456952B2 (en) 2020-08-04 2022-09-27 Pensando Systems, Inc. Methods and systems for removing expired flow table entries using an extended packet processing pipeline
US11818039B2 (en) 2020-08-04 2023-11-14 Pensando Systems Inc. Methods and systems for removing expired flow table entries using an extended packet processing pipeline
US11394636B1 (en) 2020-12-10 2022-07-19 Amazon Technologies, Inc. Network connection path obfuscation using global access points
US11960413B2 (en) * 2023-02-27 2024-04-16 Google Llc Flow table aging optimized for DRAM access

Also Published As

Publication number Publication date
US9160650B2 (en) 2015-10-13

Similar Documents

Publication Publication Date Title
US9160650B2 (en) Enhanced flow entry table cache replacement in a software-defined networking switch
JP6064291B2 (en) Techniques for flow lookup management of network devices
US9124506B2 (en) Techniques for end-to-end network bandwidth optimization using software defined networking
US9779031B2 (en) Caching policies for selection and replacement of objects
EP2849410B1 (en) Data processing method, router and ndn system
CN110891019B (en) Data center flow scheduling method based on load balancing
US10664419B2 (en) I/O driven data transfer in a data processing network
CN108366089B (en) CCN caching method based on content popularity and node importance
US9336006B2 (en) High-performance parallel traffic management for multi-core platforms
US10733106B2 (en) I/O driven data routing and cache allocation
CN109076108A (en) Receive network node, endpoint node and the method for interest message
US20120109913A1 (en) Method and system for caching regular expression results
CN106940696B (en) Information query method and system for SDN multi-layer controller
CN108027794A (en) The technology of automatic processor core associate management and communication is carried out for using immediate data to place in private cache
CN109831508A (en) A kind of caching method and equipment, storage medium
CN111404840A (en) Message processing method and device
JP7127743B2 (en) Communication device, communication method and program
US20140188995A1 (en) Predictive Caching in a Distributed Communication System
US20230013331A1 (en) Adaptive Buffering in a Distributed System with Latency/Adaptive Tail Drop
KR20190006066A (en) Determination of route in communication network
US9678881B2 (en) Data distribution device and data distribution method
JP2008131350A (en) Packet transfer device, packet distributing method, packet sorting method, group-belonging-processor changing method, and computer program
Wang et al. PopFlow: a novel flow management scheme for SDN switch of multiple flow tables based on flow popularity
Dhandapani et al. A novel eviction policy based on shortest remaining time for software defined networking flow tables
JP7151246B2 (en) Information processing device, information processing method and program

Legal Events

Date Code Title Description
AS Assignment

Owner name: FUTUREWEI TECHNOLOGIES, INC., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZHANG, HONG;DAS, KALYAN;REEL/FRAME:030627/0319

Effective date: 20130617

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

AS Assignment

Owner name: HUAWEI CLOUD COMPUTING TECHNOLOGIES CO., LTD., CHINA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FUTUREWEI TECHNOLOGIES, INC.;REEL/FRAME:059682/0738

Effective date: 20220228

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8