DPDK 샘플 응용 프로그램 사용자 가이드 (40) 인터넷 프로 토 콜 (IP) 파이프라인 응용 프로그램

공식 문서 보기 주소:http://doc.dpdk.org/guides/sample_app_ug/ip_pipeline. html PDF 다운로드 주소:https://www.intel.com/content/www/us/en/embedded/technology/packet-processing/dpdk/dpdk-sample-applications-user-guide.html?eu-cookie-notice
☆ ☆ ☆ ☆ ☆ ☆ 이해: ★ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆
40.1. 응용 프로그램 개요 인터넷 프로 토 콜 (IP) 파이프 응용 은 다 핵 cpu 에서 패키지 처리 응용 프로그램 을 신속하게 개발 하 는 캐리어 가 되 는 데 목적 을 둔다.OpenFlow 와 P4 설계 원칙 에 따라 이 프로그램 을 사용 하여 입력 / 출력 포트, 표 와 작업 에서 파이프 라 는 기능 블록 을 모듈 화 할 수 있 습 니 다.여러 파 이 프 는 패키지 대기 열 을 통 해 서로 연결 되 어 완전한 응용 프로그램 (슈퍼 파이프) 을 만 들 수 있 습 니 다.파 이 프 는 응용 프로그램 스 레 드 에 매 핑 되 고 모든 파 이 프 는 하나의 스 레 드 로 실 행 됩 니 다. 모든 스 레 드 는 하나 이상 의 파 이 프 를 실행 할 수 있 습 니 다.포트, 테이블, 작업 에서 파 이 프 를 만 들 고 여러 파 이 프 를 연결 하여 실행 라인 에 파 이 프 를 비 추 는 가능성 은 무궁무진 하기 때문에 이 프로그램 은 진정한 응용 프로그램 생 성기 로 볼 수 있다.파 이 프 는 명령 행 인터페이스 (CLI) 를 통 해 생 성 되 고 관리 합 니 다. 표준 TCP 클 라 이언 트 (예 를 들 어 telnet, netcat, 사용자 정의 스 크 립 트 등) 는 보통 응용 프로그램 에 연결 되 어 네트워크 를 통 해 명령 을 보 내 고 응답 을 기다 린 다음 명령 을 수행 합 니 다.모든 응용 대상 은 CLI 명령 을 통 해 만 들 고 관리 합 니 다. 파이프 포트 를 만 드 는 '기본' 대상: 메모리 탱크, 링크 (즉 네트워크 인터페이스), SW 대기 열, 데이터 관리자 등 입 니 다.작업 개요: 파이프 입력 / 출력 포트 와 테이블 이 실행 할 동작 을 정의 하 는 데 사 용 됩 니 다.파이프 구성 요소: 입력 / 출력 포트, 표, 파이프, 파이프 에서 실행 라인 에 대한 맵 입 니 다.
40.2. 프로그램 시작 명령 실행:
ip_pipeline [EAL_ARGS] -- [-s SCRIPT_FILE] [-h HOST] [-p PORT]

