iOS Sidecar Networking App

This project developes and evaluates an ios application using the Envoy Mobile proxy to connect ios devices to a sidecar network.

Sidecar networking

Sidercar networking is a general purpose networking architechture comprised of device-resident proxies. The sidecar overlay can manage end-to-end traffic flow starting from end-user devices by employing a variety of proxying and tunneling techniques along with deferred name resolution. These capabilities address challenges end-users face, including those related to end-to-end traffic management and routing, user mobility, and compatibility with legacy applications and protocols. Additionally, a sidecar overlay can act as an underlying network for future experimental networking architectures, facilitating their development and usage. The purpose of this project is to connect ios devices into this new networking architechture.

Functionality

Back-end

This app creates a HTTP proxy by Envoy on the ios device. This Envoy proxy processes the packages from listener, and forward the packages to cluster. Envoy supports static and dynamic resources (listener and cluster). This app provides static configuration and dynamic configuration for users. Static configuration is hard-coded both listener and cluster. Dynamic configuration receives the Envoy configuration from a xDS (X Discovery Service). User need to provide the address of the xDS cluster.

Listeners in Envoy are crucial for accepting and handling incoming connections. They define the address and port for the connections, specify the network protocols, apply filter chains to process the traffic, and manage traffic routing, logging, and security policies such as TLS termination.

Clusters in Envoy serve as the logical representation of upstream services, enabling Envoy to route requests efficiently and reliably. They provide service discovery, load balancing, health checking, security, and resiliency features, ensuring robust and scalable communication with backend services.

Front-end

This app is designed to configure and manage the envoy proxy. It is composed of three main screens: Service Configuration (Static and Dynamic) and Logs Screen.

Service Configuration

  1. Navigate to the Static or Dynamic tab based on the type of configuration you want to set.
  2. Fill in the required fields. For static, Envoy configuration is hard-coded, we just need to provide the name of the proxy server. For dynamic, the listener port is hard-coded, we need to provide the address of xds (X Discovery Service).
  3. Once the fields are filled, press the “START SERVICE” button to start the service, press the “STOP SERVICE” button to stop the service.

Viewing and Managing Logs

  1. Navigate to the Logs screen to view the logs generated by the Envoy.
  2. You can search for specific information with the search window. The search is based on word matching.
  3. To clear the logs, press the “CLEAR LOG” button.