35.5. 모니터링 MPTCP 하위 흐름


다중 경로 TCP(MPTCP) 소켓의 라이프 사이클은 복잡할 수 있습니다. 기본 MPTCP 소켓이 생성되고, MPTCP 경로가 검증되고, 하나 이상의 하위 흐름이 생성되고 결국 제거됩니다. 마지막으로 MPTCP 소켓이 종료됩니다.

MPTCP 프로토콜을 사용하면 iproute 패키지에서 제공하는 ip 유틸리티를 사용하여 소켓 및 하위 흐름 생성 및 삭제와 관련된 MPTCP별 이벤트를 모니터링할 수 있습니다. 이 유틸리티는 netlink 인터페이스를 사용하여 MPTCP 이벤트를 모니터링합니다.

이 절차에서는 MPTCP 이벤트를 모니터링하는 방법을 설명합니다. 이를 위해 MPTCP 서버 애플리케이션을 시뮬레이션하고 클라이언트가 이 서비스에 연결됩니다. 이 예에서 관련 클라이언트는 다음 인터페이스 및 IP 주소를 사용합니다.

  • 서버: 192.0.2.1
  • 클라이언트(Ethernet 연결): 192.0.2.2
  • 클라이언트(WiFi 연결): 192.0.2.3

이 예제를 단순화하기 위해 모든 인터페이스는 동일한 서브넷에 있습니다. 이는 요구 사항이 아닙니다. 그러나 라우팅이 올바르게 구성되어 있으며 클라이언트는 두 인터페이스를 통해 서버에 연결할 수 있습니다.

사전 요구 사항

  • 두 개의 네트워크 인터페이스가 있는 RHEL 클라이언트(예: 이더넷 및 everyone가 있는 랩탑)
  • 클라이언트는 두 인터페이스를 통해 서버에 연결할 수 있습니다.
  • RHEL 서버
  • 클라이언트와 서버 모두 RHEL 8.6 이상을 실행합니다.

