Access method and access system

By using Socket objects in the NFS over RDMA protocol to establish connections at the network layer and exchange RDMA connection information, the problems of long connection failure recovery time and difficulty in parallel connection in the prior art are solved, and efficient RDMA connection recovery and concurrent access by multiple clients are achieved.

CN121967570APending Publication Date: 2026-05-01CHENGDU HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
CHENGDU HUAWEI TECH CO LTD
Filing Date
2024-10-18
Publication Date
2026-05-01

AI Technical Summary

Technical Problem

The existing NFS over RDMA protocol only supports establishing RDMA connections between NFS clients and servers via the CMP protocol, resulting in long connection failure recovery times, low recovery efficiency, and the inability to establish multiple RDMA connections in parallel.

Method used

By establishing a connection at the network layer through a Socket object and exchanging the information required for the RDMA connection, a connection establishment scheme that can replace the CMP protocol is provided, supporting concurrent RDMA connections between the server and multiple NFS clients.

Benefits of technology

It shortens the fault recovery time of RDMA connections, improves connection establishment efficiency, supports concurrent access by multiple NFS clients, and reduces fault recovery time and network configuration complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121967570A_ABST
    Figure CN121967570A_ABST
Patent Text Reader

Abstract

The invention provides an access method and an access system. The method comprises the following steps that: a server side can establish network layer connection with an NFS client side based on a Socket object, and exchange information for establishing mutual RDMA connection between two ends through the network layer connection, so that the establishment of the RDMA connection from the server side to the NFS client side is realized by utilizing the exchanged information. On the basis, the invention provides a replaceable connection establishment scheme for the RDMA connection between the server and the NFS client, the reliability of RDAM connection establishment and the reliability of data direct access are improved, and under the condition that RDMA connection establishment fails in other modes, RDMA connection establishment of the two ends is carried out through the method, so that data direct access is achieved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of cloud technology, and in particular to an access method and access system. Background Technology

[0002] To improve data access speed and reduce data transmission latency, Redirect Memory Access (RDMA) technology is currently the primary method for data access. RDMA allows clients to bypass the server's operating system or CPU and directly access the server's memory, thereby improving data access speed, reducing access latency, increasing bandwidth, and reducing the CPU load on both the client and server sides.

[0003] NFS over RDMA (Network File System over Remote Direct Memory Access) is a storage access method that combines the NFS protocol with RDMA technology. NFS over RDMA relies on RDMA technology to enable data pass-through between NFS clients and servers (where data is stored); and it leverages the low latency and high bandwidth of RDMA to improve the performance of the NFS protocol.

[0004] However, in the current NFS over RDMA protocol standard and open source implementation, only the standard RDMA connection establishment protocol (specifically the Communication Management Protocol (CMP)) is supported to establish an RDMA connection between the NFS client and the server. There are no other alternative connection establishment schemes between NFS clients and servers for RDMA connection establishment. Summary of the Invention

[0005] This application provides an access method and system. The server can establish a network layer connection with the NFS client through a Socket object, and exchange information required to establish an RDMA connection between the two ends through the network layer connection. This provides an alternative connection establishment scheme for RDMA connection between the NFS client and the server, thereby improving the reliability of RDMA connection establishment and the reliability of data pass-through access.

[0006] Firstly, this application provides an access method. The method includes: a server establishing a first network layer connection with a first NFS client based on a first Socket object; the server exchanging first information with the first NFS client through the first network layer connection for establishing a first RDMA connection; the server establishing the first RDMA connection from the server to the first NFS client based on the exchanged first information; and the server sending a first file to the first NFS client through the first RDMA connection.

[0007] In related technologies, the CMP protocol is used to establish RDMA connections between NFS clients and servers. However, if a failure occurs when establishing an RDMA connection via the CMP protocol, it is difficult to restore the RDMA connection using the faulty CMP connection method, resulting in long recovery times and low recovery efficiency. This application utilizes Socket objects to establish RDMA connections from the server to the NFS client, thus providing an alternative to the CMP protocol. Although the CMP connection method fails, such a failure does not affect the server's use of Socket objects. Therefore, even if the CMP connection method fails, the server can still quickly restore the RDMA connection using Socket objects. This avoids waiting for the CMP connection method to recover before re-establishing the RDMA connection, thereby shortening the RDMA connection recovery time and improving recovery efficiency.

[0008] Furthermore, compared to establishing an RDMA connection through other methods, establishing an RDMA connection via a Socket object offers advantages such as a simpler connection establishment process and faster connection speed. Therefore, even without a failure, establishing an RDMA connection directly based on a Socket object is still a better choice.

[0009] In some possible implementations, the server is a server or server cluster, and the client is a host. In other possible implementations, the server and client are computer programs running on the same computer device or different computer devices.

[0010] In some implementations, the first information is the information needed to establish an RDMA connection between the two ends (here referring to the server and the first NFS client), such as the queue pair (QP) information of the two ends, or other information, which is not limited here.

[0011] In the various implementations of this application, the network layer connection is a connection that communicates using a network layer protocol, such as a Transmission Control Protocol (TCP) connection or a User Datagram Protocol (UDP) connection; no restriction is imposed here.

[0012] As an example, the first Socket object can be a global Socket object S1 created by the server. This Socket object S1 can be bound to the server's IP address (e.g., sIP1) and port number (e.g., sPort1) used to establish TCP or UDP connections. The server can then use the global Socket object S1 to listen for TCP or UDP connection requests from NFS clients to the server's IP address and port (the IP and port bound to the Socket object S1), thereby establishing a TCP or UDP connection with the NFS client.

[0013] As another implementation example, the first Socket object can be a sub-object (e.g., Socket object S2) created by the server that inherits from the global Socket object S1. In this way, the first Socket object can inherit the IP address and port number of the global Socket object S1. Then the server can use Socket object S2 to establish a TCP or UDP connection with the NFS client.

[0014] As another implementation example, the first Socket object may include the aforementioned Socket object S1 and Socket object S2. In this way, the server can use Socket object S1 to listen for network layer connection requests from NFS clients for the aforementioned IP address and port, and after listening for the network layer connection request, create the aforementioned Socket object S2 to establish a network layer connection with the NFS client.

[0015] Taking QP information as the first piece of information as an example, specifically, the first piece of information may include QP information from both the server and the client. The server can exchange QP information with the NFS client through the aforementioned network layer connection. For example, the server can send its own QP information to the NFS client through the aforementioned network layer connection, and the server can also receive QP information from the NFS client through the aforementioned network layer connection, thereby realizing the exchange of QP information between the two ends.

[0016] There are no restrictions on the specific process of the exchange of QP information between the server and the NFS client, or the order in which the QP information is exchanged, as long as the exchange of QP information between the two ends is achieved through the network layer connection mentioned above.

[0017] Then, the server can establish an RDMA connection to the NFS client based on the first information exchanged with the NFS client (such as the QP information of both ends, which is not limited here).

[0018] In a first possible implementation of the first aspect, the method further includes: the first NFS client establishing a first RDMA connection from the first NFS client to the server based on the exchanged first information.

[0019] The NFS client can also exchange the information needed to establish an RDMA connection between the two ends (such as the server's QP information and the NFS client's QP information) through the network layer connection mentioned above with the server. Then, the NFS client can use the exchanged server's QP information and its own QP information (which is also the NFS client's QP information exchanged with the server) to establish an RDMA connection from the NFS client to the server (for example, associating the NFS client's QP information with the server's QP information received by the NFS client and sent to the NFS client by the server through the network layer connection mentioned above).

[0020] In the implementation of this application, the server and the NFS client can exchange information through the network layer connection established between the two ends. This information is the information of both ends (such as QP information of both ends) required to establish the RDMA connection between the two ends, thereby establishing the RDMA connection from the NFS client to the server. This provides an alternative RDMA connection establishment scheme that is different from the CMP protocol used in the prior art for QP information exchange.

[0021] One possible implementation of the first aspect, the method further includes: the first NFS client requesting to establish the first network layer connection with the server based on the second Socket object; the first NFS client requesting to exchange the first information for establishing the first RDMA connection with the server through the first network layer connection.

[0022] The second Socket object is the Socket object that the first NFS client has already created (for example, represented by Socket object C1).

[0023] In some implementations, the first NFS client can bind a Socket object C1 to its IP address (e.g., cIP1) and port number (e.g., cPort1). This IP address and port number are used by the first NFS client to establish a network layer connection. The first NFS client can then use Socket object C1 to request a network layer connection with the server (e.g., IP address sIP1 and port number sPort1). The server can then listen for requests for network layer connections to the IP address and port bound to Socket object C1. The server can then create a Socket object S2 and use Socket object S2 to establish a network layer connection with the first NFS client's cIP1 and cPort1.

