IP Library › Granted Patent US 12,248,424
Granted Patent B2
US 12,248,424 · App. 18/447,180 · Granted Mar 11, 2025

System and method for ghost bridging

Inventors: Thomas Norrie (Mountain View, CA); Frederic Vecoven (Mountain View, CA); Kiran Seshadri (Mountain View, CA); Shrijeet Mukherjee (Mountain View, CA); Chetan Loke (Mountain View, CA)
Assignee: Enfabrica Corporation
G06F13/4221G06F2213/0026
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 12,248,424
App. No.
18/447,180
Granted
Mar 11, 2025
Kind
B2
Abstract

A system for sharing peripheral component interconnect express (PCIe) devices across multiple host servers is disclosed. In some embodiments, a switch includes a plurality of hosts associated with a plurality of hierarchies, one or more endpoints associated with one or more of the plurality of hierarchies, and a switch communicatively connectable to the plurality of hosts and the one or more endpoints. The switch is configured to: receive a transaction layer packet (TLP); determine a policy group identifier based on parsing and processing the TLP; perform packet forward matching based on the policy group identifier and destination fields of the TLP; based on whether the TLP is communicated between the hosts and endpoints in different hierarchies of the plurality of hierarchies, determine whether to edit the TLP using one or more rewrite rules; and forward the TLP to an appropriate destination link.

Claims (69)

1. A system for sharing peripheral component interconnect express (PCIe) devices across multiple host servers comprising:

a plurality of hosts associated with a plurality of hierarchies;

one or more endpoints associated with one or more of the plurality of hierarchies; and

a switch communicatively connectable to the plurality of hosts and the one or more endpoints, wherein the switch is configured to:

receive a transaction layer packet (TLP);

determine a policy group identifier based on processing the TLP;

perform packet forward matching based on the policy group identifier and destination fields of the TLP;

based on whether the TLP is communicated between the hosts and endpoints in different hierarchies of the plurality of hierarchies, determine whether to edit the TLP using one or more rewrite rules; and

forward the TLP to an appropriate destination link.

2. The system of claim 1 , wherein the switch is further configured to determine the policy group identifier by compressing a source identifier of the TLP using a mapping function to generate the policy group identifier.

3. The system of claim 1 , wherein the destination fields include a destination identifier, and the matching is performed based on the destination identifier and the policy group identifier.

4. The system of claim 1 , wherein the destination fields include a destination address field, and the matching is performed based on the destination address field and the policy group identifier.

5. The system of claim 1 , wherein editing the TLP using the one or more rewrite rules further comprises one or more of rewriting a source identifier and tag of the TLP, rewriting a destination address or device identifier of the TLP, or rewriting a traffic class of the TLP.

6. The system of claim 5 , wherein the TLP is a non-posted request, and the switch is further configured to:

perform tag rewriting; and

track an original tag and source identifier of the non-posted request based on the tag rewriting.

7. The system of claim 1 , wherein the switch performs the packet forward matching using a ternary content addressable memory (TCAM) for long matches and fast lookups.

8. A system for sharing peripheral component interconnect express (PCIe) devices across multiple host servers such that a first host in a first hierarchy can write content to a memory range in a second hierarchy, the system comprising:

a plurality of hosts associated with a plurality of hierarchies, the plurality of hosts including the first host and a second host respectively associated with the first hierarchy and the second hierarchy in the plurality of hierarchies;

one or more endpoints associated with one or more of the plurality of hierarchies; and

a switch communicatively connectable to the plurality of hosts and the one or more endpoints, wherein the switch is configured to:

receive a first write packet from the first host to a first ghost device, wherein the first host and the first ghost device both reside in the first hierarchy;

perform packet forward matching on the first write packet;

rewrite and convert the first write packet into a second write packet based on the matching of the first write request, wherein the second write packet is sourced from the first ghost device in the first hierarchy and destinated to the second host in the second hierarchy; and

route the second write packet to the second host in the second hierarchy, wherein the second host is configured as a ghost endpoint server to communicate with an endpoint in the second hierarchy to write the content to the memory range in the second hierarchy.

9. The system of claim 8 , wherein ghost devices, including the first ghost device and the ghost endpoint server, are configured to provide device identifiers, memory space, and tag space for PCIe packets that bridge between the plurality of hierarchies.

