Data reading method, storage method, electronic device and computer program product

CN116010397BActive Publication Date: 2026-10-20EMC IP HLDG CO LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202111251576.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-10-22
Publication Date
2026-10-20
Estimated Expiration
2041-10-22

AI Technical Summary

Technical Problem

[0003]然而,目前行业中并没有性能良好、运行高效的命名数据网络实现方式

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116010397B_ABST
    Figure CN116010397B_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to a data reading method, a data storage method, an electronic device and a computer program product. The data reading method comprises: receiving a data reading request, the data reading request comprising a data identifier associated with target data; determining a storage device of the target data based on the data identifier; and obtaining the target data from the storage device based on the data identifier. Using the technical solutions of the present disclosure, a well-performing and efficient running named data network can be implemented.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments disclosed herein generally relate to computer technology, and more specifically to data reading methods, data storage methods, electronic devices, and computer program products that can be used in data networks, especially named data networks. Background Technology

[0002] Named Data Networking (NDN) is an important technology, particularly suitable for distributed edge network applications. Specifically, NDN relates to Content-Centric Networking (CCN), content-based networking, data-oriented networking, or Information-Centric Networking (ICN), and represents a proposed future Internet architecture. NDN arose from the growing awareness of unresolved issues in network usage during the application of contemporary Internet architectures such as the Internet Protocol (IP). Early NDN projects were based on Content-Centric Networking (CCN). It is now widely acknowledged in the field that this simple shift in concept will have a profound impact on how networks and applications are designed, developed, deployed, and used. In NDN, the primary building block is the named content data block, which contrasts with the basic unit of communication in the Internet Protocol (IP). In IP communication, communication can be an end-to-end channel between two endpoints identified by an IP address.

[0003] However, there is currently no high-performance, efficient named data network implementation in the industry. Summary of the Invention

[0004] Embodiments of this disclosure provide a data reading method, a data storage method, an electronic device, and a computer program product.

[0005] In a first aspect of this disclosure, a data reading method is provided. The method includes: receiving a data reading request, the data reading request including a data identifier associated with target data; determining a storage device for the target data based on the data identifier; and obtaining the target data from the storage device based on the data identifier.

[0006] In a second aspect of this disclosure, a data storage method is provided. The method includes: receiving a data storage request, the data storage request including a data identifier associated with data to be stored; determining a target storage device for the data to be stored based on the data identifier; and storing the data to be stored on the target storage device based on the data identifier.

[0007] In a third aspect of this disclosure, an electronic device is provided. The electronic device includes: at least one processing unit; and at least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit. When executed by the at least one processing unit, the instructions cause the device to perform actions including: receiving a data read request, the data read request including a data identifier associated with target data; determining a storage device for the target data based on the data identifier; and retrieving the target data from the storage device based on the data identifier.

[0008] In a fourth aspect of this disclosure, an electronic device is provided. The electronic device includes: at least one processing unit; and at least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit. When executed by the at least one processing unit, the instructions cause the device to perform actions including: receiving a data storage request, the data storage request including a data identifier associated with data to be stored; determining a target storage device for the data to be stored based on the data identifier; and storing the data to be stored in the target storage device based on the data identifier.

[0009] In a fifth aspect of this disclosure, a computer program product is provided. This computer program product is tangibly stored on a non-transitory computer-readable medium and includes machine-executable instructions that, when executed, cause a machine to perform any step of the method described in the first aspect of this disclosure.

[0010] In a sixth aspect of this disclosure, a computer program product is provided. The computer program product is tangibly stored on a non-transitory computer-readable medium and includes machine-executable instructions that, when executed, cause a machine to perform any step of the method described in the first aspect of this disclosure.

[0011] The summary section is provided to present the chosen concepts in a simplified form, which will be further described in the detailed description below. The summary section is not intended to identify key or essential features of the embodiments of this disclosure, nor is it intended to limit the scope of the embodiments of this disclosure. Attached Figure Description

[0012] The above and other objects, features and advantages of this disclosure will become more apparent from the accompanying drawings, in which like reference numerals generally denote like parts.

[0013] Figure 1 A schematic diagram of a named data network 100 in which devices and / or methods according to embodiments of the present disclosure may be implemented is shown;

[0014] Figure 2 A flowchart of a data reading method 200 according to an embodiment of the present disclosure is shown;

[0015] Figure 3 A flowchart of a data storage method 300 according to an embodiment of the present disclosure is shown;

[0016] Figure 4 A flowchart of a data reading method 400 according to an embodiment of the present disclosure is shown;

