Connectivity Management

The connectivity management service allows for two main functions relating to establishing and monitoring connectivity, namely:

  • Centralized reporting of connectivity status

  • Routing of internet traffic using per-consumer priority routing to allow for different routing for different usages.

Routing

The connectivity management service introduces two concepts for defining how network traffic is routed

consumer

An entity in the system that consumes connecitivty, meaning it generates IP traffic and responses.

The consumers in the system are the User VM, the base system and the WiFi AP (access point)

provider

An entity in the system that provides connecitivty, meaning it takes IP traffic and sends it out to internet over some external channel.

The providers in the system are Modem primary APN (modem 1), Modem secondary APN (modem 2) and the Wifi station connection.

In short the routing works by connecting each consumer to one or more providers via a priority based router, where the provider with the lowest configured priority that is connected will be used for any traffic originating from that consumer.

A graphical representation of these connections can be seen below.

digraph "connectivity-routing" { graph [nodesep=1, pad=0.5, rankdir="LR"]; PrioRouter1 [label="Prio router", shape=diamond]; PrioRouter2 [label="Prio router", shape=diamond]; PrioRouter3 [label="Prio router", shape=diamond]; Modem1 [label="Modem 1", shape=rect]; Modem2 [label="Modem 2", shape=rect]; WifiSTA [label="WiFi Station", shape=rect]; GuestSystem [label="User VM", shape=rect]; BaseSystem [label="Base system", shape=rect]; WifiAP [label="WiFi AP", shape=rect]; PrioRouter1 -> Modem1 PrioRouter1 -> Modem2 PrioRouter1 -> WifiSTA PrioRouter2 -> Modem1 PrioRouter2 -> Modem2 PrioRouter2 -> WifiSTA PrioRouter3 -> Modem1 PrioRouter3 -> Modem2 PrioRouter3 -> WifiSTA GuestSystem -> PrioRouter1 BaseSystem -> PrioRouter2 WifiAP -> PrioRouter3 }

Connectivity routing

Default configuration

The default configuration is as follows, matching the behaviour before the connectivity manager was introduced.

Consumer

Provider priority

Modem 1

Modem 2

Wifi STA

User VM

1

Off

0

Base system

1

Off

0

WiFi AP

Off

Off

Off

Configuring routing

The way the user application can confiure the routing is by using the ipc_connectivity_configure_consumer_req AIPC message. The IPC message configures the priority router associated with a given consumer and thus enables/disables state and priority for all the providers in a single call.

acu6-demos layer also contains a demo application called connectivity-demo that can be used to configure the connectivity manager.

Note

The API will not allow to disable base system connecitivty via modem 1 provider. This is to ensure that the system can maintain a connection with the device manager for remote updates and management.

Example configurations

Configuration of routing can be complicated and there are many combinations.

One possible usage is to configure the Wifi AP to provide internet connecitivty via the primary modem connection, thus functioning as a hotspot. This can be accompished via demo apps similarly to the below:

$ # Enable the Wifi AP
$ wifi-demo wifi-ap-request demo
$ wifi-demo wifi-ap-configure testnet veryhardpassword
$ # Setup routing for Wifi AP
$ connectivity-demo -c configure -s wifiap -m 1

Stauts monitoring

An application can monitor the status and currently selected provider for each consumer by subscribing to the ipc_msg_connectivity_consumer_status_subscribe indication messages.

Reference

Connectivity API Reference