레이블이 DPDK인 게시물을 표시합니다. 모든 게시물 표시
레이블이 DPDK인 게시물을 표시합니다. 모든 게시물 표시

2015년 3월 15일 일요일

네트워크 어플리케이션 고속화(NFV)

네트워크 어플리케이션 고속화

  • Multicore Networking Stack 이란 NFV환경에서 네트워크 어플리케이션의 성능(퍼포먼스)를 향상 시키기 위한 기술이다.
  • Intel DPDK는멀리코어 프로세서에서 네트워크 패킷을 가속화시킨다.
  • DPDK를 이용하는 이유
    • 기존의 네트워크 패킷을 처리할 때는 Linux에서 네트워크 스택을 이용한다.
    • Linux는 시스템 자원을 이용할때 커널 공간과 사용자 공간을 전환하면서 이루어진다.
    • 이것은 네트워크 스택의 지연(Bottle Neck)으로 작용된다.
    • DPDK는 네트워크 지연을 회피하는 방법을 제공한다.

DPDK의 주요 특징

  • 1코어당 10Mpbs이상의 데이터플레인 처리한다.
  • 이것은 Linux 네트워크 스택보다 10배이상 빠르다.
  • 약 30us이하 지연시간을 가진다.
  • 멀티 코어 CPU의 자원을 효율적으로 사용한다.
  • DPI에서 보다 효과적으로 처리할 수 있다.

2014년 12월 1일 월요일

OPNFV Initial Distribution

OPNFV Distribution

  • OPNFV Support mulitple distributions
    • Ubuntu
    • Redhat (CentOS)
    • Fedora
  • Initial kick start distribution
  • LTM (Long Term Evolution)

Initial Distribution selection

  • Several Project
    • OpenStack
    • ODL (Open Daylight)
    • Infra Set up language support (Puppet, Juju)
    • Plugins Availability
    • Virtual Enviroment
    • Bare metal platform support



Criteria
RHEL
CentOS
Ubuntu
Fedora
Devstack
Release
7
7
14.10
21
Latest
Installer
Packstack
Packstack
JuJu, Fuel
Packstack (RDO), DevStack
Devstack
Support
Yes
Community
Yes
Community
No
Resident Developer





Openstack Release
Juno (RDO), Icehouse (RHEL OSP)
Juno (RDO)
Juno
Icehouse (packaged), Juno (RDO)
Kilo
ODL Release



Hydrogen, Helium (not in repositories)

Installer Languages
Puppet
Puppet
Puppet
Puppet (RDO), bash (Devstack)

Plugins Availability





Ease of Development


Yes


Virtual Environment


Vagrant, Kvm, Docker, LXC etc
Qemu/kvm, Docker, lxc etc

Zero Touch including PXE Boot


Yes (JuJu/MaaS/Cobbler)


Troubleshooting Ease





Long Term Evolution


14.04


Automated Testing Framework Integration


OSTF


Kernel Version
3.10
3.10
3.14 (Realtime Patch)
3.17

Qemu version
2.0
2.0
2.0
2.1

2014년 11월 18일 화요일

PMD와 가상 환경에서 DPDK

PMD와 가상 환경에서 DPDK

  • Intel DPDK란?
  • Linux 커널로 네트워크를 처리하려면 오버헤드가 발생한다.
  • 오버헤드를 줄이고 더 간단하고 빠른 네트워크 처리 방식을 위한 도구이다.

Linux 커널의 네트워크 처리 (오버헤드 분석)

  • 왜 Linux 커널의 네트워크 처리에 오버 헤드가 일어날까?
  • 예를 들면
    • Linux 커널은 네트워크 패킷을 "인터럽트'로 구현한다.
    • 네트워크 뿐만아니라 다양한 프로세스를 처리하지만
    • 외부에서 NIC으로 네트워크 패킷이 도착하면 NIC는 커널로 인터럽트를 건다.
    • 커널은 지금 실행하는 처리를 중단하고
    • NIC의 장치 드라이버로 처리를 할당하며
    • 인터럽트가 발생한 네트워크 NIC에서 늘어온 패킷을 처리한다.
    • 따라서 커널이 네트워크 패킷에 대한 인터럽트 처리와 함께
    • 실제 패킷 처리 프로세스로 바뀔때까지 지연이 발생한다.
    • 이런 오버 헤드는 커널의 기존 프로세스였지만,
    • 네트워크를 소프트웨어로 구현하는데는 다소 큰 오버헤드가 된다.