[0017] Figure 5 A flowchart of a data storage method 500 according to an embodiment of the present disclosure is shown; and

[0018] Figure 6 A schematic block diagram of an example device 600 that can be used to implement embodiments of the present disclosure is shown.

[0019] In the various figures, the same or corresponding reference numerals indicate the same or corresponding parts. Detailed Implementation

[0020] Preferred embodiments of the present disclosure will now be described in more detail with reference to the accompanying drawings. While preferred embodiments of the present disclosure are shown in the drawings, it should be understood that the present disclosure may be implemented in various forms and should not be limited to the embodiments set forth herein. Rather, these embodiments are provided so that the present disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art.

[0021] The term "comprising" and its variations as used herein indicate an open-ended inclusion, for example, "including but not limited to". Unless otherwise stated, the term "or" means "and / or". The term "based on" means "at least partially based on". The terms "an example embodiment" and "an embodiment" mean "at least one embodiment". The term "another embodiment" means "at least one additional embodiment". The terms "first", "second", etc., may refer to different or the same objects. Other explicit and implicit definitions may also be included below.

[0022] As described in the background section above, there is currently no high-performance, efficient named data network implementation in the industry. Specifically, in Internet protocol-based architectures, edge computing client applications rely on centralized entities such as agents and / or software-defined network controllers, or communicate directly with all edge computing devices, to make informed task offloading decisions. However, these solutions require creating additional infrastructure in the network, introducing overhead requests routed to agents or controllers, and all information from computing resources is also routed to these entities. Therefore, the links connecting to these entities become a bottleneck. The network operates merely as a repeater, where all decisions are made at the application layer, and especially using agents.

[0023] In addition, the content distribution of named data networks (RDNs) faces limitations in their deployment because, although designed to replace Internet Protocol (IP) networks, the RDN protocol is not 100% compatible with IPN protocols. Furthermore, the distribution of named content in RDNs requires significant computational and storage resources to process and cache content. Not only does caching content consume substantial storage space, but searching names and routing packets also consumes considerable computational resources. Moreover, current RDN gateway or router solutions rely on central processing unit (CPU) infrastructures, leading to inefficiency. This is because dedicated hardware for RDNs is currently unavailable due to its incompatibility with IPNs, and most RDN test networks are built on servers for feature development. Furthermore, most existing implementations are software-based, limiting their performance.

[0024] To at least partially address one or more of the aforementioned problems and other potential issues, embodiments of this disclosure propose a framework for accelerating content distribution in named data networks and supporting load balancing and replication. This framework can operate within native clusters to build distributed storage. Furthermore, it can help build and accelerate overlay named data networks on Internet networks to provide distributed content delivery services for named data networks. To achieve this, embodiments of this disclosure propose a pipeline framework utilizing programmable switches deployed to connect IoT devices or distributed storage in edge networks and storage servers within data center networks. Regarding programmable switches, embodiments of this disclosure create novel methods to enable hash algorithms for intra-network hash computation, such as supporting SHA1, SHA2, and SHA3 algorithms running on programmable switches. Furthermore, by utilizing consistent hashing, embodiments of this disclosure build routing tables on programmable switches to help route named data network packets to appropriate data storage devices. By introducing Advanced Encryption Standard (AED) algorithms on programmable switches, embodiments of this disclosure also support secure named data network gateways. Additionally, embodiments of this disclosure allow for the establishment of accelerated named data network Virtual Private Networks (VPNs) based on the framework.

[0025] In embodiments of this disclosure, the forwarding behavior of a named data network router is involved. Upon receiving a packet of request or data, which may be referred to as an interest, the first step is to extract the packet's name or identifier. Then, if the packet is an interest, the named data network router checks a content repository for the named content. If a local copy is available, the data is forwarded directly downstream. Otherwise, the router looks up the Pending Interests Table (PIT) to see if there are any pending interests for the same content. If a PIT entry already exists, the entry is updated and the interest is deleted. If not, a PIT entry is created, and the named data network router looks up the Forwarding Information Base (FIB) to determine the next hop for the received interest. Upon receiving a packet, the named data network router looks up the PIT to check if the data has been solicited. If no PIT entry exists for that name, the data is considered unsolicited and is therefore discarded. Otherwise, if a PIT entry exists, the packet is multiplexed to all listed interfaces. The named data network router may also decide to cache copies of the data, depending on its caching strategy. Typical ways to handle unanswered interests include, for example, due to entries expiring, PITs being full, or groups being lost, including consumers who have resubmitted their requests.

