Harmonizing Performance and Isolation in Microkernels with Efficient Intra-kernel Isolation and Communication

Ahn9807 (토론 | 기여)님의 2023년 2월 3일 (금) 11:49 판 (새 문서: 분류: 시스템 논문 USENIX ATC 2020 == Paper summary (How paper express it's thought) == 이 논문은 micro kernel의 본질적인 문제 였던, IPC Cost를 MPK를 통해서 최소화한 Paper이다. 기존의 Micro kernel은 Server domain이 User space에서 작동하였다. 그러나 이 논문은 Server process를 Kernel에 있을 수 있도록 하고, 그 경우에는 Protection는 MPK를 통해서 함으로써, IPC Cost를 줄이고, User Kernel Migration을...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


USENIX ATC 2020

Paper summary (How paper express it's thought)

이 논문은 micro kernel의 본질적인 문제 였던, IPC Cost를 MPK를 통해서 최소화한 Paper이다. 기존의 Micro kernel은 Server domain이 User space에서 작동하였다. 그러나 이 논문은 Server process를 Kernel에 있을 수 있도록 하고, 그 경우에는 Protection는 MPK를 통해서 함으로써, IPC Cost를 줄이고, User Kernel Migration을 효율적으로 하는 것을 목적으로 하였다. 그렇게 함으로써 발생하는 여러 문제들을 분석하였고 해결방안을 제시하였다.

  1. Introduction: 이 부분에서는 전반적인 Background 설명과 논문이 다룬 점을 개략적으로 소개하고 있다.
  2. Motivation: 이 Paper는 Motivation에서 1. IPC가 느린 이유, 2. IPC가 느린 경우에 발생하는 이유를 구체적인 Evaluation과 함께 제시하고 있다. IPC에 이중의 Context change가 발생한다는 문제는 Microkernel에서 널리 알려진 문제로써, IPC Cost를 해결하는 것은 납득 가능한 문제인 것 같다. 그후 Intel MPK에 대한 간단한 설명과, 기존 방식들 (SFI, VMFUNC)에 대한 문제점을 간단한 Evaluation table과 함께 설명하며 왜 MPK를 통한 IPC가 우수한지를 설득하고 있다.
  3. Design: Under bridge에서 왜 Kernel level로 내려야 하는 가에 대한 이유로 Page table에 대한 이야기를 하는데, 핵심이 되는 IPC가 커널에서 수행되어야 만 하는 이유 치고 단락이 매우 빈약해 Evaluation이 부족해 보였다. 구체적인 수치로 얼마나 Page table이 커지는지 커진다면, 얼마나 느려지는 지에 대한 이유가 필요해 보인다. (특히 Hodor와 같은 경우에는 User application사이의 Isolation이라서 더욱더 부적절해 보인다.) Microkernel이 Kernel-Server IPC는 MPK로 수행하는 이유가 설명되지만, 위의 기존 Work간의 차별성을 설명하는 부분이 부족해 보인다.
  4. Execution Domains와 Server Migration, IPC Gates: 일반적인 구현을 다루고 있음으로 Comments 없음.
  5. Server Migration: 이 파트에서 저자는 Major weakness인 15개의 IPC제한이 어느정도 이 방식을 통해서 극복할 수 있다는 점과, Server migration이 저자가 생각하기에는 잘 일어나지 않을 것이라는 점을 들어서 이 Major weakness를 회피하고 있다.
  6. Enforcing Isolation in UnderBridge: 두가지 문제점을 들어서 Kernel에서 MPK를 사용하였을 경우 발생 할 수 있는 문제를 설명하고 있다. 한가지 의문이 들지만 설명하지 않은 부분은 PKRU가 VMEXIT보다 빨라서 이걸로 IPC를 한다고 했는데, 만약 VM을 사용하여서 저런 명령어를 방어한다면, 그에 따른 Cost는 어떻게 되는지 설명했으면 좋을 것 같다는 생각을 하였다. (Evaluation 에서 두루뭉실하게 설명함.). 약점이 될 수 있는 부분을 방어한 것인가?
  7. Security Analysis: 이 단락에서는 조직적으로 어떻게 발생할 수 있는 예측되는 Security문제들을 해결 할 수 있는지 서술하고 있다.
  8. Evaluation: MPK를 사용함으로써 얻을 수 있는 이득을 IPC Cost관점에서 서로 다른 Microkernel 그리고 Monolithic kernel에 적용하여 비교 하고 있다. IPC 성능 관점에서 Micro bench, Macro bench모두 적절하게 설명하고 있는 것 같다.
  9. Related Work: 백그라운드를 설명하면서 왜 UnderBridge가 왜 우수하고 좋은 지 다시한면 설명하고 있다.

Strengths

  1. Intel MPK를 In kernel isolation에 다룸으로써 IPC성능관점에선 최고의 성능 향상을 이룸
  2. MPK를 Kernel에서 사용함으로써 발생하는 여러 문제들을 잘 해결하고 설명함
  3. Evaluation을 조직적으로 충분한 엔지니어링을 통해서 실증함
  4. 전체적으로 매끄러운 논문의 흐름

Major weakness

  1. Limited MPK Allocation, MPK가 16개만 할당할 수 있고 특히 0을 Kernel side로 Preserve되어야 한다. 즉 이 방식을 사용하면 오직 15개의 Concurrent한 서버만 작동 시킬 수 있다. 만약 Migration이 일어난다고 하면, 기존의 Microkernel과 같은 IPC Cost를 가지게 된다. 저자는 Migration이 잘 일어나지 않는 다는 점을 들어서 보강하고 있다.
  2. 기존의 IPC Work과 비교했을 때, VMFUNC를 MPK로 바꾸고 그에 따른 부작용들을 해결하기 위한 잘 알려진 방법들을 소개한 듯한 느낌이다. 즉 주된 아이디어는 MPK를 사용해서 IPC를 빠르게 하자 인데, 이 아이디어는 Novelty가 떨어지는 느낌이 있다. 저자는 Introduction에서 왜 IPC를 줄여야 하는지를 집중적으로 설명함으로써 IPC Cost를 줄이는 것이 매우 중요함을 강조 하고 있다.
  3. MPK를 Kernel address에서 사용하는 것이 올바른 지를 확신할 수 가 없다. MPK를 Kernel address에서 사용하는 것의 Critical한 장점이 뭔 지를 모르겠다. PKS를 사용하지 않은 이유가 있는가? 모든 Application의 실행마다 PKRU 검사를 해야 하는데 이렇게 까지 할 가치가 있는가?
  4. Hodor랑 비교했는데, Hodor는 User space에서 Isolation을 하기 위한 방법으로 Microkernel에서의 Isolation과는 완전히 다르다. 기존의 User space Application을 MPK로 분리하기 위한 Work들은 많은데, 기존의 Work과 비교했을 때 차별성을 찾을 수 있는가? 그냥 단순히 기존 Work들을 Kernel side에 적용한 것은 아닌가?
  5. SPDK와 같은 Kernel bypassing 방식과 비교했을 때 Microkernel을 통해서 MPK를 사용해야 하는 이유가 서술되어 있지 않음
  6. MPK를 In-kernel에서 사용하는 여러 논문들이 기존 Work로 있는데, 초점만 다를 뿐 같은 구현이라는 느낌을 저버릴 수 없음. (In kernel isolation과는 다른 관점의 MPK사용 방식이라는 점으로 저자는 기존의 방식과 이 방식을 구분 짓고 있다. 또한 기존의 In kernel isolation논문들은 MPK를 Kernel에서 사용함으로써 발생하는 문제들을 다루지 않거나, 아니면 쉽게 넘어갔다는 문제가 있다. 그러나 이 논문은 이러한 문제들을 모두 다루면서 해결책을 제시 하였다.)

Overall merit

Weak accept

MPK를 이용해서 IPC Cost를 줄일 수 있다는 것은 Microkernel의 주된 단점이 IPC Cost를 거의 완전히 없앨 수 있다는 점에서 흥미로워 보이며, MPK의 적절한 사용 예시가 될 수 있는 것 같다. 또한 IPC Cost를 줄일 수 있는 기존의 방법에 MPK와 같은 Hardware Memory Protection을 통해서 할 수 있다는 것을 제시하여 의의가 있었다. 그러나 SkyBridge와 같은 논문과 비교하였을 때 차별성이 부족해 보이고, 기존에 IskiOS처럼 In kernel isolation을 위해서 MPK를 사용한 논문이 있다는 점과 위에 설명한 많은 문제들 (Hardware memory protection으로 인해서 발생하는) 때문에 Strong accept를 주기에는 약간 힘들어 보인다고 생각한다.

Possible improvements

  1. VMFUNC나 Security때문에 희생한 Performance, overhead를 Evaluation 에서 설명하는 것이 필요해 보임
  2. 기존의 MPK In kernel isolation 기법과 비교하여 어떤 점이 Novel한 부분인지 보충 설명이 필요해 보임
  3. Under Bridge의 implementation 설명이 이해하기 어려웠음. 정확한 예시(코드)와 함께 설명하면 더욱 좋을 것 같다는 생각

Major reasons for accept

MPK를 사용하여서 In kernel isolation을 하는 Idea는 생각해 내기 쉬운 것 같다. 그러나 In kernel isolation에 대한 진부한 이야기 보다, Microkernel과 IPC Cost라는 조금 더 Specific하고 Novel한 분야에 적용한 것이 좋아 보였다. 그리고 예측 되는 Security 문제들을 일목요연하게 잘 정리하여서 어떻게 Defense하였는지 정리하여 읽기 편하였고, MPK를 Kernel에 사용하 였을 경우 어떻게 해야 하는지 예상되는 문제는 무엇인지 쉽게 이해할 수 있었다. 그리고 전반적으로 자신의 아이디어를 잘 Express하고 있으며 Introduction, Evaluation이 단단하여 주장을 잘 뒷받침 하는 것 같았다. 특히 Evaluation에서 충분한 Engineering work을 통해서 3개의 서로 다른 마이크로 커널에 적용한 부분을 높게 산 것 같다.

Major References

  1. Spyridoula Gravani, Mohammad Hedayati, John Criswell, and Michael L Scott. Iskios: Lightweight defense against kernel-level code-reuse attacks. arXiv preprint arXiv:1903.04654, 2019.
  2. Zeyu Mi, Dingji Li, Zihan Yang, Xinran Wang, and Haibo Chen. Skybridge: Fast and secure inter-process communication for microkernels. In Proceedings of the Fourteenth EuroSys Conference 2019, EuroSys ’19, pages 9:1–9:15, New York, NY, USA, 2019. ACM.