OT CLI로 TCP 기능 테스트

GitHub에서 소스 보기

OpenThread는 TCP 엔드포인트 간의 P2P 통신을 테스트하기 위해 스레드 네트워크와 함께 사용하는 TCP 명령어를 제공합니다. cli tcp는 모든 tcp 명령어가 상호작용하는 샘플 TCP 엔드포인트 하나와 샘플 TCP 리스너 하나를 제공합니다.

명령어 개요와 이어지는 예에서는 TCP 엔드포인트 예 및 TCP 리스너의 초기화, 피어 TCP 엔드포인트에 연결하는 방법, 피어에 메시지를 전송하는 방법에 대한 정보를 제공합니다.

TCP 명령어

tcp 명령어 목록을 보려면 help를 입력하세요.

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
모든 명령어에 대한 설명과 구문은 CLI 명령어 참조를 확인하세요. TCP 명령어는 tcp abort에서 알파벳순으로 시작합니다.

init 명령어

tcp init 명령어를 사용하여 TCP 모듈을 초기화하여 TCP 통신을 시작합니다. 그러면 TCP 모듈은 tcp CLI에서 제공하는 예시 TCP 리스너를 사용하여 수신 연결을 리슨하는 등의 여러 기능을 수행할 수 있습니다. 예시 TCP 리스너와 TCP 엔드포인트 예시를 초기화하려면 tcp deinit 명령어를 실행합니다.

bind 명령어

TCP 모듈을 초기화한 후 예시 TCP 엔드포인트를 바인딩하려면 tcp bind 명령어를 실행하여 IPv6 주소와 포트를 TCP 엔드포인트에 할당합니다. 이렇게 하면 통신을 위한 엔드포인트가 바인딩됩니다. IPv6 주소와 포트를 할당하는 것을 '엔드포인트의 이름 지정'이라고도 합니다.

listen 명령어

TCP 모듈을 초기화한 후 예시 TCP 리스너를 사용하려면 tcp listen 명령어를 실행하고 IPv6 주소와 수신 포트를 지정합니다.

예시 TCP 리스너가 들어오는 TCP 연결을 리슨하지 않도록 하려면 tcp stoplistening 명령어를 실행합니다.

connect 명령어

tcp connect 명령어는 예시 TCP 엔드포인트를 피어 TCP 엔드포인트 주소에 연결합니다.

send 명령어

두 노드 간에 연결이 설정되면 tcp send 명령어를 실행하여 피어에 메시지를 전송합니다.

benchmark 명령어

두 노드 간에 TCP 연결이 설정되면 원하는 경우 benchmark 명령어를 사용하여 노드 간에 대량의 데이터를 전송하여 네트워크 대역폭과 성능을 테스트합니다. benchmark 결과에는 전송되는 바이트 수(밀리초)와 TCP Goodput이 제공됩니다.

abort 명령어

TCP 연결을 즉각적으로 종료하려면 두 노드 중 하나에서 tcp abort 명령어를 실행하여 TCP 엔드포인트를 폐쇄 상태로 전환합니다.

sendend 명령어

한 노드가 다른 노드로 데이터 전송을 완료하면 첫 번째 노드는 tcp sendend 명령어를 실행하여 두 번째 노드에 더 이상 데이터가 없다고 알릴 수 있습니다. 두 번째 노드도 첫 번째 노드에 tcp sendend를 전송할 수 있습니다. 각 노드가 TCP: Disconnected 메시지를 수신하면 두 노드 간의 TCP 연결이 해제됩니다. 데이터 전송이 완료되었을 때 이 명령어를 실행하는 것이 좋지만 필수사항은 아닙니다.

두 노드 간 메시지 전송

  1. 노드 1에서 TCP CLI 모듈을 초기화한 다음 예시 TCP 리스너를 사용하여 들어오는 연결을 수신 대기합니다.

    tcp init
    tcp listen :: 30000
    

    :: 사용은 listen가 지정되지 않은 IPv6 주소를 사용해야 하므로 TCP/IPv6 스택이 IPv6 주소를 할당하도록 합니다. 포트는 30000입니다.

  2. 노드 2에서 TCP CLI 모듈을 초기화하고 노드 1에 연결한 다음 간단한 메시지를 보냅니다.

    tcp init
    tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
    tcp send hello
    

인증

위에 표시된 예시 단계에 따라 다음과 같은 출력이 표시될 수 있습니다.

  • 노드 2가 tcp connect 명령어를 실행하면 노드 2는 TCP: Connection established 메시지를 수신해야 합니다.
  • 그러면 노드 1은 메시지를 수신합니다 (IPv6 주소 및 포트 예시 포함).
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • 노드 2가 tcp send 명령어를 실행하면 노드 1은 TCP: Received 5 bytes: hello 메시지를 수신해야 합니다.