[0026] Figure 1A schematic block diagram of a named data network 100 in which data reading and data writing methods, as described in some embodiments of the present disclosure, may be implemented. According to embodiments of the present disclosure, the named data network 100 may be a cloud environment.

[0027] like Figure 1 As shown, the named data network 100 includes multiple computing devices 110-1, 110-2...110-N (hereinafter collectively referred to as computing devices 110), multiple clients 120-1, 120-2...120-N (hereinafter collectively referred to as clients 120), and a network 130. Computing device 110-1 includes multiple storage devices 111-1, 111-2...111-N (hereinafter collectively referred to as storage devices 111) and may include a cache (not shown). According to embodiments of this disclosure, storage devices 111 are local relative to computing device 110-1 and may be located within computing device 110-1. Computing devices 110-2 and 110-N also have connected clients and associated storage devices, which are not shown for brevity. Figure 1 As shown in the image.

[0028] Client 120 is used by a user to store and retrieve data on the named data network 100. In the named data network 100, data may be stored in a storage device 111 linked to computing device 110, or in a cache provided by computing device 110. Computing devices 110 use network 130 to interconnect. According to embodiments of this disclosure, network 130 may include any form of network connection such as a Virtual Private Network or an Internet Protocol Secure (IPSec) connection, and the scope of protection of this disclosure is not limited thereto.

[0029] According to embodiments of this disclosure, computing device 110 may be a router in a named data network, which can be implemented, for example, by a programmable switch. The programmable switch may include a programmable parser, a programmable matching action pipeline, and a programmable inverse parser. The programmable switch may, for example, operate at a speed of 12.8 TB / s, support 400GE interfaces, fully support the P4 language, and operate at a line rate with flexible programmability, thereby providing both performance and programmability.

[0030] According to embodiments of this disclosure, client 120 may include IoT devices such as air conditioner controllers, smart locks, traffic lights, webcams, etc., which are connected to an edge switch. The framework defined according to embodiments of this disclosure can be used to utilize a programmable switch for edge switches between IoT devices and the cloud or server.

[0031] Unlike traditional switches, programmable switches can be flexibly reprogrammed to have new features and functions, not limited to network-related functions. Programs in a programmable switch can be written in the P4 language and can be updated online. Utilizing the framework of embodiments according to this disclosure, it is possible to provide functionality that enables virtual private networks (VPNs) for named data networks to support distributed content operations within the named data network, while also helping to accelerate named data network protocols with built-in functionality on programmable switches.

[0032] By leveraging the benefits of programmable switches, the aforementioned named data network gateway can be implemented. Edge IoT devices can utilize the named data network protocol to connect to the named data network in the data center via a virtual private network with hardware acceleration and replication capabilities.

[0033] According to embodiments of this disclosure, by utilizing the programmability of a programmable switch, the computation of AES encryption and decryption algorithms on the programmable switch can be successfully implemented. By enabling the AES algorithm, components of an IPSec gateway can be used, and virtual private networks can be established between named data network gateways on the programmable switch. Internet Protocol security protocols can be used to encapsulate named data network packets.

[0034] According to embodiments of this disclosure, by using a consistent hashing algorithm, read or storage requests for data can be distributed across different storage devices 111 to achieve higher performance. The number of data replicas that can be stored for the same data can be defined in the named data network 100, thereby enabling redundancy and load balancing.

[0035] According to an embodiment of this disclosure, an example load balancing design implemented in a computing device 110, which serves as a named data network router, is as follows: n storage devices 111 are connected to the computing device 110, each storage device 111 sends a federated request using its Media Access Control (MAC), and the computing device 110 calculates the storage device's key Node_Key = Hash(MAC) [0~2]. m The computing device 110 stores the storage device key Node_key in its hash ring table. The client 120 requests data using the data name. The computing device 110 calculates the name key Name_Key = Hash(Name)[0~2]. m The computing device 110 searches for the storage device 111 whose key range covers the name key Name_Key. The computing device 110 sends a request to the storage device 111 using the name key Name_Key. The storage device 111 uses the name key Name_Key to search for data and responds to the computing device 110 with the data. The computing device 110 then sends the data to the client 120.

[0036] According to an embodiment of this disclosure, taking a hash ring table with 6 storage devices 111 as an example, where N n This is the storage device key Node_Key of storage device n. If the number of replicas is 2, then the key range can be: storage device 1 stores data with key [N1~N3), storage device 2 stores data with key [N2~N4), storage device 3 stores data with key [N3~N5), storage device 4 stores data with key [N4~N6), storage device 5 stores data with key [N5~N1), and storage device 6 stores data with key [N6~N2).