[0024] Furthermore, the first NFS client can request to exchange first information (such as QP information between the two ends) with the server through the network layer connection. As an example, the request may include the QP information of the first NFS client. Then, the server can respond to the request by exchanging the QP information between the two ends with the first NFS client through the first network layer connection (such as sending the server's QP information to the first NFS client), thereby realizing the exchange of QP information between the two ends on the network layer connection.

[0025] In other implementations, the QP information of the first NFS client is not limited to being carried in the request for exchanging first information sent by the first NFS client to the server. This application does not restrict which information the QP information of the first NFS client is carried in when it is sent from the first NFS client to the server, as long as the QP information is sent through the network layer connection between the two ends.

[0026] In the implementation of this application, the NFS client and server can use the Socket objects at both ends to establish a network layer connection between the two ends. Through this established network layer connection, the two ends can exchange the information required to establish the RDMA connection (such as the QP information of the two ends), thereby providing another RDMA connection establishment scheme.

[0027] In one possible implementation of the first aspect, before the server establishes the first RDMA connection from the server to the first NFS client based on the exchanged first information, the method further includes: the server establishing a second network layer connection with the second NFS client based on a third Socket object; the server exchanging second information for establishing the second RDMA connection with the second NFS client through the second network layer connection; and the server establishing the second RDMA connection from the server to the second NFS client based on the exchanged second information.

[0028] In some implementations, the second information is the information required to establish an RDMA connection between the two ends (here referring to the server and the second NFS client), such as the queue pair (QP) information of the two ends, or other information, which is not limited here.

[0029] It should be understood that although the first NFS client and the second NFS client establish RDMA connections with the same server, the information (such as QP information) exchanged by the server with different NFS clients for establishing RDMA connections is different. For example, the server's QP information exchanged with different NFS clients is different.

[0030] The third Socket object in this implementation is similar in principle and function to the first Socket object on the server side, except that the server uses the third Socket object to establish a network layer connection with the second NFS client.

[0031] As an example of implementation, the third Socket object can be a global Socket object S1 created by the server. This Socket object S1 can be bound to the server's IP address (e.g., sIP1) and port (e.g., sPort1) used to establish TCP or UDP connections.

[0032] As another implementation example, the third Socket object can be another sub-object created by the server that inherits from the global Socket object S1 (e.g., Socket object S3). In this case, the third Socket object, like Socket object S2, also inherits the IP address and port number of the global Socket object S1. Then the server can use Socket object S3 to establish a network layer connection with the second NFS client.

[0033] As another implementation example, the third Socket object may include the aforementioned Socket object S1 and Socket object S3. In this way, the server can use Socket object S1 to listen for network layer connection requests from NFS clients to the server's IP address (e.g., sIP1) and port (e.g., sPort1), and after listening for the network layer connection request, create the aforementioned Socket object S3 to establish a network layer connection with the second NFS client.

[0034] Therefore, the first Socket object on the server side is not exactly the same as the third Socket object on the server side.

[0035] In related technologies, the NFS server establishes an RDMA connection with a single NFS client using a unique CM component and the CMP protocol. Because the NFS server has only one CM component, it can only establish an RDMA connection with a single NFS client at a time, and cannot establish RDMA connections with multiple NFS clients in parallel. The NFS server can only release the unique CM component after the RDMA connection with an NFS client is broken, and only then can the NFS server use the released CM component to establish an RDMA connection with another NFS client.

[0036] However, in the implementation of this application, the server can have multiple Socket objects and can use its different Socket objects to establish different network layer connections with different NFS clients. This enables the exchange of information required for establishing RDMA connections between the same server and different NFS clients, thus achieving RDMA connection establishment between the same server and multiple NFS clients. The server's Socket objects can be freely created according to needs and scenarios, without limitations on quantity or time, making the establishment of network layer connections between the server and multiple NFS clients unrestricted by time order. Thus, even if the server is establishing an RDMA connection with one NFS client, it can still use another Socket object to establish a network layer connection with another NFS client, facilitating parallel RDMA connection establishment with another NFS client. In this way, the server supports concurrent RDMA connection establishment with multiple NFS clients. The term "concurrent connection establishment" means that while the server is establishing an RDMA connection with an NFS client, but the RDMA connection has not yet been completed, the server can still establish RDMA connections with other NFS clients (one or more NFS clients).

[0037] In scenarios where the server connects to a large number of NFS clients running on a large scale of computing nodes via the NFS over RDMA protocol, the connection establishment efficiency of RDMA connections can be significantly improved. Furthermore, in some scenarios, after a server failure and recovery, a large number of NFS clients need to establish RDMA connections with the recovered server for data access. The implementation in this application allows the server to concurrently establish multiple RDMA connections with multiple NFS clients at the same time (or within the same time period), thereby significantly reducing the failure recovery time of NFS services and making the failure recovery time controllable.

[0038] One possible implementation of the first aspect is that the method further includes: the server sending a second file to the second NFS client via a second RDMA connection.

[0039] The second file accessed by the second NFS client can be the same file or a different file from the first file accessed by the first NFS client; there are no restrictions here.

[0040] In the implementation of this application, the server supports the concurrent establishment of RDMA connections with multiple NFS clients, which can further improve the efficiency of concurrent access to the server's stored data by multiple NFS clients.

[0041] In one possible implementation of the first aspect, the IP address and port of the server associated with the third Socket object are the same as the IP address and port of the server associated with the second Socket object.

[0042] In this implementation, the Socket objects used by the server to establish network layer connections with different NFS clients are bound to the same server IP address and port. Thus, although the server's IP address and port for establishing network layer connections are unique, the server can bind the unique IP address and port to different Socket objects and establish multiple network layer connections with multiple NFS clients through these different Socket objects. Based on this, the server can utilize the same IP address and port to establish multiple network layer connections with multiple NFS clients through different Socket objects, enabling the server to support concurrent RDMA connection establishment with multiple NFS clients. This not only effectively utilizes the server's port but also reduces the complexity of server network configuration (e.g., only firewall rules and other network access control lists need to be set for one port).

[0043] In one possible implementation of the first aspect, the IP address and port of the server in the five-tuple connected by the first network layer are the same as the IP address and port of the server in the five-tuple connected by the second network layer.

[0044] Taking the direction of the server sending messages to the NFS client through the network layer connection as an example, the source IP address in the five-tuple of the first network layer connection is the same as the source IP address in the five-tuple of the second network layer connection; and the source port in the five-tuple of the first network layer connection is the same as the source port in the five-tuple of the second network layer connection.

[0045] Taking the direction of an NFS client sending a message to the server through a network layer connection as an example, the IP address of the destination in the five-tuple of the first network layer connection is the same as the IP address of the destination in the five-tuple of the second network layer connection; and the port of the destination in the five-tuple of the first network layer connection is the same as the port of the destination in the five-tuple of the second network layer connection.

[0046] In the implementation of this application, the server uses the same IP address and port to interact with different NFS clients through their respective network layer connections, thereby enabling the server to support concurrent establishment of RDMA connections with multiple NFS clients.

[0047] One possible implementation of the first aspect is that the method further includes: the second NFS client establishing a second RDMA connection from the second NFS client to the server based on the exchanged second information.

[0048] During the process of establishing an RDMA connection between the server and the first NFS client, the second NFS client can also exchange the information required to establish an RDMA connection between the two ends (such as the QP information of the server and the QP information of the second NFS client) through the second network layer connection with the server. Then, the second NFS client can use the QP information of the server and its own QP information to establish an RDMA connection from the second NFS client to the server (different from the first RDMA connection mentioned above).

[0049] In this implementation, the server and NFS clients can exchange information through a network layer connection established between them. This information includes the necessary data (e.g., QP information) for establishing the RDMA connection between the two clients. Because the server can concurrently establish network layer connections with multiple NFS clients, it supports the exchange of information required for establishing RDMA connections with multiple NFS clients, thereby enabling concurrent establishment of RDMA connections between the server and multiple NFS clients.

[0050] One possible implementation of the first aspect, the method further includes: the second NFS client, based on a fourth Socket object, requests to establish a second network layer connection with the server; the second NFS client, through the second network layer connection, requests to exchange the second information used to establish the second RDMA connection with the server.

[0051] The fourth Socket object is a Socket object that has been created by the second NFS client (e.g., represented by Socket object C2).

[0052] In some implementations, the second NFS client can bind a Socket object C2 to its IP address (e.g., cIP2) and port number (e.g., cPort2). This IP address and port number are used by the second NFS client to establish a network layer connection. The second NFS client can then use Socket object C2 to request a network layer connection with the server (e.g., the IP address is sIP1, and the port is sPort1). The server can then listen for requests for network layer connections to the IP address and port bound to Socket object S1. The server can then create a Socket object S3 and use Socket object S3 to establish a network layer connection with the second NFS client's cIP2 and cPort2.

[0053] Furthermore, the second NFS client can request to exchange second information (such as QP information at both ends) with the server through this network layer connection. As an example, the request may include the QP information of the second NFS client. Then, the server can respond to the request by exchanging the QP information at both ends with the second NFS client through the second network layer connection (such as sending the server's QP information to the second NFS client), thereby realizing the exchange of QP information at both ends on the network layer connection.

[0054] In other implementations, the QP information of the second NFS client is not limited to being carried in the request for exchanging second information sent by the second NFS client to the server. This application does not restrict which information the QP information of the second NFS client is carried in when it is sent from the second NFS client to the server, as long as the QP information is sent through the second network layer connection between the two ends.

[0055] In the implementation of this application, multiple NFS clients can concurrently use their respective Socket objects to request the establishment of their respective network layer connections with the server. Furthermore, multiple NFS clients can concurrently use the multiple network layer connections established between themselves and the server to concurrently request the exchange of information with the server for establishing RDMA connections between the two ends. This achieves concurrent establishment of RDMA connections between the server and multiple NFS clients.

[0056] In one possible implementation of the first aspect, after the server establishes a first network layer connection with the first NFS client based on the first Socket object, the method further includes: the server negotiating private information with the first NFS client through the first network layer connection.

[0057] Private information can be set according to application needs, and there are no restrictions on its specific content.

[0058] Furthermore, the private information and the first information required to establish an RDMA connection can be transmitted through the same message or different messages, without any restrictions.

[0059] In related technologies, NFS clients and servers need to exchange QP information under the CMP protocol to establish an RDMA connection based on the exchanged QP information. However, the RDMAM connection establishment mechanism is a standard connection establishment mechanism, which means that NFS clients and servers can only exchange QP information under the CMP protocol, and cannot transmit other information besides standard QP information.

[0060] In the implementation of this application, the server and the NFS client exchange information required to establish an RDMA connection through a network layer connection, instead of exchanging QP information through a CMP protocol connection. In this way, the server and the NFS client can negotiate private information through this network layer connection, thereby flexibly expanding the connection information when the two ends establish an RDMA connection and meeting the needs of the NFS client and the server to transmit private information during the RDMA connection establishment process.

[0061] In one possible implementation of the first aspect, after the server establishes a second network layer connection with the second NFS client based on a third Socket object, the method further includes: the server negotiating private information with the second NFS client through the second network layer connection.

[0062] In the implementation of this application, since different network layer connections can be established concurrently between the server and multiple NFS clients, the server can negotiate private information with multiple NFS clients through multiple network layer connections.

[0063] One possible implementation of the first aspect is that the server negotiates private information with the first NFS client through the first network layer connection, including: the first NFS client sending a first message to the server through the first network layer connection, the first message being used to provide first private information of the first NFS client; the server responding to the received first message, determining second private information of the server based on the first private information, and sending a second message to the first NFS client through the first network layer connection, the second message being used to provide the second private information; the first NFS client responding to the received second message, determining target private information based on the second private information and the first private information.

[0064] The target private information is the private information negotiated between the first NFS client and the server.

[0065] In the implementation of this application, the private information transmitted by the server to the first NFS client is determined based on the private information of the first NFS client, which enables the server to negotiate the private information with the first NFS client during the RDMA connection establishment process, thus satisfying the need for flexible negotiation of private information.

[0066] In one possible implementation of the first aspect, the first private information is used to provide a first concurrency of data access requests sent by the first NFS client to the server through the first RDMA connection, and the second private information is used to provide a second concurrency of data access requests received by the server from the first NFS client through the first RDMA connection.

[0067] In the implementation of this application, the private information negotiated between the NFS client and server through the network layer connection can be the concurrent number of data access requests transmitted between the two ends via the RDMA connection. This allows for negotiation of the concurrent number of data access requests transmitted via the RDMA connection during the connection establishment process between the two ends. This avoids network congestion and server overload caused by an excessive number of concurrent data access requests during data pass-through access between the two ends via the RDMA connection.

[0068] In one possible implementation of the first aspect, the first private information is used to provide depth information of the RDMA send queue of the first NFS client, and the second private information is used to provide depth information of the RDMA receive queue of the server.

[0069] The RDMA send queue is the send queue of the RDMA of the NFS client corresponding to the first RDMA connection, and can be used to cache the messages that the first NFS client wants to send to the server through the first RDMA connection.

[0070] The RDMA receive queue is the RDMA receive queue of the server corresponding to the first RDMA connection, which can be used to cache messages received by the server from the first NFS client through the first RDMA connection.

[0071] In the implementation of this application, the private information negotiated between the NFS client and the server through the network layer connection can be the depth information of the RDMA queues at both ends. This allows for negotiation of the number of data access requests transmitted through the RDMA connection during the establishment of the RDMA connection at both ends, thereby avoiding congestion in the respective RDMA queues of the NFS client and the server after the RDMA connection is established.

[0072] One possible implementation of the first aspect, the method further includes: the first NFS client sending a seventh message through the first RDMA connection based on the target private information.

[0073] The seventh message is used to provide information (such as a file handle) about the file that the first NFS client wants to access on the server. The seventh message and the third message in the following implementation can be the same message or different messages, which is not restricted here.

[0074] In the implementation of this application, the NFS client can send messages through the RDMA connection established between the two ends based on the target private information negotiated with the server, so as to access the data of the server.

[0075] The implementation schemes for negotiating private information between the first NFS client and the server can also be applied to negotiating private information between the second NFS client and the server. The specific implementation principles are similar and will not be elaborated here.

[0076] One possible implementation of the first aspect is that the first NFS client, through the first network layer connection, requests to exchange the first information for establishing the first RDMA connection with the server, including: the first NFS client sending a first message to the server through the first network layer connection, the first message being used to provide the first QP information of the first NFS client.

[0077] In this implementation, the QP information and private information of the first NFS client are carried in the same message (e.g., the first message) and sent to the server through the first network layer connection. In other implementations, the QP information and private information of the local end (e.g., the NFS client or the server) can be carried in the same message or different messages and sent to the peer end (server or NFS client) through the network layer connection established with the peer end.

[0078] In one possible implementation of the first aspect, the server exchanges first information for establishing a first RDMA connection with the first NFS client through the first network layer connection, including: in response to the received first message, the server sends a second message to the first NFS client through the first network layer connection, the second message being used to provide the server's second QP information.

[0079] In this implementation, the server's QP information and private information are carried in the same message (e.g., a second message) and sent to the NFS client through a first network layer connection. In other implementations, the local (e.g., NFS client or server) QP information and private information can be carried in the same message or different messages and sent to the peer (server or NFS client) through a network layer connection established with the peer.

[0080] One possible implementation of the first aspect is that the server establishes the first RDMA connection between the server and the first NFS client based on the exchanged first information, including: the server responding to the received first message to establish the first RDMA connection between the server and the first NFS client.

[0081] As an example, the server may respond to the received first message to create the server's second QP information and parse the first QP information of the first NFS client in the first message, thereby establishing the first RDMA connection from the server to the first NFS client based on the first QP information and the second QP information.

[0082] In the implementation of this application, the server and the NFS client can send messages through the network layer connection established between the two ends. The message includes information of both ends (such as QP information of both ends) required to establish the RDMA connection between the two ends, thereby establishing the RDMA connection from the server to the NFS client. This provides an alternative RDMA connection establishment scheme that is different from the CMP protocol used in the prior art for QP information exchange.

[0083] One possible implementation of the first aspect is that the first NFS client establishes a first RDMA connection from the first NFS client to the server based on the exchanged first information, including: the first NFS client responding to the received second message to establish the first RDMA connection from the first NFS client to the server.

[0084] As an example, the first NFS client may respond to the received second message by parsing the second message to obtain the second QP information of the server, and establish the first RDMA connection from the first NFS client to the server based on the second QP information and the first QP information already created by the first NFS client.

[0085] In the implementation of this application, the server and the NFS client can send messages through the network layer connection established between the two ends. The message includes information of both ends (such as QP information of both ends) required to establish the RDMA connection between the two ends, thereby establishing the RDMA connection from the NFS client to the server. This provides an alternative RDMA connection establishment scheme that is different from the CMP protocol used in the prior art for QP information exchange.

[0086] One possible implementation of the first aspect is that the server sends a first file to the first NFS client through the first RDMA connection, including: the server responding to a third message sent by the first NFS client through the first RDMA connection and returning the first file pointed to by the third message to the first NFS client.

[0087] As an example, the third message includes instructions indicating the file the NFS client wants to access; these instructions can be the file handle or the file name.

[0088] In the implementation of this application, the server and the NFS client can transmit file indication information and the file through an RDMA connection between the two ends, so as to realize the NFS client's direct access to the file on the server and meet the data access requirements of high bandwidth and low latency.

[0089] One possible implementation of the first aspect is that the second NFS client, through the second network layer connection, requests to exchange the second information for establishing the second RDMA connection with the server, including: the second NFS client sending a fourth message to the server through the second network layer connection, the fourth message being used to provide the third QP information of the second NFS client.

[0090] In this implementation, the QP information and private information of the second client are carried in the same message (e.g., the fourth message) and sent to the server through the second network layer connection. In other implementations, the QP information and private information of the local end (e.g., the NFS client or the server) can be carried in the same message or different messages and sent to the peer end (the server or the NFS client) through the network layer connection established with the peer end.

[0091] In one possible implementation of the first aspect, the server exchanges second information for establishing a second RDMA connection with the second NFS client through the second network layer connection, including: in response to the received fourth message, the server sends a fifth message to the second NFS client through the second network layer connection, the fifth message being used to provide the server's fourth QP information.

[0092] In this implementation, the server's QP information and private information are carried in the same message (e.g., the fifth message) and sent to the NFS client via a second network layer connection. In other implementations, the local (e.g., NFS client or server) QP information and private information can be carried in the same message or different messages and sent to the peer (server or NFS client) via a network layer connection established with the peer.

[0093] One possible implementation of the first aspect is that the server establishes a second RDMA connection between the server and the second NFS client based on the exchanged second information, including: the server responding to the received fourth message to establish the second RDMA connection between the server and the second NFS client.

[0094] As an example, the server can respond to the received fourth message to create the server's fourth QP information and parse the third QP information of the second NFS client in the first message, thereby establishing the second RDMA connection from the server to the second NFS client based on the third QP information and the fourth QP information.

[0095] In the implementation of this application, the server can respond to the message carrying the QP information of the NFS client sent to the server through the network layer connection by the NFS client to establish an RDMA connection between the server and the NFS client, so as to realize concurrent connection establishment between the server and multiple NFS clients.

[0096] One possible implementation of the first aspect is that the second NFS client establishes a second RDMA connection from the second NFS client to the server based on the exchanged second information, including: the second NFS client responding to the received fifth message to establish a second RDMA connection from the second NFS client to the server.

[0097] As an example, the second NFS client can respond to the received fifth message by parsing the fifth message to obtain the fourth QP information of the server, and establish the second RDMA connection from the second NFS client to the server based on the fourth QP information and the third QP information already created by the second NFS client.

[0098] In the implementation of this application, the NFS client can establish an RDMA connection to the server by responding to a message sent by the server carrying the server's QP information, so as to realize concurrent connection establishment between the server and multiple NFS clients.

[0099] One possible implementation of the first aspect is that the server sends a second file to the second NFS client through the second RDMA connection, including: the server responding to the sixth message sent by the second NFS client through the second RDMA connection and returning the second file pointed to by the sixth message to the second NFS client.

[0100] As an example, the sixth message includes instructions indicating the file the NFS client wants to access; these instructions can be the file handle or the file name.

[0101] In this implementation, the server and NFS client can transmit file indication information and the file itself via an RDMA connection, enabling direct access from the NFS client to the server's file, thus meeting the requirements for high bandwidth and low latency data access. Furthermore, the server supports concurrent establishment of RDMA connections with multiple NFS clients, allowing multiple NFS clients to concurrently access the server's file directly, further improving the efficiency of concurrent access to the server's stored data by multiple NFS clients.

[0102] One possible implementation of the first aspect is that the first network layer connection is a TCP connection or a UDP connection, and the second network layer connection is a TCP connection or a UDP connection.

[0103] In this implementation, a network layer connection is established between the server and any NFS client via TCP or UDP protocols, allowing the network layer connection to be either a TCP or UDP connection. This enables the server to concurrently establish TCP or UDP connections with different NFS clients using Socket objects, exchanging QP information between the two ends required for establishing an RDMA connection. Based on this, the server in this application has the ability to establish RDMA connections with multiple NFS clients in parallel, improving the efficiency of RDMA connection establishment.

[0104] In one possible implementation of the first aspect, after the first NFS client establishes the first RDMA connection from the first NFS client to the server based on the exchanged first information, the method further includes: the first NFS client requesting to disconnect the first network layer connection with the server; and the server disconnecting the first network layer connection with the first NFS client in response to the received request from the first NFS client to disconnect the first network layer connection.

[0105] In the implementation of this application, after establishing an RDMA connection between the server and the NFS client, the network layer connection between the NFS client and the server can be disconnected, thereby reducing the number of connections that need to be maintained. Furthermore, disconnecting unnecessary connections can reduce potential failures and improve the overall reliability and stability of the link between the NFS client and the server.

[0106] In one possible implementation of the first aspect, after the second NFS client establishes a second RDMA connection from the second NFS client to the server based on the exchanged second information, the method further includes: the second NFS client requesting to disconnect the second network layer connection with the server; and the server, in response to the received request from the second NFS client to disconnect the second network layer connection, disconnecting the second network layer connection with the second NFS client.

[0107] In the implementation of this application, after the server establishes RDMA connections concurrently with multiple NFS clients, the network layer connection between any NFS client and the server can be disconnected, thereby reducing the number of connections that need to be maintained. Furthermore, disconnecting unnecessary connections can reduce potential failures and improve the overall reliability and stability of the link between the server and each NFS client connected via RDMA.

[0108] One possible implementation of the first aspect is that the server establishes a first network layer connection with the first NFS client based on the first Socket object, including: the first storage node running the server establishes a first network layer connection with the first computing node running the first NFS client through a physical network based on the first Socket object, wherein the first computing node and the first storage node belong to the same data center.

[0109] In this implementation, the storage node running the server can establish a network layer connection with a compute node running an NFS client in the same data center based on a Socket object. This established network layer connection facilitates the exchange of information required to establish an RDMA connection between the two nodes, thereby enabling the establishment of an RDMA connection between the storage node and the compute node within the same data center. This, in turn, allows the compute node in the same data center to directly access data within the storage node via the RDMA connection. Furthermore, the communication between the compute node and the storage node within the same data center offers lower latency and higher bandwidth.

[0110] One possible implementation of the first aspect is that the server establishes a second network layer connection with the second NFS client based on a third Socket object, including: the second storage node running the server establishes a second network layer connection with the second computing node running the second NFS client through a physical network based on the third Socket object, wherein the second computing node and the second storage node belong to the same data center.

[0111] The first storage node and the second storage node can be the same storage node or different storage nodes; there are no restrictions here.

[0112] The first computing node and the second computing node can be the same computing node or different computing nodes. That is, the first NFS client and the second NFS client can run on the same computing node or on different computing nodes. This application does not impose any restrictions on this.

[0113] In the implementation of this application, the server in the same data center can concurrently establish RDMA connections with multiple NFS clients running on multiple computing nodes, thereby improving the connection establishment efficiency of RDMA connections in the data center and thus improving the access efficiency of pass-through access to stored data.

[0114] Secondly, this application provides an access system comprising: a first NFS client and a server, wherein the server is configured to establish a first network layer connection with the first NFS client based on a first Socket object; the server is further configured to exchange first information for establishing a first RDMA connection with the first NFS client through the first network layer connection; the server is further configured to establish the first RDMA connection from the server to the first NFS client based on the exchanged first information; and the server is further configured to send a first file to the first NFS client through the first RDMA connection.

[0115] In one possible implementation of the second aspect, the first NFS client is used to establish a first RDMA connection from the first NFS client to the server based on the exchanged first information.

[0116] In a possible implementation of the second aspect, the first NFS client is further configured to: request the establishment of the first network layer connection with the server based on the second Socket object; and request the exchange of the first information for establishing the first RDMA connection with the server through the first network layer connection.

[0117] In one possible implementation of the second aspect, the system further includes a second NFS client, and the server is further configured to: establish a second network layer connection with the second NFS client based on a third Socket object; exchange second information with the second NFS client through the second network layer connection for establishing a second RDMA connection; and establish a second RDMA connection from the server to the second NFS client based on the exchanged second information.

[0118] In a possible implementation of the second aspect, the method further includes: the server sending a second file to the second NFS client via a second RDMA connection.

[0119] In one possible implementation of the second aspect, the IP address and port of the server associated with the third Socket object are the same as the IP address and port of the server associated with the first Socket object.

[0120] In one possible implementation of the second aspect, the IP address and port of the server in the five-tuple connected by the first network layer are the same as the IP address and port of the server in the five-tuple connected by the second network layer.

[0121] In one possible implementation of the second aspect, the second NFS client is further configured to establish a second RDMA connection from the second NFS client to the server based on the exchanged second information.

[0122] In one possible implementation of the second aspect, the second NFS client is configured to: request the establishment of a second network layer connection with the server based on a fourth Socket object; and request the exchange of the second information for establishing the second RDMA connection with the server through the second network layer connection.

[0123] In one possible implementation of the second aspect, the server is further configured to negotiate private information with the first NFS client via the first network layer connection.

[0124] In one possible implementation of the second aspect, the server is further configured to negotiate private information with the second NFS client via the second network layer connection.

[0125] In one possible implementation of the second aspect, the first NFS client is specifically configured to send a first message to the server via the first network layer connection, the first message being used to provide first private information of the first NFS client; the server is specifically configured to, in response to the received first message, determine second private information of the server based on the first private information, and send a second message to the first NFS client via the first network layer connection, the second message being used to provide the second private information; the first NFS client is specifically configured to, in response to the received second message, determine target private information based on the second private information and the first private information.

[0126] In one possible implementation of the second aspect, the first private information is used to provide a first concurrency of data access requests sent by the first NFS client to the server through the first RDMA connection, and the second private information is used to provide a second concurrency of data access requests received by the server from the first NFS client through the first RDMA connection.

[0127] In one possible implementation of the second aspect, the first private information is used to provide depth information of the RDMA send queue of the first NFS client, and the second private information is used to provide depth information of the RDMA receive queue of the server.

[0128] In one possible implementation of the second aspect, the first NFS client is further configured to send a seventh message via the first RDMA connection based on the target private information.

[0129] In one possible implementation of the second aspect, the first NFS client is specifically used to send a first message to the server through the first network layer connection, and the first message is used to provide the first QP information of the first NFS client.

[0130] In one possible implementation of the second aspect, the server is specifically configured to respond to the received first message by sending a second message to the first NFS client through the first network layer connection, wherein the second message is used to provide the server's second QP information.

[0131] In one possible implementation of the second aspect, the server is specifically configured to establish the first RDMA connection between the server and the first NFS client in response to the received first message.

[0132] In one possible implementation of the second aspect, the first NFS client is specifically configured to establish the first RDMA connection from the first NFS client to the server in response to the received second message.

[0133] In one possible implementation of the second aspect, the server is specifically configured to respond to the third message sent by the first NFS client through the first RDMA connection and return the first file pointed to by the third message to the first NFS client.

[0134] In one possible implementation of the second aspect, the second NFS client is specifically used to send a fourth message to the server through the second network layer connection, the fourth message being used to provide the third QP information of the second NFS client.

[0135] In one possible implementation of the second aspect, the server is specifically configured to, in response to the received fourth message, send a fifth message to the second NFS client via the second network layer connection, the fifth message being used to provide the server's fourth QP information.

[0136] In one possible implementation of the second aspect, the server is specifically configured to establish a second RDMA connection between the server and the second NFS client in response to the received fourth message.

[0137] In one possible implementation of the second aspect, the second NFS client is specifically configured to establish a second RDMA connection from the second NFS client to the server in response to the received fifth message.

[0138] In one possible implementation of the second aspect, the server is specifically configured to respond to the sixth message sent by the second NFS client through the second RDMA connection and return the second file pointed to by the sixth message to the second NFS client.

[0139] In one possible implementation of the second aspect, the first network layer connection is a TCP connection or a UDP connection, and the second network layer connection is a TCP connection or a UDP connection.

[0140] In one possible implementation of the second aspect, the first NFS client is further configured to request to disconnect the first network layer connection with the server; the server is further configured to disconnect the first network layer connection with the first NFS client in response to the received request from the first NFS client to disconnect the first network layer connection.

[0141] In one possible implementation of the second aspect, the second NFS client is further configured to request disconnection of the second network layer connection with the server; the server is further configured to disconnect the second network layer connection with the second NFS client in response to the received request from the second NFS client to disconnect the second network layer connection.

[0142] The effects of accessing the system through the above implementation methods are similar to those of the access methods in the first aspect or any implementation of the first aspect, and will not be repeated here.

[0143] Thirdly, this application provides a device cluster including at least one device, each device including a processor and a memory; the processor of the at least one device is configured to execute instructions stored in the memory of the at least one device to cause the device cluster to perform an access method as described in the first aspect or any possible implementation thereof.

[0144] The effect of the device cluster in this implementation is similar to the effect of the access method in the first aspect or any possible implementation of the first aspect, and will not be repeated here.

[0145] Fourthly, this application provides a computer program product containing instructions that, when executed by a device cluster, cause the device cluster to perform the access method in the first aspect or any possible implementation thereof.

[0146] The effect of the computer program product of this implementation is similar to that of the access method in the first aspect or any possible implementation of the first aspect, and will not be repeated here.

[0147] Fifthly, this application provides a computer-readable storage medium including computer program instructions that, when executed by a cluster of devices, enable the cluster of devices to perform an access method as described in the first aspect or any possible implementation thereof.

[0148] The effect of the computer-readable storage medium in this implementation is similar to that of the access methods in the above implementations, and will not be repeated here. Attached Figure Description

[0149] Figure 1 This is a schematic diagram illustrating RDMA connection establishment in a related technology as an example.

[0150] Figure 2 This is a schematic diagram illustrating an example of a data center cluster;

[0151] Figure 3a This is a schematic diagram illustrating an interaction between a server and a single client.

[0152] Figure 3b This is an illustrative diagram illustrating an interaction between a server and multiple clients.

[0153] Figure 4 A schematic diagram illustrating one possible access method;

[0154] Figure 5 A schematic diagram illustrating another access method as an example;

[0155] Figure 6 This is a schematic diagram illustrating an access system as an example;

[0156] Figure 7 A schematic diagram illustrating an example of a data center;

[0157] Figure 8 This is a schematic diagram of the structure of a computing device as an example.

[0158] Figure 9 This is a schematic diagram of the structure of a storage device as an example.

[0159] Figure 10aThis is a schematic diagram illustrating the structure of a computing device cluster, as an example.

[0160] Figure 10b This is a schematic diagram illustrating the structure of a storage device cluster as an example.

[0161] Figure 11 This is a schematic diagram illustrating an example of an interaction structure between a computing device and a storage device. Detailed Implementation

[0162] The technical solutions in the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings.

[0163] In this article, the term "and / or" is merely a description of the relationship between related objects, indicating that there can be three relationships. For example, A and / or B can represent three situations: A exists alone, A and B exist simultaneously, and B exists alone.

[0164] The terms "first" and "second," etc., used in the specification and claims of this application are used to distinguish different objects, not to describe a specific order of objects. For example, "first target object" and "second target object," etc., are used to distinguish different target objects, not to describe a specific order of target objects.

[0165] In the embodiments of this application, the terms "exemplary" or "for example" are used to indicate that something is an example, illustration, or description. Any embodiment or design that is described as "exemplary" or "for example" in the embodiments of this application should not be construed as being more preferred or advantageous than other embodiments or design. Specifically, the use of the terms "exemplary" or "for example" is intended to present the relevant concepts in a specific manner.

[0166] In the description of the embodiments in this application, unless otherwise stated, "multiple" means two or more. For example, multiple processing units means two or more processing units; multiple systems means two or more systems.

[0167] Before describing the technical solutions of the embodiments of this application, the technical terms involved in the embodiments of this application will be briefly introduced first:

[0168] High-performance computing (HPC) refers to the use of supercomputers and computing clusters to solve complex computational tasks. The main characteristic of HPC systems is their powerful computing capabilities. They typically consist of a large number of processors or computing nodes that collaborate to process data through high-speed network connections.

[0169] Remote Direct Memory Access (RDMA) is a technology that allows data access directly in memory without going through the operating system and the central processing unit (CPU).

[0170] Network File System (NFS): A protocol that allows different computers to share files and directories over a network. Computers on an NFS network can access files on remote computers as if they were local files.

[0171] Communication Management Protocol (CMP): A standard RDMA connection establishment protocol used to manage RDMA connections. For example, CMP is a protocol used to manage RDMA connections such as initialization, establishment, maintenance, and deletion.

[0172] Connection Manager (CM): A component used to manage RDMA (Remote Direct Memory Access) connections. CM is the concrete implementation component that implements the CMP protocol.

[0173] To improve data access speed and reduce data transmission latency, RDMA technology is currently the primary method for data access. RDMA is a high-performance network technology that allows clients to bypass the server's operating system or CPU and directly access the server's memory. This allows data to be accessed to be copied directly from the server's memory to the client's memory, thereby improving data access speed, reducing access latency, increasing bandwidth, and reducing the CPU load on both the client and server sides.

[0174] NFS over RDMA (Network File System over Remote Direct Memory Access) is a storage access method that combines the NFS protocol with RDMA technology. NFS over RDMA relies on RDMA technology to enable data pass-through between NFS clients and servers (where data is stored); and it leverages the low latency and high bandwidth of RDMA to improve the performance of the NFS protocol. Therefore, NFS over RDMA can be widely used in high-performance and low-latency data access scenarios, such as cloud computing, Graphic Data Systems (GDS), Electronic Design Automation (EDA) simulation, HPC, and big data processing (e.g., Artificial Intelligence (AI)).

[0175] In current NFS over RDMA protocol standards and open-source implementations, only the standard RDMA connection establishment protocol (specifically, CMP mentioned above) is supported for establishing RDMA connections between NFS clients and servers. CM is the specific implementation component of the CMP protocol; a server has only one CM component, and this single CM component interacts with only one client. Thus, the NFS server can only establish an RDMA connection with an NFS client via the CMP protocol through this single CM component at any given time, and cannot simultaneously establish RDMA connections with other NFS clients, making RDMAM's connection establishment mechanism a single-threaded mechanism.

[0176] Specifically, Figure 1 An exemplary diagram illustrates the process of establishing an RDMA connection via CM in related technologies. For example... Figure 1 As shown, the NFS server 201 establishes an RDMA connection with the NFS client 101 via a single CM component using the CMP protocol. When the NFS client 102 requests to establish an RDMA connection with the NFS server 201, the NFS server 201 can only utilize the CM component to establish an RDMA connection with the NFS client 102 via the CMP protocol after the NFS server 201 disconnects the RDMA connection with the client 101, thus making the CM component of the NFS server 201 idle.

[0177] Therefore, the current NFS over RDMA protocol only supports establishing an RDMA connection between the server and a single NFS client at any given time, and does not support establishing RDMA connections in parallel with multiple NFS clients. This results in low connection establishment efficiency when the server connects to a large number of NFS clients running on a large number of compute nodes via the NFS over RDMA protocol.

[0178] Furthermore, in some scenarios, after a server failure is recovered, a large number of NFS clients need to establish RDMA connections with the recovered server to access data. However, the server can only establish an RDMA connection with one NFS client at a time, which leads to excessively long and uncontrollable failure recovery times for NFS services.

[0179] In addition, Figure 1 In the illustrated technical solution, the NFS client and server can exchange Queue Pair (QP) information under the CMP protocol, enabling the NFS client and server to establish an RDMA connection based on the exchanged QP information. However, the RDMAM connection establishment mechanism is a standard mechanism; the NFS client and server can only exchange QP information under the CMP protocol and cannot transmit other information besides standard QP information. Furthermore, the content of the QP information is standardized. Therefore, the RDMAM connection establishment scheme in related technologies cannot flexibly negotiate or expand the connection information between the two ends.

[0180] Furthermore, since the NFS over RDMA protocol standard only supports establishing RDMA connections based on CM, if the method of establishing an RDMA connection based on CM fails, such as due to a mismatch in the CRC calculation mechanism in the network, the NFS client and server cannot choose other alternative methods to establish an RDMA connection. This results in poor reliability of the RDMA connection establishment method between the NFS client and server.

[0181] To address these technical problems, this application provides an access method and apparatus.

[0182] Figure 2 This is a schematic diagram illustrating an embodiment of the data center cluster of this application.

[0183] like Figure 2As shown, the data center cluster 200 may include one or more computing nodes, for example, computing nodes A1 to Ax, where x is a positive integer. This application does not limit the number of computing nodes. These one or more computing nodes may be located in one or more data centers (DCs) providing cloud services, and these one or more data centers may constitute a computing cluster.

[0184] Cloud services may include, but are not limited to: computing services (such as cloud computing services), storage services, virtual machine services, container services, network services, etc.

[0185] Each compute node can be a physical device, which can be a compute server or a cloud server that can provide at least one cloud service such as compute services (e.g., cloud computing services), virtual machine services, container services, etc. There are no restrictions here.

[0186] Taking compute node A1 as an example, the same applies to other compute nodes. Compute node A1 can include one or more clients, such as client 10 and client 11. Each client can be a virtual machine or container deployed on compute node A1; there are no restrictions here.

[0187] like Figure 2 As shown, the data center cluster 200 may further include one or more storage nodes, for example, storage nodes B1 to By, where y is a positive integer. This application does not limit the number of computing nodes. These one or more storage nodes may be located in one or more data centers (DCs) providing cloud services, and these data centers may constitute a storage cluster. Each storage node may be a physical device, which can be a storage server or a cloud server providing storage services; there are no restrictions on this.

[0188] Taking storage node B1 as an example, the same applies to other storage nodes. Storage node B1 may include one or more servers, such as server 100, server 110, etc.

[0189] like Figure 2 As shown, compute nodes and storage nodes within data center cluster 200 can interact with each other via a physical network. For example, compute node A1 is connected to storage node B1 via a physical network, compute node A2 is connected to storage node B2 via a physical network, and so on.

[0190] It should be understood that a computing node can be connected to multiple storage nodes through a physical network, and a storage node can also be connected to multiple computing nodes through a physical network. In this way, computing nodes and storage nodes connected through a physical network can establish an RDMA connection through the access method provided in the embodiments of this application, and computing nodes can access data of storage nodes through the established RDMA connection.

[0191] In some scenarios, the data center cluster 200 may also include a service network (not shown), which may include network devices such as switches and routers. In this way, compute nodes and storage nodes can be physically connected and interact with each other through the service network.

[0192] like Figure 2 The client in any computing node shown can access data with the server in a storage node that has a physical network connection through the access method of this application embodiment. This method can be applied to any data access scenario with high performance and low latency, such as cloud computing, GDS, EDA simulation, HPC, big data processing (e.g., AI), etc., without limitation.

[0193] The following example illustrates the access method of this application embodiment by taking the establishment of an RDMA connection between a client in compute node A1 and a server in storage node B1 and the access to stored data as an example. The data access process between clients in other compute nodes and servers in other storage nodes is similar and will not be described in detail here.

[0194] Please refer to Figure 3a , Figure 3a This example illustrates a diagram of data access between a server and a client. Figure 3a The process shown can be combined with Figure 2 The architecture shown, but not limited to, is applied to Figure 2 The architecture shown.

[0195] like Figure 3a As shown, NFS client 10 and server 100 can establish a socket-based connection via a socket-based protocol. This socket-based connection allows them to exchange QP information to establish an RDMA connection. After the RDMA connection is established, NFS client 10 can access the stored data on server 100 through this connection.

[0196] In some embodiments, the socket-based protocol may be Transmission Control Protocol (TCP) or User Datagram Protocol (UDP).

[0197] In this way, the NFS client 10 and the server 100 can exchange QP information between the two ends via TCP or UDP protocols in order to establish an RDMA connection between the two ends.

[0198] Among the aforementioned technologies, only RDMA connections between NFS clients and servers are supported through CM.

[0199] In this embodiment, a socket-based connection can be established between the NFS client and server, and QP information can be exchanged between the two ends over this socket-based connection. This allows the NFS client and server to establish an RDMA connection based on the exchanged QP information. Thus, even if establishing an RDMA connection via CM fails, the method provided in this application can still be used to establish an RDMA connection between the NFS client and server, enabling direct data access between them via the RDMA connection. This satisfies the requirements for high-bandwidth, low-latency data access, thereby improving the reliability of RDMA connection establishment and direct data access.

[0200] Example 1

[0201] Figure 4 A flowchart of an access method according to this application is illustrated. This method flow can be based on... Figure 2 The architecture shown is implemented, but is not limited to applications. Figure 2 The architecture shown, in addition, Figure 4 The process shown can be combined with Figure 3a The process shown, but not limited to, is combined with Figure 3a The process is shown below.

[0202] like Figure 4 As shown, the method flow may include, but is not limited to, the following steps:

[0203] Optionally, S201. Server 100 creates a global Socket object S1.

[0204] After the server 100 creates a global Socket object S1, the server 100 can associate its Internet Protocol (IP) address and port number with the global Socket object S1. For example, the server 100 can bind its IP address and port number to the global Socket object S1.

[0205] Here, the port number is the port number used to listen for TCP or UDP connection requests from NFS clients. For example, if the IP address and port number used by server 100 to listen for TCP or UDP connection requests from NFS clients are sIP1 and sPort1 respectively, then server 100 can associate IP1 and port1 with Socket object S1. Therefore, the IP address bound to Socket object S1 is sIP1 and the port number bound to it is sPort1.

[0206] The global Socket object S1 can be used to listen for TCP or UDP connection requests from NFS clients. The Socket object created here is named the global Socket object S1 simply to distinguish it from the Socket objects created later by the server 100 for sending and receiving data over TCP (or UDP) connections. In practical applications, the Socket object created by the server 100 in this step is not limited to being named the global Socket object S1.

[0207] Furthermore, server 100 can start listening to Socket object S1. In this way, server 100 can use Socket object S1 to listen for connection requests from NFS clients to server 100 via sIP1 and sPort1. This connection request can be a connection request based on the Socket object, such as a TCP connection request or a UDP connection request.

[0208] NFS client 10 and server 100 communicate via network.

[0209] Optionally, S101.NFS client 10 creates Socket object C1.

[0210] After NFS client 10 creates Socket object C1, NFS client 10 can associate NFS client 10's IP address and port number with Socket object C1. For example, NFS client 10 can bind NFS client 10's IP address and port number to Socket object C1.

[0211] The port number bound to NFS client 10 is the port number used by NFS client 10 when establishing a TCP connection with the server. For example, if NFS client 10 wants to use IP address cIP1 and port number cPort1 to establish a TCP connection with server 100, then NFS client 10 can associate cIP1 and cPort1 with Socket object C1. Therefore, the IP address bound to Socket object C1 is cIP1, and the port number bound is cPort1.

[0212] Furthermore, the NFS client 10 can also set the IP address and port number of the server 100 to be connected to in this socket connection (e.g., TCP connection). This IP address and port number are the same as the IP address and port number of the server 100 mentioned in S201 above. For example, the NFS client 10 sets the IP address of the server 100 to be connected to in this socket connection to sIP1 and the port number of the server 100 to be connected to to sPort1. As an example, the NFS client 10 can set the IP address to be connected to to sIP1 and the port number to be connected to to sPort1 for the interface used to establish the TCP connection.

[0213] Optionally, the S102A.NFS client 10 requests to establish a TCP connection 1 with the server 100 based on the Socket object C1.

[0214] In a specific embodiment, the NFS client 10 can send a connection request 1 for establishing a TCP connection 1 to the server 100 through the Socket object C1 and the interface used to establish a TCP connection, thereby requesting to establish a TCP connection with the server 100's sIP1 and sPort1.

[0215] Optionally, S202. Server 100 creates a Socket object S2.

[0216] In conjunction with S201 above, after receiving TCP connection request 1 from NFS client 10 to server 100 with sIP1 and sPort1 (e.g., connection request 1 sent by NFS client 10 to server 100 via S102A above), server 100 can create another Socket object in response to connection request 1 for establishing TCP1, named Socket object 2 here. Socket object S2 is a sub-object of Socket object S1 in S201 above. Thus, the IP address and port number bound to Socket object S2 can be inherited from those bound to Socket object S1. Therefore, the IP address and port number bound to Socket object S2 are the same as those bound to Socket object S1. For example, the IP address of Socket object S2 is sIP1, and the port number is sPort1.

[0217] Because a listener is enabled on Socket object S1, server 100 can use Socket object S1 to listen for TCP connection requests from any client to sIP1 and sPort1 on the server, and in response to the TCP connection request, create Socket object S2 that inherits from Socket object S1. Server 100 then uses Socket object S2 to establish a TCP connection with NFS client 10.

[0218] S102B. Server 100 may optionally respond to TCP connection request 1 from NFS client 10 by establishing TCP connection 1 with NFS client 10 based on Socket object S2 (optionally based on Socket object S1).

[0219] As an example, after receiving a TCP connection request from NFS client 100, server 100 can use the Socket object S2 created in S202 to establish TCP connection 1 with client 100, thereby establishing TCP connection 1 between server 100's sIP1 and sPort1 and client 10's cIP1 and cPort1. The specific process of establishing the TCP connection can be found in existing technologies; it will not be limited or elaborated upon here.

[0220] After establishing TCP connection 1 between NFS client 10 and server 100, NFS client 10 and server 100 can send and receive data on TCP connection 1 through Socket object C1 and Socket object S2. For example, NFS client 10 and server 100 exchange QP information through Socket object C1 and Socket object S2.

[0221] Optionally, the S103.NFS client 10 sends message 1 to the server 100 via TCP connection 1.

[0222] Message 1 can be used to provide the information required to establish an RDMA connection between server 100 and NFS client 10, such as QP information of NFS client 10 (referred to as QP information 1 here).

[0223] As an example, NFS client 10 may create (e.g., initialize) QP information 1 of NFS client 10, and generate message 1 including QP information 1 based on the created QP information 1. NFS client 10 sends message 1 including QP information 1 through TCP connection 1.

[0224] In specific embodiments, QP information may include, but is not limited to, at least one of the following: Queue Pair Number (QPN), Global Identifier (GID), Remote Key (rKey), and Packet Sequence Number (PSN).

[0225] The specific content of the QP information is related to the standard definition of QP information in the RDMA standard protocol, and will not be restricted here.

[0226] QPN is a unique identifier for QP. Each QP has a unique QPN used to identify this specific QP in the network. In RDMA communication, QPN ensures that data is correctly sent to the target queue pair.

[0227] A GID is a globally unique identifier used to identify a network interface in an RDMA network. GIDs are commonly used in InfiniBand and RoCE (RDMA over Converged Ethernet) networks to locate the address of remote nodes. The GID ensures that data is correctly sent to the target network interface.

[0228] `rKey` is a remote key used to verify permissions for remote memory access during RDMA operations. `rKey` ensures that only authorized operations can access a specific remote memory region. `rKey` is typically bound to a specific memory region to prevent unauthorized access. `rKey` is a value used to verify remote memory access permissions, ensuring that only operations with the correct key can access the remote memory region.

[0229] PSN, or Packet Sequence Number, is used to track and order data packets. In RDMA communication, it helps ensure the order and integrity of packets. PSN is crucial for ensuring reliable data transmission, especially in unreliable networks or when packets are lost. By comparing the PSNs of received packets, the receiver can determine if all expected packets have been received and request retransmission of lost packets.

[0230] For example, after NFS client 10 creates QPN1, GID1, rKey1 and PSN1, it generates message 1 including QPN1, GID1, rKey1 and PSN1, and NFS client 10 sends message 1 through TCP connection 1.

[0231] In an optional embodiment, the NFS client can carry its private information in the above message 1 according to application requirements, so as to send not only QP information to the server through the TCP connection, but also private information.

[0232] Specifically, message 1 is also used to provide private information of the NFS client (referred to as private information 1 here). After generating QP information 1 and private information 1, NFS client 10 can generate message 1 based on QP information 1 and private information 1. NFS client 10 sends message 1 through TCP connection 1.

[0233] In other implementations, the NFS client 10 can also carry QP information 1 and private information 1 in different messages and send both messages to the server 100 through the established TCP connection 1.

[0234] In one embodiment, private information 1 can be used to provide the concurrency level (here expressed as concurrency level 1), which is the number of data access requests sent by NFS client 10 to server 100 via RDMA connection.

[0235] For example, after NFS client 10 creates QP information 1 and concurrency count 1, it can generate message 1 including QP information 1 and concurrency count 1. NFS client 10 sends message 1 to server 100 through TCP connection 1.

[0236] In another embodiment, private information 1 can be used to provide depth information (here referred to as depth information 1), which is the depth of the RDMA send queue of NFS client 10.

[0237] For example, after NFS client 10 creates QP information 1 and depth information 1, it can generate message 1 including QP information 1 and depth information 1. NFS client 10 sends message 1 to server 100 through TCP connection 1.

[0238] In another embodiment, private information 1 is used to provide concurrency level 1 and depth information 1.

[0239] Specifically, after creating the QP information 1, concurrency 1, and depth information 1 of the NFS client 10, the NFS client 10 can generate a message 1 that includes the QP information 1, concurrency 1, and depth information 1, and the NFS client 10 can send the message 1 through the TCP connection 1.

[0240] The specific content of the private information is related to the specific application scenario and application requirements. The NFS client 10 can customize which private information to transmit to the server 100 according to the actual situation and application needs. There are no restrictions on the specific content of the private information. For example, in scenarios such as cloud computing, GDS, EDA simulation, HPC, and big data processing (e.g., Artificial Intelligence (AI)) in this embodiment, the private information can not only be the private information exemplified above, but also the maximum data unit (MTU) of data transmitted between the NFS client 10 and the server 100, the retransmission mechanism between the NFS client 10 and the server 100, etc. For another example, if the server 10 and the NFS client 100 need to verify each other's identities before transmitting data, the private information can be a token or certificate used for authentication. Furthermore, if it is necessary to guarantee the Quality of Service (QoS), the private information can be the priority of different types of data processing requests, the maximum latency of data transmission, etc.

[0241] S203. Server 100 may optionally respond to the received message 1 to establish an RDMA connection between server 100 and NFS client 10.

[0242] In some alternative embodiments, the establishment of an RDMA connection between server 100 and NFS client 10 can be further divided into establishing an RDMA connection from server 100 to NFS client 10 and establishing an RDMA connection from NFS client 10 to server 100.

[0243] In this step, after receiving message 1, server 100 can extract (e.g., parse, without restriction) the QP information 1 of NFS client 10 from message 1.

[0244] In addition, after receiving message 1, server 100 can also create QP information 2 for server 100.

[0245] It should be understood that the process of server 100 creating QP information 2 does not require reference to QP information 1 transmitted by NFS client 10. Furthermore, this application does not restrict the implementation order of the process of server 100 creating QP information 2 and the process of server 100 extracting QP information 1 from message 1.

[0246] Next, the server 100 can associate the QP information 2 created by the server 100 with the extracted QP information 1 of the NFS client 10 to establish an RDMA connection between the server 100 and the NFS client 10.

[0247] In a specific embodiment, the server 100 can associate its QP information 2 with the QP information 1 of the NFS client 10 through a first mapping relationship. This application does not limit the specific implementation method of associating the QP information 2 of the server 100 with the QP information 1 of the NFS client 10, and it can be implemented based on the specific standard of RDMA connection establishment in the RDMA protocol.

[0248] In one example, the first mapping relationship is shown in Table 1 below:

[0249] Table 1

[0250] Client QP information Server-side QP information QP Information 1 QP Information 2

[0251] In another example, QP information 1 includes QPN1, GID1, rKey1, and PSN1, and QP information 2 includes QPN2, GID2, rKey2, and PSN2. The first mapping relationship is shown in Table 2 below:

[0252] Table 2

[0253] Client QP information Server-side QP information QPN1 QPN2 GID1 GID2 rKey1 rKey2 PSN1 PSN2

[0254] Optionally, server 100 may negotiate private information with NFS client 10 via TCP connection 1.

[0255] However, this application does not restrict the specific implementation process of how the server 100 can negotiate private information with the NFS client 10 through TCP connection 1.

[0256] In some embodiments, S204. Server 100 may negotiate private information in response to received message 1.

[0257] Specifically, server 100 can respond to the received message 1 and determine private information 2 based on private information 1.

[0258] After receiving message 1, the Socket object S2 of server 100 can extract the private information 1 of NFS client 10 from message 1. Server 100 can negotiate the private information between the two ends based on the private information 1 sent by NFS client 10, thereby determining the private information 2 that server 100 will send to client 10.

[0259] In an optional embodiment, if the private information 1 includes the concurrency number 1, the server 100 determines the concurrency number 2 based on the concurrency number 1. The concurrency number 2 is the number of data access requests received by the server 100 from the NFS client 10 via the RDMA connection.

[0260] In a specific embodiment, server 100 can obtain its resource status, and server 100 determines the concurrency level 2 based on its resource status and concurrency level 1. This resource status may include, for example, information such as the utilization rate of server 100's memory resources, CPU resources, etc., and is not limited here.

[0261] As a concrete example, NFS client 10 wants to send 500 concurrent data access requests to server 100 (private information 1: the concurrent data access request count is 500). Server 100 determines, based on CPU utilization and memory utilization, that the concurrent data access requests it can handle are 400. Therefore, the number of concurrent data access requests from client 10 to server 100 negotiated by server 10 and client 10 is 400 (private information 2: the concurrent data access request count is 400).

[0262] As another specific example, NFS client 10 wants to send 300 concurrent data access requests to server 100 (private information 1: the concurrent data access request count is 300). Server 100 determines that it can handle 400 concurrent data access requests based on CPU utilization and memory utilization. Therefore, the number of concurrent data access requests from client 10 to server 100 negotiated by server 10 and client 10 is 300 (private information 2: the concurrent data access request count is 300).

[0263] In other words, the private information negotiated by server 100 based on the private information of NFS client 10 can meet the negotiation needs of client 10 as much as possible, but it cannot exceed the server 100's ability to provide the corresponding private information (such as the maximum ability to support concurrent access).

[0264] In an optional embodiment, if the private information 1 includes depth information 1, the server 100 determines depth information 2 based on the depth information 1, and the depth information 2 is the depth of the RDMA receive queue of the server 100.

[0265] In a specific embodiment, server 100 obtains its resource status, and server 100 determines depth information 2 based on its resource status and depth information 1. This resource status may include, for example, information such as the utilization rate of server 100's memory resources, CPU resources, etc., and is not limited here.

[0266] As a concrete example, the depth information of the RDMA send queue for the NFS client to temporarily store data access requests is 500 (private information 1: the concurrent number of data access requests is 500). The server 100 determines, based on CPU utilization and memory utilization, that the depth information of the RDMA receive queue that the server 100 supports to receive data access requests is 400. Then, the number of concurrent data access requests from the client 10 to the server 100 negotiated by the server 100 and the client 10 is 400 (private information 2: the concurrent number of data access requests is 400).

[0267] As another specific example, the depth information of the RDMA send queue for the NFS client to temporarily store data access requests is 300 (private information 1: the concurrent number of data access requests is 300). The server 100 determines, based on CPU utilization and memory utilization, that the depth information of the RDMA receive queue that the server 100 supports to receive data access requests is 400. Then, the number of concurrent data access requests from the client 10 to the server 100 negotiated by the server 100 and the client 10 is 300 (private information 2: the concurrent number of data access requests is 300).

[0268] It should be noted that S203 and S204 are both executed before S205. This embodiment does not limit the execution order of S203 and S204. In practical applications, S204 can be executed first, followed by S203. In other words, this embodiment does not limit the execution order between the process of server 100 associating QP information 1 and QP information 2 and the process of server 100 determining private information 2 based on private information 1.

[0269] Optionally, in response to the received message 1, server 100 sends message 2 to NFS client 10 via TCP connection 1.

[0270] Among them, message 2 is used to provide QP information to the service provider 100 (here referred to as QP information 2).

[0271] After receiving message 1 sent by NFS client 10, server 100 can generate message 2 including QP information 2, and server 100 sends message 2 through TCP connection 1.

[0272] In a specific embodiment, QP information 2 may include QPN2, GID2, rKey2 and PSN2, etc. The server 100 generates a message 2 including QPN2, GID2, rKey2 and PSN2, and the server 100 sends the message 2 through TCP connection 1.

[0273] In an optional embodiment, message 2 is also used to provide private information of server 100 (here referred to as private information 2). Server 100 generates message 2 including QP information 2 and private information 2, and server 100 sends message 2 through TCP connection 1.

[0274] For details on the implementation and introduction of private information 2, please refer to the introduction of private information 2 in S204 above, which will not be repeated here.

[0275] Optionally, in response to the received message 2, the NFS client 10 may establish an RDMA connection from the NFS client 10 to the server 100.

[0276] For example, after NFS client 10 receives message 2 through Socket object C1, NFS client 10 can extract (e.g., parse, without restriction) the QP information 2 of server 100 from message 2. Then, NFS client 10 associates the QP information 2 of server 100 with the QP information 1 of NFS client 10 to establish an RDMA connection between NFS client 10 and server 100. For the specific process of establishing an RDMA connection between NFS client 10 and server 100, please refer to the process of establishing an RDMA connection between server 100 and NFS client 10; it will not be repeated here.

[0277] In some embodiments, if an RDMA connection between server 100 and NFS client 10 has been established, it can be said that an RDMA connection 1 has been established between server 100 and NFS client 10.

[0278] In some embodiments, if the RDMA connection from server 100 to NFS client 10 has been established, and the RDMA connection from NFS client 10 to server 100 has also been established, then it indicates that the RDMA connection 1 between NFS client 10 and server 100 has been established.

[0279] Optionally, the S105.NFS client 10 may respond to the received message 2 by negotiating target private information based on private information 2 and private information 1.

[0280] After receiving message 2, NFS client 10 can extract private information 2 of server 100 from message 2. NFS client 10 negotiates target private information through private information 1 and private information 2.

[0281] In an optional embodiment, when private information 1 includes a concurrency level of 1 and private information 2 includes a concurrency level of 2, the NFS client 10 determines the target concurrency level using the concurrency level of 2 and the concurrency level of 1.

[0282] As a concrete example, NFS client 10 wants to send 500 concurrent data access requests to server 100, and server 100 supports processing 400 concurrent data access requests. The number of concurrent data access requests that NFS client 10 can send to server 100 is negotiated by NFS client 10 and server 100 to be a positive integer less than or equal to 400, for example, the negotiated target concurrency is 300.

[0283] As another specific example, NFS client 10 wants to send 300 concurrent data access requests to server 100, and server 100 supports processing 400 concurrent data access requests. The number of concurrent data access requests that NFS client 10 can send to server 100 is negotiated by NFS client 10 and server 100 to be a positive integer less than or equal to 300, for example, the negotiated target concurrency is 200.

[0284] In an optional embodiment, when private information 1 includes depth information 1 and private information 2 includes depth information 2, the NFS client 10 determines the target depth information using depth information 2 and depth information 1. The principle by which the NFS client 10 negotiates the target depth information based on depth information 1 and depth information 2 is similar to the principle of negotiating the target concurrency level described above, and will not be repeated here.

[0285] However, since the queue depth of the RDMA queue is essentially the same as the number of concurrent data access requests, and the queue depth is described from the perspective of the maximum number of data access requests that can be written in the queue containing data access requests, the number of concurrent data access requests can be the same as the number of data access requests corresponding to the target depth information and the target concurrency.

[0286] It should be noted that S104 and S105 are both executed after the NFS client 10 receives message 2. This embodiment does not limit the execution order of S104 and S105. In practical applications, S204 can be executed first, followed by S203. In other words, this embodiment does not limit the execution order between the process of client 10 associating QP information 1 and QP information 2 and the process of client 100 determining the target private information based on private information 1 and private information 2.

[0287] Optionally, after S104, NFS client 10 may request to disconnect the TCP connection 1 with server 100, so that S106 can be executed after S104.

[0288] Optionally, S106. Disconnect the TCP connection 1 between the NFS client 10 and the server 100.

[0289] As an example, server 100 can close its listening to Socket object S1, thereby closing the listening for TCP connection requests from any NFS client to sIP1 and sPort1 of server 100 bound to Socket object S1.

[0290] In addition, the server 100 can disconnect the TCP connection 1 with the NFS client 10, thereby disconnecting the TCP connection 1 between the server 100's sIP1 and sPort1 and the NFS client 10's cIP1 and cPort1.

[0291] The process of disconnecting a TCP connection can be found in existing technologies; no further explanation or elaboration is provided here.

[0292] Optionally, after S104, and after S105, NFS client 10 may execute S107.

[0293] Optionally, the S107.NFS client 10 sends message 3 to the server 100 via RDMA connection 1.

[0294] In step S107, after the NFS client 10 generates a message 3 containing indication information 1, the NFS client 10 sends the message 3 to the server 100 through the RDMA connection 1 between the NFS client 10 and the server 100. The indication information 1 is used to provide information about the file that the NFS client 10 wants to access.

[0295] For example, the instruction information 1 may include the handle or file name of file 1, etc., without restriction.

[0296] After S104, an RDMA connection 1 is established between the NFS client 10 and the server 100. Then S106 and S107 can be executed. This application does not restrict the execution order between S106 and S107. That is, the embodiments of this application do not limit the execution order between the process of disconnecting the TCP connection 1 between the NFS client 10 and the server 100 and the process of the NFS client 10 sending a message for data access through the established RDMA connection 1.

[0297] S206. Server 100 returns file 1 pointed to by message 3 to NFS client 10.

[0298] After receiving message 3, server 100 obtains the indication information 1 carried in message 3. Based on the indication information 1, server 100 determines that the file that NFS client 10 wants to access is file 1. Server 100 then sends file 1 to NFS client 100 through RDMA connection 1.

[0299] In an optional embodiment, NFS client 10 sends message A through RDMA connection 1 based on the aforementioned target private information. In one embodiment, message A includes data access requests for a target number of concurrent connections. For example, if the target number of concurrent connections is 100, message A sent by NFS client 10 may include 100 data access requests.

[0300] Message A and Message 3 mentioned above can be the same message or different messages; there is no restriction here.

[0301] In an optional embodiment, the above example of establishing a TCP connection between NFS client 10 and server 100 illustrates the process of establishing an RDMA connection between them. Alternatively, a User Datagram Protocol (UDP) connection can be used to exchange QP information between the two ends, thereby establishing an RDMA connection. The only difference is that the connection established for QP information exchange between the two ends (server 100 and NFS client 10) is replaced by a UDP connection instead of a TCP connection. For the specific RDMA connection establishment process, please refer to the above description of establishing an RDMA connection between NFS client 10 and server 100 via a TCP connection; it will not be repeated here.

[0302] Unlike related technologies that use a CM (Configuration Controller) to exchange information between the NFS client and server to establish an RDMA (Remote Data Access Module) connection, this embodiment uses a Socket object to establish a TCP connection with the NFS client. This TCP connection facilitates the exchange of information for establishing an RDMA connection, allowing the server to establish an RDMA connection with the NFS client and enable direct access to files on the server from the NFS client. This provides an alternative method for establishing an RDMA connection between the NFS client and server. Furthermore, if establishing an RDMA connection via CM fails, the embodiment uses a TCP or UDP connection established between the two ends to exchange information necessary for establishing the RDMA connection, enabling direct data access between the NFS client and server. This satisfies the requirements for high-bandwidth, low-latency data access, improving the reliability of RDMA connection establishment and direct data access.

[0303] In this embodiment, the server and the NFS client can exchange information through a network layer connection established between them. This information is the information required for establishing an RDMA connection between the two ends (e.g., QP information of the two ends). This establishes an RDMA connection from the NFS client to the server, thus providing an alternative RDMA connection establishment scheme that is different from the CMP protocol used in the prior art for QP information exchange.

[0304] In this embodiment of the application, the NFS client and the server can use the Socket objects of both ends to establish a network layer connection between the two ends, and through the established network layer connection, the two ends can exchange the information required to establish the RDMA connection (such as the QP information of both ends), thereby providing another RDMA connection establishment scheme.

[0305] In related technologies, NFS clients and servers need to exchange QP information under the CMP protocol to establish an RDMA connection based on the exchanged QP information. However, the RDMAM connection establishment mechanism is a standard connection establishment mechanism, which means that NFS clients and servers can only exchange QP information under the CMP protocol and cannot transmit other information besides standard QP information. In the embodiments of this application, the information exchanged between the NFS client and server through TCP or UDP connections includes not only QP information but also private information of the NFS client and the server. This allows for flexible expansion of the connection establishment information when the two ends establish an RDMA connection, meeting the need for private information transmission between the NFS client and server during the RDMA connection establishment process. Furthermore, the private information transmitted by the server to the NFS client is determined based on the client's private information, enabling the server to negotiate private information with the NFS client during the RDMA connection establishment process, thus meeting the need for flexible negotiation of private information.

[0306] In this embodiment, during the establishment of an RDMA connection between the NFS client and the server, the private information transmitted by the NFS client and the server respectively can provide the concurrency of data access requests. Thus, the NFS client can transmit the number of concurrent data access requests it wants to send to the server, and the server can transmit the number of concurrent data access requests it can handle to the NFS client. This allows for negotiation of the concurrency of data access requests the NFS client will send to the server via the RDMA connection before data access occurs. For example, it can prevent the NFS client from sending too many data access requests to the server in parallel, which could lead to network congestion or server overload.

[0307] In this embodiment, during the establishment of an RDMA connection between the NFS client and server, the private information transmitted by the NFS client and server respectively can provide depth information of the NFS client's RDMA send queue and depth information of the server's RDMA receive queue. For example, the NFS client can transmit to the server the maximum number of data access requests that can be written in the queue containing data access requests, and the server can transmit to the NFS client the maximum number of data access requests that can be received in the queue containing data access requests. This allows for negotiation of the concurrent number of data access requests to be sent from the NFS client to the server via the RDMA connection before data access occurs. For example, it can prevent the server's RDMA receive queue from overflowing due to the NFS client sending too many data access requests in parallel.

[0308] In this embodiment, the server can determine its own private information based on the NFS client's private information, enabling the server to negotiate private information with the NFS client during RDMA connection establishment, thus satisfying the server's flexible negotiation needs for private information. For example, the server can try to meet the NFS client's negotiation needs without exceeding its ability to provide the corresponding private information.

[0309] In this embodiment, the NFS client determines the target negotiation information based on its own private information and the server's private information. This allows the NFS client to negotiate private information with the server during the RDMA connection establishment process, satisfying the NFS client's flexible negotiation needs for private information. For example, the negotiation needs of the NFS client can be met as much as possible without exceeding the server's ability to provide the corresponding private information.

[0310] In this embodiment of the application, the NFS client can send messages to the server through the established RDMA connection based on the target private information negotiated with the server, so that the NFS client can access the server's data according to the private information negotiated by both parties.

[0311] In related technologies, RDMA connections between NFS clients and servers are established via the CMP protocol. In this embodiment, RDMA connections are established via TCP or UDP protocols. The TCP protocol supports one server establishing multiple TCP connections with multiple NFS clients in parallel, while the UDP protocol supports one server establishing multiple UDP connections with multiple NFS clients in parallel. Thus, the server can establish TCP or UDP connections with multiple NFS clients in parallel to exchange QP information required for establishing RDMA connections. Based on this, the server in this application has the ability to establish RDMA connections with multiple NFS clients in parallel, improving the efficiency of RDMA connection establishment. Furthermore, the information exchanged between the NFS client and server via TCP or UDP connections includes not only QP information but also private information from both the NFS client and the server. This allows for flexible expansion of the connection information during RDMA connection establishment, meeting the need for private information transmission between the NFS client and server during RDMA connection establishment.

[0312] In this embodiment, after QP information is exchanged between the NFS client and the server via a TCP or UDP connection, the NFS client and the server can use the QP information exchanged to establish an RDMA connection between them. After the RDMA connection between the NFS client and the server is established, the TCP or UDP connection between the NFS client and the server can be disconnected. This reduces the number of connections that need to be maintained, and disconnecting unnecessary connections can reduce potential failures and improve the overall reliability and stability of the link between the NFS client and the server.

[0313] Example 2

[0314] Unlike Example 1 above, in Example 2, the server can concurrently establish RDMA connections with two or more NFS clients. Specifically, Example 2 illustrates this by having server 100 concurrently establish RDMA connections with NFS clients 10 and 11. In this embodiment, the server can use multiple Socket objects to establish multiple TCP connections with multiple NFS clients in parallel to exchange QP information between the server and multiple NFS clients. Based on this, the server of this application has the ability to establish RDMA connections with multiple NFS clients in parallel. Unlike the single-threaded connection establishment mechanism in related technologies, it enables server 100 to concurrently establish multiple TCP connections or multiple UDP connections with different NFS clients through different Socket objects on its own end for exchanging QP information required to establish RDMA connections, thereby improving the connection establishment efficiency of RDMA connections.

[0315] The following is combined Figure 3b , Figure 5 The implementation process of another access method in this embodiment will be introduced.

[0316] Figure 3b and Figure 5 Flowcharts of another access method according to embodiments of this application are shown respectively. Figure 3b and Figure 5 The method flow shown can be based on Figure 2 The architecture shown is implemented, but is not limited to applications. Figure 2 The architecture shown. And Figure 3b and Figure 5 These can be combined to form one implementation scheme of this application.

[0317] Please refer to Figure 3b Distinguished from Figure 3a While maintaining TCP connection 1 with NFS client 10, server 100 establishes TCP connection 2 with NFS client 11. Thus, server 100 can simultaneously exchange QP information with NFS client 10 and NFS client 11 through TCP connection 1 and TCP connection 2 respectively. In this way, server 100 can simultaneously establish RDMA connection 1 and RDMA connection 2 with NFS client 10 and NFS client 11 using their respective QP information, improving the connection establishment efficiency of RDMA connections.

[0318] After the server 100 establishes RDMA connection 1 and RDMA connection 2 with NFS client 10 and NFS client 11 respectively, NFS client 10 and NFS client 11 can access the stored data in the server 100 through RDMA connection 1 and RDMA connection 2 respectively, realizing concurrent access of the two clients to the same server data.

[0319] Optionally combined with Figure 3b The process shown is as follows: Figure 5 This example illustrates the implementation process of server 100 concurrently establishing RDMA connection 1 and RDMA connection 2 with NFS clients 10 and 11, respectively, to support concurrent establishment of RDMA connections between a large number of clients and the server in scenarios with a large number of clients. In this way, NFS clients 10 and 11 can utilize their respective RDMA connections to concurrently access data on server 100, thus supporting concurrent access to the server's stored data by a large number of NFS clients through RDMA connections in scenarios with a large number of NFS clients.

[0320] exist Figure 5The text describes the process of establishing an RDMA connection between server 100 and NFS client 10, and the process of NFS client 10 using the RDMA connection to access data from server 100 after the RDMA connection is established (e.g.,...). Figure 5 S101 to S107 and S201 to S206 shown are all the same as those in Example 1. Figure 4 The implementation processes shown (e.g., S101 to S107, S201 to S206) have the same implementation principle and achieve similar technical effects, so they will not be described in detail here.

[0321] Because of the difference from Figure 4 The process shown illustrates how server 100 establishes an RDMA connection with a single NFS client. Figure 5 In the illustrated process, server 100 can concurrently establish RDMA connections with NFS client 10 and NFS client 11. "Concurrent" means that while server 100 is establishing RDMA connection 1 with NFS client 10, server 100 can also establish RDMA connection 2 with NFS client 11. Specifically, as shown... Figure 5 As shown, the method flow may also include, but is not limited to, the following steps:

[0322] Optionally, the S301.NFS client 11 creates a Socket object C2.

[0323] S301 can be executed before S104 or S203. That is, during the process of establishing RDMA connection 1 between server 100 and NFS client 10, but before the RDMA connection 1 is established, S301 can be executed so that while establishing RDMA connection 1 between server 100 and client 10, server 10 is also establishing RDMA connection 2 with client 11.

[0324] As an example, S301 can also be executed after S201.

[0325] In S301, after NFS client 11 creates Socket object C1, NFS client 11 can associate NFS client 11's IP address and port number with Socket object C2. For example, NFS client 11 can bind NFS client 11's IP address and port number to Socket object C2.

[0326] The port number bound to NFS client 11 is the port number used by NFS client 11 when establishing a TCP connection with server 100. For example, if NFS client 11 wants to use IP address cIP2 and port number cPort2 to establish a TCP connection with server 100, then NFS client 11 can associate both cIP2 and cPort2 with Socket object C2. Therefore, the IP address bound to Socket object C2 is cIP2, and the port number bound to Socket object C2 is cPort2.

[0327] Furthermore, the NFS client 11 can also set the IP address and port number of the server 100 to be connected to in this Socket connection (e.g., TCP connection). This IP address and port number are the same as the IP address and port number of the server 100 mentioned in S201 above. For example, the NFS client 11 sets the IP address of the server 100 to be connected to in this Socket connection to cIP1 and the port number of the server 100 to be connected to to sPort1. As an example, the NFS client 11 can set the IP address to be connected to to cIP1 and the port number to be connected to to sPort1 for the interface used to establish the TCP connection.

[0328] Following S301, NFS client 11 can execute S302A.

[0329] Optionally, the S302A.NFS client 11 requests to establish a TCP connection 2 with the server 100 based on the Socket object C2.

[0330] In a specific embodiment, the NFS client 11 can send a connection request 2 for establishing a TCP connection 2 to the server 100 through the Socket object C2 and the interface used to establish a TCP connection, thereby requesting to establish a TCP connection with the server 100's sIP1 and sPort1.

[0331] Optionally, S207. Server 100 creates Socket object S3.

[0332] In conjunction with S201 above, after receiving TCP connection request 2 from NFS client 11 with sIP1 and sPort1 (e.g., connection request 2 sent by NFS client 11 to server 100 via S302A above), server 100 can create another Socket object in response to connection request 2 for establishing TCP connection 2, named Socket object 3 here. Both Socket object S3 and Socket object S2 are sub-objects of Socket object S1 in S201 above. Server 100 can use different sub-objects of Socket object S1 to establish TCP connections with different NFS clients. Thus, the IP address and port number bound to Socket object S3 can be inherited from the IP address and port number bound to Socket object S1. Therefore, the IP address and port number bound to Socket object S3 are the same as those bound to Socket object S1. For example, the IP address of Socket object S3 is sIP1, and the port number is sPort1. Based on this, server 100 can use its own IP address and port number to establish TCP connections (or UDP connections) with different NFS clients.

[0333] Because a listener is enabled on Socket object S1, server 100 can use Socket object S1 to listen for TCP connection requests from any client to sIP1 and sPort1 on the server, and in response to the TCP connection request, create Socket object S3 that inherits from Socket object S1. Server 100 uses Socket object S3 to establish TCP connection 2 with NFS client 11.

[0334] S302B. Server 100 may optionally respond to TCP connection request 2 from NFS client 11 by establishing TCP connection 2 with NFS client 11 based on Socket object S3 (optionally based on Socket object S1).

[0335] The implementation process of S302B is the same as that of S102B in Example 1.

[0336] In some embodiments, the 5-tuples of TCP connection 1 and TCP connection 2 are different. Specifically, the IP address and port number of server 100, and the communication protocol are the same in TCP connection 1 and TCP connection 2, but the IP addresses and port numbers of the two NFS clients are different in TCP connection 1 and TCP connection 2.

[0337] Both TCP connection 1 and TCP connection 2 use the TCP protocol for communication. The client in TCP connection 1 is client 10, and the client in TCP connection 2 is client 11. The IP address and port number used by NFS client 11 and NFS client 10 to establish TCP connections with server 100 are different.

[0338] Both NFS client 11 and NFS client 10 are configured with the same IP address and port number for the server 100 they wish to connect to via TCP connections. This allows both clients to request the establishment of their respective TCP connections using the same IP address and port number. For example, both clients set the IP address of the server 100 to sIP1 and the port number to sPort1 for this TCP connection. In other words, the server's IP address and port number are identical in both TCP connection 1 and TCP connection 2.

[0339] In one example, the five-tuples included in TCP connection 1 and TCP connection 2 are shown in Table 3 below:

[0340] Table 3

[0341] TCP connection 1 TCP connection 2 IP address of the NFS client (e.g., the source). cIP1 cIP2 NFS client (e.g., source) port number cPort1 cPort2 IP address of the server (e.g., the destination) sIP1 sIP1 The port number of the server (e.g., the destination). sPort1 sPort1 Communication Protocol TCP protocol TCP protocol

[0342] As shown in Table 3 above, the source IP address and port number of TCP connection 1 are the IP address (e.g., "cIP1") and port number (e.g., "cPort1") of NFS client 10, respectively. The destination IP address and port number of TCP connection 1 are the IP address (e.g., "sIP1") and port number (e.g., "sPort1") of server 100, respectively. The communication protocol in the five-tuple of TCP connection 1 is "TCP protocol".

[0343] The 5-tuple of TCP connection 2 includes the source IP address and port number of NFS client 11 (e.g., "cIP2") and the port number of NFS client 11 (e.g., "cPort2"), respectively. The destination IP address and port number of TCP connection 2 include the server IP address (e.g., "sIP1") and the port number of server 11 (e.g., "sPort1"), respectively. The communication protocol in the 5-tuple of TCP connection 2 is "TCP protocol".

[0344] As can be seen from Table 3, TCP connection 1 and TCP connection 2 have the same destination IP address and port number, but their source IP address and port number are different, making the 5-tuples of TCP connection 1 and TCP connection 2 different.

[0345] The reason why the destination IP address and port number in the five-tuple between TCP connection 1 and TCP connection 2 are consistent is that the Socket objects S2 and S3 used by the server 100 to establish TCP connections with the two NFS clients are both sub-objects of the global Socket object S1. This makes the IP address and port number bound to Socket object S2 the same as the IP address and port number bound to Socket object S3, which are both the IP address and port number bound to Socket object S1 used to listen for TCP connection requests.

[0346] Optionally, the S303.NFS client 11 sends message 4 to the server 100 via TCP connection 2.

[0347] Among them, message 4 can be used to provide the information required to establish an RDMA connection between server 100 and NFS client 11, such as QP information of NFS client 11 (referred to as QP information 3 here).

[0348] As an example, NFS client 11 can create QP information 3 and generate a message 4 containing QP information 3 based on the created QP information 3. NFS client 11 sends the message 4 containing QP information 3 through TCP connection 2.

[0349] The specific implementation process is the same as that of S103 in Example 1, the only difference being the execution subject. The execution subject of S103 is NFS client 10, and the execution subject of S304 is NFS client 11.

[0350] S208. Server 100 may optionally respond to the received message 4 to establish an RDMA connection between server 100 and NFS client 11.

[0351] After receiving message 4, server 100 can also create its own QP information 4. The QP information created by server 100 differs for different clients. For example, for NFS client 11 and NFS client 10, the QP information 2 and QP information 4 created by server 100 are different. As an example, QP information 2 and QP information 4 may include different parameters, or they may include the same parameters but with different values ​​for the same type of parameter; this is not a limitation.

[0352] Optionally, server 100 may negotiate private information with NFS client 11 via TCP connection 2.

[0353] However, this application does not restrict the specific implementation process of how the server 100 can negotiate private information with the NFS client 11 through TCP connection 2.

[0354] The specific implementation process of S208 is the same as that of S203.

[0355] In some embodiments, S209. Server 100 may negotiate private information in response to received message 4.

[0356] Specifically, in response to the received message 4, the server 100 determines the private information 4 based on the private information 3.

[0357] The private information negotiated between server 100 and different NFS clients may differ or be the same; no restrictions are imposed here.

[0358] As an example, the private information 2 negotiated between server 100 and client 10 is the number of concurrent data access requests received by server 100 from NFS client 10 via RDMA connection; the private information 4 negotiated between server 100 and client 11 is the depth information 4 of server 100's RDMA receive queue.

[0359] As another example, the private information 2 negotiated between server 100 and client 10 is the number of concurrent data access requests received by server 100 from NFS client 10 via RDMA connection, specifically negotiated as 500; the private information 4 negotiated between server 100 and client 11 is the number of concurrent data access requests received by server 100 from NFS client 11 via RDMA connection, specifically negotiated as 400.

[0360] In practical applications, the negotiation of private information between the server and different clients can be realized based on the client's private information negotiation needs and the server's current resource status. This resource status can be information such as the utilization rate of server's memory resources, CPU resources, etc., which is not limited here.

[0361] The specific implementation process of S209 is the same as that of S204 in Example 1.

[0362] It should be noted that S208 and S209 are both executed before S210. This embodiment does not limit the execution order of S208 and S209. In practical applications, S209 can be executed first, followed by S208. In other words, this embodiment does not limit the execution order between the process of server 100 associating QP information 3 and QP information 4 and the process of server 100 determining private information 4 based on private information 3.

[0363] Optionally, in response to the received message 4, server 100 sends message 5 to NFS client 11 via TCP connection 2.

[0364] Among them, message 5 is used to provide QP information to the service provider 100 (here referred to as QP information 4).

[0365] After receiving message 4 from NFS client 11, server 100 can generate message 5 including QP information 4, and server 100 sends message 5 through TCP connection 2.

[0366] In a specific embodiment, QP information 4 may include QPN4, GID4, rKey4 and PSN4, etc. The server 100 generates a message 4 including QPN4, GID4, rKey4 and PSN4, and the server 100 sends the message 5 through TCP connection 2.

[0367] In an optional embodiment, message 5 is also used to provide private information of server 100 (referred to as private information 3 here). Server 100 generates message 5 including QP information 4 and private information 3, and server 100 sends message 5 through TCP connection 2.

[0368] Optionally, in response to the received message 5, the NFS client 11 may establish an RDMA connection from the NFS client 11 to the server 100.

[0369] In some embodiments, if an RDMA connection between server 100 and NFS client 11 has been established, it can be said that an RDMA connection 2 has been established between server 100 and NFS client 11.

[0370] In some embodiments, if the RDMA connection from server 100 to NFS client 11 has been established, and the RDMA connection from NFS client 11 to server 100 has also been established, then the RDMA connection 2 between NFS client 11 and server 100 has been established.

[0371] The specific implementation process is the same as that of S104 in Example 1. The only difference is the execution subject. The execution subject of S104 is NFS client 10, and the execution subject of S304 is NFS client 11.

[0372] Optionally, the S305.NFS client 11 may respond to the received message 5 by negotiating target private information based on private information 3 and private information 4.

[0373] The specific implementation process of S304 is the same as that of S105 in Example 1. The only difference is the execution subject. The execution subject of S105 is NFS client 10, while the execution subject of S304 is NFS client 11.

[0374] It should be noted that S204 and S205 are both executed after the NFS client 11 receives message 5. This embodiment does not limit the execution order of S204 and S205. In practical applications, S205 can be executed first and then S204. In other words, this embodiment does not limit the execution order between the process of the server 100 associating QP information 1 and QP information 2 and the process of the server 100 determining private information 2 based on private information 1.

[0375] Optionally, after S304, NFS client 11 may request to disconnect the TCP connection 2 with server 100, thus S306 can be executed after S304.

[0376] Optionally, S306. Disconnect the TCP connection 2 between NFS client 11 and server 100.

[0377] The specific implementation process of S306 is the same as that of S106 in Example 1.

[0378] Optionally, after S304, after S305, NFS client 11 can execute S307.

[0379] Optionally, the S307.NFS client 11 sends message 6 to the server 100 via RDMA connection 2.

[0380] In step S307, after the NFS client 11 generates a message 6 containing indication information 2, the NFS client 11 sends the message 6 to the server 100 through the RDMA connection 2 between the NFS client 11 and the server 100. The indication information 2 is used to provide information about the file that the NFS client 11 wants to access.

[0381] For example, the instruction information 2 may include the handle or file name of file 2, etc., without limitation.

[0382] After S304, an RDMA connection 2 is established between the NFS client 11 and the server 100. Then S306 and S307 can be executed. This application does not restrict the execution order between S306 and S307. That is to say, the embodiments of this application do not limit the execution order between the process of disconnecting the TCP connection 2 between the NFS client 11 and the server 100 and the process of the NFS client 11 sending a message for data access through the established RDMA connection 2.

[0383] Optionally, S211. Server 100 returns file 2 pointed to by message 6 to NFS client 11.

[0384] The specific implementation process of S211 is the same as that of S206 in Example 1.

[0385] exist Figure 5 In this embodiment, taking the establishment of TCP connections between NFS client 10 and NFS client 11 and server 100 as an example, the process of establishing different RDMA connections between NFS client 10 and NFS client 11 and server 100 is illustrated. In other embodiments, NFS client 10 and NFS client 11 can also establish different UDP connections with server 100. Thus, NFS client 10 and server 100 can exchange QP information through two UDP connections, and NFS client 11 and server 100 can exchange QP information through another UDP connection, thereby enabling concurrent establishment of RDMA connections between server 100 and NFS clients 10 and 11. This embodiment and... Figure 5 The only difference in this embodiment is that the connection between the two ends (server 100 and NFS client 10, or server 100 and NFS client 11) used to exchange QP information is replaced by a UDP connection instead of a TCP connection. For details regarding the establishment of the RDMA connection and the data interaction process via the RDMA connection, please refer to [link to relevant documentation]. Figure 5 The examples are provided, and will not be repeated here.

[0386] In related technologies, NFS clients and servers establish RDMA connections via the CMP protocol. CM is the specific implementation component of the CMP protocol. A server has only one CM component, and one CM component can only be used to interact with one client. Therefore, at any given time, the server can only use this single CM component to exchange QP information with a single NFS client via the CMP protocol. Thus, the NFS server can only establish RDMA connections with NFS clients via this single CM component via the CMP protocol at any given time, and cannot simultaneously establish RDMA connections with other NFS clients in parallel. This makes the RDMAM connection establishment mechanism a single-threaded connection establishment mechanism.

[0387] However, in this embodiment, the server can use different Socket objects it creates (e.g., Socket object S2 and Socket object S3) to establish different connections (e.g., TCP connection 1 and TCP connection 2) with different NFS clients. Specifically, NFS client 10 can request to establish a connection with the server based on its own created Socket object (e.g., Socket object C1). The server can then use its own created Socket object (e.g., Socket object S2, optionally Socket object S1) to respond to the connection request from NFS client 10 and establish a connection (e.g., a TCP connection) with NFS client 10. Similarly, after the server receives a connection request based on a Socket object (e.g., Socket object C2) from another client (e.g., NFS client 11), it can also use another self-created Socket object (e.g., Socket object S3, optionally Socket object S1) to respond to the connection request from NFS client 11 and establish another connection (e.g., a TCP connection) with NFS client 11. In this way, the server can use the N Socket objects it creates to concurrently establish N connections with N NFS clients, where N is a positive integer greater than or equal to 2.

[0388] Based on this, the server can utilize the connection established with each NFS client based on the Socket object to exchange QP information, thereby enabling concurrent establishment of RDMA connections between the server and N NFS clients. "Concurrent connection establishment" means that while the server is establishing an RDMA connection with one NFS client, but before that connection is complete, the server can also establish RDMA connections with other NFS clients (one or more NFS clients). In this way, the server can achieve concurrent establishment of RDMA connections with multiple NFS clients. Therefore, in scenarios where the server connects to a large number of NFS clients running on large-scale computing nodes via the NFS over RDMA protocol, the efficiency of RDMA connection establishment can be significantly improved. Furthermore, in some scenarios, after the server recovers from a failure, a large number of NFS clients need to establish RDMA connections with the recovered server for data access. The server in this embodiment supports concurrently establishing multiple RDMA connections with multiple NFS clients at the same time (or within the same time period), thereby significantly reducing the failure recovery time of NFS services and making the failure recovery time controllable.

[0389] In this embodiment, the Socket objects used by the server to establish network layer connections with different NFS clients are bound to the same server IP address and port. Thus, although the server's IP address and port for establishing network layer connections are unique, the server can bind the unique IP address and port to different Socket objects and establish multiple network layer connections with multiple NFS clients through these different Socket objects. Based on this, the server can utilize the same IP address and port to establish multiple network layer connections with multiple NFS clients through different Socket objects, enabling the server to support concurrent RDMA connection establishment with multiple NFS clients. This not only effectively utilizes the server's port but also reduces the complexity of network configuration on the server (e.g., only firewall rules and other network access control lists need to be set for one port).

[0390] In this embodiment, the server uses the same IP address and port to interact with different NFS clients through their respective network layer connections, thereby enabling the server to support concurrent establishment of RDMA connections with multiple NFS clients.

[0391] In this embodiment, the five-tuples of TCP connection 1 and TCP connection 2 are different. Specifically, the server's IP address and port number, and the communication protocol are the same in TCP connection 1 and TCP connection 2. However, the IP addresses and port numbers of the two source ends (e.g., the IP addresses and port numbers of the two NFS clients are different) are different in TCP connection 1 and TCP connection 2. In this way, by keeping the destination IP address and port number (both are the same IP address and port number of the server) consistent in the five-tuples of TCP connection 1 and TCP connection 2, different NFS clients can request to establish their own TCP connections with the same IP address and port number of the server. Based on this, different clients can exchange their own QP information with the same server through their respective TCP connections, thereby realizing the concurrent establishment of RDMA connections between multiple NFS clients and the server, and improving the connection establishment efficiency of RDMA connections.

[0392] In this embodiment, the server can respond to connection requests from different NFS clients (e.g., requests to establish TCP or UDP connections between NFS clients and the server) by creating different Socket objects (e.g., Socket object S2 and Socket object S3 mentioned above), and bind the same IP address and port to the different server-side Socket objects. Specifically, the server 100 can create Socket object S2 in response to connection request 1 from NFS client 10, and create Socket object S3 in response to connection request 2 from NFS client 11. In some embodiments, Socket object S2 and Socket object S3 are both sub-objects of Socket object S1 used to listen for TCP connection requests (or UDP connections). Thus, the IP address and port number bound to Socket object S2 and Socket object S3 can both inherit from the IP address and port number bound to the same Socket object S1, making the IP address and port number bound to Socket object S2 and Socket object S3 the same as those bound to Socket object S1. In this way, the server can concurrently listen for and respond to connection requests from multiple NFS clients on the same IP and port. This allows for more efficient use of ports and reduces the complexity of network configuration on the server side (for example, only firewall rules and other network access control lists need to be set for one port).

[0393] The term "concurrent connection establishment" means that while server 100 is establishing RDMA connection 1 with NFS client 10, server 100 can also establish RDMA connection 2 with NFS client 11. "Concurrent access" means that while NFS client 10 is accessing data with server 100, NFS client 11 can also access data with server 100.

[0394] Corresponding to the above access methods, this application also provides an access system. Figure 6 For an exemplary structural diagram of an access system 600, please refer to... Figure 6 The access system 600 includes: a first NFS client 610 and a server 620.

[0395] The server 620 is configured to establish a first network layer connection with the first NFS client 610 based on a first Socket object; the server 620 is also configured to exchange first information for establishing a first RDMA connection with the first NFS client 610 through the first network layer connection; the server 620 is also configured to establish the first RDMA connection from the server 620 to the first NFS client 610 based on the exchanged first information; the server 620 is also configured to send a first file to the first NFS client 610 through the first RDMA connection.

[0396] In one possible implementation, the first NFS client 610 is used to establish a first RDMA connection from the first NFS client 610 to the server 620 based on the exchanged first information.

[0397] In one possible implementation, the first NFS client 610 is further configured to: request the establishment of the first network layer connection with the server 620 based on the second Socket object; and request the exchange of the first information for establishing the first RDMA connection with the server 620 through the first network layer connection.

[0398] In one possible implementation, the system further includes a second NFS client 630, and the server 620 is further configured to: establish a second network layer connection with the second NFS client 630 based on a third Socket object; exchange second information with the second NFS client 630 for establishing a second RDMA connection through the second network layer connection; and establish a second RDMA connection from the server 620 to the second NFS client 630 based on the exchanged second information.

[0399] In one possible implementation, the method further includes: the server 620 sending a second file to the second NFS client 630 via a second RDMA connection.

[0400] In one possible implementation, the IP address and port of the server 620 associated with the third Socket object are the same as the IP address and port of the server 620 associated with the first Socket object.

[0401] In one possible implementation, the IP address and port of the server 620 in the five-tuple connected to the first network layer are the same as the IP address and port of the server 620 in the five-tuple connected to the second network layer.

[0402] In one possible implementation, the second NFS client 630 is further configured to establish a second RDMA connection between the second NFS client 630 and the server 620 based on the exchanged second information.

[0403] In one possible implementation, the second NFS client 630 is configured to: request the establishment of a second network layer connection with the server 620 based on a fourth Socket object; and request the exchange of the second information for establishing the second RDMA connection with the server 620 through the second network layer connection.

[0404] In one possible implementation, the server 620 is further configured to negotiate private information with the first NFS client 610 via the first network layer connection.

[0405] In one possible implementation, the server 620 is further configured to negotiate private information with the second NFS client 630 via the second network layer connection.

[0406] In one possible implementation, the first NFS client 610 is specifically configured to send a first message to the server 620 via the first network layer connection, the first message being used to provide first private information of the first NFS client 610; the server 620 is specifically configured to, in response to the received first message, determine second private information of the server 620 based on the first private information, and send a second message to the first NFS client 610 via the first network layer connection, the second message being used to provide the second private information; the first NFS client 610 is specifically configured to, in response to the received second message, determine target private information based on the second private information and the first private information.

[0407] In one possible implementation, the first private information is used to provide a first concurrent number of data access requests sent by the first NFS client 610 to the server 620 through the first RDMA connection, and the second private information is used to provide a second concurrent number of data access requests received by the server 620 from the first NFS client 610 through the first RDMA connection.

[0408] In one possible implementation, the first private information is used to provide depth information of the RDMA send queue of the first NFS client 610, and the second private information is used to provide depth information of the RDMA receive queue of the server 620.

[0409] In one possible implementation, the first NFS client 610 is further configured to send a seventh message via the first RDMA connection based on the target private information.

[0410] In one possible implementation, the first NFS client 610 is specifically used to send a first message to the server 620 through the first network layer connection, the first message being used to provide the first QP information of the first NFS client 610.

[0411] In one possible implementation, the server 620 is specifically configured to, in response to the received first message, send a second message to the first NFS client 610 via the first network layer connection, the second message being used to provide the server 620's second QP information.

[0412] In one possible implementation, the server 620 is specifically configured to establish a first RDMA connection between the server 620 and the first NFS client 610 in response to the received first message.

[0413] In one possible implementation, the first NFS client 610 is specifically configured to establish a first RDMA connection between the first NFS client 610 and the server 620 in response to the received second message.

[0414] In one possible implementation, the server 620 is specifically configured to respond to a third message sent by the first NFS client 610 through the first RDMA connection and return the first file pointed to by the third message to the first NFS client 610.

[0415] In one possible implementation, the second NFS client 630 is specifically used to send a fourth message to the server 620 through the second network layer connection, the fourth message being used to provide the third QP information of the second NFS client 630.

[0416] In one possible implementation, the server 620 is specifically configured to, in response to the received fourth message, send a fifth message to the second NFS client 630 via the second network layer connection, the fifth message being used to provide the fourth QP information of the server 620.

[0417] In one possible implementation, the server 620 is specifically configured to establish a second RDMA connection between the server 620 and the second NFS client 630 in response to the received fourth message.

[0418] In one possible implementation, the second NFS client 630 is specifically configured to establish a second RDMA connection between the second NFS client 630 and the server 620 in response to the received fifth message.

[0419] In one possible implementation, the server 620 is specifically configured to respond to the sixth message sent by the second NFS client 630 through the second RDMA connection by returning the second file pointed to by the sixth message to the second NFS client 630.

[0420] In one possible implementation, the first network layer connection is a TCP connection or a UDP connection, and the second network layer connection is a TCP connection or a UDP connection.

[0421] In one possible implementation, the first NFS client 610 is further configured to request to disconnect the first network layer connection with the server 620; the server 620 is further configured to disconnect the first network layer connection with the first NFS client 610 in response to the received request from the first NFS client 610 to disconnect the first network layer connection.

[0422] In one possible implementation, the second NFS client 630 is further configured to request to disconnect the second network layer connection with the server 620; the server 620 is further configured to disconnect the second network layer connection with the second NFS client 630 in response to the received request from the second NFS client 630 to disconnect the second network layer connection.

[0423] The effect of the above access system is similar to that of the access methods executed by NFS client 10, NFS client 11 or server 100 in the above embodiments, and will not be described again here.

[0424] This application provides a data center, Figure 7 To illustrate the structural diagram of a data center 700, the data center 700 includes storage nodes and at least one computing node that communicate via a physical network; the at least one computing node operates as follows: Figure 6 The first NFS client 610 in the storage node runs as follows Figure 6 The server 620 enables the data center to execute the access method described in the above embodiment.

[0425] In some possible implementations, the at least one computing node also operates as follows: Figure 6 The second NFS client 630 enables the data center to perform the access method described in the above embodiment.

[0426] In some possible implementations, the storage node running the server 620 establishes a first network layer connection with the computing node running the first NFS client 610 via a physical network based on the first Socket object.

[0427] The effect of the data center described above is similar to that of the access methods executed by NFS client 10, NFS client 11, or server 100 in the above embodiments, and will not be described again here.

[0428] Both the server and NFS client described above can be implemented in software or hardware. As examples of software functional units, the server and NFS client may include code running on compute instances. These compute instances may include at least one of physical hosts (computing devices), virtual machines, and containers. Furthermore, there may be one or more compute instances. For example, server 620 may include code running on multiple hosts / virtual machines / containers. It should be noted that the multiple hosts / virtual machines / containers used to run the code can be distributed within the same region or in different regions. Further, the multiple hosts / virtual machines / containers used to run the code can be distributed within the same availability zone (AZ) or in different AZs, each AZ including one or more geographically proximate data centers. Typically, a region may include multiple AZs.

[0429] Similarly, multiple hosts / virtual machines / containers used to run this code can be distributed within the same Virtual Private Cloud (VPC) or across multiple VPCs. Typically, a VPC is set up within a region. Communication between two VPCs within the same region, as well as between VPCs in different regions, requires a communication gateway to be set up within each VPC to enable interconnection between VPCs.

[0430] As an example of a hardware functional unit, an NFS client can include at least one computing device, such as a server. Alternatively, the NFS client can also be a device implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD can be implemented using a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), generic array logic (GAL), or any combination thereof.

[0431] The multiple computing devices included in the first NFS client 610 and the second NFS client 630 can be distributed in the same region or in different regions. Similarly, the multiple computing devices included in the first NFS client 610 and the second NFS client 630 can be distributed in the same Availability Zone (AZ) or in different AZs. Likewise, the multiple computing devices included in the first NFS client 610 and the second NFS client 630 can be distributed in the same Virtual Private Cloud (VPC) or in multiple VPCs. These multiple computing devices can be any combination of computing devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.

[0432] It should be noted that, in other embodiments, the aforementioned NFS client and server can be used to execute the corresponding steps in the access method to realize all the functions of accessing system 600.

[0433] As an example of a hardware functional unit, the server-side component may also include at least one storage device, such as a server. Alternatively, the module may be implemented using an application-specific integrated circuit (ASIC) or a programmable logic device (PLD). The PLD may be implemented using a complex programmable logical device (CPLD), a field-programmable gate array (FPGA), generic array logic (GAL), or any combination thereof.

[0434] The server 620 described above includes multiple storage devices that can be distributed within the same region or in different regions. Similarly, the server 620 can be distributed within the same Availability Zone (AZ) or in different AZs. Likewise, the server 620 can be distributed within the same Virtual Private Cloud (VPC) or in multiple VPCs. These multiple storage devices can be any combination of storage devices such as servers, ASICs, PLDs, CPLDs, FPGAs, and GALs.

[0435] It should be noted that, in other embodiments, the above-mentioned server can be used to execute the corresponding steps in the access method to realize all the functions of the access system 600.

[0436] This application also provides a computing device 800. For example... Figure 8 As shown, the computing device 800 includes a bus 802, a processor 804, a memory 806, and a communication interface 809. The processor 804, the memory 806, and the communication interface 809 communicate with each other via the bus 802. The computing device 800 can be a server or a terminal device. It should be understood that this application does not limit the number of processors and memories in the computing device 800.

[0437] The 802 bus can be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, etc. Buses can be categorized as address buses, data buses, control buses, etc. For ease of representation, Figure 8 The bus 802 may be represented by a single line, but this does not mean that there is only one bus or one type of bus. The bus 802 may include a path for transmitting information between various components of the computing device 800 (e.g., memory 806, processor 804, communication interface 809).

[0438] Processor 804 may include any one or more processors such as a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).

