Patent Description:
Network gateways, e.g. home or office routers, mobile hotspots or vehicular gateways, are often used to connect one or more users from a first network to a second network, for example to the internet. A network gateway may therefore provide gateway functionality, e.g. translate between different protocols used within the first and second network, provide firewall functionality or provide network address translation.

US patent application <CIT> discloses the use of multiple virtual machines in a mobile virtualization platform. In the application, a residential gateway is provided that execute multiple virtual machines, e.g. to implement gateway functionality, WiFi functionality and modem functionality via different virtual machines being executed on the same device.

Accordingly, while further examples are capable of various modifications and alternative forms, some particular examples thereof are shown in the figures and will subsequently be described in detail. However, this detailed description does not limit further examples to the particular forms described. Further examples may cover all modifications, equivalents, and alternatives falling within the scope of the disclosure. Like numbers refer to like or similar elements throughout the description of the figures, which may be implemented identically or in modified form when compared to one another while providing for the same or a similar functionality.

It will be understood that when an element is referred to as being "connected" or "coupled" to another element, the elements may be directly connected or coupled or via one or more intervening elements. If two elements A and B are combined using an "or", this is to be understood to disclose all possible combinations, i.e. only A, only B as well as A and B. An alternative wording for the same combinations is "at least one of A and B". The same applies for combinations of more than <NUM> Elements.

<FIG> illustrates examples of a device <NUM> and an apparatus <NUM> for controlling a network gateway, a network gateway and a (remote) server <NUM>. In the following multiple examples will be described in detail. The described device <NUM> corresponds to an apparatus <NUM> for controlling a network gateway. The components of the apparatus <NUM> are defined as component means which correspond to the respective structural components of the device <NUM>. Examples further provide the network gateway <NUM> comprising the device <NUM> and the network gateway <NUM> comprising the apparatus <NUM>.

<FIG> shows a block diagram of an example of a device <NUM> for controlling a network gateway <NUM>. The device <NUM> comprises at least one network interface <NUM> configured to communicate in at least one computer network. The device <NUM> further comprises a processing module <NUM> configured to at least partially execute at least a first software module and a second software module. The first software module is configured to provide a gateway functionality of the network gateway <NUM> via the at least one network interface <NUM>. A functionality of the second software module is different from the gateway functionality of the first software module. The second software module is encapsulated from the first software module.

Encapsulating the second software module from the first software module may increase a security of the first software module, as an access of the second software module to functionality of the first software module may be limited. This may enable an execution of third-party software modules alongside the first software module with a decreased impact on a security of the network gateway.

For example, the device <NUM> may be configured to perform the gateway functionality of the network gateway <NUM> (e.g. through the first software module). Alternatively, the device <NUM> may be configured to coordinate the gateway functionality of the network gateway (e.g. of the first software module), or the device <NUM> (e.g. the processing module <NUM>) may be configured to provide an execution environment for providing the gateway functionality (through the first software module). For example, the network gateway may comprise the device <NUM>. Alternatively, the device <NUM> may be comprised in an external entity, e.g. a central server or a cloud server.

For example, the network gateway <NUM> may be one of an office router, a wireless access point, a wireless hot spot, a home router, a network bridge, a vehicular gateway, a smart home router, a cloud server, a software-defined network entity or a mobile device, e.g. a mobile terminal, a smartphone or a tablet. For example, the network gateway may be configured to connect one or more users from a first network to a second network. For example, the at least one network interface <NUM> may be configured to communicate in the first network and in the second network. For example, the network gateway <NUM> may be configured to communicate using wired and/or wireless network access technologies.