[0037] When a new storage device joins a named data network by connecting to a named data network router, the named data network router calculates a hash (the storage device's MAC address) and broadcasts it to other named data network routers in its routing table. Each named data network router receives the broadcast storage device connection and then updates its routing table by inserting the storage device information.

[0038] When a storage device is detected leaving a named data network by disconnecting from a named data network router, the named data network router will broadcast the storage device's information to other named data network routers in its routing table. Each named data network router, upon receiving the broadcast storage device departure packet, then updates its routing table by removing the storage device information.

[0039] Figure 2 A flowchart of a data reading method 200 according to an embodiment of the present disclosure is shown. Method 200 can be performed by... Figure 1 The data reading method 200 is implemented by the computing device 110 shown, but may also be implemented by other suitable devices. It should be understood that the data reading method 200 may also include additional steps not shown and / or the steps shown may be omitted, and the scope of the embodiments of this disclosure is not limited in this respect.

[0040] In block 202, computing device 110 receives a data read request from client 120. According to embodiments of this disclosure, the data read request includes a data identifier associated with target data, and the data identifier may include the name of the target data or a hash value associated with the target data, such as a hash value associated with the name of the target data.

[0041] In block 204, computing device 110 determines the storage device for the target data based on the data identifier in the data read request received in block 202. According to embodiments of this disclosure, the storage device may be a cache of the computing device that received the data read request, a storage device associated with the computing device that received the data read request, or a cache or storage device associated with another computing device that is connected to the computing device that received the data read request via network 130 and belongs to the same named data network 100.

[0042] In block 206, computing device 110 retrieves target data from storage device based on data identifier. According to some embodiments of this disclosure, when computing device 110 determines in block 204 that the storage device for the target data is a cache of computing device 110, or a storage device associated with the computing device that received the data read request, it can directly retrieve the target data from the storage device. According to other embodiments of this disclosure, when computing device 110 determines in block 204 that the storage device for the target data is a storage device associated with another computing device connected to network 130 and belonging to the same named data network 100, computing device 110 can send a data read request to this other computing device, which is a remote computing device, and then retrieve the target data from this remote computing device. Then, computing device 110 can send the retrieved target data to the client 110 that sent the corresponding data read request.

[0043] Figure 3 A flowchart of a data storage method 300 according to an embodiment of the present disclosure is shown. Method 300 can be... Figure 1 The computing device 110 shown is used for implementation, but it can also be implemented by other suitable devices. It should be understood that the data storage method 300 may also include additional steps not shown and / or the steps shown may be omitted, and the scope of the embodiments of this disclosure is not limited in this respect.

[0044] In box 302, computing device 110 receives a data storage request from client 120. According to embodiments of this disclosure, the data storage request includes a data identifier associated with data to be stored, and the data identifier may include the name of the data to be stored or a hash value associated with the data to be stored, such as a hash value associated with the name of the target data.

[0045] In block 304, computing device 110 determines a target storage device for the data to be stored based on a data identifier. According to embodiments of this disclosure, the target storage device may be a storage device associated with the computing device that received the data storage request, or a storage device associated with another computing device belonging to the same named data network 100 that can be connected to the computing device that received the data storage request via network 130.

[0046] In block 306, computing device 110 stores data to be stored to a target storage device based on a data identifier. According to some embodiments of this disclosure, when the target storage device is a storage device associated with the computing device that received the data storage request, computing device 110 can directly store the data to be stored to the target storage device.

[0047] According to other embodiments of this disclosure, when the target storage device is an associated storage device of another computing device belonging to the same named data network 100, which can be connected to the computing device receiving the data storage request via network 130, the computing device 110 can send a data storage request to this other computing device, which is a remote computing device, and then receive a data read request for the data to be stored from the remote computing device, wherein the data read request includes a data identifier. Finally, the computing device 110 can send the data to be stored to the remote computing device in response to the data read request. In some embodiments, the computing device 110 can also receive a storage success indication from the remote computing device.

[0048] Figure 4 A flowchart of a data reading method 400 according to an embodiment of the present disclosure is shown. Method 400 can be performed by... Figure 1 The data reading method 400 is implemented by the computing device 110 shown, but may also be implemented by other suitable devices. It should be understood that the data reading method 400 may also include additional steps not shown and / or the steps shown may be omitted, and the scope of the embodiments of this disclosure is not limited in this respect.

[0049] In box 402, computing device 110 receives a data read request from client 120. The content involved in box 402 is the same as that involved in box 202, and will not be described again here.

[0050] In box 404, computing device 110 determines whether the storage device for the target data is a local cache based on the data identifier. If the storage device for the target data is a local cache, method 400 proceeds to box 406; otherwise, method 400 proceeds to box 408.

[0051] In box 406, computing device 110 retrieves target data from local cache.

[0052] In box 408, computing device 110 determines whether the storage device for the target data is a locally connected storage device based on the data identifier. If the storage device for the target data is a locally connected storage device, method 400 proceeds to box 410; otherwise, method 400 proceeds to box 412.

[0053] In box 410, computing device 110 retrieves target data from a locally connected storage device.

[0054] In block 412, computing device 110 determines whether the storage device for the target data is associated with a remote storage device based on the data identifier. If the storage device for the target data is associated with a remote storage device, method 400 proceeds to block 414; otherwise, method 400 may exit with an error or return an indication that the data cannot be read.

[0055] In box 414, computing device 110 sends a data read request to a remote computing device.

[0056] In box 416, computing device 110 receives target data from a remote computing device.

[0057] Figure 5 A flowchart of a data storage method 500 according to an embodiment of the present disclosure is shown. Method 500 can be... Figure 1 The computing device 110 shown is used for implementation, but it can also be implemented by other suitable devices. It should be understood that the data storage method 500 may also include additional steps not shown and / or the steps shown may be omitted, and the scope of the embodiments of this disclosure is not limited in this respect.

[0058] In box 502, computing device 110 receives a data storage request from client 120. The content involved in box 502 is the same as that involved in box 302, and will not be described again here.

[0059] In box 504, computing device 110 determines whether the target storage device is a locally connected storage device based on the data identifier. If the target storage device is not a locally connected storage device, method 500 proceeds to box 506; otherwise, method 500 proceeds to box 508.

[0060] In box 506, computing device 110 stores data to be stored to a locally connected storage device.

[0061] In box 508, computing device 110 determines whether the target storage device is associated with a remote storage device based on the data identifier. If the target storage device is associated with a remote storage device, method 500 proceeds to box 510; otherwise, method 400 may exit with an error or return an indication that the data cannot be stored.

[0062] In box 510, computing device 110 sends a data storage request to a remote computing device.

[0063] In box 512, computing device 110 receives a data read request for data to be stored from a remote computing device, wherein the data read request includes a data identifier.

[0064] In box 514, computing device 110 responds to a data read request by sending data to be stored to a remote computing device.

[0065] In box 516, computing device 110 receives a storage success indication from a remote computing device.

[0066] The following specific example illustrates the data reading and data storage process in a named data network according to embodiments of this disclosure.

[0067] In a defined named data network, the target Internet Protocol address of the named data network router is stored in a routing table, which contains <key, value>. The key is a hash (storage device MAC), and the value is the route to the storage device. This routing table is independent of the named data network router's FIB. The key is stored in a search tree, which makes it easy to find the storage device storing data according to a consistent hash. Optionally, clients can send packets of interest, either the name or the hash (name), to the named data network router. The named data network router is capable of calculating the hash (name) on itself.

[0068] Assume the network has router 1, router 2 and router 3. Router 2 is connected to storage device 1 and storage device 2, and router 3 is connected to storage device 3 and storage device 4. Client 1 is directly connected to router 1.

[0069] When processing a data read request from client 1, client 1 sends an interest packet with a hash (name) and metadata (type_read_request); Named Data Network Router 1 searches its cache for the hash (name); if found in the cache, it directly sends a response packet to client 1; if not found in its cache, it searches its FIB to locate the routed interest packet; if the target router is Named Data Network Router 3, Named Data Network Router 1 encapsulates the interest packet and sends it to Named Data Network Router 3 via IPSec VPN; Named Data Network Router 1 places the hash (name) in its PIT; Named Data Network Router 3 uncapsulates the interest packet and searches its cache; if found in the cache, Named Data Network Router 3 directly sends a response packet to Named Data Network Router 1; if not found in its cache, it searches its FIB to locate the routed interest packet; if the target is storage device 4, Named Data Network Router 3 sends the interest packet to storage device 4 and places the hash (name) in its PIT.

[0070] Correspondingly, the read response from storage device 4 is as follows: Storage device 4 sends a data packet with hash (name), metadata read response (Type_Read_Respond), and data; Named data network router 3 puts the data packet into its cache and searches for hash (name) in its PIT; If the target router is found to be named data network router 1, named data network router 3 encapsulates the data packet and sends it to named data network router 1 via IPSec VPN; Named data network router 1 decapsulates the data packet of interest, puts the data packet into its cache, and searches for hash (name) in its PIT; If the target is found to be client 1, named data network router 1 sends the data packet to client 1; When processing a data write request from client 1, client 1 sends a data packet of interest with hash (name) and metadata (Type_Write_Request) indicating a write operation; Named data network router 1 searches for hash (name) in its cache; If found in the cache, named data network router 1 directly responds with a data packet to client 1; If not found in the cache... If not found, search its FIB to locate the route interest packet; if the target router is Named Data Network Router 3, Named Data Network Router 1 encapsulates the interest packet and sends it to Named Data Network Router 3 via IPSec VPN; Named Data Network Router 3 decapsulates the interest packet and searches its cache; if found in the cache, Named Data Network Router 3 directly responds to the packet to Named Data Network Router 1; if not found in Named Data Network Router 3's cache, search its FIB to locate the route interest packet; if the target is storage device 4, Named Data Network Router 3 sends the interest packet to storage device 4.

[0071] At this point, the corresponding data read request process from storage device 4 is as follows: When storage device 4 receives an interest packet with metadata (Type_Write_Request), storage device 4 will send the interest packet using the hash (name) and metadata (type_read_request); Named data network router 3 searches for the hash (name) in its cache; if found in the cache, named data network router 3 directly responds to the data packet to storage device 4; if not found in the cache of named data network router 3, it searches in its FIB to find the location of the route interest packet; if the target router is found to be named data network router 1, named data network router 3 encapsulates the interest packet and transmits it via IPSec. The VPN sends the packet of interest to Named Data Network Router 1; Named Data Network Router 3 puts the hash (name) into its PIT; Named Data Network Router 1 unpacks the packet of interest and searches its cache; If found in the cache, Named Data Network Router 1 directly responds to the packet to Named Data Network Router 3; If not found in Named Data Network Router 1's cache, it searches its FIB to find the location of the packet of interest; If the target is found to be Client 1, Named Data Network Router 1 sends the packet of interest to Client 1 and puts the hash (name) into its PIT.

[0072] At this point, a response to the read is sent from client 1: client 1 sends a data packet containing the hash (name), metadata read response (Type_Read_respond), and data; named data network router 1 puts the data packet into its cache and searches for the hash (name) in its PIT; if the target router is found to be named data network router 3, named data network router 1 encapsulates the data packet and sends it to named data network router 3 via IPSec VPN; named data network router 3 decapsulates the data packet of interest, puts the data packet into its cache, and searches for the hash (name) in its PIT; if the target is found to be storage device 4, named data network router 3 sends the data packet to storage device 4.

[0073] Finally, if necessary, a write success response can be sent from storage device 4 to client 1: storage device 4 sends an interest packet using a hash (name) and metadata (type_write_success) indicating that the write operation was successful; named data network router 3 searches for it in its FIB to find the location of the route interest packet; if the target router is found to be named data network router 1, named data network router 3 encapsulates the interest packet and sends it to named data network router 1 via IPSec VPN; named data network router 1 decapsulates the interest packet and searches for it in its hash ring routing table to find the location of the route interest packet; if the target is found to be client 1, named data network router 1 sends the interest packet to client 1.

[0074] The above is for reference only. Figures 1 to 5 This document describes a named data network 100, a data reading method 200, a data storage method 300, a data reading method 400, and a data storage method 500, all of which can be implemented according to embodiments of this disclosure. It should be understood that the above description is intended to better illustrate the content described in the embodiments of this disclosure and is not intended to limit the scope in any way.

[0075] It should be understood that the number and size of various elements used in the embodiments and accompanying drawings of this disclosure are merely examples and are not intended to limit the scope of protection of the embodiments of this disclosure. The aforementioned numbers and sizes can be arbitrarily set as needed without affecting the normal implementation of the embodiments of this disclosure.

[0076] Based on the above references Figures 1 to 5 According to the description of the technical solutions in the embodiments of this disclosure, the proposed framework not only enriches intra-network computing and enables more efficient named data network functionality, but also reduces the computing resource usage of edge devices, edge servers, and the cloud. Furthermore, to support named data network gateways on switches, named data network latency can be reduced first, thereby further improving the applicability of the named data network protocol. Through the enhanced security framework operating on programmable switches, a secure distributed content delivery system can be easily established in the named data network.

[0077] Furthermore, the innovative framework for a named data network gateway running on a programmable switch offers a refined alternative to current software-based solutions. By leveraging the P4 language, a high-efficiency named data network gateway successfully operates on a programmable switch. Simultaneously, by providing Internet Protocol (IP) security features, named data networks can be overlaid on IP networks.

[0078] Furthermore, by utilizing a consistent hashing method, a named data network in the form of a load-balanced system is constructed to be flexible and redundant. Load balancing functions and replication support are successfully achieved by innovatively placing the hash results of storage device media access control and the names of named data network packets in a consistent hashing ring.

[0079] Finally, by redesigning the read / write operation process on the named data network overlay network, the distributed named data network can operate fully in the industry without backbone network support. In this way, edge IoT devices can easily utilize a robust named data network.

[0080] Figure 6 The figure illustrates a schematic block diagram of an example device 600 that can be used to implement embodiments of the present disclosure. According to embodiments of the present disclosure, Figure 1 The computing device 110 can be implemented by device 600. As shown, device 600 includes a central processing unit (CPU) 601, which can perform various appropriate actions and processes according to computer program instructions stored in read-only memory (ROM) 602 or loaded from storage unit 608 into random access memory (RAM) 603. The RAM 603 can also store various programs and data required for the operation of device 600. The CPU 601, ROM 602, and RAM 603 are interconnected via bus 604. Input / output (I / O) interface 605 is also connected to bus 604.

[0081] Multiple components in device 600 are connected to I / O interface 605, including: input unit 606, such as keyboard, mouse, etc.; output unit 607, such as various types of monitors, speakers, etc.; storage unit 608, such as disk, optical disk, etc.; and communication unit 609, such as network card, modem, wireless transceiver, etc. Communication unit 609 allows device 600 to exchange information / data with other devices through computer networks such as the Internet and / or various telecommunications networks.

[0082] The various processes and procedures of methods 200, 300, 400, and 500 described above may be executed by processing unit 601. For example, in some embodiments, methods 200, 300, 400, and 500 may be implemented as computer software programs tangibly contained in a machine-readable medium, such as storage unit 608. In some embodiments, part or all of the computer program may be loaded and / or installed on device 600 via ROM 602 and / or communication unit 609. When the computer program is loaded into RAM 603 and executed by CPU 601, one or more actions of methods 200, 300, 400, and 500 described above may be performed.

[0083] Embodiments of this disclosure may relate to methods, apparatus, systems, and / or computer program products. A computer program product may include a computer-readable storage medium having computer-readable program instructions loaded thereon for performing various aspects of embodiments of this disclosure.

[0084] Computer-readable storage media can be tangible devices capable of holding and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electrical storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination thereof. More specific examples of computer-readable storage media, as a non-exhaustive list, include: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory sticks, floppy disks, mechanical encoding devices, such as punch cards or recessed protrusions storing instructions thereon, and any suitable combination thereof. The computer-readable storage media used herein are not to be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, such as light pulses propagating through waveguides or other transmission media via fiber optic cables, or electrical signals transmitted via wires.

[0085] The computer-readable program instructions described herein can be downloaded from computer-readable storage media to various computing / processing devices, or downloaded via a network, such as the Internet, local area network, wide area network, and / or wireless network, to an external computer or external storage device. The network may include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to the computer-readable storage media in the respective computing / processing device.

[0086] Computer program instructions used to perform the operations of embodiments of this disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, etc., and conventional procedural programming languages ​​such as the "C" language or similar programming languages. The computer-readable program instructions may execute entirely on a user's computer, partially on a user's computer, as a standalone software package, partially on a user's computer and partially on a remote computer, or entirely on a remote computer or server. In cases involving remote computers, the remote computer may be connected to the user's computer via any type of network—including a local area network (LAN) or a wide area network (WAN)—or may be connected to an external computer via an Internet connection, for example, using an Internet service provider. In some embodiments, electronic circuitry, such as programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), is personalized by utilizing state information from the computer-readable program instructions. This electronic circuitry can execute the computer-readable program instructions to implement various aspects of embodiments of this disclosure.