[0439] Memory 806 may include volatile memory, such as random access memory (RAM). Memory 806 may also include non-volatile memory, such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (SSD).

[0440] The memory 806 stores executable program code, which the processor 804 executes to implement the functions of the first NFS client 610 and the second NFS client 630, respectively, thereby realizing the access method. That is, the memory 806 stores instructions for executing the access method.

[0441] The communication interface 809 uses transceiver modules, such as, but not limited to, network interface cards and transceivers, to enable communication between the computing device 800 and other devices or communication networks.

[0442] This application also provides a storage device 900. For example... Figure 9 As shown, the storage device 900 includes a bus 902, a processor 904, a memory 906, and a communication interface 909. The processor 904, the memory 906, and the communication interface 909 communicate with each other via the bus 902. The storage device 900 can be a server or a terminal device. It should be understood that this application does not limit the number of processors and memories in the storage device 900.

[0443] The 902 bus can be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, etc. Buses can be categorized as address buses, data buses, control buses, etc. For ease of representation, Figure 9 The bus 902 may be represented by a single line, but this does not mean that there is only one bus or one type of bus. The bus 902 may include a path for transmitting information between various components of the storage device 900 (e.g., memory 906, processor 904, communication interface 909).

[0444] Processor 904 may include any one or more processors such as a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).

