Service-based access for enterprise private network devices to service provider network services

A system is configured to receive, from an enterprise device, a request to access a network domain, and is configured to determine whether the network domain is associated with a wireless service provider service. Based on determining that the network domain is not associated with the wireless service provider service, the system is configured to route the request to a private network associated with the enterprise device. Based on determining that the network domain is associated with the wireless service provider service, the system is configured to route the request to a domain name system server associated with the wireless service provider, receive a domain name system response to the request, the domain name system response identifying a network address, and route the domain name system response to the enterprise device.

BACKGROUND

A wireless service provider may provide access to a private network of an enterprise, such as an enterprise local area network (LAN). Enterprise devices (e.g., smart phones of enterprise employees) may use the wireless service provider's network to access the enterprise network. An enterprise administrator may control services, devices, and websites that may be accessed by the enterprise devices.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

A wireless service provider (WSP) may provide access to a private network of an enterprise, such as an enterprise local area network. Enterprise devices (e.g., mobile devices, such as smart phones of enterprise employees) may use the wireless service provider network to access the enterprise network. However, services offered by the wireless service provider may be inaccessible by the enterprise devices because the enterprise network may be incapable of routing packets back to the wireless service provider network. Implementations described herein provide a means for enterprise devices to access services provided via the wireless service provider network.

The term enterprise, as used herein, is intended to be broadly construed to include a business, an organization, a government agency, an enterprise device, a related group of users and/or devices, etc.

FIGS. 1A and 1Bare diagrams of an overview of an example implementation100described herein. As shown inFIG. 1A, implementation100may include an enterprise device, such as a smart phone, a wireless service provider (WSP) network, such as a cellular network, and an enterprise network, such as a private network for a particular enterprise. The WSP network may include a WSP gateway that provides access to the WSP network, a WSP router that routes traffic on the WSP network, and a WSP server that provides a WSP service, such as a voicemail service, a text messaging service, a location service, etc. The enterprise network may include an enterprise router that routes traffic on the enterprise network.

As further shown inFIG. 1A, the enterprise device may request a WSP service provided by the WSP server. The request may be received by the WSP gateway, routed by the WSP gateway to the WSP router, and routed by the WSP router to the enterprise router. The WSP gateway and WSP router may automatically (e.g., by default) route all traffic received from the enterprise device to the enterprise network via the enterprise router. The enterprise router may be unable to route the request for the WSP service back to the WSP network. Thus, the WSP server may not be capable of providing the WSP service to the enterprise device.

As shown inFIG. 1B, rather than automatically routing all traffic received from the enterprise device to the enterprise router, the WSP gateway and WSP router may analyze incoming requests from the enterprise device to determine whether the request is for a WSP service. When the request is for the WSP service, the WSP gateway and WSP router may cooperate to route the request to a WSP server that provides the WSP service. Thus, the enterprise device may receive services offered by the WSP server.

FIG. 2is a diagram of an example environment in which systems and/or methods described herein may be implemented. As shown inFIG. 2, environment200may include one or more enterprise devices205-1through205-N (N≧1) (hereinafter referred to collectively as “enterprise devices205,” and individually as “enterprise device205”), a base station210, a wireless service provider (WSP) network215, an enterprise network220, a WSP gateway225, a WSP domain name system (DNS) server230, a WSP router235, a WSP server240, a third party router245, a third party server250, an enterprise router255, an enterprise DNS server260, and an enterprise server265.

Enterprise device205may include a device capable of accessing enterprise network220via WSP network215. For example, enterprise device205may include a mobile computing device (e.g., a laptop computer, a tablet computer, a handheld computer, a smart phone, a radiotelephone, a gaming device, an automatic teller machine, etc.) or a similar device. In some implementations, enterprise device205may include a device capable of accessing a wireless network (e.g., WSP network215) via base station210(e.g., via an air interface). Additionally, or alternatively, enterprise device205may be registered and/or authenticated for access to enterprise network220.