[0087] Various aspects of embodiments of this disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus / systems, and computer program products according to embodiments of this disclosure. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0088] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine such that, when executed by the processing unit of the computer or other programmable data processing apparatus, they create means for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium that causes a computer, programmable data processing apparatus, and / or other device to operate in a particular manner. Thus, the computer-readable medium storing the instructions comprises an article of manufacture that includes instructions for implementing aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.

[0089] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0090] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of an instruction containing one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions marked in the blocks may occur in a different order than those shown in the drawings. For example, two consecutive blocks may actually be executed substantially in parallel, and they may sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented using a dedicated hardware-based system that performs the specified function or action, or using a combination of dedicated hardware and computer instructions.

[0091] The various embodiments of this disclosure have been described above. These descriptions are exemplary and not exhaustive, and are not limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is chosen to best explain the principles, practical applications, or technical improvements to the technology in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A data reading method, comprising: A data read request is received in at least one of a plurality of routers in a named data network, the data read request including a data identifier associated with target data, the data read request being implemented as at least a portion of an interest packet of the named data network; The storage device for the target data is determined based on the data identifier; as well as The target data is obtained from the storage device based on the data identifier; The first and second routers among the plurality of routers include corresponding first programmable switches and second programmable switches, the first programmable switches and the second programmable switches being configured to support the establishment of secure network connections between the first router and the second router, which operate as corresponding first and second gateways of the named data network; The first gateway and the second gateway include the first naming data network gateway and the second naming data network gateway of the naming data network; Each of the first and second named data network gateways implements encryption and decryption functions via its corresponding counterpart in the first and second programmable switches to support the establishment of additional secure network connections with corresponding edge IoT devices in the named data network, thereby allowing the edge IoT devices to securely access the named data network through their corresponding counterparts in the first and second named data network gateways.