[0445] Memory 906 may include volatile memory, such as random access memory (RAM). Memory 906 may also include non-volatile memory, such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (SSD).

[0446] The memory 906 stores executable program code, and the processor 904 executes this executable program code to implement the functions of the aforementioned server 620, thereby realizing the access method. That is, the memory 906 stores instructions for executing the access method.

[0447] The communication interface 909 uses transceiver modules such as, but not limited to, network interface cards and transceivers to enable communication between the storage device 900 and other devices or communication networks.

[0448] This application also provides a computing device cluster. The computing device cluster includes at least one computing device. The computing device can be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device can also be a terminal device such as a desktop computer, a laptop computer, or a smartphone.

[0449] like Figure 10a As shown, the computing device cluster includes at least one computing device 1000. The memory 1006 of one or more computing devices 1000 in the computing device cluster may store the same instructions for executing access methods.

[0450] In some possible implementations, the memory 1006 of one or more computing devices 1000 in the computing device cluster may also store partial instructions for executing the access method. In other words, a combination of one or more computing devices 1000 can jointly execute the instructions for executing the access method.

[0451] It should be noted that the memory 1006 in different computing devices 1000 within the computing device cluster can store different instructions, each used to execute a portion of the system's functions. That is, the instructions stored in the memory 1006 of different computing devices 1000 can implement the functions of one or more modules in the first NFS client 610 and the second NFS client 630.