In various examples, the at least one network interface <NUM> may be configured to communicate within wired networks and/or within wireless networks. For example, the at least one network interface <NUM> may be configured to communicate via Ethernet. Additionally or alternatively, the at least one network interface <NUM> may be configured to communicate via a wireless local area network (WLAN) and/or via a cellular mobile communication system. In general, the mobile communication system may, for example, correspond to one of the Third Generation Partnership Project (3GPP)-standardized mobile communication networks, where the term mobile communication system is used synonymously to mobile communication network. The mobile or wireless communication system may correspond to, for example, a 5th Generation system (<NUM>), a Long-Term Evolution (LTE), an LTE-Advanced (LTE-A), High Speed Packet Access (HSPA), a Universal Mobile Telecommunication System (UMTS) or a UMTS Terrestrial Radio Access Network (UTRAN), an evolved-UTRAN (e-UTRAN), a Global System for Mobile communication (GSM) or Enhanced Data rates for GSM Evolution (EDGE) network, a GSM/EDGE Radio Access Network (GERAN), or mobile communication networks with different standards, for example, a Worldwide Inter-operability for Microwave Access (WIMAX) network IEEE <NUM> or Wireless Local Area Network (WLAN) IEEE <NUM>, generally an Orthogonal Frequency Division Multiple Access (OFDMA) network, a Time Division Multiple Access (TDMA) network, a Code Division Multiple Access (CDMA) network, a Wideband-CDMA (WCD-MA) network, a Frequency Division Multiple Access (FDMA) network, a Spatial Division Multiple Access (SDMA) network, etc. In some examples, the at least one network interface <NUM> may be configured to communicate in a smart home communication network, e.g. using the ZigBee or Z-Wave protocol. For example, the at least one network interface <NUM> may comprise one or more inputs and/or outputs for receiving and/or transmitting information, which may be in digital (bit) values according to a specified code, within a module, between modules or between modules of different entities. In at least some examples, the at least one network interface <NUM> may correspond to a means for communication.

In examples the processing module <NUM> may be implemented using one or more processing units, one or more processing devices, any means for processing, such as a processor, a computer or a programmable hardware component being operable with accordingly adapted software. In other words, the described function of the processing module <NUM> may as well be implemented in software, which is then executed on one or more programmable hardware components. Such hardware components may comprise a general purpose processor, a Digital Signal Processor (DSP), a micro-controller, etc..

In various examples, the processing module <NUM> may be configured to execute the first software module and the second software module. Alternatively, the processing module <NUM> may be configured to partially execute the first software module and/or the second software module. The first software module and/or the second software module may be at least partially executed on a remote server. This may reduce a processing load of the network gateway and may enable providing additional functionality through the network gateway. For example, the processing module <NUM> may be configured to execute at least an interface portion of the first software module and/or of the second software module and delegate other portions of the first software module and/or of the second software module for execution on a remote device or server. Alternatively, the device <NUM> may be comprised in a server, and the network gateway <NUM> may be configured to execute at least the interface portion of the first software module and/or of the second software module and the processing module <NUM> may be configured to execute the other portions of the first software module and/or of the second software module.

In various examples, the gateway functionality may comprise transmitting data packets of one or more users from a first network to a second network. For example, the gateway functionality may comprise a routing of the data packets to a destination within the second network. The gateway functionality may comprise a routing of incoming packets from the second network to users within the first network. The gateway functionality may comprise performing network address translation to enable a routing of packets from the second network (e.g. the internet) to users of the first network (e.g. a local network). For example, the gateway functionality may comprise firewall functionality, e.g. to block at least some packets from the second network from reaching the first network.

In various examples, the first software module is an operating system or a pre-installed software package of the device <NUM>. For example, the first software module may at least comprise a plurality of software applications configured to provide the gateway functionality. Additionally, the first software module may comprise the operating system of the device <NUM> (or of the network gateway <NUM>). Alternatively, the processing module <NUM> may be configured to execute the operating system of the device <NUM> (or of the network gateway <NUM>), and to execute the first software module and the second software module encapsulated from the operating system. In some examples, the processing module <NUM> may be configured to provide a hypervisor environment, in which the first software module and the second software module are executed. For example, both the first software module and the second software module may comprise at least parts of an operating system of the device <NUM> (or of the network gateway <NUM>). In some examples, the processing module <NUM> may be configured to provide an environment for running one or more containers, e.g. containers according to specifications of the Docker project. The second software module may be or comprise such a container, e.g. a Docker container. The processing module <NUM> may be configured to provide operating system-level virtualization to enable one or more software modules, e.g. the first software module and/or the second software module, to be executed within the same operating system and mutually encapsulated and encapsulated from the operating system.