2. The method of claim 1, wherein the data identifier includes a hash value associated with the target data.

3. The method according to claim 1, wherein obtaining the target data comprises: If it is determined that the storage device is associated with a remote computing device, the data read request is sent to the remote computing device; as well as Receive the target data from the remote computing device.

4. A data storage method, comprising: Receive a data storage request, the data storage request including a data identifier associated with the data to be stored; The target storage device for the data to be stored is determined based on the data identifier; as well as The data to be stored is stored in the target storage device based on the data identifier; The storage of the data to be stored includes: If it is determined that the target storage device is associated with a remote computing device, the data storage request is sent to the remote computing device; Receive a data read request for the data to be stored from the remote computing device, the data read request including the data identifier; and In response to the data read request, the data to be stored is sent to the remote computing device.

5. The method of claim 4, wherein the data identifier includes a hash value associated with the data to be stored.

6. The method according to claim 4, further comprising: Receive a storage success indication from the remote computing device.

7. An electronic device, comprising: At least one processing unit; as well as At least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit, the instructions, when executed by the at least one processing unit, causing the device to perform an action, the action including: A data read request is received in at least one of a plurality of routers in a named data network, the data read request including a data identifier associated with target data, the data read request being implemented as at least a portion of an interest packet of the named data network; The storage device for the target data is determined based on the data identifier; and The target data is obtained from the storage device based on the data identifier; The first and second routers among the plurality of routers include corresponding first programmable switches and second programmable switches, the first programmable switches and the second programmable switches being configured to support the establishment of secure network connections between the first router and the second router, which operate as corresponding first and second gateways of the named data network; The first gateway and the second gateway include the first naming data network gateway and the second naming data network gateway of the naming data network; Each of the first and second named data network gateways implements encryption and decryption functions via its corresponding counterpart in the first and second programmable switches to support the establishment of additional secure network connections with corresponding edge IoT devices in the named data network, thereby allowing the edge IoT devices to securely access the named data network through their corresponding counterparts in the first and second named data network gateways.