[0452] This application also provides a storage device cluster. The storage device cluster includes at least one storage device. The storage device can be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the storage device can also be a terminal device such as a desktop computer, laptop computer, or smartphone.

[0453] like Figure 10b As shown, the storage device cluster includes at least one storage device 1200. The memory 1206 in one or more storage devices 1200 of the storage device cluster may store the same instructions for executing access methods.

[0454] In some possible implementations, the memory 1206 of one or more storage devices 1200 in the storage device cluster may also each store partial instructions for executing the access method. In other words, a combination of one or more storage devices 1200 can jointly execute the instructions for executing the access method.

[0455] It should be noted that the memory 1206 in different storage devices 1200 within the storage device cluster can store different instructions, each used to execute a portion of the system's functions. That is, the instructions stored in the memory 1206 of different storage devices 1200 can implement the functions of one or more modules in the server 620.

[0456] In some possible implementations, one or more computing devices in a computing device cluster can be connected via a network. This network can be a wide area network (WAN) or a local area network (LAN), etc. Figure 11 One possible implementation is shown. For example... Figure 11 As shown, in some possible implementations, computing and storage devices in a data center can be connected via a network (e.g., a physical network). This network can be a wide area network (WAN) or a local area network (LAN), etc. Figure 11 One possible implementation is shown. For example... Figure 11As shown, computing device 1100A and storage device 1100B are connected via a network. Specifically, they are connected to the network through communication interfaces in each computing device and storage device. In this possible implementation, the memory 1106 in computing device 1100A stores instructions for performing the functions of the first NFS client 610. Simultaneously, the memory 1106 in storage device 1100B stores instructions for performing the functions of the server 620.