In various examples, the second software module may be one of an internet of things gateway, a smart home hub, a home server, a home security application, a face recognition application and a virus scanner. The second software module may extend the functionality of the network gateway and may avoid having to maintain additional network devices. For example, the second software module comprise its functionality within an encapsulated package, e.g. within a virtual machine or within a container of an operating system-level virtualization environment. For example, the second software module may comprise libraries required for executing the second software module. In at least some examples, the processing module <NUM> may be configured to execute software within a kernel level or within a user level. The processing module <NUM> may be configured to execute the second software module within the user level.

In various examples, the processing module <NUM> may be further configured to at least partially execute a third software module. The third software module may be encapsulated from the first software module and from the second software module. This may enable an execution of a plurality of additional software modules which are mutually encapsulated. For example, the third software module may be implemented similar to the second software module, and/or the processing module <NUM> may be configured to execute the third software module similar to the second software module. The encapsulation of the third software module from the first software module may be implemented similar to the encapsulation from the second software module to the first software module. In at least some examples, the second software module may be fenced off from the third software module. For example, the third software module may be configured to communicate with the second software module via the first software module.

The second software module is encapsulated from the first software module. For example, an address space of the second software module may be separate from an address space of the first software module. In at least some examples, the second software module may be blocked from write access and/or read access to the address space of the first software module. In at least some examples, the second software module may be blocked from access to hardware of the device <NUM> and/or of the network gateway <NUM>. The first software module being encapsulated from the second software module may correspond to the second software module being encapsulated from the first software module.

In various examples, the processing module <NUM> may be configured to sandbox the second software module within an execution environment of the first software module. This may encapsulate the first software module from the second software module. For example, the processing module <NUM> may be configured to provide an abstraction layer between an API (Application Programming Interface) call made by the second software module and an API of an operating system of the device <NUM> (e.g. the first software module) or of the network gateway <NUM>. For example, the processing module <NUM> may be configured to block a direct access of the second software module to an operating system of the device <NUM> (e.g. the first software module) or of the network gateway <NUM>. In various examples, the processing module <NUM> may be configured to contain the second software module within an encapsulated container.

In at least some examples, the processing module <NUM> may be configured to provide a software interface between the first software module and the second software module. The software interface may be used to encapsulate the first software module from the second software module and may be used to limit the access from the second software module to the first software module. For example, the software interface may comprise at least one element of the group of an API abstraction interface (e.g. an interface configured to provide an abstraction layer between an API call made by the second software module and an API of the first software module), a message passing abstraction interface, an inter-process communication abstraction interface, a socket communication abstraction interface and shared memory. For example, the software interface may provide an abstraction layer between (any) communication between the second software module and the first software module (e.g. the operating system of the device <NUM> and/or of the network gateway <NUM>).

In various examples, the processing module <NUM> may be configured to limit an access from the second software module to the first software module through the software interface. This may increase a security within the first software module. For example, the processing module <NUM> may be configured to block access of the second software module to one or more functionalities of the first software module through the software interface. For example, the processing module <NUM> may be configured to disallow an access to one or more API calls of the first software module for the second software module. Alternatively or additionally, the processing module <NUM> may be configured to provide dummy responses to one or more disallowed API calls of the second software module to an API of the first software module. For example, the processing module <NUM> may be configured to redirect a write access of the second software module to resources or functionalities of the first software module to a temporary storage (e.g. within volatile memory). The processing module <NUM> may be configured to limit the access from the second software module to the first software module through the software interface based on a plurality of access rights. This may enable both a fine-grained control over access rights and an inspection by a user, as to which access rights have been permitted. For example, the plurality of access rights may relate to whether the second software module is entitled to at least one element of the group of access to the internet, access to a wired network, access to a wireless network, access to a memory of the network gateway, access to smart home communication hardware of the network gateway, access to one of a plurality of APIs of the first software module, access to power management functionality of the network gateway and access to a display (e.g. a liquid crystal display or a light emitting diode display) of the network gateway. For example, the plurality of access rights may specify, whether the second software module is permitted access to a plurality of functionalities of the first software module. The plurality of functionalities of the first software module may comprise at least one element of the group of access to the internet, access to a wired network, access to a wireless network, access to a memory of the network gateway, access to smart home communication hardware of the network gateway, access to one of a plurality of APIs of the first software module, access to power management functionality of the network gateway and access to a display (e.g. a liquid crystal display or a light emitting diode display) of the network gateway.

