- Published on
SmartNIC explained
- Authors
- Name
- JaeHyeok CHOI
- none
SmartNIC?
SmartNIC는 데이터 센터 네트워킹과 보안, 스토리지를 효율적이고 유연하게 하는 프로그래밍 가능한 가속기이다.
스마트 네트워크 인터페이스 카드의 약자로 데이터센터 네트워킹과 보안 및 스토리지를 효율적이고 유연하게 하는 프로그래밍 가능한 가속기이다.
SmartNIC는 서버 CPU에서 최신 분산 애플리케이션을 관리하는데 필요한 여러 작업을 오프로드한다.
내부를 보면 SmartNIC는 구성 가능한 다양한 연결 장치들을 모아 스마트한 기능을 갖춘다. 실리콘 블록들로 구성된 SmartNIC는 데이터센터를 통과하는 데이터 패킷을 처리하고 라우팅하는 방법을 결정하는 전문가 집단 같은 역할을 한다.
SmartNIC 작동 원리
이런 블록의 대부분은 통신 작업을 CPU보다 더욱 효율적으로 실행하는 가속기라고 불리는 고도로 전문화된 하드웨어 장치이다. 또한, 일부 블록은 사용자가 변화하는 요구를 처리하면서도, 변화하는 네트워크 프로토콜에 유연하게 맞춰나갈 수 있도록 프로그래밍하도록 도와준다.
출처
Kakao Cloud
CPU와 역할을 분담, 가속하는 기술인 SmartNIC.
가속기란 CPU에서 처리하던 기존 소프트웨어의 작업 일부를 FPGA/GPU/NPU 등의 하드웨어로 오프로드하여 소프트웨어 실행 속도를 빠르게하는 역할을 한다. 하드웨어로 구성된 가속기 내부 로직을 프로그래밍하여 기존 소프트웨어에서의 코드 네트워킹 로직 변경 기능을 그대로 사용할 수 있다.
즉, SmartNIC는 네트워크 트래픽에 비례하여 CPU 점유율이 증가하는 것을 막고 CPU 리소스를 100% 투입하더라도 구현하기 어려운 와이어 스피드를 제공하기 위해서 탄생했다.
오프로드 기능 OVS (Open vSwitch, Open Virtual Switch)
OVS는 오픈소스로 구현된 분산 가상 멀티레이어 스위치이다. OVS는 하드웨어 가상화 환경을 위한 스위칭 스택을 제공하고 동시에 컴퓨터 네트워크에 사용되는 여러 프로토콜과 표준을 지원하는데 목적이 있다.

이 그림은 네트워크 스위치 구조의 변화이다. 전통적인 네트워크 구성에서 가상화된 네트워크를 거쳐 분산형 가상스위치 기반의 네트워크 구성에서 OVS가 등장한다. OVS는 가상 머신들의 Virtual NIC를 연결한 스위치를 가상화시키고, 단일의 하이퍼바이저 환경에서 구동되던 서버 환경을 여러 개의 하이퍼바이저 환경으로 대체함으로써 이기종 간 클라우드 환경을 구성한다. 그러나 OVS는 CPU에서 소프트웨어로 구동되기 때문에 규칙이 많아질 수록 (네트워크 복잡도가 증가할수록) 소프트웨어 처리량이 많아지며 이로 인해 사용할 수 있는 CPU 리소스가 줄어든다. 이를 해결하기 위하여 OVS 기능을 SmartNIC로 오프로딩 함으로써 CPU 리소스의 낭비없이 OVS를 지원할 수 있게 구현한다.
OVS 오프로드 아키텍처의 성능 비교
SR-IOV (Single Root I/O Virtualization)
PCI-SIG 표준 아키텍처로 하나의 PF (Physical Function)가 다수의 VF (Virtual Function)를 생성해서 가상화된 NIC을 실제 NIC과 같이 사용할 수 있게 되는 기능이다. 가상 머신에서는 PCI 장치가 직접 연결된 것과 같이 동작하고, 가상화 환경을 지원하는 드라이버 루트를 통해서 리소스 낭비와 지연을 방지할 수 있게 되는 것.

일반 NIC와 카카오의 i 클라우드의 SmartNIC을 적용한 아키텍처를 비교한 그림이다. 일반 NIC을 적용한 서버에서 OVS는 하이퍼바이저 상에 구현되고, VM의 네트워크 기능은 하이퍼바이저 커널 기반의 가상화 모듈 (vhost/virtio-net)로 구현된다. VM의 네트워크는 하이퍼바이저의 커널을 거쳐서 BasicNIC으로 전달되기 때문에 패킷의 크기와 빈도에 따라 대역폭과 레이턴시에 제약이 발생한다.
반면, 카카오 i 클라우드에서 VM의 네트워크 패킷은 하이퍼바이저의 커널을 거치지 않고 VF를 통해서 SmartNIC로 직접 전달된다. VF를 통해서 SmartNIC으로 전달된 패킷은 OVS에 정의된 플로우 룰 기반으로 처리되고, 이를 통해 전반적인 네트워크 레이턴시를 낮추고 CPU 효율성을 향상시킬 수 있다.
실제 카카오 i 클라우드에 SmartNIC을 적용한 VM에서 64 Byte Packet의 경우 8.2Gbps에서 256 Byte Packet 이상의 사이즈부터는 SmartNIC의 PF당 Bandwidth인 25G Througphut 성능이 나오는 것을 확인할 수 있었다.
throughput: 처리량