[0457] It should be understood that Figure 11 The functions of the computing device 1100A shown can also be performed by multiple computing devices 1000. Similarly, the functions of the storage device 1100B can also be performed by multiple storage devices 1000.

[0458] This application also provides a computer program product containing instructions. The computer program product may be a software or program product containing instructions, capable of running on a computing device or stored on any usable medium. When the computer program product is run on at least one computing device, it causes the at least one computing device to perform the access method described in the above embodiments.

[0459] This application also provides a computer-readable storage medium. The computer-readable storage medium can be any available medium capable of being stored by a computing device, or a data storage device such as a data center containing one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state drive). The computer-readable storage medium includes instructions that instruct the computing device to perform the access method described in the above embodiments.

[0460] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of this application, and are not intended to limit them. Although this application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features. Such modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the protection scope of the technical solutions of the embodiments of this application.

Claims

1. An access method, characterized in that, The method includes: The server establishes a first network layer connection with the first network file system (NFS) client based on the first socket object. The server connects through the first network layer and exchanges first information with the first NFS client for establishing a first remote direct memory access (RDMA) connection. Based on the exchanged first information, the server establishes the first RDMA connection from the server to the first NFS client. The server sends the first file to the first NFS client through the first RDMA connection.

2. The method according to claim 1, characterized in that, The method further includes: The first NFS client establishes the first RDMA connection from the first NFS client to the server based on the exchanged first information.