In various examples, the processing module <NUM> may be configured to monitor an access from the second software module to the first software module through the software interface. This may enable monitoring that a privacy of a user of the network gateway is respected. For example, the processing module <NUM> may be configured to log access of the second software module to at least a subset of functionality of the first software module. Alternatively or additionally, the processing module <NUM> may be configured to scan data transmitted by the second software module for private information of a user of the network gateway, e.g. to identify an abuse of the private information. For example, the processing module <NUM> may be configured to determine a statistic of the access from the second software module to the first software module through the software interface, and to provide information related to the statistic (e.g. to an operator of a software marketplace providing the second software module, to enable the operator to discover malicious software).

In some examples, the processing module <NUM> may be configured to adjust an access limit and/or a monitoring of the access from the second software module to the first software module through the software interface based on an input of an operator. This may enable the operator (e.g. a user of the network gateway) to adjust the access rights or monitoring assigned to the second software module based on a compromise between functionality, privacy and security and/or based on a trust towards a provider of the second software module.

In various examples, the processing module <NUM> may be configured to obtain the second software module from a remote server <NUM>. For example, the remote server <NUM> may comprise a software market or software repository for software modules to use as the second software module. The processing module <NUM> may be configured to download the second software module directly from the remote server <NUM>. This may facilitate an access to the second software module and may further facilitate keeping the second software module updated. For example, the processing module <NUM> may be configured to download the software module over a secure connection, e.g. based on a secure hypertext transfer protocol (HTTPS). Alternatively, the processing module <NUM> may be configured to obtain the software module from the remote server via an intermediate device or storage, for example via a mobile device (e.g. a smart phone or a tablet computer) or via a personal computer (PC). In various examples, the processing module <NUM> is configured to obtain the second software module separately from the first software module. This may enable installing third-party software on the network gateway. For example, the processing module <NUM> may be configured to obtain the first software module and/or updates to the first software module (e.g. an operating system or pre-installed software of the device <NUM> or network gateway <NUM>) via an update functionality of the first software module and to obtain the second software module from a software store providing the second software module. In some examples, a provider of (updates for) the first software module may be different from a provider of (updates for) the second software module.

In some examples, the processing module <NUM> may be configured to obtain the second software module based on information related to software modules previously used by a user of the network gateway. This may enable transferring software modules a user is using at another network gateway to the network gateway <NUM>. For example, the processing module <NUM> may be configured to install and/or execute the second software module based on profile information of the user of the network gateway. For example, the user may supply the profile information to the network gateway when accessing the gateway (e.g. automatically or when logging into the network gateway).

In various examples, the processing module <NUM> may be configured to determine one or more capabilities required for executing the second software module. The processing module <NUM> may be configured to obtain the second software module if the device <NUM> or the network gateway <NUM> has the required capabilities. This may avoid installing incompatible software modules. For example, the second software module may comprise information related to the capabilities required for executing the second software module. The processing module <NUM> may be configured to obtain the information related to the capabilities required for executing the second software module before obtaining the second software module, and to obtain the second software module if the device <NUM> or the network gateway <NUM> has the required capabilities. For example, the processing module <NUM> may be configured to determine information related to one or more capabilities of the device <NUM> and/or of the network gateway <NUM>. The processing module <NUM> may be configured to compare the information related to one or more capabilities of the device <NUM> and/or of the network gateway <NUM> with the one or more capabilities required for executing the second software module. For example, the one or more capabilities of the device <NUM> and/or of the network gateway <NUM> may comprise information related to at least one element of the group of a supported wired networking technology, a supported wireless networking technology, a supported wireless smart home communication technology, an available storage space, an available memory, a processor architecture, an operating system version, a software library version and an amount of available processing power.