Base station210may include one or more devices that receive, process, and/or transmit traffic, such as audio, video, text, and/or other data, destined for and/or received from enterprise device205. In some implementations, base station210may include an evolved node B (eNB), associated with a long term evolution (LTE) network, that receives traffic from and/or sends traffic to WSP network215(e.g., via a packet data network gateway and/or a serving gateway). Additionally, or alternatively, one or more base stations210may be associated with a radio access network that is not associated with the LTE network. Base station210may send traffic to and/or receive traffic from user device205via an air interface.

WSP network215may include a wireless network capable of transmitting traffic between enterprise device205and enterprise network220. For example, WSP network215may transmit traffic to and/or receive traffic from enterprise device205via base station210. Additionally, or alternatively, WSP network215may transmit traffic to and/or receive traffic from enterprise network220via WSP router235. WSP network215may include, for example, a cellular network, a public land mobile network (PLMN), a radio access network (RAN), an LTE network, a second generation (2G) network, a third generation (3G) network, a fourth generation (4G) network, a fifth generation (5G) network, and/or another type of wireless network, or a combination of wired and wireless networks. In some implementations, WSP network215may include an evolved packet system that includes an LTE network and/or an evolved packet core that operate based on a third generation partnership project (3GPP) wireless communication standard.

Enterprise network220may include one or more wired and/or wireless private networks. For example, enterprise network220may include a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), an intranet, and/or another type of private network.

WSP gateway225may include one or more traffic transfer devices. For example, WSP gateway225may include a gateway, a router, a switch, a firewall, a hub, a bridge, a modem, a network interface card, an optical add-drop multiplexer, a server (e.g., a virtual server, a proxy server, etc.), and/or another device capable of transmitting, receiving, transferring, and/or processing network traffic. In some implementations, WSP gateway225may receive traffic from and/or transmit traffic to base station210, WSP DNS server230, and/or WSP router235.

WSP DNS server230may include one or more server devices, or similar devices. In some implementations, WSP DNS server230may receive a DNS query for a WSP service from enterprise device205, and may respond to the DNS query by transmitting a network address to enterprise device205. In some implementations, base station210and/or WSP gateway225may route the request and/or the response between enterprise device205and WSP DNS server230.

WSP router235may include one or more traffic transfer devices. For example, WSP router235may include a router, a switch, a firewall, a hub, a bridge, a gateway, a modem, a network interface card, an optical add-drop multiplexer, a server (e.g., a virtual server, a proxy server, etc.), and/or another device capable of transmitting, receiving, transferring, and/or processing network traffic. In some implementations, WSP router235may include an edge device (e.g., an edge router) that transfers and/or translates information, via a secure connection, between WSP network215and enterprise network220. Additionally, or alternatively, WSP router235may receive traffic from and/or transmit traffic to WSP gateway225, WSP server240, third party router245, and/or enterprise router255. In some implementations, WSP router235may transfer traffic to and/or from an internet gateway that provides internet access (not shown).

WSP server240may include one or more server devices, or similar devices. In some implementations, WSP server240may provide WSP services (e.g., voice services, location services, text messaging services, voicemail services, network application programming interface services, etc.) to devices with access to WSP network215. For example, WSP server240may receive a request for a WSP service from enterprise device205, and may respond to the request by providing the WSP service to enterprise device205. In some implementations, base station210, WSP gateway225, and/or WSP router235may route the request and/or the response between enterprise device205and WSP server240.

Third party router245may include one or more traffic transfer devices. For example, third party router245may include a router, a switch, a firewall, a hub, a bridge, a gateway, a modem, a network interface card, an optical add-drop multiplexer, a server (e.g., a virtual server, a proxy server, etc.), and/or another device capable of transmitting, receiving, transferring, and/or processing network traffic. In some implementations, third party router245may include an edge device (e.g., an edge router) that transfers and/or translates information between WSP network215and a third party network (not illustrated). Additionally, or alternatively, third party router245may receive traffic from and/or transmit traffic to WSP router235and/or third party server250.

Third party server250may include one or more server devices, or similar devices. In some implementations, third party server250may provide third party services (e.g., mapping services, search services, social media services, etc.) to devices with access to a third party network (not illustrated). For example, third party server250may receive a request for a third party service from enterprise device205, and may respond to the request by providing the third party service to enterprise device205. In some implementations, base station210, WSP gateway225, WSP router235, and/or third party router245may route the request and/or the response between enterprise device205and third party server250.