8. The electronic device of claim 7, wherein the data identifier includes a hash value associated with the target data.

9. The electronic device of claim 7, wherein acquiring the target data comprises: If it is determined that the storage device is associated with a remote computing device, the data read request is sent to the remote computing device; as well as Receive the target data from the remote computing device.

10. An electronic device, comprising: At least one processing unit; as well as At least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit, the instructions, when executed by the at least one processing unit, causing the device to perform an action, the action including: Receive a data storage request, the data storage request including a data identifier associated with the data to be stored; The target storage device for the data to be stored is determined based on the data identifier; and The data to be stored is stored in the target storage device based on the data identifier; The storage of the data to be stored includes: If it is determined that the target storage device is associated with a remote computing device, the data storage request is sent to the remote computing device; Receive a data read request for the data to be stored from the remote computing device, the data read request including the data identifier; and In response to the data read request, the data to be stored is sent to the remote computing device.

11. The electronic device of claim 10, wherein the data identifier includes a hash value associated with the data to be stored.

12. The electronic device according to claim 10, wherein the action further includes: Receive a storage success indication from the remote computing device.

13. A computer program product tangibly stored on a non-transient computer-readable medium and comprising machine-executable instructions that, when executed, cause a machine to perform the steps of the method according to any one of claims 1 to 3.

14. A computer program product tangibly stored on a non-transient computer-readable medium and comprising machine-executable instructions that, when executed, cause a machine to perform the steps of the method according to any one of claims 4 to 6.

Citation Information

Patent Citations

  • Storage architecture for storage class memories

    US9880750B1