3. The method according to claim 1 or 2, characterized in that, The method further includes: The first NFS client requests to establish the first network layer connection with the server based on the second Socket object; The first NFS client connects through the first network layer and requests to exchange the first information used to establish the first RDMA connection with the server.

4. The method according to any one of claims 1 to 3, characterized in that, Before the server establishes the first RDMA connection from the server to the first NFS client based on the exchanged first information, the method further includes: The server establishes a second network layer connection with the second NFS client based on a third Socket object. The server connects through the second network layer and exchanges second information with the second NFS client for establishing a second RDMA connection; Based on the exchanged second information, the server establishes the second RDMA connection between the server and the second NFS client.

5. The method according to claim 4, characterized in that, The Internet Protocol IP address and port of the server associated with the third Socket object are the same as the IP address and port of the server associated with the first Socket object.

6. The method according to claim 4 or 5, characterized in that, The method further includes: The second NFS client establishes a second RDMA connection to the server based on the exchanged second information.

7. The method according to any one of claims 4 to 6, characterized in that, The method further includes: The second NFS client requests to establish a second network layer connection with the server based on the fourth Socket object; The second NFS client connects through the second network layer and requests to exchange the second information with the server for establishing the second RDMA connection.

8. The method according to any one of claims 4 to 7, characterized in that, The IP address and port of the server in the five-tuple connected by the first network layer are the same as the IP address and port of the server in the five-tuple connected by the second network layer.

