검색

8.16. 네트워크 RHEL 시스템 역할을 사용하여 높은 패킷 드롭 속도를 줄이기 위해 링 버퍼 크기 증가

download PDF

패킷 삭제 속도가 발생하면 이더넷 장치의 링 버퍼 크기를 늘리면 애플리케이션이 데이터 손실, 시간 초과 또는 기타 문제가 보고됩니다.

링 버퍼는 오버플로가 기존 데이터를 덮어쓰는 순환 버퍼입니다. 네트워크 카드는 전송(TX)을 할당하고(RX) 링 버퍼를 수신합니다. 수신 링 버퍼는 장치 드라이버와 NIC(네트워크 인터페이스 컨트롤러) 간에 공유됩니다. 데이터는 SoftIRQs라고도 하는 하드웨어 인터럽트 또는 소프트웨어 인터럽트를 통해 NIC에서 커널로 이동할 수 있습니다.

커널은 장치 드라이버가 이를 처리할 수 있을 때까지 RX 링 버퍼를 사용하여 들어오는 패킷을 저장합니다. 장치 드라이버는 일반적으로 SoftIRQs를 사용하여 RX 링을 드레이닝하여 들어오는 패킷을 sk_buff 또는 skb 라는 커널 데이터 구조에 배치하여 커널과 관련 소켓을 소유하는 애플리케이션까지 이동합니다.

커널은 TX 링 버퍼를 사용하여 네트워크로 전송해야 하는 발신 패킷을 보관합니다. 이러한 링 버퍼는 스택 하단에 있으며 패킷 드롭이 발생할 수 있는 중요한 지점이며 네트워크 성능에 부정적인 영향을 미칩니다.

중요

네트워크 RHEL 시스템 역할을 사용하는 플레이를 실행하고 설정 값이 플레이에 지정된 값과 일치하지 않으면 역할은 동일한 이름의 기존 연결 프로필을 재정의합니다. 이러한 값을 기본값으로 재설정하지 않으려면 구성이 이미 존재하는 경우에도 플레이에서 네트워크 연결 프로필의 전체 구성을 항상 지정합니다.

Ansible 제어 노드에서 다음 프로세스를 수행합니다.

사전 요구 사항

  • 제어 노드와 관리형 노드가 준비되었습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리형 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • 이 플레이북을 실행하려는 관리형 노드 또는 관리형 노드 그룹은 Ansible 인벤토리 파일에 나열됩니다.
  • 장치가 지원하는 최대 링 버퍼 크기를 알고 있습니다.

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/configure-ethernet-device-with-ring-buffer-sizes.yml )을 만듭니다.

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
      - name: Configure an Ethernet connection with increased ring buffer sizes
        include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            - name: enp1s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              ethtool:
                ring:
                  rx: 4096
                  tx: 4096
              state: up

    이 플레이북은 다음 설정으로 enp1s0 연결 프로필을 생성하거나 프로필이 이미 있는 경우 업데이트합니다.

    • 정적 IPv4 주소 - 198.51.100.20 ( /24 서브넷 마스크 포함)
    • /64 서브넷 마스크가 포함된 정적 IPv6 주소 - 2001:db8:1::1
    • IPv4 기본 게이트웨이 - 198.51.100.254
    • IPv6 기본 게이트웨이 - 2001:db8:1::fffe
    • IPv4 DNS 서버 - 198.51.100.200
    • IPv6 DNS 서버 - 2001:db8:1::ffbb
    • DNS 검색 도메인 - example.com
    • 최대 링 버퍼 항목 수:

      • 수신(RX): 4096
      • 전송(TX): 4096
  2. 플레이북 구문을 확인합니다.

    # ansible-playbook ~/configure-ethernet-device-with-ring-buffer-sizes.yml --syntax-check

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    # ansible-playbook ~/configure-ethernet-device-with-ring-buffer-sizes.yml

추가 리소스

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md file
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.