Enterprise router255may include one or more traffic transfer devices. For example, enterprise router255may include a router, a switch, a firewall, a hub, a bridge, a gateway, a modem, a network interface card, an optical add-drop multiplexer, a server (e.g., a virtual server, a proxy server, etc.), and/or another device capable of transmitting, receiving, transferring, and/or processing network traffic. In some implementations, enterprise router255may include an edge device (e.g., an edge router) that transfers and/or translates information between enterprise network220and WSP network215. Additionally, or alternatively, enterprise router255may receive traffic from and/or transmit traffic to WSP router235, enterprise DNS server260, and/or enterprise server265. In some implementations, enterprise router255may transfer traffic to and/or from an internet gateway that provides internet access (not shown).

Enterprise DNS server260may include one or more server devices, or similar devices. In some implementations, enterprise DNS server260may receive a DNS query for an enterprise service from enterprise device205, and may respond to the DNS query by transmitting a network address to enterprise device205. In some implementations, base station210, WSP gateway225, WSP router235, and/or enterprise router255may route the request and/or the response between enterprise device205and enterprise DNS server260.

Enterprise server265may include one or more server devices, or similar devices. In some implementations, enterprise server265may provide enterprise services (e.g., access to enterprise email, human resources applications, time reporting applications, internal job search applications, training applications, access to information on an enterprise intranet, such as product information, enterprise processes or procedures, etc.) to devices with access to enterprise network220(e.g., enterprise devices205). For example, enterprise server265may receive a request for an enterprise service from enterprise device205, and may respond to the request by providing the enterprise service to enterprise device205. In some implementations, base station210, WSP gateway225, WSP router235, and/or enterprise router255may route the request and/or the response between enterprise device205and enterprise server265.

The number of devices and networks shown inFIG. 2is provided for explanatory purposes. In practice, environment200may include additional devices and/or networks, fewer devices and/or networks, different devices and/or networks, or differently arranged devices and/or networks. Furthermore, two or more devices shown inFIG. 2may be implemented within a single device, or a single device shown inFIG. 2may be implemented as multiple, distributed devices. Additionally, one or more of the devices of environment200may perform one or more functions described as being performed by another one or more devices of environment200. Devices of environment200may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections.

FIG. 3is a diagram of example components of a device300. Device300may correspond to enterprise device205, base station210, WSP gateway225, WSP DNS server230, WSP router235, WSP server240, third party router245, third party server250, enterprise router255, enterprise DNS server260, and/or enterprise server265. As shown inFIG. 3, device300may include a bus310, a processor320, a memory330, an input component340, an output component350, and a communication interface360.

Bus310may include a path that permits communication among the components of device300. Processor320may include a processor (e.g., a central processing unit, a graphics processing unit, an accelerated processing unit), a microprocessor, and/or any processing logic (e.g., a field-programmable gate array (“FPGA”), an application-specific integrated circuit (“ASIC”), etc.) that interprets and/or executes instructions. Memory330may include a random access memory (“RAM”), a read only memory (“ROM”), and/or another type of dynamic or static storage device (e.g., a flash, magnetic, or optical memory) that stores information and/or instructions for use by processor320.

Input component340may include a component that permits a user to input information to device300(e.g., a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, etc.). Output component350may include a component that outputs information from device300(e.g., a display, a speaker, one or more light-emitting diodes (“LEDs”), etc.).

Communication interface360may include a transceiver-like component, such as a transceiver and/or a separate receiver and transmitter, that enables device300to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. For example, communication interface360may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (“RF”) interface, a universal serial bus (“USB”) interface, or the like.

Device300may perform various operations described herein. Device300may perform these operations in response to processor320executing software instructions included in a computer-readable medium, such as memory330. A computer-readable medium may be defined as a non-transitory memory device. A memory device may include memory space within a single storage device or memory space spread across multiple storage devices.

Software instructions may be read into memory330from another computer-readable medium or from another device via communication interface360. When executed, software instructions stored in memory330may cause processor320to perform one or more processes described herein. Additionally, or alternatively, hardwired circuitry may be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.

