| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- DPDK Architecture
- DPDK 초기화
- mbuf
- pmd
- Kernel Bypass
- HugePage
- SR-IOV
- polling
- kni
- Mempool
- rte_eth_dev
- dpdk
- DPDK EAL
- lcore
- nic
- Descriptor Ring
- Today
- Total
목록Network (13)
우당탕탕 개발일지
[DPDK] DPDK 패킷 흐름[DPDK] DPDK 아키텍처[DPDK] NIC의 개념과 역할네트워크 환경에서 높은 처리 성능을 얻기 위해 DPDK와 같은 고성능 패킷 처리 기술이 사용된다. 이러한 기술을 이해하려면, 먼저 네트워크 패킷이 서버uj0791.tistory.com DPDK는 커널을 우회하여 NIC을 user space에서 직접 제어하며, 커널은 해당 NIC를 인식하지 못한다. 따라서 ip addr, ping, arp와 같은 커널 기반 네트워크 기능이나 ARP, ICMP와 같은 control plane 패킷 처리가 불가능해지는 문제가 발생한다. 이러한 한계를 보완하기 위해 KNI(Kernel Network Interface)가 사용된다. KNI는 DPDK 애플리케이션과 리눅스 커널 네트워크 스..
[DPDK] DPDK 아키텍처[DPDK] NIC의 개념과 역할네트워크 환경에서 높은 처리 성능을 얻기 위해 DPDK와 같은 고성능 패킷 처리 기술이 사용된다. 이러한 기술을 이해하려면, 먼저 네트워크 패킷이 서버 내부에서 어떤 구uj0791.tistory.com DPDK는 EAL이 지정한 lcore마다 워커 스레드를 생성하고, 일반적으로 1 코어 = 1 스레드 모델로 동작한다. 각 lcore는 무한 루프에서 패킷을 처리하며, 높은 성능을 위해 스레드 이동 없이 특정 CPU에 고정된다. 실제 애플리케이션에서는 다음과 같이 역할을 분리하는 경우가 많다.패킷 수신 전담 코어SIP / RTP 처리 코어송신 및 후처리 코어이처럼 역할을 분리하면, 한 코어에서 처리한 데이터를 다른 코어로 전달해야 하므로 코어 간 ..
[DPDK] DPDK EAL[DPDK] DPDK 아키텍처[DPDK] NIC의 개념과 역할네트워크 환경에서 높은 처리 성능을 얻기 위해 DPDK와 같은 고성능 패킷 처리 기술이 사용된다. 이러한 기술을 이해하려면, 먼저 네트워크 패킷이 서버uj0791.tistory.com 저번 글에서는 DPDK EAL이 무엇인지, 그리고 이러한 실행 환경이 왜 필요한지를 살펴보았다. 이번 글에서는 DPDK의 전체적인 초기화 과정에 대해 알아본다. EAL 옵션 EAL의 초기화는 main() 함수 시작 시 rte_eal_init()을 호출하면서 시작된다. 이때, 애플리케이션 실행에 필요한 다양한 옵션들이 함께 전달되며, 이를 통해 CPU, 메모리, 디바이스 등 DPDK의 실행 환경이 구성된다. 즉, EAL 옵션은 단순한 실..
[DPDK] DPDK 아키텍처[DPDK] NIC의 개념과 역할네트워크 환경에서 높은 처리 성능을 얻기 위해 DPDK와 같은 고성능 패킷 처리 기술이 사용된다. 이러한 기술을 이해하려면, 먼저 네트워크 패킷이 서버 내부에서 어떤 구uj0791.tistory.com 여기서부터는 개념이 조금 어려워지기 때문에 앞서 설명한 내용을 완전히 숙지하고 보는것을 추천한다. DPDK는 커널 네트워크 스택을 우회하여 사용자 공간(User Space)에서 NIC를 직접 제어하는 프레임워크이다.따라서 다음 네 가지 자원을 커널의 도움 없이 고성능으로 직접 다뤄야 한다.CPU메모리디바이스 (NIC)시간 기준 (Timer) 문제는 운영체제마다 하드웨어 접근 방식이 모두 다르다는 점이다.Linux / FreeBSD 등 OS별 차이..
[DPDK] NIC의 개념과 역할네트워크 환경에서 높은 처리 성능을 얻기 위해 DPDK와 같은 고성능 패킷 처리 기술이 사용된다. 이러한 기술을 이해하려면, 먼저 네트워크 패킷이 서버 내부에서 어떤 구조로 처리되는지 이해해uj0791.tistory.com DPDK는 Data Plane Development Kit의 약자로, Intel 아키텍처 기반에서 고성능 패킷 처리를 위해 설계된 시스템 소프트웨어이다. 일반적인 리눅스 환경에서는 ice와 같은 커널 NIC 드라이버가 NIC를 제어하고, 패킷은 커널 네트워크 스택을 거쳐 처리된다. 하지만 DPDK는 일반 커널 NIC 드라이버를 통해 패킷을 송수신하는 것이 아니라, NIC를 커널로부터 분리한 뒤 User Space에서 직접 제어한다. 이를 위해 DPDK는..
네트워크 환경에서 높은 처리 성능을 얻기 위해 DPDK와 같은 고성능 패킷 처리 기술이 사용된다. 이러한 기술을 이해하려면, 먼저 네트워크 패킷이 서버 내부에서 어떤 구조로 처리되는지 이해해야 한다. 패킷은 단순히 NIC 포트를 통해 들어오고 나가는 것이 아니라, PCIe 장치로 인식된 NIC와 메모리 사이에서 Rx/Tx Descriptor Ring, DMA, 인터럽트 등의 구조를 통해 처리된다. NIC (Network Interface Card, 이더넷 카드) NIC는 서버와 외부 네트워크를 연결해 주는 하드웨어 장치로, 흔히 이더넷 카드라고 부른다. 메인보드에 내장되거나 PCIe 카드 형태로 추가 장착될 수 있으며, 서버가 네트워크와 통신할 수 있도록 패킷 송수신을 담당한다. MAC 주소 관리NIC는..
15절은 SIP로 설정된 세션을 종료하는 절차를 설명한다. 세션의 상태는 dialog의 상태와 매우 밀접하게 연결되어 있다.INVITE request 이후, 각기 다른 UAS로부터 받은 1xx 또는 2xx response는 각각 하나의 dialog를 생성한다.만약 그 response가 offer/answer 교환까지 완료하면, 세션도 생성된다.따라서 각 세션은 하나의 dialog와 “associated(연결)”되어 있으며, 그 dialog가 세션을 생성한 셈이다. 초기 INVITE가 non-2xx final response를 생성하면해당 response로 생성된 모든 세션과 dialog는 종료된다.트랜잭션도 완료되며, 해당 INVITE로부터 더 이상 세션 생성이 불가능해진다. BYE request는 특정..
CHAPTER 14. Modifying an Existing Session 12절에서는 기존 dialog를 target refresh 요청을 통해 수정하는 방법을 설명했다. 해당 14절에서는 주소/포트 변경, 미디어 스트림 추가/삭제 등 세션을 수정하는 방법을 설명한다. 성공적인 INVITE request는 두 UA간 dialog와 offer/answer 모델을 통해 세션을 동시에 설정한다. 세션 수정은 기존 세션을 설정했던 동일한 dialog 내에서 새로운 INVITE request를 보내는 방식으로 수행된다.기존 dialog 내에서 보내는 INVITE request를 re-INVITE라고 한다.하나의 re-INVITE가 dialog와 세션 파라미터를 동시에 수정할 수 있다는 점을 유의해야 한다. ca..