9. The method according to any one of claims 1 to 8, characterized in that, After the server establishes a first network layer connection with the first NFS client based on the first Socket object, the method further includes: The server connects through the first network layer and negotiates private information with the first NFS client.

10. The method according to any one of claims 1 to 9, characterized in that, The server establishes a first network layer connection with the first NFS client based on the first Socket object, including: The storage node running the server establishes a first network layer connection with the computing node running the first NFS client through a physical network based on the first Socket object, wherein the computing node and the storage node belong to the same data center.

11. An access system, characterized in that, include: First Network File System (NFS) client and server. The server is used to establish a first network layer connection with the first NFS client based on the first socket object; The server is also used to exchange first information for establishing a first remote direct memory access (RDMA) connection with the first NFS client through the first network layer connection. The server is also used to establish a first RDMA connection from the server to the first NFS client based on the exchanged first information. The server is also used to send a first file to the first NFS client via the first RDMA connection.

12. The system according to claim 11, characterized in that, The first NFS client is used to establish a first RDMA connection from the first NFS client to the server based on the exchanged first information.

13. The system according to claim 11 or 12, characterized in that, The first NFS client is also used for: Based on the second Socket object, a request is made to establish the first network layer connection with the server; Through the first network layer connection, a request is made to exchange the first information used to establish the first RDMA connection with the server.

14. The system according to any one of claims 11 to 13, characterized in that, The system also includes a second NFS client, and the server is further used for: A second network layer connection is established with the second NFS client based on the third Socket object; Through the second network layer connection, exchange second information with the second NFS client for establishing a second RDMA connection; Based on the exchanged second information, a second RDMA connection is established between the server and the second NFS client.

15. The system according to claim 14, characterized in that, The Internet Protocol IP address and port of the server associated with the third Socket object are the same as the IP address and port of the server associated with the first Socket object.

16. The system according to claim 14 or 15, characterized in that, The second NFS client is used to establish a second RDMA connection from the second NFS client to the server based on the exchanged second information.

17. The system according to any one of claims 14 to 16, characterized in that, The second NFS client is used for: Based on the fourth Socket object, a request is made to establish a second network layer connection with the server; Through the second network layer connection, a request is made to exchange the second information used to establish the second RDMA connection with the server.

18. The system according to any one of claims 14 to 17, characterized in that, The IP address and port of the server in the five-tuple connected by the first network layer are the same as the IP address and port of the server in the five-tuple connected by the second network layer.

19. The system according to any one of claims 11 to 18, characterized in that, The server is also used to negotiate private information with the first NFS client through the first network layer connection.

20. A cluster of devices, characterized in that, It includes at least one device, each device including a processor and memory; The processor of the at least one device is configured to execute instructions stored in the memory of the at least one device to cause the cluster of devices to perform the method as described in any one of claims 1 to 10.