The number of components shown inFIG. 3is provided for explanatory purposes. In practice, device300may include additional components, fewer components, different components, or differently arranged components than those shown inFIG. 3. Additionally, or alternatively, each of enterprise device205, base station210, WSP gateway225, WSP DNS server230, WSP router235, WSP server240, third party router245, third party server250, enterprise router255, enterprise DNS server260, and/or enterprise server265may include one or more devices300and/or one or more components of device300.

FIG. 4is a flow chart of an example process400for routing a domain name system (DNS) query received from an enterprise device. In some implementations, one or more process blocks ofFIG. 4may be performed by WSP gateway225. Additionally, or alternatively, one or more process blocks ofFIG. 4may be performed by another device or a group of devices separate from or including WSP gateway225, such as base station210, WSP DNS server230, and/or WSP router235.

As shown inFIG. 4, process400may include receiving, from an enterprise device, a request to access a domain (block410). For example, WSP gateway225may receive a domain name system (DNS) query from enterprise device205(e.g., via base station210). The DNS query may include information that identifies a domain (e.g., a network domain). For example, the DNS query may include information that identifies a domain name and/or a uniform resource locator (URL), such as www.example.com or www.example.com/website. WSP gateway225may determine the domain (e.g., the second-level domain “example”) based on the domain name and/or the URL. In some implementations, WSP gateway225may determine a fully qualified domain name (FQDN) (e.g., an FQDN assigned to a device and/or to a WSP service), a second level domain, a third-level domain, and/or any other domain level.

As further shown inFIG. 4, process400may include determining whether the domain is associated with a WSP service (block420). For example, WSP gateway225may determine whether the domain identifies and/or is associated with a WSP domain and/or a WSP service. In some implementations, WSP gateway225may access a data structure that indicates whether the domain is a WSP domain and/or is associated with a WSP service. For example, the data structure may include a list of WSP domains. WSP gateway225may determine whether the domain identified in the received request is listed in the data structure to determine whether the domain is associated with a WSP service.

Additionally, or alternatively, the WSP service may include a third party service, such as a service provided via third party server250. WSP gateway225may determine that the domain identifies and/or is associated with a third party domain and/or a third party service. In some implementations, WSP gateway225may access a data structure that indicates whether the domain identifies a third party domain and/or is associated with a third party service. For example, the data structure may include a list of third party domains. WSP gateway225may determine whether the domain identified in the received request is listed in the data structure to determine whether the domain is associated with a third party service. The data structure that identifies third party domains may be the same or different from the data structure that identifies WSP domains. The information stored by the data structure(s) may be modified by a user and/or a device.

If the domain is not associated with a WSP service (block420—NO), then process400may include routing the request to the enterprise network (block430). For example, if WSP gateway225determines that the domain is not associated with a WSP service (or a third party service), then WSP gateway225may route the request identifying the domain to WSP router235. WSP router235may route the request to enterprise router255, which may route the request to enterprise DNS server260to respond to (e.g., to resolve) the request. Enterprise router255may receive a response to the DNS query from enterprise DNS server260, and may route the response to enterprise device205(e.g., via WSP router235, WSP gateway225, and/or base station210).

If the domain is associated with a WSP service (block420—YES), then process400may include routing the request to a DNS server associated with the WSP network (block440), and transmitting, to the enterprise device, a DNS response to the request (block450). For example, if WSP gateway225determines that the domain is associated with a WSP service, then WSP gateway225may route the request identifying the domain to WSP DNS server230. WSP DNS server230may respond to (e.g., may resolve) the request. For example, WSP DNS server230may receive a DNS query, may determine a network address (e.g., an IP address) associated with the DNS query, and may transmit a DNS response that identifies the network address to WSP gateway225. WSP gateway225may transmit the DNS response to enterprise device205(e.g., via base station210). The network address may identify a destination device to provide the WSP service requested by enterprise device205. For example, the network address may identify WSP server240.

Additionally, or alternatively, the WSP service may include a third party service, such as a service provided via third party server250. If WSP gateway225determines that the domain is associated with a third party service, then WSP gateway225may route the request identifying the domain to WSP DNS server230. WSP DNS server230may respond to the request by transmitting a DNS response that identifies a network address, associated with the request, to enterprise device205(e.g., via WSP gateway225and/or base station210). In some implementations, the network address may identify third party server250.

