Your SlideShare is downloading. ×
0
㈜유미테크
DPDK
(Data Plane Development Kit)
㈜유미테크2㈜유미테크 DPDK
1. DPDK란?
2. Environmennt Ab...
㈜유미테크3㈜유미테크 DPDK
1. DPDK란?
㈜유미테크4㈜유미테크 DPDK
 DPDK : Data plane Developm...
㈜유미테크5㈜유미테크 DPDK
 DPDK 장점
- &#...
㈜유미테크6㈜유미테크 DPDK
 활용 사&...
㈜유미테크7㈜유미테크 DPDK
1.4 Core Components
㈜유미테크8㈜유미테크 DPDK
 Core Components Architectu...
㈜유미테크9㈜유미테크 DPDK
2. Environment Abstraction Layer
㈜유미테크10㈜유미테크 DPDK
 하드웨&...
㈜유미테크11㈜유미테크 DPDK
 The EAL options are as fo...
㈜유미테크12㈜유미테크 DPDK
3. Ethernet Poll Mode Driver
Archi...
㈜유미테크13㈜유미테크 DPDK
 1Gbe and 10Gbe 이&#...
㈜유미테크14㈜유미테크 DPDK
4. 주요 라&#xC77...
㈜유미테크15㈜유미테크 DPDK
 Packet Forwarding Algorit...
㈜유미테크16㈜유미테크 DPDK
5. DPDK 개발 환&...
㈜유미테크17㈜유미테크 DPDK
 DPDK 지원
- K...
㈜유미테크18㈜유미테크 DPDK
 Compilation of the Intel ...
㈜유미테크19㈜유미테크 DPDK
 DPDK source directory
$ u...
㈜유미테크20㈜유미테크 DPDK
6. 네트워&#xD06C...
㈜유미테크21㈜유미테크 DPDK
 네트워&...
㈜유미테크22㈜유미테크 DPDK
 네트워&...
㈜유미테크23㈜유미테크 DPDK
 네트워&...
㈜유미테크24㈜유미테크 DPDK
7. Compiling a Sample Application
㈜유미테크25㈜유미테크 DPDK
 When compiling an applica...
㈜유미테크26㈜유미테크 DPDK
 Sample – helloworl...
㈜유미테크27㈜유미테크 DPDK
 Sample – helloworl...
㈜유미테크28㈜유미테크 DPDK
8. 테스트 &#xD65...
㈜유미테크29㈜유미테크 DPDK
 테스트 ...
㈜유미테크30㈜유미테크 DPDK
9. DPDK 응용 기&...
㈜유미테크31㈜유미테크 DPDK
9. DPDK 응용 기&...
㈜유미테크32㈜유미테크 DPDK
10. 향후 계&#xD6...
㈜유미테크33㈜유미테크 DPDK
 CentOS에 DPDK &#xAC...
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply
iPhone sideview for SlideShare app

DPDK

551

Published on

DPDK (Data Plane Development Kit)

Published in: Software
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
551
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript of "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. ํ–ฅํ›„ ๊ณ„ํš
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

ร—