IP Library Patent Application 18371856
Patent Application
App. No. 18/371,856

ADVANCED STORAGE OPERATIONS FOR WAN OPTIMIZATION

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
18/371,856
Abstract

Some embodiments of the invention provide a WAN optimization method for optimizing traffic flows through a WAN that connects multiple sites each having at least one router. The method is performed at a first router at a first site. From a second router at a second site, the method receives a file, that includes a set of segment identifiers corresponding to a set of segments stored by the first router, in an optimized first data stream originating from a source device at the second site and destined to a destination device at the first site. For each segment identifier in the set, the method attempts to retrieve a corresponding segment from a kernel memory of the first router. When the corresponding segment is not stored in the kernel memory, the method performs an operation to DMA the segment into the kernel memory from a disk storage of the first router.

Claims (42)

1 . A WAN (wide area network) optimization method for optimizing traffic flows through a WAN that connects a plurality of sites, each of which has at least one router, the method comprising:

at a first router located at a first site:

from a second router located at a second site, receiving a file in an optimized first data stream originating from a source device at the second site and destined to a destination device at the first site, the file comprising a set of segment identifiers corresponding to a set of segments stored by the first router;

for each particular segment identifier in the set of segment identifiers of the file,

attempting to retrieve a particular segment corresponding to the particular segment identifier from a kernel memory of the first router; and

when the particular segment is not stored in the kernel memory of the first router, performing an operation to DMA (direct memory access) the particular segment into the kernel memory from a disk storage of the first router.

2 . The method of claim 1 , wherein when the segment is in the kernel memory, the method further comprises:

retrieving the segment from the kernel memory; and

sending the retrieved segment to the destination device.

3 . The method of claim 1 , wherein attempting to retrieve the particular segment from the kernel memory comprises using the particular segment identifier to perform a lookup in a cache of the first router to identify an entry in the cache for the particular segment, wherein the entry comprises (i) the segment identifier, (ii) the block address of the particular segment, and (iii) an indicator value that indicates whether the particular segment is stored in the kernel memory.

4 . The method of claim 3 , wherein performing the operation to DMA the segment into the kernel memory from the disk storage comprises using the block address to locate the segment in the disk storage in order to perform the operation to DMA the segment into the kernel memory from the disk storage.

5 . The method of claim 1 further comprising:

for each particular segment identifier in the set of segment identifiers,

replacing the particular segment identifier in the file with the retrieved particular segment to generate a reconstructed file; and

sending the reconstructed file to the destination device at the first site.

6 . The method of claim 1 , wherein performing the operation to DMA the particular segment into the kernel memory from the disk storage of the first router comprises directing an NVMe (non-volatile memory express) device operating on the first router to perform the operation to DMA the particular segment into the kernel memory from the disk storage.

7 . The method of claim 1 , wherein the file is a first file, wherein the optimized first data stream is generated by the second router after the second router receives a second file in an unoptimized second data stream from the source device.

8 . The method of claim 7 , wherein the second file comprises the set of segments corresponding to the set of segment identifiers that comprise the first file, wherein the second router generates the optimized first data stream by performing a set of optimization operations on the second file.

9 . The method of claim 8 , wherein the set of optimization operations comprises at least (i) a TRE (traffic redundancy elimination) first operation to replace the set of segments with the set of segment identifiers corresponding to the set of segments, and (ii) a compression second operation to compress the set of segment identifiers in order to generate the first file.

10 . The method of claim 1 , wherein the first router comprises a software router executing on a host computer and the disk storage is a disk storage of the host computer.

11 . The method of claim 10 , wherein at least one source or one destination of WAN traffic flows execute on the host computer with the software router.

12 . The method of claim 1 , wherein the first router comprises a standalone appliance and the disk storage is a disk storage of the standalone appliance.

13 . A non-transitory machine readable medium storing a WAN (wide area network) optimization program for execution by a set of processing units, the WAN optimization program for optimizing traffic flows through a WAN that connects a plurality of sites, each of which has at least one router, the WAN optimization program comprising sets of instructions for:

at a first router located at a first site:

from a second router located at a second site, receiving a file in an optimized first data stream originating from a source device at the second site and destined to a destination device at the first site, the file comprising a set of segment identifiers corresponding to a set of segments stored by the first router;

for each particular segment identifier in the set of segment identifiers of the file,

attempting to retrieve a particular segment corresponding to the particular segment identifier from a kernel memory of the first router; and

when the particular segment is not stored in the kernel memory of the first router, performing an operation to DMA (direct memory access) the particular segment into the kernel memory from a disk storage of the first router.

14 . The non-transitory machine readable medium of claim 13 , wherein when the segment is in the kernel memory, the WAN optimization program further comprises sets of instructions for:

retrieving the segment from the kernel memory; and

sending the retrieved segment to the destination device.

15 . The non-transitory machine readable medium of claim 13 , wherein:

the set of instructions for attempting to retrieve the particular segment from the kernel memory comprises a set of instructions for using the particular segment identifier to perform a lookup in a cache of the first router to identify an entry in the cache for the particular segment, the entry comprising (i) the segment identifier, (ii) the block address of the particular segment, and (iii) an indicator value that indicates whether the particular segment is stored in the kernel memory; and

the set of instructions for performing the operation to DMA the segment into the kernel memory from the disk storage comprises a set of instructions for using the block address to locate the segment in the disk storage in order to perform the operation to DMA the segment into the kernel memory from the disk storage.

16 . The non-transitory machine readable medium of claim 13 , the WAN optimization program further comprising sets of instructions for:

for each particular segment identifier in the set of segment identifiers,

replacing the particular segment identifier in the file with the retrieved particular segment to generate a reconstructed file; and

sending the reconstructed file to the destination device at the first site.

17 . The non-transitory machine readable medium of claim 13 , wherein the set of instructions for performing the operation to DMA the particular segment into the kernel memory from the disk storage of the first router comprises a set of instructions for directing an NVMe (non-volatile memory express) device operating on the first router to perform the operation to DMA the particular segment into the kernel memory from the disk storage.

18 . The non-transitory machine readable medium of claim 13 , wherein the file is a first file, wherein the optimized first data stream is generated by the second router after the second router receives a second file in an unoptimized second data stream from the source device.

19 . The non-transitory machine readable medium of claim 18 , wherein the second file comprises the set of segments corresponding to the set of segment identifiers that comprise the first file, wherein the second router generates the optimized first data stream by performing a set of optimization operations on the second file.

20 . The non-transitory machine readable medium of claim 19 , wherein the set of optimization operations comprises at least (i) a TRE (traffic redundancy elimination) first operation to replace the set of segments with the set of segment identifiers corresponding to the set of segments, and (ii) a compression second operation to compress the set of segment identifiers in order to generate the first file.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2025
From: CIDON, ISRAEL
To: VMWARE, INC.
Reel/Frame 069937/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2024
From: BERGMAN, ARAN; GAL, LIOR; YANAI, AVISHAY
To: VMWARE, INC.
Reel/Frame 069420/0107 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2024
From: GOLIKOV, IGOR; MARKUZE, ALEX; ZOHAR, EYAL
To: VMWARE, INC.
Reel/Frame 068970/0857 →
CHANGE OF NAME Recorded Feb 27, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066692/0103 →