응용 프로그램 시작 매개 변 수 는:
  • -s SCRIPT_FILE 선택 가능: 예, 기본 값: 인자 가 존재 하지 않 습 니 다. 프로그램 이 시 작 될 때 실행 되 는 CLI 스 크 립 트 파일 의 경로 입 니 다.이 인자 가 존재 하지 않 으 면 시작 할 때 CLI 스 크 립 트 파일 을 실행 하지 않 습 니 다.
  • -h Host 선택 할 수 있 습 니 다. 기본 값: 0.0.0.0 매개 변수: IP 파이프 프로그램 을 실행 하 는 호스트 의 IP 주 소 는 원 격 TCP 기반 클 라 이언 트 (telnet, netcat 등) 연결 에 사 용 됩 니 다.
  • -p Port 선택 가능: 예, 기본 값: 8086 매개 변수: ip 파 이 프 를 실행 하고 있 는 TCP 포트 번호 입 니 다.원 격 TCP 클 라 이언 트 (예 를 들 어 telnet, netcat 등) 는 이 포트 번 호 를 사용 하여 호스트 프로그램 에 연결 해 야 합 니 다.

  • 응용 프로그램 과 환경 추상 층 (EAL) 옵션 을 실행 하 는 일반적인 정 보 는 DPDK 입문 안내서 (DPDK Getting Started Guide) 를 참조 하 십시오.2 층 퍼 가기 설정 을 실행 하 는 ip 파이프 프로그램 을 실행 하 는 예제 명령 입 니 다.
    $ ./build/ip_pipeline -c 0x3 -- -s examples/route_ecmp.cli
    

    프로그램 이 성공 적 으로 시작 되 고 다음 과 같이 표시 되 어야 합 니 다.
    EAL: Detected 40 lcore(s)
    EAL: Detected 2 NUMA nodes
    EAL: Multi-process socket /var/run/.rte_unix
    EAL: Probing VFIO support...
    EAL: PCI device 0000:02:00.0 on NUMA socket 0
    EAL:   probe driver: 8086:10fb net_ixgbe
    ...
    

    원 격 클 라 이언 트 (예 를 들 어 telnet) 를 실행 하고 ip 파이프 응용 프로그램 과 통신 합 니 다.
    $ telnet 127.0.0.1 8086
    

    상기 telnet 클 라 이언 트 를 실행 할 때 명령 프롬프트 가 표 시 됩 니 다.
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    
    Welcome to IP Pipeline!
    
    pipeline>
    

    응용 프로그램 과 telnet 클 라 이언 트 가 실행 되 기 시작 하면 메 시 지 는 클 라 이언 트 에서 응용 프로그램 으로 보 낼 수 있 습 니 다.모든 단계 에서 quit 명령 을 사용 하여 telnet 클 라 이언 트 를 중지 할 수 있 습 니 다.
    40.3. 응용 프로그램 단계 40.3.1 이 단 계 를 초기 화하 고 EAL 층 을 초기 화하 고 응용 프로그램 에 지정 한 인 자 를 분석 합 니 다.이 밖 에 응용 프로그램 대상 의 데이터 구조 (즉 링크) 도 초기 화 되 었 다.초기 화 오류 가 발생 하면 오류 메 시 지 를 표시 하고 프로그램 을 종료 합 니 다.40.3.2 실행 시 메 인 스 레 드 는 CLI 입력 에 따라 모든 프로그램 대상 을 만 들 고 관리 합 니 다.모든 데이터 평면 스 레 드 는 이전에 순환 순서에 따라 파 이 프 를 하나 이상 실행 합 니 다.모든 데이터 평면 스 레 드 는 시간 대별 모드 에서 두 가지 작업 을 수행 합 니 다. 1. 패키지 처리 작업: 파이프 입력 포트 에서 읽 은 입력 패키지 의 돌발 사건 을 처리 합 니 다.2. 메시지 처리 작업: 데이터 평면 스 레 드 는 주기 적 으로 패키지 처리 임 무 를 중단 하고 메 인 스 레 드 가 보 낸 요청 메 시 지 를 문의 합 니 다.예 를 들 어 현재 데이터 평면 스 레 드 에서 파 이 프 를 추가 / 삭제 하고 현재 데이터 평면 스 레 드 가 가지 고 있 는 특정 파이프 의 주어진 표 에서 규칙 을 추가 / 삭제 하 며 통계 정 보 를 읽 습 니 다.
    40.4. 예
    Name
    Table(s)
    Actions
    Messages
    L2fwd
    Stub
    Forward
    Mempool create Link create Pipeline create Pipeline port in/out Pipeline table Pipeline port in table Pipeline enable Pipeline table rule add
    Flow classification
    Exact match Key = byte array (16 bytes) Offset = 278 Table size = 64K
    Forward
    1.Mempool create 2.Link create 3.Pipeline create 4.Pipeline port in/out 5.Pipeline table 6.Pipeline port in table 7.Pipeline enable 8.Pipeline table rule add default 9.Pipeline table rule add
    KNI
    Stub
    Forward
    Mempool create Link create Pipeline create Pipeline port in/out Pipeline table Pipeline port in table Pipeline enable Pipeline table rule add
    Firewall
    ACL Key = n-tuple Offset = 270 Table size = 4K
    Allow/Drop
    Mempool create Link create Pipeline create Pipeline port in/out Pipeline table Pipeline port in table Pipeline enable Pipeline table rule add default Pipeline table rule add
    IP routing
    LPM (IPv4) Key = IP dest addr Offset = 286 Table size = 4K
    Forward
    Mempool Create Link create Pipeline creat Pipeline port in/out Pipeline table Pipeline port in table Pipeline enable Pipeline table rule add default Pipeline table rule add
    Equal-cost multi-path routing (ECMP)
    LPM (IPv4) Key = IP dest addr Offset = 286 Table size = 4K Array Key = Array index Offset = 256 Size = 4K
    Forward, load balance, encap ether
    Mempool Create Link create Pipeline create Pipeline port in/out Pipeline table (LPM) Pipeline table (Array) Pipeline port in table (LPM) Pipeline enable Pipeline table rule add default Pipeline table rule add(LPM) Pipeline table rule add(Array)
    40.5. Command Line Interface (CLI) 40.5.1. 링크 링크 설정
    link 
     dev |port 
     rxq   
     txq   promiscuous on | off
     [rss  ... ]
    

    메모: PCI 장치 이름 은 Domain: Bus: Device. Function 형식 을 사용 해 야 합 니 다.
    40.5.2. Mempool Mempool 생 성
    mempool  buffer 
    pool  cache  cpu 
    

    40.5.3. 소프트웨어 큐 생 성 소프트웨어 큐
    swq  size  cpu 
    

    40.5.4. Traffic manager (유량 관리자 TM) 에 유량 관리자 서브 포트 설정 파일 추가
    tmgr subport profile
      
        
     
    

    데이터 관리자 파이프 설정 파일 추가
    tmgr pipe profile
      
        
     
      
    

    유량 관리자 포트 만 들 기
    tmgr 
     rate 
     spp 
     pps 
     qsize 
       
     fo  mtu  cpu 
    

    유량 관리자 서브 포트 설정
    tmgr 
     subport 
     profile 
    

    유량 관리자 파이프 설정
    tmgr 
     subport 
     pipe from  to 
     profile 
    

    40.5.5. Tap Create tap port
    tap 
    

    40.5.6. Kni kni 포트 만 들 기
    kni 
     link 
     mempool 
     [thread ]
    

    40.5.7. Cryptodev Create cryptodev port
    cryptodev 
     dev 
     queue  
    

    40.5.8 작업 프로필 은 파이프 입력 포트 에 작업 개요 파일 을 만 듭 니 다.
    port in action profile 
     [filter match | mismatch offset  mask  key  port ]
     [balance offset  mask  port  ... ]
    

    pipeline 표 에 작업 개요 파일 만 들 기
    table action profile 
     ipv4 | ipv6
     offset 
     fwd
     [balance offset  mask  outoffset ]
     [meter srtcm | trtcm
         tc 
         stats none | pkts | bytes | both]
     [tm spp  pps ]
     [encap ether | vlan | qinq | mpls | pppoe]
     [nat src | dst
         proto udp | tcp]
     [ttl drop | fwd
         stats none | pkts]
     [stats pkts | bytes | both]
     [sym_crypto cryptodev 
         mempool_create  mempool_init ]
     [time]
    

    40.5.9. 파이프 라인 생 성 파이프
    pipeline 
     period 
     offset_port_id 
     cpu 
    

    파이프 입력 포트 만 들 기
    pipeline  port in
     bsz 
     link  rxq 
     | swq 
     | tmgr 
     | tap  mempool  mtu 
     | kni 
     | source mempool  file  bpp 
     [action ]
     [disabled]
    

    파이프 출력 포트 만 들 기
    pipeline  port out
     bsz 
     link  txq 
     | swq 
     | tmgr 
     | tap 
     | kni 
     | sink [file  pkts ]
    

    파이프 시트 만 들 기
    pipeline  table
         match
         acl
             ipv4 | ipv6
             offset 
             size 
         | array
             offset 
             size 
         | hash
             ext | lru
             key 
             mask 
             offset 
             buckets 
             size 
         | lpm
             ipv4 | ipv6
             offset 
             size 
         | stub
     [action ]
    

    파이프 입력 포트 를 표 에 연결 합 니 다.
    pipeline  port in  table 
    

    특정 파이프 입력 포트, 출력 포트 또는 표 의 통계 정 보 를 표시 합 니 다.
    pipeline  port in  stats read [clear]
    pipeline  port out  stats read [clear]
    pipeline  table  stats read [clear]
    

    특정 파이프 인 스 턴 스 를 위해 주어진 입력 포트 를 사용 합 니 다.
    pipeline  port out  disable
    

    특정 파이프 인 스 턴 스 의 주어진 입력 포트 를 사용 하지 않 습 니 다.
    pipeline  port out  disable
    

    표 에 특정 파이프 인 스 턴 스 의 기본 규칙 을 추가 합 니 다.
    pipeline  table  rule add
           match
              default
           action
              fwd
                 drop
                 | port 
                 | meta
                 | table 
    

    특정 파이프 인 스 턴 스 를 위 한 규칙 추가
    pipeline  table  rule add
    
    match
       acl
          priority 
          ipv4 | ipv6    
              
       | array 
       | hash
          raw 
          | ipv4_5tuple     
          | ipv6_5tuple     
          | ipv4_addr 
          | ipv6_addr 
          | qinq  
       | lpm
          ipv4 | ipv6  
    
    action
       fwd
          drop
          | port 
          | meta
          | table 
       [balance  ... ]
       [meter
          tc0 meter  policer g  y  r 
          [tc1 meter  policer g  y  r 
          tc2 meter  policer g  y  r 
          tc3 meter  policer g  y  r ]]
       [tm subport  pipe ]
       [encap
          ether  
          | vlan     
          | qinq        
          | mpls unicast | multicast
              
             label0 

    특정 파이프 인 스 턴 스 를 위해 표 에 일괄 규칙 을 추가 합 니 다.
    pipeline  table  rule add bulk  
    
    Where:
    - file_name = path to file
    - File line format = match  action 
    

    특정 파이프 인 스 턴 스 의 표 규칙 을 삭제 합 니 다.
    pipeline  table  rule delete
       match 
    

    특정 파이프 인 스 턴 스 의 기본 표 규칙 을 삭제 합 니 다.
    pipeline  table  rule delete
       match
          default
    

    특정 파이프 인 스 턴 스 를 위 한 계량기 설정 파일 추가
    pipeline  table  meter profile 
     add srtcm cir  cbs  ebs 
     | trtcm cir  pir  cbs  pbs 
    

    표 에서 특정 파이프 인 스 턴 스 의 계기 설정 파일 을 삭제 합 니 다.
    pipeline  table 
     meter profile  delete
    

    특정 파이프 인 스 턴 스 의 표 나 데이터 관리자 작업 에 dscp 표를 업데이트 합 니 다.
    pipeline  table  dscp 
    
    Where:
       - file_name = path to file
       - exactly 64 lines
       - File line format =   , with  as: g | y | r
    

    40.5.10 파이프 가 특정한 데이터 평면 스 레 드 로 지정 한 파이프 인 스 턴 스 를 사용 하거나 사용 하지 않 습 니 다.
    thread  pipeline  enable
    

    특정 데이터 평면 스 레 드 의 주어진 파이프 인 스 턴 스 를 사용 하지 않 습 니 다.
    thread  pipeline  disable
    

    좋은 웹페이지 즐겨찾기