While a series of blocks has been described with regard toFIG. 4, the blocks and/or the order of the blocks may be modified in some implementations. Additionally, or alternatively, non-dependent blocks may be performed in parallel.

FIG. 5is a diagram of an example implementation500relating to example process400shown inFIG. 4.FIG. 5shows example implementation500where WSP gateway225routes a DNS request for a WSP service, and routes a DNS response to the DNS request.

As shown by reference number510, enterprise device205may transmit, and WSP gateway225may receive, information that identifies a DNS query, such as a request to access www.providerdomain.com. WSP gateway225may determine a domain associated with the DNS query (e.g., “providerdomain”). WSP gateway225may determine whether the domain is stored in a data structure that stores domains associated with WSP services. For example, as shown by reference number520, WSP gateway225may determine that “providerdomain” is a WSP domain (e.g., is associated with a WSP service).

Based on determining that “providerdomain” is a WSP domain, WSP gateway225may transmit information that identifies the DNS query to WSP DNS server230. For example, as shown by reference number530, WSP gateway225may transmit information that identifies the domain “providerdomain” to WSP DNS server230. WSP DNS server230may access a data structure to determine a network address (e.g., an IP address) associated with the DNS query. For example, as shown by reference number540, WSP DNS server230may determine that an IP address “201.64.2.102” identifies a destination device (e.g., WSP server240) that provides the WSP service associated with the domain “providerdomain.” As shown by reference number550, WSP DNS server230may transmit a DNS response that identifies the network address “201.64.2.102” to enterprise device205(e.g., via WSP gateway225). Enterprise device205may transmit a request, for a WSP service, that includes the network address. For example, enterprise device205may transmit, to WSP gateway225and via base station210, a packet that identifies the network address, as described herein in connection withFIGS. 6 and 7.

FIG. 6is a flow chart of an example process600for routing a packet received from an enterprise device. In some implementations, one or more process blocks ofFIG. 6may be performed by WSP router235. Additionally, or alternatively, one or more process blocks ofFIG. 6may be performed by another device or a group of devices separate from or including WSP router235, such as base station210, WSP gateway225and/or WSP server240.

As shown inFIG. 6, process600may include receiving, from an enterprise device, a packet that identifies a network address (block610). For example, WSP router235may receive a packet, identifying a network address, from enterprise device205(e.g., via base station210and/or WSP gateway225). The network address may include a network address identified in a DNS response transmitted to enterprise device205(e.g., discussed herein in connection withFIGS. 4 and 5). For example, the network address may include an IP address.

As further shown inFIG. 6, process600may include determining whether the network address identifies a destination associated with a WSP service (block620). For example, WSP router235may determine whether the network address identifies and/or is associated with a WSP service and/or a destination in the WSP network, such as WSP server240. In some implementations, WSP router235may access a data structure that indicates whether the network address identifies a WSP device (e.g., a device in WSP network215, such as WSP server240). For example, the data structure may include a list of WSP devices and associated network addresses of the WSP devices. WSP router235may determine whether the network address identified in the received packet is listed in the data structure to determine whether the network address is associated with a WSP service. In some implementations, WSP router235may determine whether the network address identifies a destination associated with a WSP service based on a subnet identified by the network address.

Additionally, or alternatively, the WSP service may include a third party service, such as a service provided via third party server250. WSP router235may determine whether the network address identifies and/or is associated with a third party service and/or a destination in a third party network, such as third party server250. In some implementations, WSP router235may access a data structure that indicates whether the network address identifies a third party device (e.g., a device in the third party network, such as third party server250). For example, the data structure may include a list of third party devices and associated network addresses of the third party devices. WSP router235may determine whether the network address identified in the received packet is listed in the data structure to determine whether the network address is associated with a third party service. The data structure that identifies third party devices may be the same or different from the data structure that identifies WSP devices. The information stored by the data structure (s) may be modified by a user and/or a device.