Alternatively or additionally, the processing module <NUM> may be configured to provide the information related to the one or more capabilities of the device <NUM> (or of the network gateway <NUM>) to the remote server <NUM>. The processing module <NUM> may be configured to obtain information related to one or more software modules from the remote server <NUM> based on the information related to the one or more capabilities of the device <NUM> (or of the network gateway <NUM>). For example, the one or more software modules may be suitable for execution by the processing module <NUM> based on the one or more capabilities of the device <NUM> (or of the network gateway <NUM>). The processing module <NUM> may be configured to obtain one of the one or more software modules from the remote server <NUM>. The processing module <NUM> may be configured to at least partially execute the one of the one or more software modules as the second software module. This may make it easier for a user of the network gateway to choose appropriate software modules for the network gateway.

In at least some examples, the processing module <NUM> may be configured to provide an interface for administering the device <NUM>. For example, the interface for administering the device <NUM> may be a web interface or an interface towards a mobile application of a mobile device. The processing module <NUM> may be configured to authenticate a user requesting to use the interface using a proximity sensor. This may facilitate an authentication of the user. For example, the proximity sensor may be one of a Near Field Communication (NFC) sensor, a Bluetooth sensor or an Radio Frequency Identification (RFID) sensor.

<FIG> further shows a block diagram of an example of an apparatus <NUM> for controlling a network gateway <NUM>. The apparatus <NUM> comprises at least one means for communication <NUM> configured for communicating in at least one computer network. The apparatus <NUM> further comprises a means for processing <NUM> configured for at least partially executing at least a first software module and a second software module. The first software module is configured to provide a gateway functionality of the network gateway <NUM> via the at least one means for communication <NUM>. A functionality of the second software module is different from the gateway functionality of the first software module. The second software module is encapsulated from the first software module.

<FIG> shows a block diagram of an example of a router 100a comprising the device <NUM> or the apparatus <NUM>, e.g. the device <NUM> or the apparatus <NUM> introduced in connection with <FIG>. Enabling an execution of the second software module on a home router may dispense with the need for additional devices, e.g. as smart home hubs or controllers. For example, the router 100a may be one of a home router, a mobile router (e.g. a mobile hotspot) and an office router. For example, the router 100a may be example of the network gateway <NUM>.

More details and aspects of the router 100a are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The router 100a may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

<FIG> shows a block diagram of an example of a mobile device 100b comprising the device <NUM> or the apparatus <NUM>, e.g. the device <NUM> or the apparatus <NUM> introduced in connection with <FIG>. A functionality of the mobile device, e.g. a mobile hotspot, may be extended by the second software module, e.g. to provide conferencing or collaboration functionality to a group of mobile users. For example, the mobile device 100b may be a mobile hotspot or a mobile relay station (e.g. a femtocell or a picocell). For example, the mobile device 100b may be example of the network gateway <NUM>.

More details and aspects of the mobile device 100b are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The mobile device 100b may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

<FIG> shows a block diagram of an example of a vehicular gateway 100c comprising the device <NUM> or the apparatus <NUM>, e.g. the device <NUM> or the apparatus <NUM> introduced in connection with <FIG>. This may enable additional functionality within the vehicle, e.g. a vehicle collaboration or video game platform. For example, the vehicular gateway 100c may be a mobile hotspot located within a vehicle, or a mobile relay station of a vehicle. For example, the vehicular gateway 100c may be example of the network gateway <NUM>.

More details and aspects of the vehicular gateway 100c are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The vehicular gateway 100c may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

