Application Isolation
Background
Application running on GEISA need separation / isolation from each other to ensure that one application doesn’t impact another. While some level of resource management and process isolation is provided by most operating systems, this isn’t robust enough to for GEISA.
There are several methods for providing advanced isolation including:
Containers
Virtual Machines / Hypervisors
Virtual Execution Environments (e.g. Java’s JVM, Erlang’s BEAM, .Net’s CLR)
Amazon’s Firecracker team released a whitepaper on their efforts which includes a helpful discussion of the advantages and disadvantages of these approaches.
Containers as an Isolation Mechanism
Based on the 1st Deep Dive Technical Workshop, the GEISA members have decided to that Container architecture would be the recommended architecture going forward as part of the initial GEISA 1.0 specification. Specific requirements of of the container isolation requirement will be further developed through follow-on discussions to be finalized in this page, but discussions on how this decision came to be are documented here in the workshop notes.
Specification Requirements (Draft)
Permissions
Apps should run in independent processes
Apps must run with least privilege.
Apps access permissions should be deny by default
App-to-app communications will be denied by default
Apps cannot access other apps memory or other resources
Apps should not know about other apps unless explicitly informed
Apps access to the local file-system will be isolated / restricted
Performance:
Isolation Mechanism must be reasonably efficient
Apps cannot impact the performance or stability of the O/S
Apps cannot impact the performance or stability of other applications
System Control
System can control app-to-app communications.
System must be able to inspect and control application packet flows
An authenticated application manifest issued by the owner of the system will control access to resources including:
GPU
MPU
RAM
Storage
Amount of storage
Location of storage
Network Interfaces
Which interfaces (if any)
Instantaneous bandwidth
Average network volume over a period (e.g. 1 hour, 24 hours, etc.)
Direct versus Indirect access
Allowed destination addresses
Allowed destination ports
APIs
Actuator (if present)
Sensor
Register (if present)
Inter-App communications
Container Resource Management
Need mechanism for prioritization if there is resource contention.
Need mechanism for observing total load on a device to allow for management of the application portfolio.
Define Container Resource Limits
CPU limit (% of CPU)
Memory Limit (in 1 KB units)
Storage Limit (in 1 KB units)
Allowed Network Bandwidth (in 1 KB units)
Ongoing Limit Outbound
Ongoing Limit Inbound
Burst Limit Outbound
Allowed Network Interfaces
HAN
LAN
Define Container Access Levels:
Level 0 - Read & Control - Core Features - Immutable
Level 1 - Read & Control - Utility
Level 2 - Read Only