하나의 ssh -D 프로세스가 여러 웹사이트 연결을 동시에 처리할 수 있다. 계층을 따로 세어 보자.

계층무엇을 나르는가
애플리케이션에서 SOCKS 리스너까지개별 애플리케이션 연결과 SOCKS 요청
SSH 채널채널 수준 흐름 제어를 갖는 독립적으로 주소 지정된 스트림
SSH 전송다중화된 채널 데이터, 보통 하나의 하위 TCP 연결 위
게이트웨이에서 웹사이트까지게이트웨이가 여는 개별 대상 연결

따라서 암호화된 SSH 소켓 하나가 보인다고 해서 모든 웹사이트 요청이 하나의 대상 연결로 직렬화되는 것은 아니다. 동적 포워딩은 스트림 데이터를 중계하고 새 연결을 연다. 애플리케이션의 원래 TCP 패킷과 IP 헤더를 다른 TCP 연결 안에 실어 나르는 패킷 터널과는 다르다.

공유 전송은 여전히 중요하다. 용량, 스케줄링, 암호화 작업, 전송 손실이나 지연은 여러 채널에 함께 영향을 줄 수 있다. 대상 하나가 멈춘 것만으로 단일 채널 한계가 입증되지는 않는다.

여러 애플리케이션이 함께 느려지면 같은 SSH 세션과 게이트웨이 경로를 공유하는지 확인하고, 그다음 실제 작업 부하를 비교하라. 로컬 SOCKS 포트를 세는 것은 처리량도, 독립 경로도 측정하지 않는다. 다중화 자체는 속도 향상이나 각 스트림을 위한 별도 공인 출구를 약속하지 않는다.

관련 글