6. OS Kernel
Unikernels as Processes*のアイソレーションモデル
従来のコンテナ Unikernels as Processes
OS Kernel
スコープ外の資源アクセスが
システムコール呼出レベルで
不可能
必要最小限(300超中7つ)以外
のシステムコール呼出を禁止
システムコール
システムコール
*Williams, et al. SoCC 2018
syscall
filter
app app
隔離されたリソース
7. OS Kernel
Unikernels as Processesの制限
従来のコンテナ Unikernels as Processes
OS Kernel
open
open
read syscall
filter
open
mmap open
mmap
同じファイルを
open
openは不許可
共有領域
app appappapp
動的なプロセス間通信が不可能
隔離されたリソース
8. 提案:
Inter-Unikernel-as-Process Communication (IUPC)
Unikernel as Process間のメモリ共有を実現
• openを使用しない強固なアイソレーション
• メモリ共有による高速なプロセス間通信
clock_gettime
ppoll
read
write
pread64
pwrite64
exit_group
recvmsg
close
mmap
munmap
従来のUnikernel as Processで
許可されているシステムコール
+
openは許可しない
新規に許可する
システムコール
app
A
app
B
openopen
syscall
filter
Unikernels as Processesでは、動作をするために許可されているシステムコールが、Linuxの300を超えるシステムコールのうち7つと必要最小限にしぼられており、それ以外のシステムコール呼出がすべて禁止されております。
そのおかげで、Unikernels as Processesでは、スコープ外の資源へのアクセスを特定のシステムコール呼出を禁止するという方法でアイソレーションを実現しております。
Unikernels as Processesというプロセスのアイソレーション手法
7つのLinuxシステムコールで動き、それ以外のシステムコールはブロックできる
システムコールの種類レベルの制御による高い信頼性