Slide 1

Slide 1 text

コンテナ型仮想化技術におけるネットワーク分離の研究事情
 2020/11/25
 
 Infra Study Meetup #8「インフラの研究開発」 LT
 1 
 chikuwait


Slide 2

Slide 2 text

わたしです
 2
 中田 裕貴 / chikuwait
 Twitter: chiku_wait GitHub: chikuwait
 
 ● 公立はこだて未来大学大学院システム情報科学研究科
 高度ICT領域 M1
 ● システムソフトウェア研究室
 ● クラウド基盤技術に関する研究
 ○ 主に仮想化技術(ハイパーバイザ,コンテナ)
 


Slide 3

Slide 3 text

コンテナ型仮想化技術のネットワーク分離では
 アカデミアではどんな研究がされているのか
 様々な論文を引用しながら
 手法について分類・紹介(したい)
 3

Slide 4

Slide 4 text

OSのブリッジ機能とNAT機能を利用した手法 
 e.g. Docker Bridgeモード
 4
 ● 仮想ネットワークインタフェース(veth)を
 各コンテナに対して提供
 ○ vethを介する通信をブリッジとNATで制御 
 
 ● ホスト環境(docker: net=host)と比べて,
 ネットワークI/O性能が低下[1][2]
 ○ パケット送受信時にデータパスが長くなる [3]
 
 
 eth0
 コンテナ
 ブリッジ
 … eth0
 veth
 コンテナ
 eth0
 veth
 NAT(iptables) 
 [1]Anderson, J., Hu, H., Agarwal, U., Lowery, C., Li, H. and Apon, A.: Performance considerations of network functions virtualization using containers, 2016 International Conference on Computing, Networking and Communications (ICNC), p 1-7 (2016).
 [2]Zhao, Y., Xia, N., Tian, C., Li, B., Tang, Y., Wang,Y., Zhang, G., Li, R. and Liu, A. X.: Performance of Container Networking Technologies, Proceedings of the Workshop on Hot Topics in Container Networking and Networked Systems, HotConNet '17, Association for Computing Machinery, pp. 1-6 (2017). 
 [3]Nakamura, R., Sekiya, Y. and Tazaki, H.: Grafting Sockets for Fast Container Networking, Proceedings of the 2018 Symposium on Architectures for Networking and Communications Systems, Association for Computing Machinery, pp. 1 (2018).
 コンテナ
 ブリッジ
 NAT
 eth0
 veth
 eth0
 Ethernet
 Ethernet
 IP
 アプリ
 TCP
 IP
 Ethernet
 ソケット


Slide 5

Slide 5 text

ネットワークI/O性能向上を目指した
 ネットワーク分離手法
 5
 
 1. 専用の制御コードをOSカーネル内で実行する手法(eBPF)
 e.g. cilium[4], Open vSwitch(AF_XDP)[5]
 
 2. I/O仮想化ハードウェアを使用した手法
 e.g. SR-IOV[6]
 
 3. OSカーネルをバイパスした手法
 
 4. 軽量なOS・OS機能の実装手法
 
 [4]Thomas, G.: KubeCon + CloudNativeCon Europe 2018,Cilium Accelerating Envoy with Linux Kernel, https://sched.co/EJAt ((Accessed on 08/26/2020)). 
 [5]William, T.: Open vSwitch 2018 Fall Conference, Fast Userspace OVS with AF XDP, https://www.openvswitch.org/support/ovscon2018/ ((Accessed on 08/26/2020)). 
 [6]Jun Nakajima,Building High-Performance NFV Solutions Using Containers,https://events.static.linuxfound.org/sites/events/files/slides/Jun_Nakajima_NFV_Container_final.pdf((Accessed on 11/23/2020)). 
 LTなのでこっちを一部だけ


Slide 6

Slide 6 text

OSカーネルをバイパスした手法:FreeFlow[7]
 6
 既存のOS機能を使った手法と比較して,スループットが最大14倍向上
 ● RDMA:別サーバのメモリに直接読み書き
 ○ ネットワークスタックをバイパスして, 
 処理をNICにオフロードして高性能化 
 
 ● アプリケーションが使用するバッファをFreeFlowが 
 複製し,物理NICが複製されたバッファに対して読み書き 
 ○ 複数のコンテナがRDMAを使うことを実現 
 
 ● https://github.com/microsoft/Freeflow 
 
 
 
 
 [7]Kim, D., Yu, T., Liu, H.H., Zhu, Y., Padhye, J., Raindel, S., Guo, C., Sekar, V. and Seshan, S.: FreeFlow: Software-based Virtual RDMA Networking for Containerized Clouds, In 16th USENIX Symposium on Networked Systems Design an Implementation (NSDI 19), pp. 113-126(2019). 
 RDMA NIC
 
 FreeFlow
 ルータ
 … コンテナ
 vNIC
 アプリ
 バッファ
 複製
 バッファ
 コンテナ
 vNIC
 アプリ
 バッファ
 複製
 バッファ
 データ バッファ
 Packet
 Processer
 コマンド Read/write

Slide 7

Slide 7 text

データパスを短くし,スループット,レイテンシ共に
 ホストのネットワークスタックを使用した場合と同等の性能を実現
 
 ● コンテナ内アプリケーションがソケットを開き, 
 ホストで開いたソケットに接ぎ木 
 ○ AF_GRAFTという新しいアドレスファミリで実現 
 
 ● AF_INETなどを使う既存のアプリケーションが 
 AF_GRAFTを使用するために,
 socket()などをフックして変換
 
 ● https://github.com/upa/af-graft
 軽量なOS・OS機能の実装手法:Socket-Grafting[8]
 7
 AF_GRAFTのデータパス[9] [8] Nakamura, R., Sekiya, Y. and Tazaki, H.: Grafting Sockets for Fast Container Networking, Proceedings of the2018 Symposium on Architectures for Networking and Communications Systems, Association for Computing Machinery, pp. 1 (2018).
 AF_GRAFTのデータパス(赤線) [8]

Slide 8

Slide 8 text

おわりに
 8
 ● コンテナ型仮想化技術におけるネットワーク分離手法は,
 OSSだけではなく,アカデミアでも活発
 ○ コンテナがHPCやNFVで用いられているようになり,それらで用いられる 
 カーネルバイパスなどの高速化手法を用いる例が多い(気がする) 
 ○ 実装や評価も結構面白いのでGoogle Scholarとかで色々探してみてください 
 ○ ossとして公開されることも多い
 
 ● インフラエンジニアの人でもシステムソフトウェア分野で
 読んでみたら面白そうな国際会議の一例(主観)
 ○ USENIX OSDI,ATC,NSDI
 ○ Unix User Groupが起源なのもあってか,著名システムや実装の面白い論文も多々ある 
 ■ VMware ESX(OSDI ‘02),Firecracker(NSDI’20) などなど 
 
 おしまい