Transmission Control Protocol/Internet Protocol (TCP/IP) networks, such as the public Internet, are the basis for the modern information age. The TCP/IP protocol suite enables data communications between endpoint host computers by specifying how data should be packetized, addressed, transmitted, routed, and received. The TCP/IP protocol suite consists of five layers: the physical layer (Layer 1, or L1), the data link layer (L2), the network layer (L3), the transport layer (L4), and the application layer. Of particular relevance to the present disclosure are the Layer 3 (L3) protocols, (e.g., Internet Protocol (IP), such as IPv4 and IPv6), which are used by network nodes/hosts such as routers to efficiently direct packets to their destinations (e.g., endpoints/host computers), as well as the Layer 2 (L2) link-layer protocols (e.g., Ethernet 802.3, Media Access Control (MAC) addressing, Address Resolution Protocol (ARP), Neighbor Discovery Protocol (NDP), etc.), which are used to efficiently transmit packets across the links connecting network nodes/hosts.
Many organizations operate private TCP/IP networks to support their business operations and to provide computer services and resources to other networked organizations and consumers. These private networks are interconnected by the Internet, which enables different organizations to access each other's computer services and resources. These computers are addressed by, or identified by, IP addresses that are elements of the Internet's public IP address space/set. Private networks are often operated/administrated autonomously from the Internet and use a private IP address space/set that is distinct from the Internet's public IP address space/set, i.e., the intersection is the empty set. Thus, if an organization operating a private network wants its computers/hosts to access or be accessed by Internet hosts, then the organization needs to operate a network address translation (NAT) gateway located at the boundary between the private network and the Internet. The NAT gateway functions as an interface between the Internet IP address space and the private network's IP address space, i.e., the NAT gateway translates between Internet IP addresses and the private network's IP addresses. Thus, if an organization wants to make a host computer connected to its private network accessible/addressable from the Internet, for example a company web site, then the host computer must be associated with both a private IP address and a public IP address. The NAT gateway is configured to translate between the host computer's private IP address and its public IP address. These associations may be static and permanent or dynamic and ephemeral.
The enterprise may also configure NAT-G/W 120 to map a public IP address (e.g., 174.129.20.63) to a private IP address (e.g., 10.0.2.157) assigned to a (physical, or non-virtual) computer 160. Thus, computer 160's public IP address in this example would be 174.129.20.63. The routing policy and associated configuration for the private network 104 may determine the path 108 through the private network 104 for packets sourced by or destined for computer 160 that pass through the NAT-G/W 120 (i.e., packets destined for or sourced by Internet hosts). Path 108 may be, for example, a single physical link/cable connecting a network interface of NAT-G/W 120 to a network interface of computer 160 or, for example, multiple physical links connecting one or more routers and/or switches (nodes) that are on the network path. With this configuration, for example, a computer HOST-0110 connected to the public network 102 may communicate bi-directionally with computer 160 connected to the private network 104 via transmission of L3/IP packets through the Internet with 174.129.20.63 as the source or destination IP address.
The enterprise may deploy intermediary devices that are inserted inline into physical links (e.g., copper and optical cables) connecting network interfaces of network nodes (e.g., routers, switches, host computers, etc.) and that may inspect and process in-transit packets in accordance with the packets' contents and/or with the application logic of the intermediary device. As such, these devices may be referred to as in-transit packet-processing devices. These intermediary packet-processing devices may enforce data communications policies (e.g., network security policies, network access control policies, network application usage policies, network address translation policies, etc.) as defined by the owner/operator/administrator (e.g., the enterprise) of the private network. In order to enforce the policies on particular communications, the network administrator may coordinate the locations of the intermediary packet-processing devices (e.g., determine into which links the intermediary packet-processing devices are to be inserted), the network configurations, and/or the routing policies such that the particular communications' packets always pass through (in one or both directions) the intermediary packet-processing devices. Because these policies may be applied to communications between internal hosts (connected to the private network, e.g. computer 160) and public network (e.g., Internet) hosts, the devices may be located at or near the boundaries between the private network and the public network, for example, the devices may be inserted into public network access links. Examples of these devices include network firewalls, network access controllers, web proxies, TLS proxies, packet security gateways, threat intelligence gateways, IPsec gateways, and the like. Similarly, the devices may be located between the boundaries of any different networks (for example, not just limited to between a private network and a public network) and/or between the boundaries of subnets and/or segments within a network, e.g., at concentrations points and load distribution points.
Referring to
In some scenarios, the network devices' network interfaces may have L3/network-layer (e.g., IPv4) and L2/link-layer (e.g., MAC) addresses associated with them. In such examples, the interfaces and devices are described as being non-transparent. Non-transparent devices may have interfaces that may be addressed directly and may participate in determining (L3) routing policy and configurations via routing protocols (e.g., OSPF) and (L2) switching & forwarding and link-layer discovery protocols (e.g., ARP, NDP). With regard to enforcing communications policies, for example, to enforce web usage and web security policies, the enterprise may configure its networks (e.g., private network 104), devices, and applications such that certain (or all) outbound web (i.e., HTTP/HTTPS) traffic must be routed through a non-transparent web proxy, and/or that the network firewall only allows outbound web traffic from the non-transparent web proxy. Such a configuration may involve the web proxy's network interfaces being assigned/identified with (L3) IP addresses. More generally, when network administrators define network communications policies that require that particular communications route through packet processing devices with IP-addressable network interfaces, the administrators must ensure that the network and routing policy/routing tables are properly configured to satisfy the requirement. Changes to the network and/or the routing policy may potentially cause changes in the routing such that the requirement is not satisfied; thus, when making such changes, administrators may need to take actions to ensure such requirements are still satisfied.
In other scenarios, the network devices may not have L3/network-layer (e.g., IPv4, IPv6) and L2/link-layer (e.g., MAC) addresses associated with them. This configuration may be used in, e.g., inline network devices that process in-transit packets, for example, packet-filtering devices. In such examples, the interfaces and devices are described as being (L3- and L2-) transparent, because the devices cannot be “seen” or observed by other network elements and protocols operating at L3 or L2. Skilled artisans may refer to such a transparent inline device as a “bump in the wire” (BITW), one reason being that frames/packets transiting through a BITW device are not modified at L2 or L3 (e.g., there are no changes made to MAC addresses or IP addresses or other header fields), and often are not modified at any layer.
There are multiple potential advantages and potential efficiencies resulting from this transparency configuration of a BITW device. For example, performance (as measured by the device's packet throughput) may be improved for multiple reasons. One reason is that egressing frames/packets may not need to access routing and forwarding tables, for example via a call to the operating system (OS) kernel, to determine, for example, the destination MAC address for the L2 frame. Another reason is that non-transparent packet-processing devices may use the relatively slow TCP/IP networking stack logic provided by the devices' OS (e.g., Linux) kernel to process in-transit packets and participate in L3 routing and L2 switching/forwarding protocols; whereas, transparent devices may bypass the OS kernel's TCP/IP networking stack and use much faster packet processing logic that directly accesses the network interface controllers (NICs), for example, the Data Plane Development Kit (DPDK). Fast packet processing logic modules such as DPDK may not natively support functions that alter L3/IP packet headers (e.g., proxy functions that change packets' source or destination IP address values) or L2/Ethernet frames (e.g., link forwarding functions that change source or destination MAC address values). If such functions are needed for a particular application, then the application may access them via, for example, calls to the OS' TCP/IP networking stack; however, this approach may affect the application's packet processing performance.
Skilled artisans often refer to an OS bypass architecture/implementation as a “fast path” (vs. the “slow path” through the OS kernel) and may assume that the associated BITW device adds minimal latency and does not drop packets (because of, for example, buffer overflows resulting from large latencies). As with non-transparent devices, when network administrators define network communications policies that require that particular communications transit through such transparent devices, then the administrators must ensure that the network and routing policy are properly configured to satisfy the requirement. But, because the transparent devices' network interfaces do not have IP addresses, administrators cannot use routing policy to direct particular packets to the interfaces, but instead must use indirect methods to ensure that requirements are met. Accordingly, and similar to the non-transparent device case, changes to the network and/or the routing policy may potentially cause changes in the routing such that the requirement is not satisfied; thus, when making such changes, administrators may need to take actions to ensure such requirements are still satisfied, which may be more difficult to effect than the non-transparent case (because, for example, only indirect vs. direct routing methods can be used).
The efficiencies of cloud computing platforms and services (e.g., Amazon Web Services, Microsoft Azure, Google Cloud, etc.) have caused many organizations to migrate, or virtualize, portions of their physical private networks into virtual private clouds. When provisioning inline network devices, for example inline packet-filtering devices, in a virtual private cloud environment using a service such as Amazon Virtual Private Cloud (VPC), the devices' network interfaces must be assigned (private) IP addresses, and the devices' network interfaces can no longer be transparent. Whereas a connection to a physical device's network interface port may be made with a physical connection, for example, an Ethernet cable, no such physical connection is possible in a virtual environment. When mapping such physical connections to a virtual cloud environment, the connections must be emulated/virtualized via L3 routing and the associated routing policy.
The routing protocol and associated routing policy may also determine the network path between virtual NAT-G/W 220 and virtual computer 260, which is represented in
The following several paragraphs present a simplified summary in order to provide a basic understanding of some aspects of the disclosure. They are intended neither to identify key or critical elements of the disclosure nor to delineate the scope of the disclosure. The following several paragraphs merely present some concepts of the disclosure in a simplified form as a prelude to the description below.
In view of the Background discussion above, there is a need for methods, systems, and logic that support virtualization of transparent physical BITW network devices and/or provisioning of the devices into dynamic virtual private cloud environments. There is further a need for this to be done in a way that may (a) preserve fast path packet processing and associated packet-throughput performance, (b) enforce policies for ensuring that packets comprising particular/specified communications traverse virtual paths that pass through the virtualized BITW devices, and/or (c) be invariant to differences in routing policies across different virtual private cloud platforms.
Aspects described herein generally relate to computer hardware and software for TCP/IP networking, and related methods thereof. For example, one or more non-limiting aspects of the disclosure generally relate to networking devices that mediate packetized data transmission in a computer network.
For example, methods, devices, systems, and/or computer-readable media disclosed herein describe examples of logic and configurations that may support (1a) efficient virtualization of inline transparent physical in-transit packet-processing network devices and/or (1b) efficient deployment into a virtual private cloud environment; and/or that may (2a) preserve the devices' packet-processing performance and/or (2b) enforce enterprise communications policies that some or all packets comprising communications between one or more Internet hosts and one or more virtual hosts connected to the virtual private cloud traverse a virtual path that includes a virtual link between a virtual bump-in-the-wire (BITW) device's network interfaces. These properties and characteristics may be invariant to differences or changes in routing policies that may occur across different virtual private cloud platforms. As a matter of convenience, the term “Virtual BITW device” may be used herein to label virtualized versions of physical BITW devices, e.g., inline transparent in-transit fast-path packet-processing physical network devices that have been virtualized and deployed into a cloud.
When virtualized and provisioned into the cloud, these virtual BITW devices' network interfaces may be assigned (L3) private IP addresses and (L2) MAC addresses that are associated with the devices' efficient Network Address Mapper (NAM) logic and the cloud's routing tables to effect desired L3 proxy functions and L3/L2 routing and forwarding functions. The virtualized devices may process in-transit packets using the same or similar fast path packet processing (FPPP) logic (e.g., Data Plane Development Kit (DPDK)) used by the physical versions of the BITW devices while bypassing the slow path operating system's TCP/IP networking stack logic.
A virtual host computer connected to a virtual private cloud may be identified by its (private) IP address and may be associated with a policy that certain, or all, in-transit packets comprising communications between the virtual host computer and Internet hosts must pass through a virtual BITW device deployed into a virtual path in the cloud between the virtual host computer and the cloud's Internet interface, for example, a network address translation (NAT) gateway. The IP addresses and associated subnets of the virtual BITW device, virtual host computer, and NAT gateway may be configured such that communications between the Internet and the virtual host computer traverse the virtual path and pass through the virtual BITW device. An Internet-facing network interface of the virtual BITW device may be identified as an IP address proxy for the virtual host computer. A NAT gateway that interfaces the Internet with the private cloud and that natively translates between the virtual host computer's Internet address and its private IP address may be re-configured to translate the virtual host computer's Internet address to the proxy address. Packets sourced by an Internet host and destined for the virtual host computer may be routed (by the cloud) from the NAT gateway to the proxy network interface of the virtual BITW device. After receiving a packet at the proxy interface, the device's NAM logic may modify the packet's L3 destination address and L2 MAC addresses so that, after the device processes the packet through the fast-path logic and forwards the packet out the device's virtual host-facing network interface, the packet is routed to the virtual host computer. Similarly, packets sourced by the virtual host computer and destined for an Internet host may be routed to and received by the device's virtual host-facing network interface, modified by the NAM logic, processed through the device's fast path logic, forwarded out the proxy interface, and routed to the NAT gateway, which may perform an address translation and forward the packet towards the Internet host.
Further aspects disclosed herein are directed to configuring a virtual BITW device to process packets through a fast path of the virtual BITW device.
Further aspects disclosed herein are directed to configuring a proxy, an address, a subnet, and/or a routing table of a virtual BITW device to ensure that packets traverse a virtual path through a cloud, wherein the virtual path comprises a fast path through the virtual BITW device.
Further aspects disclosed herein are directed to provisioning a virtual BITW device into a virtual path; assigning IP addresses to network interfaces corresponding to subnets of virtual path terminals; configuring NAM logic (1) with IP and/or MAC addresses of terminals and/or interfaces, and/or (2) with proxy information; configuring a NAT gateway to translate at least one public IP address to a private IP address associated with the virtual BITW device; and providing at least one cloud routing table configured to enforce outbound virtual path routing through the virtual BITW device and the NAT gateway.
There are many possible variants and extensions to the above aspects, including for example the case of multiple virtual host computers, some of which are detailed below by way of example.
Features of the disclosure will become more apparent upon a review of this disclosure in its entirety, including the drawings provided herewith.
Some features herein are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings, in which like reference numerals refer to similar elements, and wherein:
In the following description of various illustrative embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown, by way of illustration, various embodiments in which aspects of the disclosure may be practiced. It is to be understood that other embodiments may be utilized, and structural and functional modifications may be made, without departing from the scope of the disclosure. In addition, reference is made to particular applications, protocols, and embodiments in which aspects of the disclosure may be practiced. It is to be understood that other applications, protocols, and embodiments may be utilized, and structural and functional modifications may be made, without departing from the scope of the disclosure. It is to be understood that although the descriptions, figures, and examples reference the IPv4 protocol, the IPv6 protocol and other protocols may be similarly referenced.
Various connections between elements are discussed in the following description. These connections are general and, unless specified otherwise, may be direct or indirect, wired or wireless, physical or logical (e.g., virtual or software-defined), in any combination. In this respect, the specification is not intended to be limiting.
As shown in
One approach to supporting IP address and MAC address assignment to network interfaces of (transparent physical) BITW network devices—so that the devices may be virtualized and provisioned into IaaS providers' virtual private clouds and may participate in L3 routing and L2 forwarding—is to revert to using the device OS's (slow path) TCP/IP network stack logic to process in-transit packets and to configure/determine routing and forwarding information. Thus, the packet-throughput performance gains enabled by transparency and associated fast path packet processing logic in a physical BITW device may be sacrificed to support virtualization of the device. Using the OS's TCP/IP network stack logic, however, may cause local routing and forwarding information to be automatically configured by the cloud platform's routing and switching protocols; but, as noted above, this does not necessarily enforce any packet routing policies/requirements for the cloud and may cause further performance reductions.
As will be described below, the following correlated components may be provided in support of a virtual BITW: (1) a cloud configuration component that may coordinate addressing (e.g., IP and MAC addressing), address translation, proxying, subnetting, and/or routing; and (2) a Network Address Mapper (NAM) logic component that may be inserted (e.g., shimmed) in the Virtual BITW device system such as between the FPPP's network interface controller (NIC) drivers and the FPPP's core packet processing logic that may efficiently map L3/IP addresses and L2/MAC addresses of ingressing and/or egressing L3/L2 packets/frames to values that may cause them to be routed/forwarded to intended destinations along a virtual path.
Referring to
Configuring the virtual BITW device and associated subnets into a virtual path;
Configuring the NAT gateway and associated proxying; and
Configuring cloud route tables.
Note that the configuration of the subcomponents may be performed in the context of and in coordination with the private cloud provider's infrastructure, which may automatically and/or transparently perform functions such as routing and route table generation, MAC address generation and assignment, etc., the operations of which are not shown or described. Note also that the described examples/scenarios are for the simple case of an inline virtual BITW device 240 intermediating between a single virtual host computer (e.g., computer 260), a single Internet gateway (e.g. NAT-G/W 220), and a single Internet host (e.g., HOST-0110). The methods and systems of the disclosure described herein are readily extended by skilled artisans to more complex scenarios with multiple virtual hosts, Internet hosts, gateways, and virtual BITW devices.
In
Referring to
For example, referring to
Referring to
For example, referring to
Referring to
For example, referring to
Upon completion of Steps 3-1, 3-2, and 3-3, the virtual BITW device may be ready for operation in its virtual path; thus in Step 3-4, the virtual BITW may be transitioned into operation.
Note that the ordering of Steps 3-1, 3-2, and 3-3 and associated substeps is exemplary and may be different in practice. Moreover, any of these steps may be combined and/or further subdivided.
Referring to
The NAM component may provide one or more functions. Examples of these functions may include:
NAM Function 1: For the proxy network interface, maps between the proxy IP address and the target virtual computer's IP addresses;
NAM Function 2: Configures the IP and MAC addresses of in-transit L3 packets and L2 frames to enforce virtual path traversal policies/requirements; and/or
NAM Function 3: Maintains an efficient data structure, which may be indexed by packets' flow characteristics, containing information associated with recently observed in-transit frames/packets in order to recover and quickly access routing and forwarding information associated with packets in the same flow that may have been lost during proxying.
All three (3) NAM functions listed above result from a desire to assign IP addresses and MAC addresses to the virtual BITW device's network interfaces (C1 and C2 in
Regarding NAM Function 1: Recall from above, for example Step 3-2 of
For example, referring also to
Regarding NAM Function 2: The network interfaces of the virtual BITW device may be responsible for forwarding packets towards their destinations. The forwarding function may be responsible for causing the MAC addresses of the L2 frames containing the L3 packets to be set to the proper values, for example, the MAC addresses of the terminals of the virtual path. These MAC address values may be obtained from the cloud's routing tables via the slow path, i.e., via calls to the OS kernel's TCP/IP networking stack logic; however, for performance reasons, the virtual BITW device may not use the slow path when processing in-transit packets. By configuring the NAM logic with the proper MAC addresses information when configuring the virtual BITW device for operations, for example as in Step 3-1 of
Regarding NAM Function 3: This function may be used for some cloud configurations where there are, for example, multiple virtual computers that may be proxied by another target virtual computer, e.g., a load balancer, web proxy, etc., with the associated communications passing through the virtual BITW device. For example, suppose there is no NAM Function 3; then, a request packet that is originated by one of multiple virtual computers behind a proxying target virtual computer (e.g., a load balancer) and destined for an Internet host may cause the Internet (or other public network) host to create and transmit a response packet that has the proxying load balancer's IP address as the destination. Upon receiving the response packet, the load balancer may not know which proxied virtual computer sourced/originated the corresponding request; thus, the load balancer may choose any one of the proxied virtual computers to forward the response packet towards; thus, it may be the case that the chosen proxied virtual computer may not be the originator/source of the corresponding request packet.
To handle the above example scenario and others, the NAM may include an efficient data structure that stores/caches information on recently observed L3 packets and associated L2 frames, including the packet's 5-tuple values (L3 source and destination IP addresses, L4 source and destination ports, L3 protocol type), the associated frame's MAC addresses, and/or the direction. This way, the NAM may be able to handle the example scenario above (and similar scenarios) by recovering the IP address and MAC address of the virtual computer that originated the corresponding request packet and modifying the response packet and associated frame accordingly such that the response packet is ultimately received by the proper virtual computer. Note that in keeping with fast-path performance requirements that may be in place, the efficient data structure, for example an LRU cache, may support efficient insertions, searches, and/or deletions.
As an example, virtual computer 260 may execute a web server application with a DNS-registered domain name www.example-web-server.net, and HOST-0110 (addressed by, for example, public IP address 74.65.150.95) may execute a web client/web browser application. A user operating the web browser on HOST-0110 may point the browser to the URL https://www.example-web-server.net. In Step 5-0 (not shown in
In Step 5-1, HOST-0110 may initiate the establishment of a TCP connection with port 443 (HTTPS) of 174.129.20.63 (i.e., virtual computer 260) by sending an TCP SYN handshake packet P0.0 with L3 source IP address 74.65.150.95 and L3 destination IP address 174.129.20.63 through the Internet towards virtual computer 260.
In Step 5-2, NAT-G/W 220 may receive packet P0.0. The NAT function may translate computer 260's public IP address 174.129.20.63 to 10.0.1.6, which may be the (private) IP address of network interface C1241 of virtual BITW device 240, and which may be the proxy IP address for target virtual computer 260. NAT-G/W 220 may transform packet P0.0 to P0.1 as follows: (1) L3 destination IP address changed to 10.0.1.6 (the IP address of proxy network interface C1241); (2) L2 source MAC address changed to 12:f7:4c:ac:de:7f (the MAC address of NAT-G/W 220's network interface N2 222); and (3) L2 destination MAC address changed to 12:3d:f8:07:f0:19 (the MAC address of virtual BITW device 240's network interface C1241). Network interface N2 222 may send packet P0.1 towards virtual BITW device 240's network interface C1241 on virtual path 208.
In Step 5-3, virtual BITW device 240 may receive packet P0.1 through its network interface C1241. As per NAM Function 3 described above, the NAM may insert information associated with packet P0.1 into its efficient data structure for storing information associated with recently observed packets, in case the origin computer information is needed later to recover information that may be lost during the proxy transformations (not illustrated in this example). The NAM may transform packet P0.1 to P0.2 as follows: (1) L3 destination IP address changed to 10.0.2.157 (the IP address of virtual Computer 260); (2) L2 source MAC address changed to 12:a8:84:40:b6:39 (the MAC address of network interface C2242); and (3) L2 destination MAC address changed to 12:43:9d:b6:7b:f3 (the MAC address of virtual computer 260's network interface). The NAM may forward/pipeline packet P0.2 towards C2242. The (fast path) packet processing application processes packet P0.2. Assuming that the application does not drop/block packet P0.2, network interface C2242 may send packet P0.2 towards virtual computer 260 on virtual path 208.
In Step 5-4, target virtual computer 260 may receive packet P0.2. Computer 260 may respond to the TCP SYN handshake signal by creating a packet P1.0 containing a TCP SYN-ACK handshake signal and with: (1) L3 source IP address set to 10.0.2.157 (the private IP address of virtual computer 260); (2) L3 destination IP address set to 74.65.150.95 (the IP address of HOST-0110); (3) L2 source MAC address set to 12:43:9d:b6:7b:f3 (the MAC address of computer 260); and (4) L2 destination MAC address set to 12:a8:84:40:b6:39 (the MAC address of network interface C2242 of the virtual BITW device 240). Setting packet P1.0's destination MAC address to C2242's MAC address may help ensure that packet P1.0 traverses virtual path 208 through the virtual BITW device 240, even though P1.0's L3 destination IP address is not the IP address of C2242. Computer 260 may send/forward packet P1.0 towards HOST-0110 on virtual path 208.
In Step 5-5, virtual BITW device 240 may receive packet P1.0 through its network interface C2242. As per NAM Function 3 described above, the NAM may insert information associated with packet P1.0 into its efficient data structure for storing information associated with recently observed packets, in case the origin computer information is needed later to recover information that may be lost during the proxy transformations (not illustrated in this example). The NAM may transform packet P1.0 to P1.1 as follows: (1) L3 source IP address changed to 10.0.1.6 (the IP address of network interface C1241, which proxies for computer 260); (2) L2 source MAC address changed to 12:3d:f8:07:f0:19 (the MAC address of network interface C1241); and (3) L2 destination MAC address changed to 12:f7:4c:ac:de:7f (the MAC address of NAT-G/W 220's network interface N2 222). Setting packet P1.1's destination MAC address to N2 222's MAC address may help ensure that packet P1.1 traverses virtual path 208 to the NAT-G/W 220, even though P1.1's L3 destination IP address is not the IP address of N2 222. The NAM may forward/pipeline packet P1.1 towards C1241. The (fast path) packet processing application processes packet P1.1. Assuming that the application does not drop/block packet P1.1, network interface C1241 may send/forward packet P1.1 towards HOST-0110 on virtual path 208.
In Step 5-6, NAT-G/W 220 may receive packet P1.1 through its network interface N2 222, which is a terminal of virtual path 208. The NAT-G/W 220 may transform packet P1.1 to P1.2 as follows: (1) L3 source IP address changed to 174.129.20.63 (the public IP address of virtual computer 260). Network interface N1 221 sends/forwards packet P.1.2 towards HOST-0110 via the Internet.
In Step 5-7, a TCP connection and TLS tunnel between HOST-0110 and virtual Computer 260 (which hosts web site www.example-web-site.net) may be established, and a (TLS-secured) HTTP session (e.g. HTTPS) may be conducted. Upon completion of the HTTP session, the TLS tunnel and the TCP connection may be torn down. All packets composing the communications may traverse the virtual path 208 and transit through the virtual BITW device 240 in both directions.
Any of the elements described herein or illustrated in any of the figures may be partially or fully implemented using one or more computing devices. Hardware elements of an example computing device 600, which may be used to implement any of the other elements described herein, are shown in
The functions and steps described herein may be embodied in computer-usable data or computer-executable instructions, such as in one or more program modules, executed by one or more computing devices (e.g., computers or other data-processing devices) to perform one or more functions described herein. Generally, program modules may include routines, programs, objects, components, data structures, and/or other elements that perform particular tasks or implement particular abstract data types when executed by one or more processors of one or more computing devices. The computer-executable instructions may be stored on a computer-readable medium such as a hard disk, optical disk, removable storage media, solid-state memory, RAM, etc. As will be appreciated, the functionality of the program modules may be combined or distributed as desired. In addition, the functionality may be embodied in whole or in part in firmware or hardware equivalents, such as integrated circuits, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGA), and the like. Particular data structures may be used to more effectively implement one or more aspects of the disclosure, and such data structures are contemplated to be within the scope of computer-executable instructions and computer-usable data described herein.
Although not required, one of ordinary skill in the art will appreciate that various aspects described herein may be embodied as a method, system, apparatus, or one or more computer-readable media storing computer-executable instructions that, when executed by one or more processors of a computing device, cause the computing device to perform steps as disclosed herein. Accordingly, aspects may take the form of an entirely hardware embodiment, an entirely software embodiment, an entirely firmware embodiment, an entirely virtual embodiment, or an embodiment combining software, hardware, virtualized, and/or firmware aspects in any combination.
As described herein, the various methods and acts may be operative across one or more physically separate or integrated computing devices (which together may form a computing device) and networks. The functionality may be distributed in any manner or may be located in a single physical computing device or virtual version of a computing device (e.g., a server, client computer, a user device, a virtual environment, or the like).
Aspects of the disclosure have been described in terms of illustrative embodiments thereof. Numerous other embodiments, modifications, and variations within the scope and spirit of the appended claims will occur to persons of ordinary skill in the art from a review of this disclosure. For example, one of ordinary skill in the art will appreciate that the steps illustrated in the illustrative figures may be performed in other than the recited order and that one or more illustrated steps may be optional.
The present application is a continuation of U.S. patent application Ser. No. 17/395,120, filed Aug. 5, 2021, which claims priority to U.S. Provisional Patent Application Ser. No. 63/071,174, filed Aug. 27, 2020, each of which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63071174 | Aug 2020 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17395120 | Aug 2021 | US |
Child | 17698164 | US |