IP Library Granted Patent US 9,015,345
Granted Patent B2
US 9,015,345 · App. 12/969,181 · Granted Apr 21, 2015

API supporting server and key based networking

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,015,345
App. No.
12/969,181
Granted
Apr 21, 2015
Kind
B2
Abstract

An application programming interface (API) supporting server and key based networking is described. In an embodiment, the API receives either a key or a server address from a service running on a server in a direct-connect topology and returns data which identifies suitable next hops for transmission of a packet of data which has a destination of the received server address or of a server address which is encoded within the received key. In another embodiment, the key also encodes information specifying alternative server addresses for use in the event that the original server is unreachable. This information may also be used to define servers for replication of the key. A further embodiment describes a method of queuing packets for transmission against multiple links, where the packet is transmitted on the first available link and at this time is removed from the queues for the other links.

Claims (45)

1. A computer implemented method for implementing an application programming interface for allowing communication between servers in a direct-connect topology, the method comprising:

receiving one of a key and a server address from a service running on a server; and

returning a set of link indices to the service, each link index in the set of link indices identifying a candidate next hop to a destination defined by the received key or server address,

and wherein a portion of a key encodes an address of a home server responsible for the key, responsibility for the key being alterable to a different server, and the key further encodes fail-over information for computing an address of at least one alternative server responsible for the key for use when the home server is unreachable, the fail-over information being encoded such that all keys from the unavailable home server are mapped to at least two different servers.

2. A method according to claim 1 , wherein the set of link indices comprises a vector of link indices.

3. A method according to claim 1 , further comprising:

receiving one of a key and a server address from a service running on a server; and

returning a set of hop counts to the service, each hop count corresponding to a link index in the set of link indices and comprising a minimum number of hops between servers in the direct-connect topology to reach the destination starting with the candidate next hop specified by the link index.

4. A method according to claim 1 , wherein the key further encodes fail-over information for computing an address of at least one alternative server responsible for the key for use when the home server is unreachable.

5. A method according to claim 4 , further comprising:

receiving a key from a service running on a server; and

returning at least one address of a reachable server responsible for the key.

6. A method according to claim 5 , wherein returning at least one address of a reachable server responsible for the key comprises returning an ordered list of addresses of k servers responsible for the key, where k is an integer.

7. A method according to claim 1 , wherein the key further encodes replication information which identifies an ordered list of server addresses for use in replication.

8. A method according to claim 7 , further comprising:

receiving a key from a service running on a server; and

returning an ordered list of k server addresses, where k is an integer.

9. A method according to claim 1 , further comprising:

receiving, from a service running on a server, data identifying a set of outbound links for use in transmitting a packet from the server to a destination server;

placing one of the packet and a descriptor for the packet in a queue associated with each of the outbound links in the set of outbound links; and

once the packet is committed for transmission over one of the set of outbound links, removing the packet or descriptor from the queues associated with each of the other outbound links in the set of outbound links.

10. A method according to claim 9 , further comprising:

providing data on failures of at least one of links and servers within at least a portion of the direct-connect topology to a service running on a server.

11. A system adapted to instantiate an application programming interface (API) configured to expose a programming interface for allowing communication between servers in a direct-connect topology the system comprising:

a processor; and

a memory communicatively coupled to the processor, the memory having stored therein computer-executable instructions implementing the API and which, when executed, cause the processor to:

returning a set of link indices to a service running on a server in response to receiving one of a key and a server address from the service, each link index in the set of link indices identifying a candidate next hop to a destination defined by the received key or server address,

and wherein the key encodes an address of a home server responsible for that key and information for generating an ordered list of alternative server addresses, responsibility for the key being alterable to a different server, and the key further encodes fail-over information for computing an address of at least one alternative server responsible for the key for use when the home server is unreachable, the fail-over information being encoded such that all keys from the unavailable home server are mapped to at least two different servers.

12. A system according to claim 11 , wherein the ordered list of alternative server addresses comprises alternative home servers for use if the home server is unreachable.

13. A system according to claim 11 , the memory further having stored therein computer-executable instructions which, when executed, cause the processor, in response to receiving from a service running on a server, data identifying a set of outbound links for use in transmitting a packet from the server to a destination server, to:

place one of the packet and a descriptor for the packet in a queue associated with each of the outbound links in the set of outbound links; and

once the packet is committed for transmission over one of the set of outbound links, removing the packet or descriptor from the queues associated with each of the other outbound links in the set of outbound links.

14. A computer storage medium, the computer storage medium being hardware and having computer-readable instructions that when executed by a processor cause the processor to perform actions implementing an application programming interface for allowing communication between servers in a direct-connect topology, the actions comprising:

receiving one of a key and a server address from a service running on a server; and

returning a set of link indices to the service, each link index in the set of link indices identifying a candidate next hop to a destination defined by the received key or server address,

and wherein a portion of a key encodes an address of a home server responsible for the key, responsibility for the key being alterable to a different server, and the key further encodes fail-over information for computing an address of at least one alternative server responsible for the key for use when the home server is unreachable, the fail-over information being encoded such that all keys from the unavailable home server are mapped to at least two different servers.

15. A computer storage medium according to claim 14 , wherein the set of link indices comprises a vector of link indices.

16. A computer storage medium according to claim 14 , the actions further comprising:

receiving one of a key and a server address from a service running on a server; and

returning a set of hop counts to the service, each hop count corresponding to a link index in the set of link indices and comprising a minimum number of hops between servers in the direct-connect topology to reach the destination starting with the candidate next hop specified by the link index.

17. A computer storage medium according to claim 14 , the actions further comprising:

receiving a key from a service running on a server; and

returning at least one address of a reachable server responsible for the key.

18. A computer storage medium according to claim 17 , wherein returning at least one address of a reachable server responsible for the key comprises returning an ordered list of addresses of k servers responsible for the key, where k is an integer.

19. A computer storage medium according to claim 14 , wherein the key further encodes replication information which identifies an ordered list of server addresses for use in replication.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2011
From: O'SHEA, GREGORY; DONNELLY, AUSTIN; ROWSTRON, ANTONY; COSTA, PAOLO
To: MICROSOFT CORPORATION
Reel/Frame 025662/0933 →