DPDK의 기본 동작

  • DPDK의 동작
    • DPDK는 PMD (Poll Mode Driver)라는 특별한 장치 드라이버를 사용한다.
    • 이 장치 드라이버는 특정 CPU 코어에 상주하며,
    • 외부에서 패킷이 도달하는 지 항상 감시합니다.
    • 네트워크 장치(NIC)에 패킷이 도착하면,
    • 바로 패킷을 처리합니다.
    • 즉 인터럽트의 오버헤드를 줄이는 것이지요.

DPDK의 실행 방식 (2가지)

  • Run-to-Completion
    • PMD를 실행하는 CPU 코어가 네트워크 패킷까지 한꺼번에 실시하는 방식.
  • Pile-line
    • PMD를 실행하는 CPU 코어가 있고 실제 패킷의 처리는 다른 CPU 코어에서 하는 방식.

DPDK의 패킷 처리

  • DPDK를 사용하면
  • Linux 커널이 제공하는 패킷 처리 방식을 무시하고
  • DPDK를 사용하는 사용자 응용 프로그램이 직접 패킷을 처리한다는 것이다.
  • 다시말하면 DPDK의 어플리케이션은 네트워크 패킷의 헤더를 보고
  • TCP / IP 등의 프로토콜을 판별부터 시작해서 자신이 하려는 기능까지
  • 사용자 응용 프로그램에서 전부 구현해야 하는 것을 의미합니다.
  • 즉 DPDK를 사용한다고 해서 네트워크 성능이 향상되는 것만은 아니고.
  • DPDK를 얼마나 잘 이용해서 네트워크 기능을 구현하는지가 중요하게 된다.

DPDK를 사용한 성능 평가

  • 기존의 네트워크 평가처럼
  • NIC과 NIC에 패킷 전달만 가지고
  • DPDK의 성능을 평가하기는 부족하다.
  • RSS (Receive-Side Scaling) 기능을 지원하는 최신 NIC이라면
    • NIC이 수신한 패킷을 여러 그룹으로 나누어
    • 각 그룹별로 CPU 코어를 병렬로 해서 처리할 수 있다.
  • 10Gbps 이상의 고속 NIC을 사용할 경우
    • PMD가 점유된 단일 코어로는 성능이 떨어지므로,
    • 여러 CPU 코어에서 PMD를 실행하여
    • 단일 CPU 코어 성능 병목이되는 것을 방지한다.