10. The system of claim 9 , wherein the switch is further configured to:

map a ghost device in a hierarchy with a different ghost device in a different hierarchy, including mapping the first ghost device in the first hierarchy to the ghost endpoint server or second host in the second hierarchy through a ghost bridge, and

wherein the packet forward matching is performed based on mappings between the ghost devices.

11. The system of claim 10 , wherein the mapped ghost devices enable bridging ghost transactions between independent hierarchies of the plurality of hierarchies.

12. The system of claim 8 , wherein the first write request is converted into the second write packet using one or more rewrite rules, and the second write packet is routed to the ghost endpoint server that is matched for a specific rewrite rule.

13. The system of claim 8 , wherein the switch is configured to perform the packet forward matching on the first write packet by:

determining a policy group identifier associated with a source identifier of the first write packet; and

performing the packet forward matching based on the policy group identifier and destination fields of the first write packet.

14. The system of claim 8 , wherein the switch is further configured to:

rewrite a traffic class of the first write packet when converting the first write packet to the second write packet.

15. The system of claim 8 , wherein the switch is further configured to perform DMA ghost read and ghost completion based on address field rewriting.

16. A system for sharing a peripheral component interconnect express (PCIe) device across multiple host servers without involving a host managing the PCIe device, the system comprising:

a plurality of hosts associated with a plurality of hierarchies, the plurality of hosts including a first host associated with a first hierarchy in the plurality of hierarchies, wherein each host is connected to a ghost device, and each ghost device is composed of ghost physical functions and ghost virtual functions;

one or more endpoints associated with one or more of the plurality of hierarchies, the one or more endpoints including a second endpoint in a second hierarchy of the plurality of hierarchies; and

a switch communicatively connectable to the plurality of hosts and the one or more endpoints, wherein the switch is configured to:

receive a packet from the first host in the first hierarchy to a ghost virtual function of a first ghost device connected to the first host;

perform packet forward matching on the first packet to determine the ghost virtual function of the first ghost device is mapped to a virtual function of the second endpoint through a first ghost bridge;

convert the first packet into a second packet based on the matching, wherein the second packet is sourced from the first ghost bridge and destinated to the second endpoint in the second hierarchy; and

route the second packet to the second endpoint in the second hierarchy.

17. The system of claim 16 , wherein the first packet is a non-posted transaction layer packet, and to convert the first packet to the second packet, the switch is further configured to:

use tag rewriting to regenerate a completion source identifier and tag.

18. A method for sharing peripheral component interconnect express (PCIe) devices across multiple host servers comprising:

receiving a transaction layer packet (TLP);

determining a policy group identifier based on parsing and processing the TLP;

performing packet forward matching based on the policy group identifier and destination fields of the TLP;

based on whether the TLP is communicated between the hosts and endpoints in different hierarchies of the plurality of hierarchies, determining whether to edit the TLP using one or more rewrite rules; and

forwarding the TLP to an appropriate destination link.

19. The method of claim 18 , wherein the destination fields include a destination identifier, and the matching is performed based on the destination identifier and the policy group identifier.

20. The method of claim 18 , wherein the destination fields include a destination address field, and the matching is performed based on the destination address field and the policy group identifier.

21. A method for data access via PCIe between a plurality of hosts and a plurality of endpoints, the method comprising performing, at a ghost endpoint server, steps of:

designating for each host a respective control-plane ghost bridge for exchanging control information with any of the plurality of endpoints via the ghost endpoint server; and

designating for each host-endpoint pair a respective data-plane ghost bridge, wherein respective addresses of the data-plane ghost bridges are modified addresses, uniquely identifying for each host-endpoint pair, a destination of a data communication between the host-endpoint pair.

22. The method of claim 21 , wherein the respective destination of the data communication is an endpoint belonging to the respective host-endpoint pair, or a respective host belonging to the respective host-endpoint pair.

23. The method of claim 21 , further comprising:

associating with at least one host, a ghost control plane for exchanging control information with a corresponding control-plane ghost bridge.

24. The method of claim 21 , further comprising:

associating with at least one host, a plurality of ghost data planes, for exchanging data with respective data-plane ghost bridges.