If the network address is not associated with a WSP service (block620—NO), then process600may include routing the packet to the enterprise network (block630). For example, if WSP router235determines that the network address is not associated with a WSP service (or a third party service), then WSP router235may route the packet identifying the network address to enterprise router255, which may route the packet to enterprise server265to transmit a packet response (e.g., a packet acknowledgement, a service provided in response to the packet, etc.) associated with the packet. Enterprise router255may receive the packet response, and may route the packet response to enterprise device205(e.g., via WSP router235, WSP gateway225, and/or base station210).

If the network address is associated with a WSP service (block620—YES), then process600may include routing the packet to a WSP server identified by the network address (block640), and transmitting, to the enterprise device, a packet response associated with the packet (block650). For example, if WSP router235determines that the network address is associated with a WSP service, then WSP router235may route the packet identifying the network address to WSP server240identified by the network address. WSP server240may transmit a packet response, associated with the packet, to enterprise device205(e.g., via WSP router235, WSP gateway225, and/or base station210). The packet response may include a packet acknowledgement, a response associated with information requested by enterprise device205that transmitted the packet, a response that provides the WSP service requested by enterprise device205, and/or another response associated with the packet received by WSP server240.

Additionally, or alternatively, the WSP service may include a third party service, such as a service provided via third party server250. If WSP router235determines that the network address is associated with a third party service, then WSP gateway235may route the packet identifying the network address to third party router245, which may route the packet to third party server250identified by the network address. Third party server250may transmit a packet response, associated with the packet, to enterprise device205(e.g., via third party router245, WSP router235, WSP gateway225, and/or base station210).

While a series of blocks has been described with regard toFIG. 6, the blocks and/or the order of the blocks may be modified in some implementations. Additionally, or alternatively, non-dependent blocks may be performed in parallel.

FIG. 7is a diagram of an example implementation700relating to example process600shown inFIG. 6.FIG. 7shows example implementation700where WSP router235routes a packet associated with a WSP service, and routes a packet response associated with the packet.

As shown by reference number710, enterprise device205may transmit, and WSP gateway225may receive, a packet that identifies a network address, such as the IP address “201.64.2.102.” As shown by reference number720, WSP gateway225may route the packet to WSP router235. WSP router235may determine a destination associated with the network address. WSP router235may determine whether the network address is stored in a data structure that stores network addresses associated with WSP services. For example, as shown by reference number730, WSP router235may determine that “201.64.2.102” identifies WSP server240, which is associated with WSP network215and provides a WSP service.

Based on determining that the network address “201.64.2.102” identifies a WSP device (e.g., a device in WSP network215), WSP router235may transmit the packet to the identified device. For example, WSP router235may determine that the network address “201.64.2.102” identifies WSP server240as a destination, and WSP router235may route the packet to WSP server240, as shown by reference number740. As shown by reference number750, WSP server240may transmit a response, associated with the packet, to enterprise device205(e.g., via WSP router235and/or WSP gateway225).

FIG. 8is a diagram of an example call flow800for providing a WSP service to an enterprise device.

As shown by reference number805, call flow800may include transmitting, by enterprise device205and to WSP gateway225, a DNS query associated with a WSP service. As shown by reference number810, call flow800may include determining, by WSP gateway225, that the DNS query is associated with a WSP domain. As shown by reference number815, call flow800may include transmitting, by WSP gateway225and to WSP DNS server230, the DNS query. As shown by reference number820, call flow800may include transmitting, by WSP DNS server230and to enterprise device205via WSP gateway225, an IP address that identifies WSP server240that provides the WSP service identified by the DNS query.

As shown by reference number825, call flow800may include transmitting, by enterprise device205and to WSP gateway225, a packet identifying the IP address received by enterprise device205from WSP DNS server230via WSP gateway225. As shown by reference number830, call flow800may include transmitting, by WSP gateway225and to WSP router235, the packet identifying the IP address. As shown by reference number835, call flow800may include determining, by WSP router235, a particular WSP server240identified by the IP address. As shown by reference number840, call flow800may include transmitting, by WSP router235and to the particular WSP server240, the packet. As shown by reference number845, call flow800may include transmitting, by the particular WSP server240and to enterprise device205via WSP router235and WSP gateway225, a WSP service response associated with the packet.

It will be apparent that systems and/or methods, as described herein, may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement these systems and/or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and/or methods were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement the systems and/or methods based on the description herein.