SSH가 iperf3보다 느리게 실행되는 이유는 무엇입니까?

SSH가 iperf3보다 느리게 실행되는 이유는 무엇입니까?

openssh 클라이언트/서버의 최대 실행 속도는 약 1.03GB/s인 반면 iperf3은 동일한 지점 간 링크에서 7.03GB/s를 쉽게 유지할 수 있다는 점이 실망스럽습니다.

이 중 어느 것도 효과가 없습니다.

  • iperf 테스트와 ssh 전송 테스트 중에 두 시스템의 CPU 로드는 70%(총 2400%) 미만이었습니다.
  • 관련된 블록 장치 없음

이해가 안 돼요. ssh는 10gbe를 전혀 지원할 수 없나요? 비밀번호나 해시로 인해 속도가 느려지나요? openssl 클라이언트 소스 코드에 기가비트 제한을 하드코딩한 사람이 있나요? 이 파이프를 통해 회선 속도로 데이터를 전송하려면 8개 이상의 별도 SSH 연결을 열어야 합니까?


아래에 표시된 것처럼 작은 녹색 얼룩은 입니다 cat /dev/zero | ssh target 'cat >/dev/null'. 보라색/주황색 얼룩은 SSH 포트 전달을 기반으로 하는 iperf3이고 키가 큰 얼룩은 일반 iperf3입니다. 여기에 이미지 설명을 입력하세요.

일부 통계;

  • 전용 링크의 iperf3: 7.11Gbits/s

    (파이버를 잘못 취급하여 원래의 ~9Gbit 성능이 저하된 것 같습니다. 새로운 se la vi)

  • 전용 링크를 통한 iperf3(mtu=9000): 7.55Gbits/s

  • gbe LAN의 iperf3: 941Mbits/s
  • 직접 링크를 통한 SSH 기반 iperf3: 1.03Gbits/s
  • 기가비트 LAN을 통한 SSH 기반 iperf3: 941Mbits/s

    (분명히 ssh는 올바른 라우팅을 사용하고 있으며 여전히 일반 gbe 사용보다 약간 빠릅니다.)

  • SSH를 통해 ProxyCommand NC를 사용하는 iperf3: 1.1Gbit/s

    (또 다른 매우 작은 이득)

  • ProxyCommand nc를 사용하는 SSH를 통한 iperf3(mtu=9000): 1.01Gbit/s

    (이 경우 mtu는 링크 속도를 늦추는 것 같습니다)

답변1

그럼에도 불구하고 SSH는 단일 인스턴스에 대해 더 빠른 전송을 허용하지 않는 것 같습니다. 나는 마침내 루프백에서 테스트를 실행해야 한다는 것을 깨달았습니다(루프백은 Linux 4.10.0에서 12Gbits/s를 유지할 수 있음). SSD에서 루프백에 대한 ssh는 여전히 약 125~135Mbits/s만 수행합니다. ext4 파일 시스템은 거의 할 수 없습니다. 약 30-50 Mbits/s를 달성합니다. 대규모 전송의 경우 물리적 보안 링크를 설정하고 netcat을 통해 dd를 사용하기로 결정했습니다. 병목 현상은 파일 시스템이나 전송 프로토콜이 아니라 디스크 배열 처리량입니다. 또한 aria2를 sftp와 함께 사용할 수 있었기 때문에 병렬 SSH 클라이언트 전송을 포기했습니다. 아직 갈 길이 먼 것 같습니다~

답변2

거의 7Gbps는 지속적인 전송 속도가 아닌 단지 최대 피크 값("스파이크")이므로 분명히 잘못된 값입니다. 이는 네트워크 소프트웨어가 전송 속도를 추정하는 방식 때문에 발생할 수 있습니다(모든 대역폭을 차지하지 않는 작은 패킷이 더 빨리 도착할 수 있음). 실제로 7Gbps 판독의 동일한 라인에서는 평균 200Mbps가 나옵니다. 예를 들어 1GB보다 큰 파일을 지속적으로 전송해 보세요.

관련 정보