가상 환경에서 DPDK

  • Linux KVM 가상 환경에서 두 종류의 커널이 있다.
    • 호스트 Linux 커널
    • 게스트 OS의 커널
  • DPDK 응용 프로그램은 커널을 기반으로 패킷을 처리하기 때문에
    • 호스트 커널이 DPDK를 사용할지.
    • 게스트와 호스트 커널 모두 DPDK를 사용할지.
    • 아니면 어느 커널은 아무것도 안하지만 다른 커널에서 처리할지를 함께 고려해야한다.
  • DPDK는 패킷 처리를 응용 프로그램에서 처리하기 위한 도구이기 때문에
  • 가상 머신 환경에서 어떻게 DPDK를 사용할지는 사용자의 자유이며,
  • 현재 다양한 레이어를 어떻게 구현할지 다양한 구현방법을 제안/검증하는 단계이다.
  • 예시 1 (사용자 어플리케이션이 직접 가상 NIC에 접근)
    • 물리적 장치에 의존하는 환경으로 만든 DPDK 지원 응용 프로그램이라면
    • 게스트 OS의 커널을 생략하고,
    • 사용자 응용 프로그램에서 직접 가상 NIC에 액세스한다.
    • 가상 NIC와 물리 NIC 사이의 패킷 처리는
    • 기존처럼 하이퍼 바이저가 제공하는 가상 스위치를 사용하므로
    • 오버 헤드는 기존과 크게 다르지 않다.
  • 예시 2 (사용자 어플리케이션이 가상 OS의 DPDK를 거쳐 가상 NIC에 접근)
    • 게스트 OS의 DPDK 지원 응용 프로그램에서
    • 물리적 NIC를 직접 조작하는 방법
    • 하이퍼 바이저의 기능은 특정 물리적 NIC를 가상 머신까지 통과시킨다.
    • 하이퍼 바이저가 제공하는 가상 스위치의 기능은 사용할 수 없고,
    • 여러 가상 시스템에서 물리적 NIC를 공유하려 한다면,
    • SR-IOV를 지원하는 특별한 물리적 NIC이 필요하다.
    • SR-IOV란 하나의 물리적 NIC를 가상으로 여러 NIC으로 보여주는 기능을 NIC 하드웨어로 제공한 것이다.
  • 예시 3 (호스트의 가상 NIC을 DPDK가 사용)
    • 다른 가상 머신의 네트워크 기능은 종래대로 게스트 OS의 커널에 맡겨두고,
    • 호스트 Linux 측의 가상 NIC를 DPDK 가 사용하는 방법
    • Linux에서 가상 스위치 기능을 제공하는 오픈 소스 Open vSwitch에 DPDK를 사용하여
    • Open vSwitch와 물리적 NIC 사이의 패킷 처리 속도를 향상시키는 방법입니다.
  • 예시 4
    • 하이퍼 바이저의 가상 스위치 기능 및
    • 게스트 OS 내부의 패킷 처리를 다시 새롭게 구현하여
    • 호스트와 게스트의 네트워크 처리를 터널이 아니어도
    • 빠르게할 수 있는 방법
  • 예시 5 (NetVM)
    • 하이퍼 바이저와 가상 머신이 메모리를 공유하여
    • 메모리 간의 데이터 복사없이 패킷을 교환하는 방식
    • 공유 메모리와 물리적 NIC 사이의 데이터 교환은 DPDK를 사용
    • DPDK는 물리 NIC에서 공유 메모리에 패킷 데이터가 로드 된 후
    • 여러 가상 머신이 협력하여
    • 패킷에 필요한 처리를 해갑니다.
  • 예시 5의 좀더 구체적인 예시 (방화벽 기능이 있는 라우터를 구현)
    • 라우팅 기능을 담당하는 가상 머신과
    • 방화벽 기능을 담당하는 가상 머신으로 역할 분담
    • 이런 두가지 가상 머신 간 패킷 정보를 공유 메모리의 큐를 통해서 전달

요약

  • NFV의 목적은 "기존의 네트워크 장비를 가상 머신에서 실행한다"하는 것이므로
  • "1 가상 머신 = 1 네트워크 장비"라고 가정합니다.
  • DPDK는 PMD가 상주하며, 전달된 패킷 처리에 따라 Run-to-completion과 Pipe-line으로 나뉩니다.
  • 가상머신에서 호스트와 게스트 커널 중에서 어느쪽에서 DPDK를 사용할지 다양항 방식이 이야기 되며.
  • NFV의 목적처럼 여러 가상 시스템을 연계하여 새로운 네트워크 장비를 제공할 수 있습니다.

참조

  • [NetVM: High Performance and Flexible Networking Using Virtualization on Commodity Platforms]

2014년 11월 10일 월요일

Intel DPDK가 NFV에서 꼭 필요한 이유는 무엇일까?

Intel DPDK

  • 왜 Intel의 DPDK가 최근 주목을 받을까?
  • 그것은 NFV를 구현하는데 DPDK가 가장 중요한 역활을 하기 때문이다.
  • 그럼 NFV부터 DPDK가 무슨 연관이 있는지 알아보았다.