<FIG> shows a block diagram of an example of a cloud server 100d comprising the device <NUM> or the apparatus <NUM>, e.g. the device <NUM> or the apparatus <NUM> introduced in connection with <FIG>. This may enable a provision of network functionality, e.g. of a local server, while using the resources of the cloud server. For example, the cloud server 100d may be one of a server hosted in a data canter or a virtual appliance hosted within a data center. For example, the cloud server 100d may be located separate from the network gateway <NUM>.

More details and aspects of the cloud server 100d are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The cloud server 100d may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

<FIG> shows a flow chart of an example of a method for controlling a network gateway <NUM>. For example, the method may be executed by the processing module <NUM> of the device <NUM> introduced in connection with <FIG>. For example, the network gateway <NUM> may be implemented similar to the network gateway <NUM> introduced in connection with <FIG>.

The method comprises at least partly executing <NUM> at least a first software module and a second software module. The first software module is configured to provide a gateway functionality of the network gateway <NUM>. A functionality of the second software module is different from the gateway functionality of the first software module. The method further comprises encapsulating <NUM> the second software module from the first software module.

More details and aspects of the method are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The method may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

<FIG> illustrates an example of a server <NUM> and of a server apparatus <NUM>. In the following, multiple examples will be described in detail. The described server <NUM> corresponds to a server apparatus <NUM>. The components of the server apparatus <NUM> are defined as component means, which correspond to the respective structural components of the server <NUM>.

<FIG> illustrates a block diagram of an example of a server <NUM>. The server <NUM> comprises at least one interface <NUM> configured to communicate with a device <NUM> of a network gateway <NUM>. The device <NUM> and/or the network gateway <NUM> may be implemented similar to the device <NUM> and/or the network gateway <NUM> introduced in connection with <FIG>. The server <NUM> further comprises a control module <NUM> configured to maintain a plurality of software modules. At least a subset of the plurality of software modules are suitable to be executed by the device <NUM>. The control module <NUM> is further configured to receive a download request related to a software module of the plurality of software modules for the device <NUM> via the at least one interface <NUM>. The control module <NUM> is further configured to provide the software module for the device <NUM> via the at least one interface.

The server may provide a software market or repository of software modules to be executed by the network gateway, which may extend the functionality of the network gateway.

In various examples, the control module <NUM> may be configured to manage and/or provide the plurality of software modules. For example, the plurality of software modules may be a plurality of software applications accessible through a software marketplace implemented by the server <NUM>. In at least some examples, the server <NUM> may be a server of a software marketplace or of an online software store. For example, the server <NUM> may be configured to provide an online storefront for software modules for a user of the network gateway <NUM>. In various examples, the server <NUM> may be used as an online market for software modules. For example, the maintaining of the plurality of software modules may comprise providing the plurality of software modules to download for the network gateway <NUM>.

In various examples, the subset of the plurality of software modules may be used as the second software module or the third software module by the device <NUM>. For example, the plurality of software modules may be software modules suitable to be executed by a network gateway. For example, the plurality of software modules may comprise at least element of the group of an internet of things gateway, a smart home hub, a home server, a home security application, a face recognition application and a virus scanner.

In at least some examples, the download request may comprise information related to a title, information related to a locator or information related to an identifier for the software module. Alternatively or additionally, the download request may comprise information related to installed software modules, and the control module <NUM> may be configured to determine one or more software modules of the plurality of software modules requiring an updated version of the respective software modules. The control module <NUM> may be configured to determine the software module requested through the download request, and to provide the determined software module via the at least one interface <NUM>.

In at least some examples, the control module <NUM> may be configured to obtain information related to one or more capabilities of the device <NUM> from the device <NUM>. The control module <NUM> may be configured to provide information related to one or more software modules of the plurality of software modules to the device <NUM> based on the one or more capabilities of the device <NUM>. For example, the control module <NUM> may be configured to choose the one or more software modules based on the one or more capabilities of the device <NUM>, e.g. to select software modules suitable for execution by the device <NUM>. For example, the control module <NUM> may be configured to query a database for software modules based on the one or more capabilities of the device. This may enable providing information related to the software modules, that the network gateway may be capable of executing, reducing frustration for the user.