프로세스

  1. 클라이언트와 서버 모두에서 연결별 추가 하위 흐름 제한을 1 로 설정합니다.

    # ip mptcp limits set add_addr_accepted 0 subflows 1
    Copy to Clipboard Toggle word wrap
  2. 서버에서 MPTCP 서버 애플리케이션을 시뮬레이션하려면 TCP 소켓 대신 강제 MPTCP 소켓을 사용하여 수신 대기 모드에서 netcat (nc)을 시작합니다.

    # nc -l -k -p 12345
    Copy to Clipboard Toggle word wrap

    -k 옵션을 사용하면 첫 번째 수락된 연결 후 해당 nc 가 리스너를 닫지 않습니다. 하위 흐름의 모니터링을 보여주는 데 필요합니다.

  3. 클라이언트에서 다음을 수행합니다.

    1. 가장 낮은 메트릭으로 인터페이스를 식별합니다.

      # ip -4 route
      192.0.2.0/24 dev enp1s0 proto kernel scope link src 192.0.2.2 metric 100
      192.0.2.0/24 dev wlp1s0 proto kernel scope link src 192.0.2.3 metric 600
      Copy to Clipboard Toggle word wrap

      enp1s0 인터페이스에는 wlp1s0 보다 낮은 메트릭이 있습니다. 따라서 RHEL은 기본적으로 enp1s0 을 사용합니다.

    2. 첫 번째 터미널에서 모니터링을 시작합니다.

      # ip mptcp monitor
      Copy to Clipboard Toggle word wrap
    3. 두 번째 터미널에서 서버에 대한 MPTCP 연결을 시작합니다.

      # nc 192.0.2.1 12345
      Copy to Clipboard Toggle word wrap

      RHEL은 enp1s0 인터페이스와 관련 IP 주소를 이 연결의 소스로 사용합니다.

      모니터링 터미널에서 ip mptcp 모니터 명령이 다음을 기록합니다.

      [       CREATED] token=63c070d2 remid=0 locid=0 saddr4=192.0.2.2 daddr4=192.0.2.1 sport=36444 dport=12345
      Copy to Clipboard Toggle word wrap

      토큰은 MPTCP 소켓을 고유 ID로 식별하고 나중에 동일한 소켓에서 MPTCP 이벤트의 상관 관계를 지정할 수 있습니다.

    4. 서버에 대한 실행 중인 nc 연결이 있는 터미널에서 Enter 를 누릅니다. 이 첫 번째 데이터 패킷은 연결을 완전히 설정합니다. 데이터가 전송되지 않은 한 연결이 설정되지 않습니다.

      모니터링 터미널에서 ip mptcp 모니터 는 다음을 기록합니다.

      [   ESTABLISHED] token=63c070d2 remid=0 locid=0 saddr4=192.0.2.2 daddr4=192.0.2.1 sport=36444 dport=12345
      Copy to Clipboard Toggle word wrap
    5. 선택 사항: 서버의 포트 12345 에 대한 연결을 표시합니다.

      # ss -taunp | grep ":12345"
      tcp ESTAB  0  0         192.0.2.2:36444 192.0.2.1:12345
      Copy to Clipboard Toggle word wrap

      이 시점에서 서버에 대한 하나의 연결만 설정되었습니다.

    6. 세 번째 터미널에서 다른 끝점을 생성합니다.

      # ip mptcp endpoint add dev wlp1s0 192.0.2.3 subflow
      Copy to Clipboard Toggle word wrap

      이 명령은 이 명령에서 클라이언트의 everyone 인터페이스의 이름과 IP 주소를 설정합니다.

      모니터링 터미널에서 ip mptcp 모니터 는 다음을 기록합니다.

      [SF_ESTABLISHED] token=63c070d2 remid=0 locid=2 saddr4=192.0.2.3 daddr4=192.0.2.1 sport=53345 dport=12345 backup=0 ifindex=3
      Copy to Clipboard Toggle word wrap

      locid 필드는 새 하위 흐름의 로컬 주소 ID를 표시하고 연결이 NAT(네트워크 주소 변환)를 사용하는 경우에도 이 하위 흐름을 식별합니다. saddr4 필드는 ip mptcp endpoint add 명령의 끝점 IP 주소와 일치합니다.

    7. 선택 사항: 서버의 포트 12345 에 대한 연결을 표시합니다.

      # ss -taunp | grep ":12345"
      tcp ESTAB  0  0         192.0.2.2:36444 192.0.2.1:12345
      tcp ESTAB  0  0  192.0.2.3%wlp1s0:53345 192.0.2.1:12345
      Copy to Clipboard Toggle word wrap

      이제 명령에서 두 개의 연결을 표시합니다.

      • 소스 주소 192.0.2.2 와의 연결은 이전에 설정한 첫 번째 MPTCP 하위 흐름에 해당합니다.
      • 소스 주소 192.0.2.3 을 사용하여 wlp1s0 인터페이스를 통해 하위 흐름에서 연결합니다.
    8. 세 번째 터미널에서 끝점을 삭제합니다.

      # ip mptcp endpoint delete id 2
      Copy to Clipboard Toggle word wrap

      ip mptcp 모니터 출력의 locid 필드의 ID를 사용하거나 ip mptcp endpoint show 명령을 사용하여 끝점 ID를 검색합니다.

      모니터링 터미널에서 ip mptcp 모니터 는 다음을 기록합니다.

      [     SF_CLOSED] token=63c070d2 remid=0 locid=2 saddr4=192.0.2.3 daddr4=192.0.2.1 sport=53345 dport=12345 backup=0 ifindex=3
      Copy to Clipboard Toggle word wrap
    9. nc 클라이언트가 있는 첫 번째 터미널에서 Ctrl+C 눌러 세션을 종료합니다.

      모니터링 터미널에서 ip mptcp 모니터 는 다음을 기록합니다.

      [        CLOSED] token=63c070d2
      Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat