Differentiated admission control for single streams with forked priority
By differentiating and prioritizing bandwidth requests from data streams in a wide area network (WAN), the problem of ineffective priority differentiation in existing technologies is solved, enabling priority transmission of major workloads during network congestion and improving WAN responsiveness and efficiency.
Patent Information
- Application Number
- CN202480024687.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-05-23
- Filing Date
- 2024-04-30
- Publication Date
- 2025-11-11
AI Technical Summary
In large wide area networks, existing technologies cannot effectively distinguish and prioritize data streams with different priorities, leading to increased latency for time-critical services. Especially during network congestion, the inability to clearly separate primary workloads from deferable workloads results in data intermediary infrastructure throttling primary workloads.
By receiving and aggregating bandwidth requests from data streams, the system distinguishes between primary bandwidth requests and deferable bandwidth requests. Based on the aggregated bandwidth requests, it determines the authorized primary and deferable bandwidth and allocates them to the data streams accordingly. This ensures that primary bandwidth takes precedence over deferable bandwidth, thereby achieving differentiated access control.
It improves the responsiveness of time-critical data streams in wide area networks, ensures that major workloads can still be transmitted with priority during network congestion, reduces the number of routing nodes, and enhances the overall responsiveness of the WAN.
Smart Images

Figure CN120937313A_ABST
Abstract
Description
Background Technology
[0001] In large wide area networks (WANs), data flows between source and destination areas can utilize predefined paths often referred to as "tunnels." The collection of tunnels has a known topology and capacity, thus enabling intelligent service management. One service management tool is data brokering, which is used to restrict and prioritize data traffic, ensuring that higher-priority traffic reliably traverses the network with minimal latency, while latency caused by network congestion is borne by lower-priority traffic. Data brokering involves throttling when requests for bandwidth presented to admission control functions exceed network capacity, where the admission control functions authorize bandwidth for the brokered data flows. Summary of the Invention
[0002] The disclosed examples are described in detail below with reference to the accompanying drawings. The following summary is provided to illustrate some examples disclosed herein.
[0003] Example solutions for differentiated admission control of a single flow with fork priorities include: receiving bandwidth requests for each of multiple data flows in a wide area network (WAN), each bandwidth request indicating a primary bandwidth request portion and a deferable bandwidth request portion; aggregating the bandwidth requests for the multiple data flows into an aggregated bandwidth request, the aggregated bandwidth request indicating a primary aggregated bandwidth request portion and a deferable aggregated bandwidth request portion; determining authorized primary aggregated bandwidth and authorized deferable aggregated bandwidth based at least on the aggregated bandwidth request; and allocating authorized primary bandwidth and authorized deferable bandwidth for each bandwidth request in the multiple data flows based at least on the authorized primary aggregated bandwidth and authorized deferable aggregated bandwidth. Attached Figure Description
[0004] The disclosed example is described in detail below with reference to the accompanying drawings:
[0005] Figure 1 An example wide area network (WAN) architecture is shown that advantageously provides differentiated admission control for a single flow with fork priority;
[0006] Figure 2 It shows Figure 1 Further details of the example architecture;
[0007] Figure 3 It also shows Figure 1 Further details of the example architecture;
[0008] Figure 4 Example code snippets related to bandwidth requests are shown, such as those that can be used... Figure 1 The example architecture used;
[0009] Figure 5 Example code snippets associated with responses to bandwidth requests are shown, such as those that can be used... Figure 1 The example architecture used;
[0010] Figure 6 This illustrates example variations in the formatting of fork priority bandwidth requests, such as those that can be... Figure 1 The example architecture used;
[0011] Figure 7 and Figure 8 The illustration shows that it can be used with example architectures (such as...) Figure 1 A flowchart illustrating exemplary operations performed during the architecture; and
[0012] Figure 9 A block diagram of an example computing device applicable to implementing some of the various examples disclosed herein is shown.
[0013] In all figures, the corresponding reference numerals indicate the corresponding parts. Detailed Implementation
[0014] Wide Area Networks (WANs) can provide data flow between different regions, such as geographically dispersed data centers carrying data services across multiple server clusters. An example is Exchange Online (EXO), a cloud-based messaging platform that delivers email, calendars, contacts, and tasks, and also uses geographical replication to provide disaster recovery. EXO replication mirrors data across geographically distributed server clusters in different data centers. Customer-facing workloads constrained by Service Level Objectives (SLOs), such as email and other user interaction data, as well as back-end workloads, such as data replication services, all traverse the same WAN.
[0015] Given that the business latency of customer-facing workloads is significant and potentially inconvenient for users, some background workloads can be postponed without negatively impacting application SLOs when network capacity temporarily decreases. These background workloads can be referred to as "deferable workloads," while more time-critical, customer-facing workloads can be referred to as "primary workloads." However, for WANs with a limited set of priority levels (such as three levels (e.g., Pri-0 highest, Pri-1 second highest, and Pri-2 lowest)), primary workloads and deferable workloads can both be assigned the same Pri-2 priority level within a single data stream.
[0016] The EXO geographic replication application cannot separate its operations into primary and deferred operations, meaning that explicit stream splitting cannot be used to achieve differentiated behavior during data intermediation. Unfortunately, because a large number of deferred workloads are presented to the admission control functions of the data intermediation infrastructure, primary workloads can be throttled. In some examples, deferred data operations can also be identified as mean-recovery time (MTTR) permissible operations. Another example is that both news feeds and search engine indexes can be assigned Pri-2 priority, but for users, the latency of news feed replication is more noticeable than that of search engine index replication.
[0017] Various aspects of this disclosure address this problem by introducing differentiated admission control for individual data streams with fork priorities, enabling applications to provide information about how much of their data can be deferred. Examples include: receiving bandwidth requests for each of a plurality of data streams, each request indicating a primary bandwidth request portion and a deferred bandwidth request portion; aggregating the bandwidth requests for the plurality of data streams into an aggregate bandwidth request, the aggregate bandwidth request indicating a primary aggregate bandwidth request portion and a deferred aggregate bandwidth request portion; determining, at least based on the aggregate bandwidth request, an authorized primary aggregate bandwidth and an authorized deferred aggregate bandwidth; and allocating, at least based on the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth, the authorized primary bandwidth and the authorized deferred bandwidth for each bandwidth request of the plurality of data streams.
[0018] The example solution described in this paper improves WAN responsiveness by enhancing the prioritization of data services, prioritizing customer-facing workloads and other SLO-bound data services over deferred workloads, even when both types of workloads are mixed in the same data stream. This is accomplished, at least by directing aggregated bandwidth requests for both the primary and deferred aggregated bandwidth request portions. A practical aspect of these advantages is that a given WAN size can carry more time-critical data services during periods of partial WAN degradation, and / or the number of routing nodes within the WAN can be reduced to maintain a given level of support for time-critical data services.
[0019] Various examples will be described in detail with reference to the accompanying drawings. In any preferred embodiment, the same reference numerals will be used in all drawings to refer to the same or similar parts. References made throughout this disclosure in connection with particular examples and embodiments are for illustrative purposes only and are not intended to limit all examples unless indicated otherwise.
[0020] Figure 1An example architecture 100 is shown that advantageously provides differentiated admission control for a single flow with fork priority. In architecture 100, using paths defined as tunnels 106a-106c including routers 108a-108i, WAN 102 carries data from region 110 to region 120 as multiple data flows 104. Specifically, data moves from application 114, through networking function 116, across WAN 102 to networking function 126, and into another application 124. An example could be an EXO replication represented by applications 114 and 124, where data from application 114 is replicated at application 124. In some examples, region 110 and region 120 may represent different data centers, and thousands of data flows may exist between different regions.
[0021] Within WAN 102, the service engineering controller (not shown) programs the agents at routers 108a-108i to create tunnels. An exemplary set of tunnels is shown, although other examples may involve a larger number of routers and more complex topologies. As illustrated, tunnel 106a runs from router 108c through router 108b to router 108d, tunnel 106b runs from router 108f through router 108h to router 108g, and tunnel 106c runs from router 108i through router 108e to router 108a.
[0022] Multiple data flows 104 include data flows 104a, 104b, and 104c, although some examples may use a larger number of data flows. Each of data flows 104a-104c may use any of tunnels 106a-106c. In the described example, at least data flow 104a is proxied, although in some examples, not all data flows within WAN 102 are proxied. Data flows are uniquely defined by network N-tuples (such as 5-tuples) and include data that passes through WAN 102 using that N-tuple.
[0023] The 5-tuple used to define a data stream (such as data stream 104a) uses <source address, source port, destination address, destination port, protocol>. An example is... <EXO_BE_machine, The first five words of the stream are: `EXO_BE_machine, 12345, TCP,Pri-2, exo_replication, 8`. In this example, the source is any port of an EXO server, the destination is port 12345 of another EXO server, and the protocol is Transmission Control Protocol (TCP). This data stream example is of priority 2 (the lowest priority level using the priority scheme specified by Pri-0, Pri-1, and Pri-2). In a 3-level priority scheme, the Pri-0 data stream takes the shortest path, while Pri-1 and Pri-2 (levels 2 and 3) are scavenger streams and may take longer paths. This data stream is given the identifier name "exo_replication" and has a Differentiated Service Code Point (DSCP) value of 8 for packet classification.
[0024] The path, while Pri-1 and Pri-2 (level 2 and level 3) are scavenger flows and may take longer paths.
[0025] At least some of routers 108a-108i send service flow information to a set of flow collectors represented by flow collector 142. Flow collector 142 aggregates and annotates the service reports to compile them into a history 140 of data services within WAN 102. History 140 includes the history of multiple data flows 104. History 140 is sent to high-capacity data storage 144. At some time interval (e.g., on the order of hours), policy discovery node 146 mines history 140 for a policy set to represent a set of mediating flows 148. Mediating flows 148 include data flows 104a and other data flows to be mediated within WAN 102. Mediating flows 148 are provided to mediating backend 130 and other mediating backends that provide data flow mediation for WAN 102.
[0026] For at least a subset (which may be majority or all) of data traffic between applications in various areas (e.g., areas 110 and 120) that transmit data via WAN 102, bandwidth predictor 150 uses history 140 (or a version thereof from flow collector 142) to generate forward-looking forecasts of bandwidth demand within WAN 102. This provides bandwidth demand forecasts for a given timeframe (e.g., on the order of minutes), which are then provided to service engineering (TE) scheduler 154 and admission controller 132.
[0027] Additionally, a network topology map 152 is generated using information about tunnels 106a-106c (such as tunnel activity and capacity) that provides the current state of WAN 102. Network topology map 152 is also provided to service engineering scheduler 154 and admission controller 132. Service engineering scheduler 154 has a solver 156 that generates a Forwarding Information Base (FIB) table 158, similar to a routing table, and is used by service engineering controller to plan next-generation tunnels within WAN 102. Service engineering scheduler 154 sends FIB table 158 to admission controller 132.
[0028] The admission controller 132, together with the intermediary backends 130 and broker agents 112, provides data flow mediation for the WAN 102. In one example configuration, the WAN 102 has tens of thousands of data flows, thousands of broker agents 112, dozens of intermediary backends 130, and a single admission controller 132 in each region (e.g., North America, Europe, etc.). The intermediary agents (including intermediary agent 112) monitor the data flows and provide bandwidth requests for the mediated data flows to intermediary backends (such as intermediary backends 130). The intermediary backends (including intermediary backends 130) aggregate the bandwidth requests and forward the aggregated bandwidth requests to the admission controller 132.
[0029] Admission controller 132 treats bandwidth allocation decisions for each flow as an optimization problem for WAN 102 and returns bandwidth grant decisions to the intermediary backend. Admission controller 132 is enabled to perform this role because it has FIB table 158, network topology map 152, and inputs from bandwidth predictor 150 (e.g., at least some of the histories 140 of multiple data flows 104). The intermediary backend maintains a bandwidth pool (divided into time slots) and allocates bandwidth to various data flows from the bandwidth pool. The intermediary backend returns bandwidth grants to the intermediary agent. The granted bandwidth is used to throttle data entering WAN 102 as needed. For example, the bandwidth request for a data flow might be a total of 250 megabits per second (Mbps), but the grant is 150 Mbps. Figure 2 and Figure 3 The diagram shows representative communications within the admission controller 132, the intermediary backend 130, and the intermediary agent 112 in more detail.
[0030] exist Figure 2 In this process, application 114 sends an instruction 202 for deferred service to intermediary agent 112 of data stream 104a. Intermediary agent 112 assembles a bandwidth request 210, including a main bandwidth request portion 212 and a deferred bandwidth request portion 214, as a message 216 to intermediary backend 130. Intermediary backend 130 uses aggregator 230 to combine the bandwidth request 210 with data from intermediary agent 112 and / or other intermediary agents (see [link to relevant documentation]). Figure 3 Other bandwidth requests are aggregated together.
[0031] The intermediary backend 130 sends the aggregate bandwidth request 240 of the main aggregate bandwidth request portion 242 and the deferable aggregate bandwidth request portion 244 as a message 246 to the admission controller 132. The main aggregate bandwidth request portion 242 includes the main bandwidth request portion 212, and the deferable aggregate bandwidth request portion 244 includes the deferable bandwidth request portion 214.
[0032] Admission controller 132 uses network topology map 152, FIB table 158, and input from bandwidth predictor 150 to generate priority map 260. Priority map 260 uses "app_name" (the identifier of application 114) to track bandwidth requests from application 114 to track bandwidth requested as primary bandwidth request portion 212, and uses "app_name_deferrable" (i.e., application 114's identifier appended with "_deferrable") to track bandwidth requested as deferable bandwidth request portion 214. As indicated, primary bandwidth request portion 212 remains Pri-2, while deferable bandwidth request portion 214 is assigned Pri-3, which is a priority level lower than Pri-2. However, data flow 104a is a single Pri-2 data flow. Application 114 will handle lower priorities within the Pri-2 data flow scheme by prioritizing data services based on the criteria it uses to generate indication 202 for deferable services when authorized bandwidth is received.
[0033] When admission controller 132 performs admission control, it runs solver 262 to split the two lines of input across different priority levels. Solver 262 will process all Pri-2 requests from various intermediary agents before attempting to admit Pri-3. This ensures that deferable requests are only admitted if there is remaining capacity after all higher priority (e.g., Pri-0, Pri-1, and Pri-2) requests are satisfied. This ensures that deferable data traffic for data flow 104a is reduced before the primary data traffic for another data flow is denied access to WAN 102.
[0034] Admission controller 132 returns an indication 250 for authorized primary aggregate bandwidth 252 and authorized deferred aggregate bandwidth 254 as message 256 to intermediary backend 130. Intermediary backend 130 adds the authorized primary aggregate bandwidth 252 to primary bandwidth pool 232 and adds the authorized deferred aggregate bandwidth 254 to deferred bandwidth pool 234. Intermediary backend 130 uses allocator 236 to allocate the authorized primary bandwidth 222 and authorized deferred bandwidth 224 to data flow 104a. The allocator also allocates primary bandwidth authorization and deferred bandwidth authorization from primary bandwidth pool 232 and deferred bandwidth pool 234 to other data flows, respectively.
[0035] The intermediary backend 130 sends an instruction 220 for the authorized primary bandwidth 222 and the authorized deferable bandwidth 224 as a message 226 to the intermediary agent 112. The intermediary agent 112 determines the total authorized bandwidth 206 for data stream 104a as the sum of the authorized primary bandwidth 222 and the authorized deferable bandwidth 224. The intermediary agent 112 also maintains a set of time slots for the valid time periods for bandwidth authorization. For example, as shown, the authorized total bandwidth 206, the authorized primary bandwidth 222, and the authorized deferable bandwidth 224 are assigned to time period 208a. Another authorized total bandwidth 206b, another authorized primary bandwidth 222b, and another authorized deferable bandwidth 224b are assigned to time period 208b, and another authorized total bandwidth 206c, another authorized primary bandwidth 222c, and another authorized deferable bandwidth 224c are assigned to time period 208c. This representation is symbolic to illustrate that the bandwidth request and authorization / allocation are for a specific time period.
[0036] The intermediary agent 112 sends an indication 204 to the application 114 regarding the total authorized bandwidth 206 for data stream 104a. Because the application 114 has prioritization logic for determining the indication 202 for deferred services, if the total authorized bandwidth 206 exceeds the bandwidth required by the primary data service, the application 114 will send the primary data service first and, if necessary, deferred services to avoid exceeding the total authorized bandwidth 206.
[0037] Figure 3 The illustration shows application 114 receiving data from data source 302. This data includes primary data 304 and deferred data 306. Figure 2 The instruction 202 for deferred service is driven by the deferred data 306 of that quantity. Both the main data 304 and the deferred data 306 are destined for data stream 104a, wherein the main data 304 drives the main bandwidth request portion 212 of that quantity, and the deferred data 306 drives the deferred bandwidth request portion 214 of that quantity.
[0038] Following the bandwidth request and authorization described above, primary data 304 is transmitted along data stream 104a based on the authorized primary bandwidth 222, and deferred data 306 is transmitted along data stream 104a based on the authorized deferred bandwidth 224. Application 114 receives primary data 304 and deferred data 306, is prompted for the authorized total bandwidth 206 for data stream 104a, and uses its prioritization function 314 to prioritize primary data 304 over deferred data 306. If the authorized total bandwidth 206 at least satisfies the primary bandwidth request portion 212, all primary data 304 is transmitted along data stream 104a.
[0039] The total authorized bandwidth 206 exceeding the amount requested in the primary bandwidth request portion 212 is authorized to deferred bandwidth 224, and that amount of deferred data 306 is sent within the same time period. Any amount of deferred data 306 exceeding the authorized deferred bandwidth 224 is deferred to a later time period. In some examples, application 114 deferred data source 302, and the deferred portion of deferred data 306 waits in application 114 and / or data source 302.
[0040] Application 114 sends a permitted amount of data to networking function 116. Networking function 116 throttles the total authorized bandwidth 206 as needed and maintains a data queue 308 for data to be sent via data stream 104a. As shown, data queue 308 contains primary data 304a from previous time periods, and data for the current time period (e.g., ...). Figure 2 The main data 304 for time period 208a and the main data 304b for future subsequent time periods (e.g., time period 208b) are also shown. Deferred data 306 delayed in data queue 308 is also shown.
[0041] Figure 3 Instructions 202 and 204 between application 114 and intermediary agent 112, and messages 216 and 226 between intermediary agent 112 and intermediary backend 130 are also shown. Further, to illustrate the aggregation and allocation functions of intermediary backend 130, additional messages 216a-226b are shown between intermediary backend 130 and additional intermediary agents. Intermediary agent 112a sends message 216a to intermediary backend 130 requesting bandwidth for another data stream and receives bandwidth authorization as message 226a. Similarly, intermediary agent 112b sends message 216b to intermediary backend 130 requesting bandwidth for yet another data stream and receives bandwidth authorization as message 226b.
[0042] The admission controller exchanges messages 246 and 256 with the intermediary backend 130, as described above. Figure 2As described, it also exchanges similar messages 246a and 256a with another intermediary backend 130a. Specifically, message 246a is a bandwidth aggregation request, and message 256a is a bandwidth aggregation authorization.
[0043] Figure 4 It shows the connection with bandwidth requests (such as...) Figure 2 Example code segment 400 is associated with the bandwidth request 210. The main bandwidth request section 212 and the deferable bandwidth request section 214 are constructed using variables 402, denoted as “RequestBWKbps”, and 404, denoted as “RequestDeferrableBWKbps”, respectively. In the code shown, variables 402 and 404 are presented as pointers.
[0044] Figure 5 This shows the response to bandwidth requests (such as...) Figure 2 The example code segment 500 is associated with instruction 220. Variables 502, denoted as “grantedBWKbps”, and 504, denoted as “grantedDeferrableBWKbps”, are used to return the granted primary bandwidth 222 and the granted deferrable bandwidth 224, respectively. In the code shown, variables 502 and 504 are presented as pointers.
[0045] Figure 6 Example variations in the formatting of forked priority bandwidth requests are shown. Format 602 represents the primary bandwidth request portion 212 as value 602a in kilobytes per second (Kbps), which is a primary, non-deferred bandwidth request, and also represents the deferable bandwidth request portion 214 as a separate value 602b in Kbps. In format 602, the primary bandwidth request portion 212 and the deferable bandwidth request portion 214 are separate and not combined.
[0046] Format 604 shows a value 604a as the sum of the primary bandwidth request portion 212 and the deferable bandwidth request portion 214. Value 602b is only the deferable bandwidth request portion 214, and the admission controller 132 (or the intermediary backend 130) determines the primary bandwidth request portion 212 by subtracting the deferable bandwidth request portion 214 from the value 604a.
[0047] Format 606 also uses value 604a as the sum of the primary bandwidth request portion 212 and the deferable bandwidth request portion 214, but the deferable bandwidth request portion 214 is indicated by value 606b as a percentage of value 604a. That is, the deferable bandwidth request portion 214 can be determined by multiplying value 604a by value 606b and dividing by 100. The primary bandwidth request portion 212 is then determined by subtracting the deferable bandwidth request portion 214 from value 604a. In architecture 100, any of formats 602-606 can be used, or other formats can be used to communicate the primary bandwidth request portion 212 and the deferable bandwidth request portion 214.
[0048] Figure 7 A flowchart 700 illustrating exemplary operations that can be performed by architecture 100 is shown. In some examples, the operations described for flowchart 700 are performed by... Figure 9 The computing device 900 performs the operation. Flowchart 700 begins in operation 702 with the intermediary agent 112 receiving instructions 202 from the application 114 for a deferred service for data stream 104a among multiple data streams 104.
[0049] In operation 704, the intermediary agent 112 creates bandwidth requests for multiple data streams 104 based at least on the instruction 202 for deferred services, including creating bandwidth request 210. In operation 706, the intermediary agent 112 sends the bandwidth requests for the multiple data streams 104 to the intermediary backend 130, and in operation 708, the intermediary backend 130 receives the bandwidth requests for the multiple data streams 104 (including bandwidth request 210 for data stream 104a). Each bandwidth request indicates a main bandwidth request portion 212 and a deferred bandwidth request portion;
[0050] In operation 710, the intermediary backend 130 aggregates bandwidth requests from multiple data streams 104 into an aggregated bandwidth request 240. The aggregated bandwidth request 240 indicates a primary aggregated bandwidth request portion 242 and a deferable aggregated bandwidth request portion 244. In operation 712, the intermediary backend 130 sends the aggregated bandwidth request 240 to the admission controller 132.
[0051] Based at least on aggregate bandwidth request 240, in operation 714, admission controller 132 determines the authorized primary aggregate bandwidth 252 and the authorized deferred aggregate bandwidth 254. In operation 716, admission controller 132 sends indication 250 to intermediary backend 130 regarding the authorized primary aggregate bandwidth 252 and the authorized deferred aggregate bandwidth 254.
[0052] Operation 718 is underway (i.e., across time periods for different bandwidth requests and authorizations), in which the intermediary backend 130 maintains a first pool of primary bandwidth 222 for authorization, namely primary bandwidth pool 232, and a second pool of deferred bandwidth 224 for authorization, namely deferred bandwidth pool 234. As part of operation 718, the intermediary backend 130 adds authorized primary aggregate bandwidth 252 to the appropriate time period of primary bandwidth pool 232, and adds authorized deferred aggregate bandwidth 254 to the appropriate time period of deferred bandwidth pool 234. Then, in operation 720, for each bandwidth request of the multiple data streams 104, the intermediary backend 130 allocates authorized primary bandwidth and authorized deferred bandwidth. This includes allocating authorized primary bandwidth 222 from primary bandwidth pool 232 and authorized deferred aggregate bandwidth 224 from deferred bandwidth pool 234, respectively, based at least on authorized primary aggregate bandwidth 252 and authorized deferred aggregate bandwidth 254.
[0053] In operation 722, the intermediary backend 130 sends an instruction 220 to the intermediary agent 112 regarding the authorized primary bandwidth 222 and the authorized deferred bandwidth 224. In operation 724, the intermediary agent 112 sends an instruction 204 to the application 114 regarding the authorized total bandwidth 206 for data flow 104a. In operation 726, the application 114 assigns the authorized total bandwidth 206 for data flow 104a (e.g., in networking function 116).
[0054] In operation 728, networking function 116 performs throttling on data from data source 302 based at least on the total authorized bandwidth 206 for data flow 104a. In operation 730, data (e.g., primary data 304 and deferred data 306) is transmitted via WAN 102 (specifically via intermediate data flow 104a) for each bandwidth request of the multiple data flows 104, based at least on the allocated primary bandwidth and the allocated deferred bandwidth.
[0055] Figure 8 A flowchart 800 illustrating exemplary operations that can be performed by architecture 100 is shown. In some examples, the operations described for flowchart 800 are performed by... Figure 9 The process is executed by computing device 900. Flowchart 800 begins with operation 802, which includes receiving bandwidth requests for each of the multiple data streams in the WAN, each bandwidth request indicating a main bandwidth request portion and a deferable bandwidth request portion.
[0056] Operation 804 includes aggregating bandwidth requests from multiple data streams into an aggregated bandwidth request, the aggregated bandwidth request indicating a primary aggregated bandwidth request portion and a deferable aggregated bandwidth request portion. Operation 806 includes determining the authorized primary aggregated bandwidth and the authorized deferable aggregated bandwidth based at least on the aggregated bandwidth request. Operation 808 includes allocating the authorized primary aggregated bandwidth and the authorized deferable aggregated bandwidth for each bandwidth request from the multiple data streams, based at least on the authorized primary aggregated bandwidth and the authorized deferable aggregated bandwidth. Additional examples
[0057] An example system includes: a processor; and a computer-readable medium storing instructions operable, when executed by the processor, to: receive bandwidth requests for each of a plurality of data streams in a WAN, each bandwidth request indicating a primary bandwidth request portion and a deferable bandwidth request portion; aggregate the bandwidth requests for the plurality of data streams into an aggregate bandwidth request, the aggregate bandwidth request indicating a primary aggregate bandwidth request portion and a deferable aggregate bandwidth request portion; determine, at least based on the aggregate bandwidth request, an authorized primary aggregate bandwidth and an authorized deferable aggregate bandwidth; and allocate, at least based on the authorized primary aggregate bandwidth and the authorized deferable aggregate bandwidth, for each bandwidth request of the plurality of data streams, an authorized primary bandwidth and an authorized deferable bandwidth.
[0058] An example computer-implemented method includes: receiving bandwidth requests for each of a plurality of data streams in a WAN, each bandwidth request indicating a primary bandwidth request portion and a deferable bandwidth request portion; aggregating the bandwidth requests for the plurality of data streams into an aggregated bandwidth request, the aggregated bandwidth request indicating a primary aggregated bandwidth request portion and a deferable aggregated bandwidth request portion; determining, at least based on the aggregated bandwidth request, an authorized primary aggregated bandwidth and an authorized deferable aggregated bandwidth; and allocating, at least based on the authorized primary aggregated bandwidth and the authorized deferable aggregated bandwidth, the authorized primary bandwidth and the authorized deferable bandwidth for each bandwidth request of the plurality of data streams.
[0059] One or more example computer storage devices have computer-executable instructions stored thereon, which, when executed by a computer, cause the computer to perform operations including: receiving bandwidth requests for each of a plurality of data streams in a WAN, each bandwidth request indicating a primary bandwidth request portion and a deferable bandwidth request portion; aggregating the bandwidth requests for the plurality of data streams into an aggregated bandwidth request, the aggregated bandwidth request indicating a primary aggregated bandwidth request portion and a deferable aggregated bandwidth request portion; determining, at least based on the aggregated bandwidth request, an authorized primary aggregated bandwidth and an authorized deferable aggregated bandwidth; and allocating, at least based on the authorized primary aggregated bandwidth and the authorized deferable aggregated bandwidth, the authorized primary bandwidth and the authorized deferable bandwidth for each bandwidth request of the plurality of data streams.
[0060] Alternatively, or in addition to the other examples described herein, the examples also include any combination of the following: - Data is sent over the WAN based at least on the primary bandwidth and the deferred bandwidth authorized for each bandwidth request for multiple data streams; - The intermediary backend receives bandwidth requests for multiple data streams from the intermediary agent; - The intermediary backend will aggregate bandwidth requests from multiple data streams into an aggregated bandwidth request; - The intermediary backend allocates the primary bandwidth and the deferred bandwidth of the authorization; - The admission controller determines the primary aggregate bandwidth and the deferred aggregate bandwidth for authorization; - The intermediary agent sends bandwidth requests for multiple data streams to the intermediary backend; - The intermediary backend sends an aggregated bandwidth request to the admission controller; - The admission controller sends instructions to the intermediary backend regarding the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth; - The intermediary backend sends instructions to the intermediary agent regarding the authorized primary bandwidth and the authorized deferred bandwidth; - The intermediary agent receives from the application an indication of a deferred service for the first of multiple data streams; based at least on the indication of the deferred service, the intermediary agent creates bandwidth requests for the multiple data streams. - The intermediary agent sends an indication to the application of the total bandwidth authorized for the first data stream, which includes the sum of the primary bandwidth authorized for the first data stream and the authorized deferable bandwidth; - The application assigns the total authorized bandwidth to the first data stream; - The first pool of primary bandwidth for authorization and the second pool of deferred bandwidth for authorization are maintained by the intermediary backend; - The primary bandwidth allocated includes the primary bandwidth allocated from the first pool; - The deferred bandwidth allocation includes the primary bandwidth allocated from the second pool; - Each bandwidth request, each authorized primary bandwidth, and each authorized deferable bandwidth are for a specific time period; - Each bandwidth request separately indicates its main bandwidth request portion and its deferable bandwidth request portion; - Each bandwidth request indicates the total requested bandwidth for each data stream, as well as the deferable bandwidth request portion that is part of the total requested bandwidth; - Total requested bandwidth includes the sum of the primary bandwidth request portion and the deferable bandwidth request portion; - Deferred bandwidth requests are expressed as bandwidth amounts; - Deferred bandwidth requests are expressed as a percentage; - The networking function performs throttling on data from the data source based at least on the total authorized bandwidth for the first data stream; - The application performs queuing of data for the first data stream; and - Bandwidth requests are based on the history of at least multiple data streams.
[0061] Although aspects of this disclosure have been described with reference to various examples and their associated operations, those skilled in the art will understand that combinations of operations from any number of different examples are also within the scope of aspects of this disclosure. Example operating environment
[0062] Figure 9 This is a block diagram of an example computing device 900 (e.g., a computer storage device) used to implement the aspects disclosed herein, and is generally designated as computing device 900. In some examples, one or more computing devices 900 are provided for an on-premises computing solution. In some examples, one or more computing devices 900 are provided as a cloud computing solution. In some examples, a combination of on-premises and cloud computing solutions is used. Computing device 900 is merely one example of a suitable computing environment and is not intended to impose any limitation on the scope or functionality of the examples disclosed herein, whether used alone or as part of a larger set.
[0063] The computing device 900 should not be construed as having any dependency or requirement on any or any combination of the components / modules shown. The examples disclosed herein can be described in the general context of computer code or machine-usable instructions, including computer-executable instructions (such as program components) executed by a computer or other machine (such as a personal data assistant or other handheld device). Generally, a program component (including routines, programs, objects, components, data structures, etc.) refers to code that performs a specific task or implements a specific abstract data type. The disclosed examples can be practiced in a variety of system configurations, including personal computers, laptops, smartphones, mobile tablets, handheld devices, consumer electronics, dedicated computing devices, etc. The disclosed examples can also be practiced in distributed computing environments when the task is performed by a remote processing device linked via a communication network.
[0064] Computing device 900 includes a bus 910 that directly or indirectly couples to the following devices: computer storage memory 912, one or more processors 914, one or more presentation components 916, input / output (I / O) ports 918, I / O components 920, power supply 922, and network components 924. Although computing device 900 is depicted as a single device, multiple computing devices 900 can work together and share the depicted device resources. For example, memory 912 can be distributed across multiple devices, and processors 914 can be housed in different devices.
[0065] Bus 910 can represent one or more buses (such as an address bus, a data bus, or a combination thereof). Although lines are used for clarity... Figure 9 Various blocks can be used, but alternative representations can also be used to depict various components. For example, in some examples, presentation components (such as display devices) are I / O components, and some examples of processors have their own memory. No distinction is made between categories such as "workstation," "server," "laptop," and "handheld device," because these categories are all considered to be... Figure 9 Within the scope of this document, and referred to herein as "computing device," memory 912 may take the form of computer storage media referenced below and is operable to provide storage for computer-readable instructions, data structures, program modules, and other data for computing device 900. In some examples, memory 912 stores one or more of the following: operating system, general-purpose application platform, or other program modules and program data. Thus, memory 912 is capable of storing and accessing data 912a and instructions 912b, which can be executed by processor 914 and configured to perform the various operations disclosed herein.
[0066] In some examples, memory 912 includes computer storage media. Memory 912 may include any number of memories associated with or accessible by computing device 900. Memory 912 may be internal to computing device 900 (e.g., Figure 9 As shown, the memory 912 may be located outside the computing device 900 (not shown), or both (not shown). Additionally or alternatively, the memory 912 may be distributed across multiple computing devices 900, for example, distributed within a virtualization environment in which instruction processing is performed on multiple computing devices 900. For the purposes of this disclosure, "computer storage medium," "computer storage memory," "memory," and "memory device" are synonyms for memory 912, and none of these terms include a carrier wave or propagation signaling.
[0067] The processors 914 may include any number of processing units that read data from various entities, such as memory 912 or I / O components 920. Specifically, the processors 914 are programmed to execute computer-executable instructions for implementing aspects of this disclosure. These instructions may be executed by a processor, multiple processors within computing device 900, or a processor external to client computing device 900. In some examples, the processors 914 are programmed to execute instructions, such as those shown in the flowcharts discussed below and depicted in the accompanying drawings. Furthermore, in some examples, the processors 914 represent the implementation of analog techniques to perform the operations described herein. For example, this operation may be performed by analog client computing device 900 and / or digital client computing device 900. The presentation components 916 present data indications to a user or other device. Exemplary presentation components include display devices, speakers, printing components, vibration components, etc. Those skilled in the art will understand and appreciate that computer data can be presented in a variety of ways, such as visually in a graphical user interface (GUI), audibly through speakers, wirelessly between computing devices 900, across wired connections, or otherwise. I / O port 918 allows computing device 900 to be logically coupled to other devices, including I / O components 920 (some of which may be built-in). Example I / O components 920 include, for example, but not limited to, microphones, joysticks, game controllers, satellite dishes, scanners, printers, wireless devices, etc.
[0068] Computing device 900 can operate in a networked environment via a logical connection to one or more remote computers through network component 924. In some examples, network component 924 includes a network interface card and / or computer-executable instructions (e.g., a driver) for operating the network interface card. Communication between computing device 900 and other devices can be performed via any wired or wireless connection using any protocol or mechanism. In some examples, network component 924 is operable to use transport protocols via public, private, or hybrid (public and private) short-range communication technologies (e.g., Near Field Communication (NFC), Bluetooth). TM Data is wirelessly transmitted between devices (such as trademark communication devices, etc.) or combinations thereof. Network component 924 communicates with remote resource 928 (e.g., cloud resource) via wireless communication link 926 and / or wired communication link 926a across network 930. Various examples of communication links 926 and 926a include wireless connections, wired connections, and / or dedicated links, and in some examples, at least a portion is routed over the Internet.
[0069] Although described in conjunction with example computing device 900, the examples of this disclosure can also be implemented using many other general-purpose or special-purpose computing system environments, configurations, or devices. Examples of well-known computing systems, environments, and / or configurations applicable to various aspects of this disclosure include, but are not limited to, smartphones, mobile tablets, mobile computing devices, personal computers, server computers, handheld or laptop devices, multiprocessor systems, game consoles, microprocessor-based systems, set-top boxes, programmable consumer electronics, mobile phones, mobile computing and / or communication devices with wearable or accessory form factors (e.g., watches, glasses, headphones, or handsets), network PCs, minicomputers, mainframe computers, distributed computing environments including any of the aforementioned systems or devices, virtual reality (VR) devices, augmented reality (AR) devices, mixed reality devices, holographic devices, etc. Such systems or devices can accept input from users in any manner, including via gesture input, proximity input (such as by hovering), and / or voice input from input devices (such as keyboards or pointing devices).
[0070] Examples of this disclosure can be described in the general context of computer-executable instructions (such as program modules) that are executed by one or more computers or other devices as software, firmware, hardware, or a combination thereof. Computer-executable instructions can be organized into one or more computer-executable components or modules. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform a particular task or implement a particular abstract data type. Aspects of this disclosure can be implemented using any number and organization of such components or modules. For example, aspects of this disclosure are not limited to the specific computer-executable instructions or specific components or modules shown in the figures and described herein. Other examples of this disclosure may include different computer-executable instructions or components having more or fewer functions than those shown and described herein. In examples involving general-purpose computers, aspects of this disclosure transform a general-purpose computer into a special-purpose computing device when configured to execute the instructions described herein.
[0071] By way of example and not limitation, computer-readable media include computer storage media and communication media. Computer storage media include volatile and non-volatile, removable and non-removable memories implemented using any method or technology for storing information such as computer-readable instructions, data structures, program modules, etc. Computer storage media are tangible and mutually exclusive with communication media. Computer storage media are implemented in hardware and do not include carrier waves and propagating signals. For the purposes of this disclosure, computer storage media themselves are not signals. Exemplary computer storage media include hard disks, flash drives, solid-state storage, phase-change random access memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD-ROM), digital versatile disc (DVD) or other optical storage devices, magnetic tape cassettes, magnetic tape, disk storage devices or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device. In contrast, communication media typically embody computer-readable instructions, data structures, program modules, etc., in modulated data signals (such as carrier waves) or other transmission mechanisms, and include any information delivery medium.
[0072] The order in which operations are run or performed in the examples of this disclosure shown and described herein is not critical and may be performed in different orders in various examples. For example, it is considered that a particular operation is run or performed before, simultaneously with, or after another operation within the scope of this disclosure. When introducing elements of aspects of this disclosure or examples thereof, the articles “a,” “an,” “the,” and “described” are intended to mean that one or more of that element are present. The words “comprising,” “including,” and “having” are intended to be inclusive and mean that additional elements may exist in addition to the listed elements. The word “exemplary” is intended to mean “an example of…”. The phrase “one or more of the following: A, B, and C” means “at least one A and / or at least one B and / or at least one C.”
[0073] It will be apparent from the detailed description of various aspects of this disclosure that modifications and variations can be made without departing from the scope of the aspects of this disclosure as defined in the appended claims. Because various changes can be made to the above-described constructions, products, and methods without departing from the scope of the aspects of this disclosure, all content contained in the foregoing description and shown in the accompanying drawings is to be interpreted as illustrative rather than restrictive.
Claims
1. A system comprising: Processor (914); as well as Computer-readable medium (912), the computer-readable medium storing instructions (912ab), the instructions operating when executed by the processor to: Receive (802) a bandwidth request (210) for each of the multiple data streams (104a-104c) of the wide area network (WAN) (102), each bandwidth request indicating a main bandwidth request portion (212) and a deferable bandwidth request portion (214). The bandwidth requests for the multiple data streams are aggregated (804) into an aggregated bandwidth request (240), which indicates a main aggregated bandwidth request portion (242) and a deferable aggregated bandwidth request portion (244). The authorized primary aggregate bandwidth (252) and the authorized deferred aggregate bandwidth (254) are determined (806) based at least on the aggregate bandwidth request; and Based at least on the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth, for each bandwidth request of the plurality of data streams, the authorized primary bandwidth (222) and the authorized deferred bandwidth (224) are allocated (808).
2. The system according to claim 1, wherein the instructions further operate to: Data is transmitted via the WAN based at least on the authorized primary bandwidth and the authorized deferred bandwidth for each bandwidth request of the plurality of data streams.
3. The system according to claim 1, The intermediary backend receives the bandwidth requests for the multiple data streams from the intermediary agent; The intermediary backend aggregates the bandwidth requests from the multiple data streams into the aggregated bandwidth request. The intermediary backend allocates the primary bandwidth of the authorization and the deferred bandwidth of the authorization; The admission controller determines the primary aggregate bandwidth of the authorization and the deferred aggregate bandwidth of the authorization; and The instructions also operate as follows: The intermediary agent sends the bandwidth request for the multiple data streams to the intermediary backend; The intermediary backend sends the aggregated bandwidth request to the admission controller; The admission controller sends instructions to the intermediary backend regarding the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth; and The intermediary backend sends instructions to the intermediary agent regarding the authorized primary bandwidth and the authorized deferred bandwidth.
4. The system of claim 3, wherein the instructions further operate to: The intermediary agent receives from the application an indication of a deferred service for a first data stream among the plurality of data streams; The bandwidth requests for the plurality of data streams are created by the intermediary agent, at least based on the instructions for deferred services. The intermediary agent sends an indication to the application of the total authorized bandwidth for the first data stream, the total authorized bandwidth for the first data stream including the sum of the primary authorized bandwidth and the deferable authorized bandwidth for the first data stream; and The application assigns the authorized total bandwidth to the first data stream.
5. The system according to claim 3, wherein the instructions further operate to: The intermediary backend maintains a first pool for the primary bandwidth of the authorization and a second pool for the deferred bandwidth of the authorization; The allocation of the authorized primary bandwidth includes allocating the authorized primary bandwidth from the first pool; and The allocation of the authorized deferred bandwidth includes allocating the authorized deferred bandwidth from the second pool.
6. The system of claim 1, wherein each bandwidth request in the bandwidth request, each authorized primary bandwidth in the authorized primary bandwidth, and each authorized deferable bandwidth in the authorized deferable bandwidth are for a specific time period.
7. The system of claim 1, wherein each bandwidth request separately indicates its main bandwidth request portion and its deferable bandwidth request portion.
8. A computer-implemented method, comprising: Receive (802) a bandwidth request (210) for each of the multiple data streams (104a-104c) of the wide area network (WAN) (102), each bandwidth request indicating a main bandwidth request portion (212) and a deferable bandwidth request portion (214). The bandwidth requests for the multiple data streams are aggregated (804) into an aggregated bandwidth request (240), which indicates a main aggregated bandwidth request portion (242) and a deferable aggregated bandwidth request portion (244). The authorized primary aggregate bandwidth (252) and the authorized deferred aggregate bandwidth (254) are determined (806) based at least on the aggregate bandwidth request; and Based at least on the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth, for each bandwidth request of the plurality of data streams, the authorized primary bandwidth (222) and the authorized deferred bandwidth (224) are allocated (808).
9. The computer-implemented method according to claim 8, further comprising: Data is transmitted via the WAN based at least on the authorized primary bandwidth and the authorized deferred bandwidth for each bandwidth request of the plurality of data streams.
10. The computer-implemented method according to claim 8, The intermediary backend receives the bandwidth requests for the multiple data streams from the intermediary agent; The intermediary backend aggregates the bandwidth requests from the multiple data streams into the aggregated bandwidth request. The intermediary backend allocates the primary bandwidth of the authorization and the deferred bandwidth of the authorization; The admission controller determines the primary aggregate bandwidth of the authorization and the deferred aggregate bandwidth of the authorization; and The method further includes: The intermediary agent sends the bandwidth request for the multiple data streams to the intermediary backend; The intermediary backend sends the aggregated bandwidth request to the admission controller; The admission controller sends instructions to the intermediary backend regarding the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth; and The intermediary backend sends instructions to the intermediary agent regarding the authorized primary bandwidth and the authorized deferred bandwidth.
11. The computer-implemented method according to claim 10, further comprising: The intermediary agent receives from the application an indication of a deferred service for a first data stream among the plurality of data streams; The bandwidth requests for the plurality of data streams are created by the intermediary agent, at least based on the instructions for deferred services. The intermediary agent sends an indication to the application of the total authorized bandwidth for the first data stream, the total authorized bandwidth for the first data stream including the sum of the primary authorized bandwidth and the deferable authorized bandwidth for the first data stream; and The application assigns the authorized total bandwidth to the first data stream.
12. The computer-implemented method according to claim 10, further comprising: The intermediary backend maintains a first pool for the primary bandwidth of the authorization and a second pool for the deferred bandwidth of the authorization; The allocation of the authorized primary bandwidth includes allocating the authorized primary bandwidth from the first pool; and The allocation of the authorized deferred bandwidth includes allocating the authorized deferred bandwidth from the second pool.
13. The computer-implemented method of claim 8, wherein each bandwidth request in the bandwidth request, each authorized primary bandwidth in the authorized primary bandwidth, and each authorized deferable bandwidth in the authorized deferable bandwidth are for a specific time period.
14. The computer-implemented method of claim 8, wherein each bandwidth request separately indicates its main bandwidth request portion and its deferable bandwidth request portion.
15. A computer storage device storing computer-executable instructions, which, when executed by a computer, cause the computer to perform an operation, the operation comprising: Receive (802) a bandwidth request (210) for each of the multiple data streams (104a-104c) of the wide area network (WAN) (102), each bandwidth request indicating a main bandwidth request portion (212) and a deferable bandwidth request portion (214). The bandwidth requests for the multiple data streams are aggregated (804) into an aggregated bandwidth request (240), which indicates a main aggregated bandwidth request portion (242) and a deferable aggregated bandwidth request portion (244). The authorized primary aggregate bandwidth (252) and the authorized deferred aggregate bandwidth (254) are determined (806) based at least on the aggregate bandwidth request; and Based at least on the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth, for each bandwidth request of the plurality of data streams, the authorized primary bandwidth (222) and the authorized deferred bandwidth (224) are allocated (808).
16. The computer storage device of claim 15, wherein the operation further comprises: Data is transmitted via the WAN based at least on the authorized primary bandwidth and the authorized deferred bandwidth for each bandwidth request of the plurality of data streams.
17. The computer storage device according to claim 15, The intermediary backend receives the bandwidth requests for the multiple data streams from the intermediary agent; The intermediary backend aggregates the bandwidth requests from the multiple data streams into the aggregated bandwidth request. The intermediary backend allocates the primary bandwidth of the authorization and the deferred bandwidth of the authorization; The admission controller determines the primary aggregate bandwidth of the authorization and the deferred aggregate bandwidth of the authorization; and The operation also includes: The intermediary agent sends the bandwidth request for the multiple data streams to the intermediary backend; The intermediary backend sends the aggregated bandwidth request to the admission controller; The admission controller sends instructions to the intermediary backend regarding the authorized primary aggregate bandwidth and the authorized deferred aggregate bandwidth; and The intermediary backend sends instructions to the intermediary agent regarding the authorized primary bandwidth and the authorized deferred bandwidth.
18. The computer storage device of claim 17, wherein the operation further comprises: The intermediary agent receives from the application an indication of a deferred service for a first data stream among the plurality of data streams; The bandwidth requests for the plurality of data streams are created by the intermediary agent, at least based on the instructions for deferred services. The intermediary agent sends an indication to the application of the total authorized bandwidth for the first data stream, the total authorized bandwidth for the first data stream including the sum of the primary authorized bandwidth and the deferable authorized bandwidth for the first data stream; and The application assigns the authorized total bandwidth to the first data stream.
19. The computer storage device of claim 17, wherein the operation further comprises: The intermediary backend maintains a first pool for the primary bandwidth of the authorization and a second pool for the deferred bandwidth of the authorization; The allocation of the authorized primary bandwidth includes allocating the authorized primary bandwidth from the first pool; and The allocation of the authorized deferred bandwidth includes allocating the authorized deferred bandwidth from the second pool.
20. The computer storage device of claim 15, wherein each bandwidth request, each authorized primary bandwidth, and each authorized deferable bandwidth is for a specific time period.