25. A method for providing to a plurality of hosts access to a plurality of virtual functions (VFs) implemented at a plurality of endpoints, the method comprising:

designating a respective ghost bridge for each host, wherein each ghost bridge:

exposes one or more VFs from one or more of the plurality of endpoints as a set of ghost virtual functions (GVFs) to the corresponding host, and

maps each GVF to a corresponding VF; and

translating and forwarding a request from a host to execute a particular GVF exposed by the corresponding ghost bridge to a corresponding VF at one of the plurality of endpoints.

26. The method of claim 25 , wherein a ghost bridge corresponding to a particular host exposes only a subset of VFs from one of the plurality of endpoints.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2024
From: NORRIE, THOMAS; VECOVEN, FREDERIC; SESHADRI, KIRAN; MUKHERJEE, SHRIJEET; LOKE, CHETAN
To: ENFABRICA CORPORATION
Reel/Frame 066211/0705 →
Continuity (2)
Provisional Application 63396425 · Aug 9, 2022
Related Publication 20240104045A1 · Mar 28, 2024
References Cited (127)
US 6594712B1 · Pettey et al. · 2003 [cited by applicant]
US 6667974B1 · Shigeta · 2003 [cited by examiner]
US 7181541B1 · Burton et al. · 2007 [cited by applicant]
US 7293129B2 · Johnsen et al. · 2007 [cited by applicant]
US 7937447B1 · Cohen et al. · 2011 [cited by applicant]
US 8301717B2 · Deshpande · 2012 [cited by applicant]
US 8719456B2 · Wilkinson · 2014 [cited by applicant]
US 8917734B1 · Brown · 2014 [cited by applicant]
US 9448901B1 · Aslam et al. · 2016 [cited by applicant]
US 9684597B1 · Eiriksson · 2017 [cited by applicant]
US 9864519B2 · Meyer et al. · 2018 [cited by applicant]
US 9934152B1 · Bryant et al. · 2018 [cited by applicant]
US 10152428B1 · Alshawabkeh et al. · 2018 [cited by applicant]
US 10169279B2 · Yokoyama · 2019 [cited by applicant]
US 10447767B2 · Baptist et al. · 2019 [cited by applicant]
US 10503658B2 · Basu et al. · 2019 [cited by applicant]
US 10778521B2 · Liguori et al. · 2020 [cited by applicant]
US 20010046212A1 · Nakajima · 2001 [cited by applicant]
US 20020078271A1 · Berry · 2002 [cited by applicant]
US 20020129272A1 · Terrell et al. · 2002 [cited by applicant]
US 20020159385A1 · Susnow et al. · 2002 [cited by applicant]
US 20020184452A1 · Simmons et al. · 2002 [cited by applicant]
US 20020191599A1 · Parthasarathy et al. · 2002 [cited by applicant]
US 20030058875A1 · Arndt et al. · 2003 [cited by applicant]
US 20030154412A1 · Hetzler et al. · 2003 [cited by applicant]
US 20040049603A1 · Boyd et al. · 2004 [cited by applicant]
US 20050068798A1 · Lee et al. · 2005 [cited by applicant]
US 20050080920A1 · Bender et al. · 2005 [cited by applicant]
US 20050089033A1 · Gupta et al. · 2005 [cited by applicant]
US 20050223118A1 · Tucker et al. · 2005 [cited by applicant]
US 20060004941A1 · Shah et al. · 2006 [cited by applicant]
US 20060056405A1 · Chang et al. · 2006 [cited by applicant]
US 20060236063A1 · Hausauer et al. · 2006 [cited by applicant]
US 20060242352A1 · Torudbakken et al. · 2006 [cited by applicant]
US 20060271713A1 · Xie et al. · 2006 [cited by applicant]
US 20070038794A1 · Purcell et al. · 2007 [cited by applicant]
US 20070104102A1 · Opsasnick · 2007 [cited by applicant]
US 20070255802A1 · Aloni et al. · 2007 [cited by applicant]
US 20070283123A1 · Vick et al. · 2007 [cited by applicant]
US 20080043732A1 · Desai et al. · 2008 [cited by applicant]
US 20080168194A1 · Gregg et al. · 2008 [cited by applicant]
US 20090083392A1 · Wong et al. · 2009 [cited by applicant]
US 20090113143A1 · Domsch et al. · 2009 [cited by applicant]
US 20100064070A1 · Yoshimura et al. · 2010 [cited by applicant]
US 20100232448A1 · Sugumar et al. · 2010 [cited by applicant]
US 20110072234A1 · Chinya et al. · 2011 [cited by applicant]
US 20110268119A1 · Pong et al. · 2011 [cited by applicant]
US 20110271010A1 · Kenchammana et al. · 2011 [cited by applicant]
US 20130024591A1 · Sun · 2013 [cited by applicant]
US 20130031328A1 · Kelleher et al. · 2013 [cited by applicant]
US 20130132536A1 · Zhang · 2013 [cited by examiner]
US 20130318322A1 · Shetty et al. · 2013 [cited by applicant]
US 20140237156A1 · Regula et al. · 2014 [cited by applicant]
US 20150082000A1 · Hong et al. · 2015 [cited by applicant]
US 20150089009A1 · Tsirkin et al. · 2015 [cited by applicant]
US 20160070475A1 · Zhang et al. · 2016 [cited by applicant]
US 20160085450A1 · Ahn et al. · 2016 [cited by applicant]
US 20160162422A1 · Weber · 2016 [cited by applicant]
US 20170097909A1 · Simionescu et al. · 2017 [cited by applicant]
US 20170132148A1 · Liu et al. · 2017 [cited by applicant]
US 20170177520A1 · Kampe et al. · 2017 [cited by applicant]
US 20170185528A1 · Hansson et al. · 2017 [cited by applicant]
US 20170372088A1 · Zhao et al. · 2017 [cited by applicant]
US 20180024938A1 · Paltashev · 2018 [cited by examiner]
US 20180198715A1 · Shmilovici et al. · 2018 [cited by applicant]
US 20190141041A1 · Bhabbur · 2019 [cited by examiner]
US 20190173810A1 · Shpiner et al. · 2019 [cited by applicant]
US 20190220425A1 · Zemach et al. · 2019 [cited by applicant]
US 20190258415A1 · Imamura · 2019 [cited by applicant]
US 20190320019A1 · Hamrick, Jr. · 2019 [cited by applicant]
US 20190324917A1 · Cui et al. · 2019 [cited by applicant]
US 20190370173A1 · Boyer et al. · 2019 [cited by applicant]
US 20190379767A1 · Sharma et al. · 2019 [cited by applicant]
US 20200004685A1 · Guim Bernat et al. · 2020 [cited by applicant]
US 20200119753A1 · Chirca et al. · 2020 [cited by applicant]
US 20200159669A1 · Duncan et al. · 2020 [cited by applicant]
US 20200177513A1 · Zhang · 2020 [cited by applicant]
US 20200236052A1 · Srinivasan et al. · 2020 [cited by applicant]
US 20200280518A1 · Lee et al. · 2020 [cited by applicant]
US 20200371955A1 · Goodacre et al. · 2020 [cited by applicant]
US 20200387405A1 · Xiao et al. · 2020 [cited by applicant]
US 20210019069A1 · Sen et al. · 2021 [cited by applicant]
US 20210037107A1 · Klenk et al. · 2021 [cited by applicant]
US 20210075633A1 · Sen et al. · 2021 [cited by applicant]
US 20210083981A1 · Shmilovici et al. · 2021 [cited by applicant]
US 20210232312A1 · Prasad et al. · 2021 [cited by applicant]
US 20210234706A1 · Nair et al. · 2021 [cited by applicant]
US 20210345112A1 · Elliott et al. · 2021 [cited by applicant]
US 20220060422A1 · Sommers · 2022 [cited by applicant]
US 20220085916A1 · Debbage et al. · 2022 [cited by applicant]
US 20220109587A1 · Sapio et al. · 2022 [cited by applicant]
US 20220200906A1 · Ye et al. · 2022 [cited by applicant]
US 20220214912A1 · Julien et al. · 2022 [cited by applicant]
US 20220217085A1 · Sankar et al. · 2022 [cited by applicant]
US 20220222118A1 · Wang et al. · 2022 [cited by applicant]
US 20220283964A1 · Burstein et al. · 2022 [cited by applicant]
US 20220291875A1 · Diaz-Cuellar et al. · 2022 [cited by applicant]
US 20230096451A1 · Johnson · 2023 [cited by examiner]
US 20240098023A1 · Guo · 2024 [cited by applicant]
EP 2768188A1 · 2014 [cited by applicant]
EP 3661141A1 · 2020 [cited by examiner]
WO WO2005106693A2 · 2005 [cited by applicant]
WO WO2009120798A2 · 2009 [cited by applicant]
WO WO2020055921A1 · 2020 [cited by applicant]
WO WO2022108498A1 · 2022 [cited by applicant]
Emulex Corporation. “Emulex provides 10Gb Ethernet Virtual Fabric Adapter 5 for New Lenovo Servers.” Business Wire. Dec. 15, 2014 (Dec. 15, 2014) Retrieved on Mar. 7, 2022 (Mar. 7, 2022 from: <https://www.businesswire.c… [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2022/011491, dated Mar. 24, 2022 (8 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2022/32841, dated Nov. 21, 2022 (10 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2022/74833, dated Dec. 6, 2022 (8 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2023/062168, dated May 12, 2023 (54 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2023/61405, dated Jul. 11, 2023 (6 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2023/082132, dated Jun. 6, 2024 (8 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2024/029723, dated Aug. 22, 2024 (14 pages). [cited by applicant]
International Search Report and Written Opinion for International Patent Application No. PCT/US2023/029887, dated Oct. 26, 2023 (13 pages). [cited by applicant]
“Using Non-transparent Bridging in PCI Express Systems,” by Jack Regula, Jun. 1, 2004, Jun. 1, 2004, pp. 4-30, XP002686987, U RL:http :/ /www.plxtech.com/files/pdf/technical/expresslane/NontransparentBridging .pdf. [cited by applicant]
U.S. Appl. No. 17/570,261, filed Jan. 6, 2022, Server Fabric Adapter for I/O Scaling of Heterogeneous and Accelerated Compute Systems, Rochan Sankar, et al. [cited by applicant]
U.S. Appl. No. 18/778,611, filed Jul. 19, 2024, Server Fabric Adapter for I/O Scaling of Heterogeneous and Accelerated Compute Systems, Rochan Sankar, et al. [cited by applicant]
U.S. Appl. No. 18/747,118, filed Jun. 18, 2024, Optimally Balanced Network Systems, Rochan Sankar, et al. [cited by applicant]
U.S. Appl. No. 17/836,532, filed Jun. 9, 2022, Transparent Remote Memory Access Over Network Protocol, Thomas Norrie, et al. [cited by applicant]
U.S. Appl. No. 18/755,372 filed Jun. 26, 224, Transparent Remote Memory Access Over Network Protocol, Thomas Norrie, et al. [cited by applicant]
U.S. Appl. No. 17/886,026, filed Aug. 11, 2022, System and Method For Congestion Control Using a Flow Level Transmit Mechanism, Shrijeet Mukherjee et al. [cited by applicant]
U.S. Appl. No. 18/102,033, filed Jan. 26, 2023, System and Method for One-Sided Read Rma Using Linked Queues, Shrijeet Mukerjee, et al. [cited by applicant]
U.S. Appl. No. 18/107,324, filed Feb. 8, 2023, System and Method for Using Dynamic Thresholds With Route Isolation for Heterogeneous Traffic in Shared Memory Packet Buffers, Ari Aravinthan, et al. [cited by applicant]
U.S. Appl. No. 18/666,548, filed May 16, 2024, System and Method for an Optimized Staging Buffer for Broadcast/Multicast Operations, Shrijeet Mukherjee, et al. [cited by applicant]
U.S. Appl. No. 18/526,727, filed Dec. 1, 2023, A Modular Datacenter Interconnection System, David Skirmont, et al. [cited by applicant]
U.S. Appl. No. 18/785,542, filed Jul. 26, 2024, Method and System for Tracking and Moving Pages Within a Memory Hierarchy, Shrijeet Mukhrjee, et al. [cited by applicant]
U.S. Appl. No. 18/920,558, filed Oct. 18, 2024, System and Method for Optimally Balanced Network Multipathing, Shrijeet Mukhrjee, et al. [cited by applicant]