---
# System prepended metadata

title: 'IX: A Protected Dataplane Operating System for High Throughput and Low Latency'

---

# IX: A Protected Dataplane Operating System for High Throughput and Low Latency

###### paper origin: OSDI '14
###### paper: [link](https://dl.acm.org/doi/10.5555/2685048.2685053)

### Motivation
* An OS which can support datacenter application
    * large concurrent TCP connections
    * high packet rates with small packet size
    * low tail latency

### Problem
* Network performance on commodity OS can't catch up with hardware (40Gbps, 100Gbps, ..), since it's designed based on below asumptions :
    * multiple applications share a single CPU core
    * packet inter-arrival times being many times higher than the latency of interrupts and system calls
* On software side, code paths are convoluted by interrupts and scheduling

### Solution
* High-level overview
![](https://i.imgur.com/BdPCL4S.png)
* Flow consistent haching, no synchronization or coherence traffic between cores
* Run-to-completion, improve data-cache locality and remove scheduling
* Adaptive batching (any to maximum batch size)
* Zero copy between user space applications & network stack

### Implementation
* OS model
    * Based on Dune, utilize VT-x virtualzation
    * Each IX dataplane supports a single, multi-threaded application
    * Require Intel DPDK and a supported Intel NIC :
        * Intel 82599
        * Intel X520
        * Intel X540

![](https://i.imgur.com/MhE4DXK.png)

* Execution flow (run-to-completion + adaptive batching)
![](https://i.imgur.com/XdyFbKn.png)

### Evaluation
* Single flow TCP, using Netpipe (synchronously echo packets)
    * IX (polling + run-to-completion) is better than Linux (interrupt)
    * mTCP is the worst since it uses agressive batching
![](https://i.imgur.com/f6JoDjY.png =460x)

* Multiple flow TCP, using Netpipe (1 server, 18 client machines)
![](https://i.imgur.com/u8UzUAR.png =460x)![](https://i.imgur.com/BUOLOPa.png =340x) ![](https://i.imgur.com/d9JMCPS.png =340x)

* Connection scalability, limited by multiplexing among open connections
![](https://i.imgur.com/k6J65aD.png =480x)

* Memcached performance (an in-memory, key-value store framework)
    * ETC workload : 20B-70B keys, 1B-1KB values, 75% GET request
    * USR workload : < 20B keys, 2B values, 99% GET request

![](https://i.imgur.com/lMoF2Hq.png)
![](https://i.imgur.com/NZM1OGf.png =420x)