DPDK

988 views
752 views

Published on

DPDK (Data Plane Development Kit)

Published in: Software
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
988
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

DPDK

  1. 1. ㈜유미테크 DPDK (Data Plane Development Kit)
  2. 2. ㈜유미테크2㈜유미테크 DPDK 1. DPDK란? 2. Environmennt Abstraction Layer 3. Ethernet Poll Mode Driver Architecture 4. 주요 라이브러리 5. DPDK 개발 환경 6. 네트워크 카드 Driver Setting 7. Compiling a Sample Application 8. 테스트 환경 구성 9. DPDK 응용 기본 흐름도 10.향후 계획 개요
  3. 3. ㈜유미테크3㈜유미테크 DPDK 1. DPDK란?
  4. 4. ㈜유미테크4㈜유미테크 DPDK  DPDK : Data plane Development Kit - Intel Architecture 기반 패킷 처리 최적화 시스템 소프트웨어 - 패킷 처리 속도 최적화 프레임 워크 지원 - 어플리케이션 개발자는 로직 개발에 충실  x86 플랫폼에 고속 패킷 처리를 위한 라이브러리와 드라이버의 집합 - 리눅스 사용자 공간 IO 동작 - 프로파일에 필요한 모든 원소를 제공 - 고성능 패킷 처리 애플리케이션 작성  DPDK Libraries and Drivers - Memory Manager : object pools, huge page memory, object ring, alignment - Buffer Manager : pre-allocates fixed size buffers - Queue Manager : safe lockless queues, no spinlocks, avoiding wait times - Poll Mode Drivers : no asynchronous, interrupt-based signaling mechanisms - Flow Classification : a hash based on tuple information 1.1 DPDK란?
  5. 5. ㈜유미테크5㈜유미테크 DPDK  DPDK 장점 - 고성능 패킷 처리 - 고가의 장비를 사용 하지 않아도 된다. - CPU가 지장 받지 않고 작업을 수행 할 수 있다.  DPDK 단점 - DPDK를 사용하기 위한 랜카드 종류가 한정되어 있다. (2014. 06 현재) • e1000 (82540, 82545, 82546) • e1000e (82571..82574, 82583, ich8..ich10, pch..pch2) • igb (82575..82576, 82580, i210, i211, i350, i354, dh89xxcc) • ixgbe (82598..82599, x540) • i40e (xl710) 1.2 DPDK 장점과 단점
  6. 6. ㈜유미테크6㈜유미테크 DPDK  활용 사례 - 윈드리버 : 실시간 가상화 소프트 웨어 • 네트워크 기능 가상화, NFV 및 클라우드 환경을 위한 윈드리버 OVP 개발 • 고속 네트워크 환경 및 물리적 디바이스에 필적하는 고성능 제공 • 네트워크 구간의 어디에서든 유연하게 운용 가능, TOC 절감 • 서비스 제공사의 네트워크 활용도 향상, 서비스 적용시간 단축 - 6WIND : 6WINDGate 소프트 웨어 • 모바일 인프라 스트럭쳐와 네트워킹 제품의 개발 1.3 DPDK 활용 사례
  7. 7. ㈜유미테크7㈜유미테크 DPDK 1.4 Core Components
  8. 8. ㈜유미테크8㈜유미테크 DPDK  Core Components Architecture - rte_timer : Timer 기능. EAL에서 제공되는 타이머 인터페이스 기반으로 DPDK 실행 단위로 타 이머 서비스를 제공 - rte_malloc : hugepages에 메모리 할당 - rte_mempool : 메모리에 있는 개체의 풀을 할당 - rte_eal + libc : 응용 프로그램 로딩, 메모리 할당. 시간 인터페이스, PCI 접근 및 로딩 지원 - rte_mbuf : IP 트래픽 및 메시지 데이터 패킷의 버퍼를 지원 - rte_ring : 크기가 고정 된 개체를 저장하거나 코어 사이의 통신을 허용하는 FIFO를 고정 1.4 Core Components
  9. 9. ㈜유미테크9㈜유미테크 DPDK 2. Environment Abstraction Layer
  10. 10. ㈜유미테크10㈜유미테크 DPDK  하드웨어 및 메모리 공간과 같은 낮은 수준의 리소스를 엑세스 한다.  EAL은 응용 프로그램 및 라이브러리에서 환경 특성을 숨기는 일반적인 인터페이스를 제공  자원을 할당하는 방법을 결정하는 초기화 루틴을 책임진다.  EAL – 어플리케이션과 라이브러리로부터 인터페이스에 대한 서비스를 제공 - Intel DPDK loading and launching - Support for multi-process and multi-thread execution types - Core affinity / assignment procedures - System memory allocation / de-allocation - Atomic / lock operations - Time reference - PCI bus access - Trace and debug functions - CPU feature identification - Interrupt handling - alarm operations 2.1 Environment Abstraction Layer
  11. 11. ㈜유미테크11㈜유미테크 DPDK  The EAL options are as follows 2.2 The EAL options are as follows $ example –c 0x5 –n 4 … 0 1 0 1 0123
  12. 12. ㈜유미테크12㈜유미테크 DPDK 3. Ethernet Poll Mode Driver Architecture
  13. 13. ㈜유미테크13㈜유미테크 DPDK  1Gbe and 10Gbe 이더넷을 폴링 모드 드라이버를 포함하며 비동기 없이 작동하도록 설계 이더 넷 컨트롤러, 신호 전달 메커니즘을 기반으로한 인터럽트  장치를 구성, 사용자 공간에서 BSD 드라이버 실행을 통해 API를 제공하고 각각의 큐를 구성  PMD는 수신 프로세스 및 사용자의 어플리세이션에서 패킷을 임의의 인터럽트 없이 신속하게 전달하는 직접적인 디스크립터 3. Ethernet Poll Mode Driver Architecture
  14. 14. ㈜유미테크14㈜유미테크 DPDK 4. 주요 라이브러리
  15. 15. ㈜유미테크15㈜유미테크 DPDK  Packet Forwarding Algorithm Suport - 패킷 포워딩 알고리즘을 지원하는 라이브러리  librte_net - IP 프로토콜을 정의하고 편리한 매크로를 가지고 있다.  Ring Library - Ring Lib는 큐를 관리 할수 있다. - 무한한 크기의 연결 리스트를 갖는다. - rte_ring의 속성 • FIFO • 최대 크기는 고정되고 포인터는 테이블에 저장된다. • Lockless implementation • Multi-consumer, single-consumer는 대기열에서 제외된다. • Multi-producer, single-producer는 대기열에 포함된다. • Bulk dequeue – 성공하면 지정된 개체 수를 뺀다. 그렇지 않으면 실패 • Bulk enqueue – 성공하면 지정된 개체수를 큐에 넣는다. 그렇지 않으면 실패 • Burst dequeue – 지정된 수를 충족 할 수 없는 경우 최대 사용 가능한 개체 큐에서 제거된다. • Burst enqueue – 지정된 개체수가 성취 될 수 없는 경우에 최대 개체를 저장한다 4. 주요 라이브러리
  16. 16. ㈜유미테크16㈜유미테크 DPDK 5. DPDK 개발 환경
  17. 17. ㈜유미테크17㈜유미테크 DPDK  DPDK 지원 - Kernel version : 2.6.33 이상 (개발 서버 버전: 3.13.0) - glibc : 2.7 이상  테스트 환경 (Ubuntu 12.10) - ixbge 모듈 기본 탑재 (인텔 10G 네트워크 드라이버)  커널 환경 설정 (hugepages) - hugepages = 1024 - default_hugepagesz=1G hugepagesz=1G hugepages=4 - echo 2048 > /sys/kernel/mm/hugepages/hugepages-2048KB/nr_hugepages - echo 2048 > /sys/devices/system/node/node0hugepages/hugepages- 2048KB/nr_hugepages - mkdir /mnt/huge && mount –t hugetlbfs nodev /mnt/huge 5.1 DPDK 개발 환경
  18. 18. ㈜유미테크18㈜유미테크 DPDK  Compilation of the Intel DPDK - Required Tools • GNU make • coreutils : cmp, sed, grep, arch • gcc(version 4.5.x 이상) • libc headers(glibc-devel.i686 / libc6-dev-i386; glibc-devel.x86_64) • Linux kernel headers or sources required to build kernel modules • Additional packages required for 32-bit compilation on 64-bit systems are: glibc.i686, libgcc.i686, libstdc++.i686 and glibc-devel.i686 • Python(version 2.6 or 2.7) - Optional Tools • C++ Compiler(icc) • libpcap headers and libraries to compile and use the libpcap-based poll-mode driver This driver is disabled by default and can be enabled by setting CONFIG_RTE_LIBRTE_PMD_PCAP=Y in the build time config file 5.1 DPDK 개발 환경
  19. 19. ㈜유미테크19㈜유미테크 DPDK  DPDK source directory $ unzip DPDK-<version>.zip $ cd DPDK-<version>  DPDK is composed of several directories : - lib : Source code of Intel DPDK libraries - app : Source code of Intel DPDK applications - examples : Source code of Intel DPDK application examples  To install and make targets $ make install T=x86_64-default-linuxapp-gcc  To prepare a target without building it $ make config T=x86_64-default-linuxapp-gcc 5.2 DPDK 빌드
  20. 20. ㈜유미테크20㈜유미테크 DPDK 6. 네트워크 카드 Driver Setting
  21. 21. ㈜유미테크21㈜유미테크 DPDK  네트워크 카드 설정 - Kernel 6.1 Kernel Driver 모드 Setting • IP 설정 - 경로 : /etc/network/interfaces - 설정 내용 - 인터페이스 재시작 $ /etc/init.d/networking restart - 인터페이스 활성화 $ ifconfig <interface name> up - 인터페이스 비활성화 $ ifconfig <interface name> down auto <interface name> iface <interface name> inet static Address <ip> Netmask <netmask> Network <network> Broadcast <broadcast> Gateway <gateway> Dns-nameservers <dns-nameservers> Dns-search <dns-search> • 라우팅 설정 - 특정 IP에서 오는 패킷을 특정 인터페이스로 수신 $ route add –net <ip> netmask <netmask> dev <interface name> - 설정된 라우팅 테이블 삭제 $ route net –net <ip> netmask <netmask> dev <interface name> - 리눅스 재시작 시 라우팅 테이블 설정 - 경로 : /etc/network/interface Up route add –net <ip> netmask <netmask> dev <interface name>
  22. 22. ㈜유미테크22㈜유미테크 DPDK  네트워크 카드 설정 - Loading the Intel DPDK igb_uio Module $ cd <DPDK>/x86_64-default-linuxapp-gcc $ sudo modprobe uio $ sudo insmod kmod/igb_uio.ko - Binding and Unbinding Network Ports to / from the igb_uio Module $ ./tools/pci_unbinnd.py – status 6.2 UIO Driver 모드 Setting
  23. 23. ㈜유미테크23㈜유미테크 DPDK  네트워크 카드 설정 - To bind device eth2, 0000:0a:00.0, to the igb_uio driver : $ ./tools/pci_unbind.py – bind=igb_uio 0a:00.0 or ./tools/pci_unbind.py – bind=igb_uio eth2 $ ./tools/pci_unbind.py – bind=igb_uio 0a:00.1 or ./tools/pci_unbind.py – bind=igb_uio eth3 • Routing table indicates that interface 0000:0a:00.1 is active. Not modifying 메시지 발생 시 설정 하려는 인터페이스를 사용하지 않는 상태로 변경 후 다시 위 의 명령어를 실행 6.2 UIO Driver 모드 Setting
  24. 24. ㈜유미테크24㈜유미테크 DPDK 7. Compiling a Sample Application
  25. 25. ㈜유미테크25㈜유미테크 DPDK  When compiling an application in the Linux* environment on the Intel DPDK, the following variables must be exported : - RTE_SDK – Points to the Intel DPDK installation directory $ export RTE_SDK=/home/ymtech/dpdk/DPDK-1.6.0 - RTE_TARGET – Points to the Intel DPDK target environment directory $ export RTE_TARGET=x86_64-default-linuxapp-gcc  Sample – helloworld - helloworld 위치로 이동 7. Compiling a Sample Application
  26. 26. ㈜유미테크26㈜유미테크 DPDK  Sample – helloworld $ ls $ cd build && ls -al 7. Compiling a Sample Application
  27. 27. ㈜유미테크27㈜유미테크 DPDK  Sample – helloworld $ sudo ./helloworld –c f –n 4 - 메모리가 동적 할당 됨. 7. Compiling a Sample Application
  28. 28. ㈜유미테크28㈜유미테크 DPDK 8. 테스트 환경 구성
  29. 29. ㈜유미테크29㈜유미테크 DPDK  테스트 환경 및 실행 8. 테스트 환경 구성 DPDK 수집 패킷 전송 10 G 10 G 10 G 10 G Recv Send Recv Send
  30. 30. ㈜유미테크30㈜유미테크 DPDK 9. DPDK 응용 기본 흐름도
  31. 31. ㈜유미테크31㈜유미테크 DPDK 9. DPDK 응용 기본 흐름도 시작 (main) EAL 초기화 (rte_eal_inet) 종료 메모리 할당 (rte_mempool_cre ate) 드라이버 초기화 (rte_pmd_init_all) 등록된 PCI Driver 확인 (rte_eal_pci_probe) 드라이버가 초기화 된 이더넷 장치의 수 (rte_eth_dev_count ) 이더넷 장치의 상황 에 맞는 정보 검색 (rte_eth_dev_info_ get) 이더넷 장치를 구성 (rte_eth_dev_confi gure) 이더넷 장치의 주소 를 검색 (rte_eth_macaddr_ get) 이더넷 장치에 대한 수신 큐를 할당 (rte_eth_rx_queue_ setup) 이더넷 장치 시작 (rrte_eth_dev_start) 모든 lcores 함수를 실행 (rte_eal_mp_remot e_launch) 패킷이 수신되면 그 에 대한 포인터를 rte_mbuf 구조에 저 장(rte_eth_rx_burst) 수신된 패킷의 수 확인 수신된 패킷의 메 모리 해제 (rte_pktmbuf_free) While 1초 주기로 수신 된 패킷 확인
  32. 32. ㈜유미테크32㈜유미테크 DPDK 10. 향후 계획
  33. 33. ㈜유미테크33㈜유미테크 DPDK  CentOS에 DPDK 개발 환경 셋팅 및 테스트  멀티코드 응용 작성 방법 기술 조사  DNS 패킷 분석 및 Mirroring 모듈과 연결 10. 향후 계획

×