In various examples, the control module <NUM> may be configured to directly transmit the software module to the device <NUM>. For example, the device <NUM> may be configured to directly download the software module from the server <NUM>. Alternatively, the control module <NUM> may be configured to indirectly provide the software module for the device <NUM> via an intermediate device or storage, e.g. via a download page or via a smartphone, tablet or PC of a user of the network gateway <NUM>.

The at least one interface <NUM> may correspond any means for communication, e.g. to one or more inputs and/or outputs for receiving and/or transmitting information, which may be in digital (bit) values according to a specified code, within a module, between modules or between modules of different entities. In examples the control module <NUM> may be implemented using one or more processing units, one or more processing devices, any means for processing, any means for controlling, such as a processor, a computer or a programmable hardware component being operable with accordingly adapted software. In other words, the described function of the control module <NUM> may as well be implemented in software, which is then executed on one or more programmable hardware components. Such hardware components may comprise a general purpose processor, a Digital Signal Processor (DSP), a micro-controller, etc..

<FIG> further shows a server apparatus <NUM>. The server apparatus <NUM> comprises at least one means for communication <NUM> configured for communicating with an apparatus <NUM> of a network gateway <NUM>. The apparatus <NUM> may be implemented similar to an apparatus <NUM> introduced in connection with <FIG>. The server apparatus <NUM> further comprises a means for controlling <NUM> configured for maintaining a plurality of software modules. At least a subset of the plurality of software modules are suitable to be executed by the apparatus <NUM>. The means for controlling <NUM> is further configured for receiving a download request related to a software module of the plurality of software modules for the apparatus <NUM> via the at least one means for communication <NUM>. The means for controlling <NUM> is further configured for providing the software module for the apparatus <NUM> via the at least one means for communication <NUM>.

<FIG> further shows a system comprising the server <NUM> or the server apparatus <NUM> and the network gateway <NUM> with the device <NUM> or with the apparatus <NUM>.

More details and aspects of the server <NUM> and/or of the server apparatus <NUM> are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The server <NUM> and/or the server apparatus <NUM> may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

<FIG> shows a flow chart of an example of a server method (e.g. for a server <NUM> as introduced in connection with <FIG>). The server method comprises maintaining <NUM> a plurality of software modules, wherein at least a subset of the plurality of software modules are suitable to be executed by a network gateway <NUM>. The server method further comprises receiving <NUM> a download request related to a software module of the plurality of software modules for the network gateway <NUM>. The server method further comprises providing <NUM> the software module for the network gateway <NUM>.

More details and aspects of the server method are mentioned in connection with the proposed concept or one or more examples described above (e.g. <FIG>). The server method may comprise one or more additional optional features corresponding to one or more aspects of the proposed concept or one or more examples described above or below.

At least some examples provide a customer premise equipment (CPE, e.g. the network gateway <NUM> introduced in connection with <FIG>) software store. The CPE software store may be implemented by the server <NUM> introduced in connection with <FIG>. At least some CPEs may comprise a powerful processor, that may be suitable to process different types of applications. At least some applications may be executable on different gateways, such as Face recognition and home security gateways. These applications may in some systems be installed on the gateways in their release depending on customer requirement.

At least some examples may be based on providing a (global) application software market for Gateways, e.g. where an end user will have the ability to buy, download and install various application on his own smart gateway.

This may in some examples require modification in the gateway software stack, in order to enhance the security on the gateway with the installed applications and to be adapted to the new environment.

At least some examples may provide a software market for all types of smart gateways as home gateways and gateways in automotive, which end users may access in an easy way to install various applications on it. Since a sizeable portion of the CPE market is based on the OpenWrt project, it may be useful to have a software market that supports different types of platforms. The concept may further support running or installing Windows or Linux operating systems smart gateways (e.g. as second software module).

