U.S. patent application number 15/670190 was filed with the patent office on 2017-11-23 for purging failover through application controlled transit selection.
The applicant listed for this patent is Verizon Digital Media Services Inc.. Invention is credited to Amir Reza Khakpour, Derek Shiell.
Application Number | 20170339047 15/670190 |
Document ID | / |
Family ID | 57017595 |
Filed Date | 2017-11-23 |
United States Patent
Application |
20170339047 |
Kind Code |
A1 |
Khakpour; Amir Reza ; et
al. |
November 23, 2017 |
PURGING FAILOVER THROUGH APPLICATION CONTROLLED TRANSIT
SELECTION
Abstract
Some embodiments provide redundancy and failover for
accelerating and improving the processing of commands across a
distributed platform. A distributed platform administrative server
distributes commands to different distributed platform
points-of-presence (PoPs) for execution. The administrative server
distributes the commands over a first set of transit provider paths
that connect the server to each PoP. The administrative server
selects the first set of paths based on different addressing
associated with each of the paths. If any of the first paths is
unavailable or underperforming, the administrative server selects a
second path by changing a destination address and resends the
command to the particular PoP over the second path. Some
embodiments further modify PoP server operation so that the PoP
servers can identify commands issued according to the different
path addressing and distribute such commands to all other servers
of the same PoP upon identifying the different path addressing.
Inventors: |
Khakpour; Amir Reza; (Los
Angeles, CA) ; Shiell; Derek; (Los Angeles,
CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Verizon Digital Media Services Inc. |
Dulles |
VA |
US |
|
|
Family ID: |
57017595 |
Appl. No.: |
15/670190 |
Filed: |
August 7, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15066862 |
Mar 10, 2016 |
9736059 |
|
|
15670190 |
|
|
|
|
14679266 |
Apr 6, 2015 |
|
|
|
15066862 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04L 45/306 20130101;
H04W 88/06 20130101; H04L 45/70 20130101; H04L 1/20 20130101; H04L
1/188 20130101; H04L 12/1868 20130101; H04L 45/42 20130101; H04L
45/22 20130101; H04L 45/74 20130101; H04L 45/24 20130101; H04L
45/12 20130101 |
International
Class: |
H04L 12/707 20130101
H04L012/707; H04L 12/717 20130101 H04L012/717; H04L 12/721 20130101
H04L012/721; H04L 1/20 20060101 H04L001/20 |
Claims
1. A method comprising: distributing a command contemporaneously
over at least a first transit provider path and a different second
transit provider path to a common destination, wherein the first
transit provider path comprises a first set of network hops to the
common destination with at least one different network hop than a
second set of network hops comprising the second transit provider
path to the common destination; receiving confirmation of command
execution over the first transit provider path in response to said
common destination executing the command distributed over the first
transit provider path; and receiving confirmation of command
execution over the second transit provider path in response to said
common destination executing the command distributed over the
second transit provider path.
2. The method of claim 1, wherein receiving confirmation over the
first transit provider path is further in response to the first
transit provider path having lower latency to the common
destination than the second transit provider path, and wherein
receiving confirmation over the second transit provider path is
further in response to the second transit provider path having
lower latency to the common destination than the first transit
provider.
3. The method of claim 1, wherein said distributing comprises
addressing a first message comprising said command with a first
Internet Protocol (IP) address associated with the first transit
provider path and addressing a second message comprising said
command with a different second IP address associated with the
second transit provider path.
4. The method of claim 3 further comprising receiving from the
common destination, a first route advertisement comprising the
first IP address, and a second route advertisement comprising the
second IP address.
5. The method of claim 1, wherein receiving confirmation over the
first transit provider path indicates faster performance over the
first transit provider path than the second transit provider path,
and wherein receiving confirmation over the second transit provider
path indicates faster performance over the second transit provider
path than the first transit provider path.
6. The method of claim 5 further comprising distributing subsequent
messaging to the common destination over the first transit provider
path in response to receiving confirmation of command execution
over the first transit provider path.
7. The method of claim 1 further comprising monitoring performance
over the first transit provider path and the second transit
provider path based on said receiving confirmation over the first
transit provider path and said receiving confirmation over the
second transit provider path.
8. A method comprising: sending from a command originating server,
a single command for execution by a plurality of servers at a
destination over a first transit provider path to said destination;
receiving said single command at a first server of the plurality of
servers; distributing said single command from the first server to
other servers of the plurality of servers; and providing single
command execution confirmation from the first server to the command
originating server after the first server receives command
execution confirmation from each server of the other servers in
response to said distributing.
9. The method of claim 8 further comprising gathering at the first
server, said command execution confirmation from the other servers
in response to said distributing.
10. The method of claim 8 further comprising resending said single
command from the command originating server to said destination
over a different second transit provider path to said destination
in response to not receiving the single command execution
confirmation within a specified amount of time after said
sending.
11. The method of claim 10, wherein sending said single command
over the first transit provider path comprises addressing the
single command to a first address associated with the first transit
provider path and different from a second address of the first
server at the destination, and wherein resending the single command
over the second transit provider path comprises addressing the
single command to a third address associated with the second
transit provider path and different from the second address.
12. The method of claim 10, wherein the first transit provider path
comprises a first set of network hops to said destination with at
least one different network hop than a second set of network hops
comprising the second transit provider path to the destination.
13. The method of claim 8 further comprising selecting the first
transit provider path from a plurality of different transit
provider paths connecting the command originating server to the
destination.
14. The method of claim 13 further comprising monitoring
performance across each transit provider path of the plurality of
different transit provider paths, and wherein said selecting
comprises selecting the first transit provider path in response to
the first transit provider path having faster performance from
amongst the plurality of different transit provider paths.
15. A method comprising: monitoring at least one parameter
associated with sending a message over at least a first network
path and a different second network path to a common destination,
wherein the first network path comprises a first set of network
hops to the common destination with at least one different network
hop than a second set of network hops comprising the second network
path to the common destination; sending said message over the first
network path by addressing the message to a first Internet Protocol
(IP) address based on said monitoring of the at least one parameter
identifying faster transit of said message through the first
network path than the second network path; and sending said message
over the second network path by addressing the message to a
different second IP address based on said monitoring of the at
least one parameter identifying faster transit of said message
through the second network path than the first network path.
16. The method of claim 15, wherein monitoring the at least one
parameter comprises periodically pinging a different address
associated with each of the first and second network paths.
17. The method of claim 15 further comprising monitoring cost
associated with sending a message over each of the first and second
network paths, and wherein said sending said message over the first
network path is further in response to the cost of sending said
message over the first network path being less than the cost of
sending said message over the second network path.
18. The method of claim 15, wherein monitoring the at least one
parameter comprises detecting different amounts of congestion
affecting the first network path and the second network path.
19. The method of claim 15 further comprising receiving from a
router at the common destination, a first route advertisement
message over the first network path comprising the first IP
address, and a second route advertisement message over the second
network path comprising the second IP address.
Description
CLAIM OF BENEFIT TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. nonprovisional
application Ser. No. 15/066,862, entitled "Purging Failover Through
Application Controlled Transit Selection", filed Mar. 10, 2016
which is a continuation-in-part of U.S. nonprovisional application
Ser. No. 14/679,266, entitled "Application Controlled Path
Selection Over Different Transit Providers", filed Apr. 6, 2015.
The contents of application Ser. Nos. 15/066,862 and 14/679,266 are
hereby incorporated by reference.
BACKGROUND ART
[0002] Efficiency and performance is a differentiating factor for
content delivery networks (CDNs) or other distributed platforms
that operate different points-of-presence (PoPs) with each PoP
hosting a different set of servers at a different network location
or geographic region. One area where distributed platform
performance can be greatly impacted is in the performance of tasks
that are distributed across multiple distributed platform servers
for execution. Completion of such tasks is dependent on the weakest
link of the distributed platform.
[0003] Distribution and execution of a purge command within a
distributed platform illustrates distributed platform performance
degradation that can result from just one weak link in the
distributed platform. To purge content across the distributed
platform, a distributed platform administrative server sends a
purge command to the distributed platform content delivery servers
that are deployed to the different geographic regions. The purge
command instructs those content delivery servers to delete or
otherwise remove certain content from storage or cache. The purge
command is complete once each of the instructed content caching
delivery servers deletes the specified content and reports task
completion to the administrative server.
[0004] Should one of the many servers performing the purge not
receive the command, be unable to complete the command because of a
software or hardware failure, or have problem reporting completion
of the command back to the administrative server, the
administrative server cannot deem the command as completed. The
administrative server will then have to reissue the purge command
or report a failure. Thus, a single point of failure within the
distributed platform can degrade command execution performance for
the entire distributed platform. This can further create a
trickledown effect that further impacts the distributed platform
performance. For instance, in the event old content cannot be
completely purged from the distributed platform, the distributed
platform may continue to serve obsolete content to certain users or
be unable to free storage, delaying or otherwise preventing updated
customer content from being served from the distributed
platform.
[0005] Purge execution and command execution, in general, becomes
more difficult as the distributed platform scales and deploys more
servers to more PoPs, especially as the servers and PoPs are
located in more distant and remote geographic regions. Such scaling
introduces more execution points, each of which can become an
additional point of failure or can increase delay in command
execution completion. Scaling also increases the number of network
hops and different transits or paths that the command signaling
crosses in order to reach the servers. The network hops and
transits themselves can experience different performance and
failures. Such failures also slow the distributed platform's
ability to execute distributed commands that implicate servers in
different regions. The term "path" includes any arbitrary set of
network routers or hops that are under control of a common transit
provider through which a source operating within a first network
can reach a destination operating within a second network. When
different packets are sent from the source to the destination over
a transit provider path, the packets can traverse different sets of
routers or hops that are under control of the transit provider. The
term "transit" refers to a specific path or a specific set of
routers or hops under control of a common transit provider through
which the source operating within the first network can reach the
destination operating within the second network. In other words,
when different packets are sent from the source to the destination
over a specific transit, the packets traverse the same set or
routers or hops. These terms will be used interchangeably in the
following disclosure.
[0006] There is therefore a need to accelerate or improve
distributed platform execution of distributed commands. Such
acceleration or improvement can be obtained by reducing or
resolving one or more of the variables that can degrade distributed
platform performance, and specifically, the ability of the
distributed platform to execute distributed commands across
different servers operating in different regions. To this end,
there is a need to improve the propagation of distributed commands
across the distributed platform and reduce or resolve the potential
for delay or failure that may occur if one or more paths carrying
the command messaging between the distributed platform
administrative server and PoPs become unavailable or
underperform.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] A preferred embodiment of methods and systems for purging
failover through application controlled path selection will now be
described, by way of example only, with reference to the
accompanying drawings in which:
[0008] FIG. 1 illustrates an exemplary distributed platform in
which the embodiments may implemented and practiced.
[0009] FIG. 2 conceptually illustrates accelerating and improving
command execution via transit provider path failover and inter-PoP
messaging reduction in accordance with some embodiments.
[0010] FIG. 3 presents a process for accelerating command execution
using path failover in accordance with some embodiments.
[0011] FIG. 4 conceptually illustrates accelerating command
execution by simultaneously issuing a command over multiple paths
to a desired destination in accordance with some embodiments.
[0012] FIG. 5 conceptually illustrates assigning different
addressing to different paths in accordance with some
embodiments.
[0013] FIG. 6 conceptually illustrates the administrative server
gateway router routing commands over the different paths and to the
same PoP based on addressing the administrative server enters into
the packets encapsulating the commands.
[0014] FIG. 7 presents a message exchange diagram for executing a
distributed command received at a distributed platform PoP in
accordance with some embodiments.
[0015] FIG. 8 illustrates the reciprocal path address advertising
in accordance with some embodiments.
[0016] FIG. 9 illustrates a computer system or server with which
some embodiments are implemented.
DETAILED DESCRIPTION
[0017] The embodiments set forth herein accelerate and improve
command execution across a distributed platform. In some
embodiments, the accelerated and improved command execution results
from providing redundancy and failover for unavailable or
underperforming paths (i.e., transits or paths) over which commands
and other messaging pass from one distributed platform server to
another. In some embodiments, the accelerated and improved command
execution results from reducing the number of messaging passed over
the different paths.
[0018] Some embodiments provide redundancy and failover by
establishing multiple paths between at least two distant servers or
points-of-presence (PoPs) of the distributed platform. To
accelerate command execution over the multiple paths, some
embodiments modify server operation to select between the different
paths over which to issue commands and other messaging to different
servers or different PoPs. The servers select between the different
paths by issuing the commands using different addressing associated
with each of the paths. Accordingly, if a particular server is
unable to reach a particular PoP or a server of the particular PoP
over a first transit provider path, the particular server can
autonomously switch to a second transit provider path by changing a
destination address and attempt to reach the particular PoP or
server of the particular PoP using the second transit provider
path. Some embodiments further accelerate command execution by
modifying server operation to issue a command simultaneously over
multiple paths to a destination. The destination executes the first
command that arrives over the multiple paths. Subsequently arriving
commands over the multiple paths can be ignored or can be
redundantly executed with the redundant execution resulting in
little to no additional overhead in the case of a purge.
[0019] Some embodiments reduce the amount of messaging that is
passed over the different paths by modifying the manner with which
the distributed platform distributes commands across the
distributed platform. Rather than have an administrative server
send commands to all distributed platform servers or all servers
operating within the different PoPs, some embodiments modify server
operation such that the administrative server sends one command to
each of the PoPs with a particular PoP server receiving and
distributing the command to other servers operating within the same
PoP. The particular PoP server confirms the command has been
executed within the PoP before messaging successful command
execution back to the administrative server.
[0020] The inter-PoP and intra-PoP messaging including commands and
command confirmations can be passed using a connection oriented
protocol such as the Transmission Control Protocol (TCP). However,
some embodiments use a connectionless oriented protocol such as the
User Datagram Protocol (UDP) to send inter-PoP or intra-PoP
messaging to further reduce the amount of traffic that is passed in
a PoP or between PoPs.
[0021] To facilitate the discussion, FIG. 1 illustrates an
exemplary distributed platform in which the embodiments may
implemented and practiced. The distributed platform includes
different PoPs 110, traffic management servers 120, and an
administrative server 130. Such a distributed platform can embody a
content delivery network (CDN) or a cloud based service provider as
some examples.
[0022] The PoPs 110 are geographically separated from one another.
Each PoP 110 includes at least one gateway router 140 and one or
more servers 150 providing services for distributed platform
customers.
[0023] In some embodiments, the PoP servers 150 are tasked with
delivery of services and/or content of one or more third party
distributed platform customers to end users that request the
services or content from the distributed platform. To accelerate
delivery of the customer content or services, the PoP servers 150
may cache or temporarily store copies of the content or services.
Each PoP server 150 can represent a separate physical machine or a
set of virtual machines running on a partitioned or shared set of
resources of a physical machine. Multiple servers 150 may be
deployed onto the hardware resources of a single physical
machine.
[0024] The gateway router 140 is the point of egress for all
packets the PoP servers 150 send to recipients outside the PoP 110.
The gateway router 140 is also the point of ingress for all packets
originating from an external network and that are directed to the
PoP 110.
[0025] The traffic management servers 120 assist in accelerating
distributed platform performance by routing users, and more
specifically, user issued requests for services or content to one
of the PoPs 110 that can optimally deliver the requested service or
content back to the requesting user with least delay. Different
implementations utilize different traffic management schemes, such
as Anycast routing or Domain Name System (DNS) routing, to achieve
such routing.
[0026] The administrative server 130 performs the command, control,
and reporting function for the distributed platform. As part of
this function, the administrative server 130 issues distributed
commands for the various PoP servers 150 to execute. A distributed
command is a command that is to be distributed across the
distributed platform for execution by two or more servers operating
in two or more of the distributed platform PoPs 110. A distributed
command can instruct the servers 150 to load or purge certain
content. The administrative server 130 further monitors distributed
command execution based on confirmation messaging the PoP servers
150 send back to the administrative server 130 to signal command
completion or execution. A command is complete when all servers 150
instructed to execute the command send the confirmation messaging
back to the administrative server 130.
[0027] In FIG. 1, the administrative server 130 is shown as a
central server of the distributed platform from which commands are
distributed to the different PoPs 110. Command distribution can
also be performed in a distributed manner. For example, the
administrative server 130 may originally distribute a command to
first and second PoPs that are closest to the administrative server
130. The first PoP can then redistribute the command to third and
fourth PoPs that are closest to the first PoP and the second PoP
can redistribute the command to a fifth PoP that is closest to the
second PoP. Commands can be propagated in this distributed manner
until all PoPs receive the command. In some such embodiments, the
administrative server 130 functionality can be implemented within
each of the PoPs, and more specifically, within one or more servers
of each PoP 110.
[0028] FIG. 2 conceptually illustrates accelerating and improving
command execution via transit provider path failover and inter-PoP
messaging reduction in accordance with some embodiments. The figure
illustrates an administrative server 210, PoP 220, and two
different transit provider paths 230 and 240 connecting the
administrative server 210 to the PoP 220. The administrative server
210 can be any distributed platform server that issues a command
for other distributed platform servers to execute.
[0029] The administrative server 210 initially sends a purge
command to the PoP 220 over the first transit provider path 230.
Due to some network failure, the PoP 220 does not receive the purge
command and so no command completion response is passed back to the
administrative server 210 within a specified timeout.
[0030] Once the timeout is reached, the administrative server 210
resends the purge command over the second transit provider path
240. In this case, a particular server within the PoP 220 receives
the command. The particular server distributes the command to all
other servers of the PoP 220 for execution. Upon executing the
command and receiving execution confirmation from the other PoP
servers, the particular server sends the command completion
response back to the administrative server 210. The administrative
server 210 receives the response from the PoP 220 within the
timeout indicating that the command has been successfully
processed.
[0031] FIG. 3 presents a process 300 for accelerating command
execution using path failover in accordance with some embodiments.
In some embodiments, process 300 is performed by a distributed
platform administrative server 130. However, process 300 can be
adapted so that it is performed by any distributed platform machine
or server sending commands or messaging across the distributed
platform for other machines or servers to execute or process.
[0032] Process 300 commences upon obtaining (at 310) a distributed
purge or other distributed command from a command queue. The
command can be one that is executed by a subset of the PoPs, but in
most cases, will be one that is to be executed by all distributed
platform PoPs. Different distributed platform customers, including
content and service providers, may enter the commands into the
queue. These commands control or update the content and services
the distributed platform PoP servers provide on behalf of the
customers. Distributed platform administrators as well as
maintenance processes may also enter the commands into the
queue.
[0033] The process identifies (at 320) available paths for sending
the command to each of the involved PoPs. These paths allow the
administrative server to connect and communicate with each of the
PoPs through different sets of network hops, routers, or autonomous
systems as some examples. The process selects (at 330) an initial
path to each of the involved PoPs from the available paths and
sends (at 340) the command to each of the involved PoPs over the
selected initial path to the PoP. The process then monitors (at
345) responses from the involved PoPs.
[0034] When all of the involved PoPs confirm (at 350) execution of
the command before a specified timeout, the process removes (at
355) the command from the command queue as a result of the command
having been completed and the process ends.
[0035] When fewer than all of the involved PoPs confirm (at 350)
execution of the command before the timeout interval, the process
determines (at 360) which of the involved PoPs have not yet
confirmed command execution. The process determines (at 365) if at
least one alternative path remains to reissue the command to each
of the non-responsive PoPs. If not, the process cannot successfully
complete the request and can either retry the command at a later
time or signal (at 370) that the command has failed. Otherwise, the
process selects (at 380) an alternative available path to each of
the non-responsive PoPs and reissues (at 390) the command over the
alternative path. The process reverts to step 350 and continues to
issue commands over the alternative paths until all alternative
paths have been exhausted or all PoPs confirm execution of the
command.
[0036] Some embodiments further accelerate command execution by
eliminating the delay associated with failing over from one path to
another. In some such embodiments, the command issuing server
distributes the command simultaneously over each of the available
paths connecting the server to a desired destination.
[0037] FIG. 4 conceptually illustrates accelerating command
execution by simultaneously issuing a command over multiple paths
to a desired destination in accordance with some embodiments. The
figure illustrates a first server 410 operating in a first PoP, a
second server 420 operating in a second PoP, and first, second, and
third paths 430, 440, and 450 connecting the first PoP to the
second PoP. The figure also illustrates the different delays
associated with each path 430, 440, and 450. These delays can
change as congestion over the paths changes and as different hops
or routers along the paths experience failures.
[0038] The first server 410 sends a command over the three paths
430, 440, and 450 to the second PoP. Based on the delays, the
command is expected to first arrive over the second path 440.
However, the second path 440 experiences a failure during the
command transmission preventing the command from being delivered.
Nevertheless, the simultaneous issuance of the command over the
three paths 430, 440, and 450 results in the second server 420
first receiving the command over the third path 450 before
redundantly receiving the command over the first path 430. Upon the
first arrival of the command, the second server 420 executes the
command and reports command completion back to the first PoP 410
over the third path 450 over which the command first arrived. Upon
the second arrival of the command, the second server 420 can ignore
the command or reexecute the command. If the command is a purge
command, the reexecution results in little to no additional
overhead because the identified content will have already been
purged as a result of the earlier arriving command. In such cases,
the command is complete without the second server 420 having remove
content from storage.
[0039] To facilitate path selection by the server issuing the
commands across the distributed platform, the distributed platform
configures different addressing for each of the paths. FIG. 5
conceptually illustrates assigning different addressing to
different paths in accordance with some embodiments.
[0040] FIG. 5 illustrates different route advertisement messaging
that a gateway router 510 of a particular distributed platform PoP
515 sends over each of the paths 520 and 530 connecting the
particular PoP 515 back to an administrative server 540 or other
server that issues commands or messaging across the distributed
platform. The first path 520 traverses network hops and routers of
a first autonomous system (AS) that connect the particular PoP 515
to the administrative server 540. The second path 530 traverses
network hops and routers of second and third ASes that
alternatively connect the particular PoP 515 to the administrative
server 540.
[0041] The particular PoP gateway router 510 sends a first route
advertisement message 550 over the first path 520 and a second
route advertisement message 560 over the second path 530. The first
route advertisement message 550 advertises that a first unique
address prefix 10.1.10.0/24 is directly connected to or reachable
from the particular PoP gateway router 510. The second route
advertisement message 560 advertises that a second unique address
prefix 10.1.20.0/24 is directly connected to or reachable from the
particular PoP gateway router 510. In some embodiments, the route
advertisement message is a Border Gateway Protocol (BGP) update
message. In some embodiments, the route advertisement messages
advertise two or more specific Internet Protocol (IP) addresses or
address prefixes. The addressing can include IPv4 or IPv6
addresses.
[0042] The first and second address prefixes advertised by the
particular PoP gateway router 510 point back to the particular PoP
515. Each address prefix is however advertised over only one of the
different paths 520 and 530 so as to make it appear to the network
routers that the path over which the address prefix is advertised
is the only path to reach the advertised addresses of the address
prefix.
[0043] The route advertisement messages 550 and 560 eventually
propagate to the gateway router 545 of the administrative server
540. The messages 550 and 560 update the administrative server
gateway router's 545 routing table, thereby altering how the router
545 routes administrative server 540 packets to the destinations
identified in the messages 550 and 560. Per the route advertisement
messages 550 and 560, the administrative server gateway router 545
routing table is updated to identify that the next hop for any
address within the first address prefix 10.1.10.0/24 is the router
in AS number 2, wherein the next hop for any address within the
second address prefix 10.1.20.0/24 is the router in AS number 4. In
other words, the administrative server gateway router 545 is
unaware that the different address prefixes advertised in the route
advertisement messages 550 and 560 received over paths 520 and 530
lead to the same particular PoP 515. The administrative server
gateway router 545 only knows that the first set of addresses of
the first unique address prefix (e.g., 10.1.10.0/24) are reachable
through path 520 and the second set of addresses within the second
unique address prefix (e.g., 10.1.20.0/24) are reachable through
path 530. Therefore, if the administrative server 540 addresses the
packet to an address within the second unique address prefix
advertised over the second transit provider path 530, the
administrative server gateway router 545 receiving the packet has
only one choice or path to route the packet to. The result is that
the administrative server 540 is able to usurp the path selection
operation from the administrative server gateway router 545 by
simply changing the destination address for the packets it sends to
the different PoPs. The path selection therefore occurs without
modifying the functionality of the administrative server gateway
router 545.
[0044] In order to implement path selection at the administrative
server 540, the administrative server 540 is provided the
addressing from the route advertisements 550 and 560 sent by the
PoP gateway routers (e.g., 510). The administrative server 540 maps
the addresses advertised from a particular PoP to paths connecting
the administrative server 540 to that particular PoP. The mapping
can be a logical mapping. For example, in FIG. 5, the
administrative server 540 can logically map address prefix
10.1.10.0/24 to a first path to PoP 515 and logically map address
prefix 10.1.20.0/24 to a second path to PoP 515. The administrative
server 540 then selects a specific path to PoP 515 by entering the
advertised address for the specific path as the destination address
for packets directed to the PoP 515. The routers route the packets
through whatever path the address prefix for the destination
address was advertised.
[0045] FIG. 6 conceptually illustrates the administrative server
gateway router 545 routing commands over the different paths 520
and 530 to the same PoP 515 based on addressing the administrative
server 540 enters into the packets encapsulating the commands. The
administrative server 540 addresses a first packet 610 to address
10.1.20.6 that is within the second unique address prefix (i.e.,
10.1.20.0/24) previously advertised from the PoP 510 over the
second path 530. The administrative server 540 passes the first
packet 610 to the administrative server gateway router 545. Based
on the route advertisement messages previously propagated
throughout the network in FIG. 5, the administrative server gateway
router 545 in FIG. 6 knows that address 10.1.20.6 is reachable over
the second path 530, and therefore routes the first packet 610 over
the second path 530.
[0046] In FIG. 6, the administrative server 545 then addresses a
second packet 620 to address 10.1.10.12 that is within the first
unique address prefix (i.e., 10.1.10.0/24) advertised by the
particular PoP gateway router 510 over the first path 520 in FIG.
5. In this case, the administrative server gateway router 545 knows
that address 10.1.10.12 is reachable over the first path 520, and
therefore routes the second packet 620 over the first path 520.
[0047] As shown in FIG. 6, the administrative server issues a
single command to the PoP even though there may be many servers
within the PoP that execute the command. Issuing the single
command, rather than sending a command to each PoP server
individually, has the advantage of accelerating and improving
distributed platform command execution because it further reduces
the potential for delay or loss that can occur over long haul
transfers of the commands. In order to execute the single command
across all PoP servers, some embodiments modify PoP server
operation as well as PoP gateway router operation.
[0048] Some embodiments modify PoP gateway router operation such
that when the PoP gateway router receives a packet or command
addressed to a path advertised address rather than a PoP server
address, the gateway router selects one of the PoP servers to
receive and distribute the command. The gateway router can select
the same server or perform a distribution to select a different
server to receive the commands. In some embodiments, the gateway
router performs a round-robin distribution of the commands across
the PoP servers.
[0049] Some embodiments modify PoP server operation such that a
particular PoP server receiving a command address to a path
advertised address executes the command and distributes the command
to the other PoP servers. The particular PoP server monitors
execution of the command across the PoP and receives command
execution confirmation signaling from the other PoP servers. The
particular PoP servers then reports successful execution back to
the administrative server when all the involved PoP servers have
provided confirmation. Thus, the administrative server receives a
single command execution confirmation from a PoP indicating that
all servers of the PoP have executed the command rather than
receiving individual confirmation from each server of the
distributed platform.
[0050] FIG. 7 presents a message exchange diagram for executing a
distributed command received at a distributed platform PoP in
accordance with some embodiments. The figure illustrates a gateway
router 710 and multiple servers 720, 725, and 730 of the PoP.
[0051] The gateway router 710 receives (at 740) a distributed
command. The gateway router 710 identifies the distributed command
because the destination address is one that the gateway router 710
advertises over one of the paths connecting the gateway router 710
to the administrative server and not an address of any of the PoP
servers 720, 725, and 730. The gateway router 710 uses a
round-robin or other distribution to pass (at 750) the distributed
command to server 725.
[0052] The PoP servers are similarly configured to recognize the
distributed command based on the advertised path addressing. Server
725 identifies the distributed command and distributes (at 760) the
command to all other servers 720 and 730 of the PoP for execution.
Server 725 may broadcast or multicast the command to the other
servers 720 and 730 or may individually address the command to each
of the other servers 720 and 730.
[0053] Server 725 executes (at 770) the command and awaits
confirmation from the other PoP servers 720 and 730 that they also
have executed the command. Since all the servers are locally
connected on a common network, the confirmations should arrive
unless there is a software or hardware failure at one of the PoP
servers. In the event of a failure or lack of confirmation from one
or more servers within a timeout, server 725 can resend the command
within the PoP or ignore the failure when the overall command
execution is not impacted by the failure.
[0054] Once the other servers 720 and 730 provide (at 780)
execution confirmation to server 725, server 725 sends (at 790) an
execution confirmation message to the gateway router 710. The
execution confirmation message is a single message indicating that
all servers 720, 725, and 730 of the PoP have executed the
command.
[0055] The gateway router 710 routes (at 795) the execution
confirmation message back to the administrative server. In some
embodiments, the gateway router 710 routes the execution
confirmation message over the same path through which the command
arrived at the PoP.
[0056] In some embodiments, server 725 addresses the message to the
same advertised path address as was specified in the command. From
the advertised path address, the gateway router 710 identifies
which path to send the message back to the administrative
server.
[0057] Policy based routing (PBR) rules may be configured on the
PoP gateway router to enable bidirectional communication over the
same path. Specifically, for any connection established between the
administrative server and the PoP server, the PoP gateway router is
configured with PBR rules that cause the PoP gateway router to send
responses or any other messages in reply to commands and messaging
sent by the administrative server over the same path or the same
transit that the PoP server receives those commands or messages
from the administrative server.
[0058] In some embodiments, the administrative server gateway
server performed a reciprocal advertising of addresses to enable
bidirectional communication over the same path. In particular, the
administrative server gateway server advertises a different set of
addresses over each of the paths connecting the administrative
server to the different PoPs. The advertised addresses over the
different path then facilitate the PoP servers and PoP gateway
routers ability to return execution confirmation messaging and
other messaging back to the administrative server over the same
path with which the administrative server sends commands or
messaging to the PoPs. In particular, the PoP servers or gateway
router can map different path addressing advertised from the PoP to
different path addressing advertised from the administrative
server. Thereafter, the specific path address used by the
administrative server to send a command over a specific path to the
PoP is mapped to a corresponding path address for sending the
execution confirmation message over the same specific path from the
PoP to the administrative server.
[0059] FIG. 8 illustrates the reciprocal path address advertising
in accordance with some embodiments. As shown, the administrative
server gateway router 545 sends a first route advertisement over
the first path 520 and a second route advertisement over the second
path 530. The first route advertisement identifies a first address
prefix that is accessible through the administrative server gateway
router 545 while the second route advertisement identifies a second
address prefix that is accessible through the administrative server
gateway router 545. By sending these messages over the different
paths, the network routers along the paths update their routing
tables and route packets addressed to the different advertised
addresses over the corresponding paths the addresses were
advertised.
[0060] In addition to the path addressing described above, the
administrative server, as well as the PoP servers, can be
configured with policies for selecting between the available paths.
The policies control how and which path the administrative server
selects when issuing commands to the different PoPs and how to
perform failover to a different path should a previously selected
path be unavailable or underperform.
[0061] In some embodiments, the administrative server is configured
with a default path to each PoP. The default path can be selected
on the basis of cost, performance, relationship with a transit
provider, or other factors. With respect to cost, different transit
provider may charge the distributed platform different amounts in
order to carry traffic through their paths. With respect to
performance, different transit provider paths experience different
amounts of traffic. The default path can change if performance
across different paths varies at different times of day or on
different days. Peering agreements may be established between the
distributed platform and a particular transit provider. The peering
agreements may cause one transit provider path to be preferable to
other paths in terms of cost, performance, or other factors and may
therefore be a basis from which the distributed platform selects
the default path. Should the default path be unavailable or
underperform, the administrative uses a round-robin distribution to
reissue the command across the other available paths in some
embodiments.
[0062] In some embodiments, the administrative server continually
monitors the performance across each path. The administrative
server determines which of the available paths to a particular PoP
is the best performing at any given time based on the monitoring.
The best performing path can then be selected as the default path.
In some such embodiments, the administrative server monitors path
performance to the particular PoP by periodically sending pings to
the different path addresses advertised from the particular
PoP.
[0063] Many of the above-described processes and components are
implemented as software processes that are specified as a set of
instructions recorded on a non-transitory computer-readable storage
medium (also referred to as computer-readable medium). When these
instructions are executed by one or more computational element(s)
(such as processors or other computational elements like ASICs and
FPGAs), they cause the computational element(s) to perform the
actions indicated in the instructions. Server, computer, and
computing machine are meant in their broadest sense, and can
include any electronic device with a processor including cellular
telephones, smartphones, portable digital assistants, tablet
devices, laptops, notebooks, and desktop computers. Examples of
computer-readable media include, but are not limited to, CD-ROMs,
flash drives, RAM chips, hard drives, EPROMs, etc.
[0064] FIG. 9 illustrates a computer system or server with which
some embodiments are implemented. Such a computer system includes
various types of computer-readable mediums and interfaces for
various other types of computer-readable mediums that implement the
various methods and machines described above (e.g., administrative
server, gateway router, PoP servers, etc.). Computer system 900
includes a bus 905, a processor 910, a system memory 915, a
read-only memory 920, a permanent storage device 925, input devices
930, and output devices 935.
[0065] The bus 905 collectively represents all system, peripheral,
and chipset buses that communicatively connect the numerous
internal devices of the computer system 900. For instance, the bus
905 communicatively connects the processor 910 with the read-only
memory 920, the system memory 915, and the permanent storage device
925. From these various memory units, the processor 910 retrieves
instructions to execute and data to process in order to execute the
processes of the invention. The processor 910 is a processing
device such as a central processing unit, integrated circuit,
graphical processing unit, etc.
[0066] The read-only-memory (ROM) 920 stores static data and
instructions that are needed by the processor 910 and other modules
of the computer system. The permanent storage device 925, on the
other hand, is a read-and-write memory device. This device is a
non-volatile memory unit that stores instructions and data even
when the computer system 900 is off. Some embodiments of the
invention use a mass-storage device (such as a magnetic or optical
disk and its corresponding disk drive) as the permanent storage
device 925.
[0067] Other embodiments use a removable storage device (such as a
flash drive) as the permanent storage device Like the permanent
storage device 925, the system memory 915 is a read-and-write
memory device. However, unlike storage device 925, the system
memory is a volatile read-and-write memory, such as random access
memory (RAM). The system memory stores some of the instructions and
data that the processor needs at runtime. In some embodiments, the
processes are stored in the system memory 915, the permanent
storage device 925, and/or the read-only memory 920.
[0068] The bus 905 also connects to the input and output devices
930 and 935. The input devices enable the user to communicate
information and select commands to the computer system. The input
devices 930 include alphanumeric keypads (including physical
keyboards and touchscreen keyboards), pointing devices. The input
devices 930 also include audio input devices (e.g., microphones,
MIDI musical instruments, etc.). The output devices 935 display
images generated by the computer system. The output devices include
printers and display devices, such as cathode ray tubes (CRT) or
liquid crystal displays (LCD).
[0069] Finally, as shown in FIG. 9, bus 905 also couples computer
900 to a network 965 through a network adapter (not shown). In this
manner, the computer can be a part of a network of computers (such
as a local area network ("LAN"), a wide area network ("WAN"), or an
Intranet, or a network of networks, such as the Internet).
[0070] As mentioned above, the computer system 900 may include one
or more of a variety of different computer-readable media. Some
examples of such computer-readable media include RAM, ROM,
read-only compact discs (CD-ROM), recordable compact discs (CD-R),
rewritable compact discs (CD-RW), read-only digital versatile discs
(e.g., DVD-ROM, dual-layer DVD-ROM), a variety of
recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.),
flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.),
magnetic and/or solid state hard drives, ZIP.RTM. disks, read-only
and recordable blu-ray discs, any other optical or magnetic media,
and floppy disks.
[0071] In the preceding specification, various preferred
embodiments have been described with reference to the accompanying
drawings. It will, however, be evident that various modifications
and changes may be made thereto, and additional embodiments may be
implemented, without departing from the broader scope of the
invention as set forth in the claims that follow. The specification
and drawings are accordingly to be regarded in an illustrative
rather than restrictive sense.
* * * * *