NFV?

  • NFV (Network Function Virtualization)는
    • 유럽 전기 통신 표준화기구 (ETSI : 유럽 전기 통신 전반에 관한 표준화기구)가 제창함
    • 통신망 서비스 회사에서 전용 네트워크 어플라이언스 장비를 대체하는 프로젝트 이다.
    • 즉, 전용 네트워크 어플라이언스 장비를 IA 서버의 가상 머신에서 동작하는 가상 어플라이언스로 대체하는 것을 말한다.
  • "전용 어플라이언스 장비에서 제공하는 네트워크 장비"란
    • LTE 등의 무선 통신을 지원하는 통신 장치를 예를 들어 보자.
  • LTE 백엔드의 구조를 보면 일반 IT 네트워크 장비와는 다르게 패킷을 처리하는 것을 알수 있다.
    • MME (Mobility Management Entity)
    • S-GW (Serving Gateway)
    • P-GW (Packet data network Gateway)
  • LTE뿐만 아니라 기존의 3G 네트워크도 전문 네트워크 장비 제조업체가 하드웨어를 판매한다.
  • 특정 하드웨어와 성능이 동일한 일반 서버에서 소프트웨어로 구현하자는 것이 NFV입니다.
  • ETSI의 목표는 가상 머신 소프트웨어를 구현하는 것입니다.
  • Telco망에서 사용할 가상 머신 소프트웨어를 NFV라고 합니다.
  • NFV는 OpenStack처럼 클라우드 기반으로 구축되면,
  • 운용자의 간편한 조작(Web UI와 같은) 버튼 하나로 새로운 통신 장비 군을 추가 할 수 있습니다.

Intel DPDK 의한 네트워크 어플리케이션의 구현

  • NFV는 기존 장비를 동일한 성능에서라는 전제 조건이 붙어 있습니다.
  • 일반 IA 서버에 Linux를 설치하고
    • 라우터 또는 방화벽과 같은 네트워크의 기본 기능을 이용하는 것은 간단하지만
  • Telco 망에서 IA 서버가 전용 통신 장비 정도의 성능을 제공해야만 NFV가 가능합니다.
  • 지금은 IA 서버의 네트워크를 이용하는 것은 하드웨어 성능이 한계가 있습니다.
    • 원래 Linux 네트워크 처리 전용으로 개발 된 OS라는 것은 없습니다.
    • Linux 커널이 제공하는 네트워크 기능은
    • 어디 까지나 상위의 응용 프로그램을 지원하는 인프라 기능입니다.
    • 네트워크 처리가 빨라도 그만큼 응용 프로그램의 실행 속도가 빠르다는 것을 의미하지 않습니다.
    • 즉 다양한 요구 사항 응용 프로그램을 실행하는 범용 OS가 다양한 네트워크 프로토콜을 지원해야합니다.
  • 정리하면
    • 현재 Linux는 IA 서버의 네트워크 성능을 한계까지 사용하는 설계가 아니다.
    • Linux 커널은 네트워크 처리만을 전문하는 것은 아니다.
    • 범용 OS로 다양한 네트워크 프로토콜에 대응하는 필요가있다.
  • 이런 점을 개선하기 위해서 Intel에서 만든 것이 DPDK입니다.
    • Intel DPDK (Data Plane Development Kit)
    • 현재 Linux에서 네트워크 처리에 특화된 애플리케이션을 작성하기위한 소프트웨어 라이브러리 집합입니다.
    • Intel DPDK를 이용하면 사용자는 Linux 커널 대신에 네트워크 패킷을 처리하는 응용 프로그램을 직접 만들 수 있습니다.

DPDK를 사용하는 응용 프로그램의 구조

  • Intel DPDK를 사용하는 응용 프로그램은 Linux 커널을 거치지 않고 네트워크 카드에 도착한 패킷을 직접 받아 처리합니다.
    • 예를 들어,
    • 응용 프로그램을 특정 CPU 코어에 할당하여 가장 높은 우선 순위로 실행하면
    • Linux에 네트워크 처리 전용의 CPU 코어가 제공됩니다.
    • 따라서 CPU 코어의 성능을 한계까지 끌어 내
    • IA 서버의 네트워크 성능을 비약적으로 향상시킬 수 있습니다.

  • Intel DPDK가 제공하는 라이브러리와 관련된 장치 드라이버는 오픈 소스로 공개되어있어 개발자 문서도 공식 Web 사이트에서 구할 수있습니다.