In some systems, the application provided to a network gateway may depend on customer's requirements. Application or hardware developers might also target the end user by providing them the capability to download different application (e.g. second software modules) that may not be provided by their ISPs (Internet Service Providers). In some systems, end user might not be able to install various application on their gateways.

At least some examples may enable developing a software market that targets all types of gateways.

<FIG> shows a schematic diagram of various types of (smart) gateways and how applications can be installed. The end user may have the ability to install application on this gateway through various interfaces:
For example, a software market for smart gateways <NUM> may provide software modules via the cloud <NUM> to a plurality of smart gateways, e.g. smart home gateways <NUM>, <NUM> and <NUM> and a smart gateway inside a car <NUM>. For example, the smart home gateway <NUM> may be configured to execute <NUM> an application (e.g. a second software module) to serve an educational building, which may be accessed by a user using a (mobile) computer. The smart home gateway <NUM> may be configured to execute <NUM> an application (e.g. a second software module) to serve a smart home, which may be accessed by a user using a smart television. The smart gateway inside the car <NUM> may be configured to execute <NUM> an application (e.g. a second software module) to serve the automotive industry, which may be accessed using a mobile device. The smart home gateway <NUM> may be configured to execute <NUM> an application (e.g. a second software module) to serve an office building, which may be accessed using a mobile device.

<FIG> shows a schematic flow chart of exemplary methods for installing applications (e.g. the second software module) on the gateway (e.g. the network gateway <NUM>), e.g. by end users on the target gateway.

User may for example install an application the gateway once he is connected through it by doing the following:.

Gateways, e.g. network gateways <NUM> as introduced in connection with <FIG>, may comprise home gateways and automotive gateways (e.g. an access point inside a car).

These changes may require modifications in the smart gateway software by adding specific layer in order to adapt the gateway for the installed applications that can run on different platforms on it. <FIG> shows a block diagram of layers used in executing the second software module, e.g. a newly introduced application engine layer <NUM>. The application engine layer <NUM> is separated. As shown in <FIG>, a new layer <NUM> may be added in the gateway. The application engine layer is separated from the application layer <NUM> using a software interface providing either limited access <NUM> or full access <NUM>. The application layer may provide access to the physical layer <NUM> (e.g. provide gateway functionality) This added layer <NUM> may provide several functionalities, such as:.

This layer may also be used also in virtual cloud gateways, where the applications data running on the cloud can go through this layer to take security actions and make sure that these application are granted to access the gateway.

Furthermore, all examples recited herein are principally intended expressly to be only for pedagogical purposes to aid the reader in understanding the principles of the disclosure and the concepts contributed by the inventor(s) to furthering the art.

Functions of various elements shown in the figures, including any functional blocks labeled as "means", "means for providing a sensor signal", "means for generating a transmit signal. ", etc., may be implemented in the form of dedicated hardware, such as "a signal provider", "a signal processing unit", "a processor", "a controller", etc. as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which or all of which may be shared. However, the term "processor" or "controller" is by far not limited to hardware exclusively capable of executing software, but may include digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), read only memory (ROM) for storing software, random access memory (RAM), and non-volatile storage.

Claim 1:
An apparatus (<NUM>) for controlling a network gateway (<NUM>), comprising
at least one means for communication (<NUM>) configured for communicating in at least one computer network; and
a means for processing (<NUM>) configured for at least partially executing at least a first software module (<NUM>) and a second software module (<NUM>), wherein the first software module (<NUM>) is configured to provide a gateway functionality of the network gateway (<NUM>) via the at least one means for communication (<NUM>), wherein a functionality of the second software module (<NUM>) is different from the gateway functionality of the first software module (<NUM>), and wherein the second software module (<NUM>) is encapsulated from the first software module by providing a software interface (<NUM>; <NUM>) between the first software module (<NUM>) and the second software module (<NUM>),
wherein the means for processing (<NUM>) is configured for limiting an access from the second software module (<NUM>) to the first software module (<NUM>) through the software interface (<NUM>; <NUM>) based on a plurality of access rights.