VPN이 연결되면 파일 복사가 느려진다: SMB 멀티채널
복사는 가장 느린 채널을 기다리므로, 정상으로 보이는 대역폭 테스트가 원인을 가린다. 터널 채널을 확인하고 SMB에서 빼낸 다음 두 경로를 모두 측정하라.
두 Windows 컴퓨터 사이의 파일 복사는 둘 다 같은 VPN에 가입하기 전까지는 빠르다. 그런데 가입하는 순간 복사가 무너지는데, 같은 쌍을 통과하는 처리량 테스트는 여전히 회선 속도에 가까운 값을 보고한다. 그 차이가 바로 진단이다. 링크는 멀쩡하고, 무언가가 전송 자체에 더 나쁜 경로를 고르고 있다. 그 무언가는 보통 SMB3 멀티채널이며, 설계된 대로 정확히 동작하고 있을 뿐이다. 여분의 채널을 계산에서 빼면 복사는 물리 링크로 돌아온다.
증상은 가장 느린 채널을 기다린다
멀티채널은 하나의 SMB 세션이 여러 TCP 연결을 쓰게 한다. 클라이언트와 서버 사이의 적절한 주소 쌍마다 하나씩이다. 두 컴퓨터가 LAN에 있고 동시에 같은 터널에 있으면, Windows는 LAN 주소와 터널 주소를 짝지어 두 쌍 모두 사용 가능하다고 본다. 결국 세션에는 물리 링크가 필요로 하는 것보다 많은 채널이 생기고, 그중 하나가 훨씬 느리다.
실패하는 것이 아니다. 세션은 가장 느린 채널보다 빨리 끝날 수 없으므로 기다리는 것이다.
그래서 복사가 기어가는 동안에도 대역폭 테스트는 정상으로 보일 수 있다. 단일 스트림 측정은 한 경로를 고를 수 있지만, 전송은 두 경로에 나뉘어 있었기 때문이다. 어댑터 설정을 바꾸기 전에 채널 목록을 읽고, 복사가 아직 실행 중일 때 읽어라. 유휴 세션은 아무것도 보여 주지 않는다. 기록할 때는 각 채널 뒤에 있는 인터페이스를 적어야지, 결과가 얼마나 느리게 느껴졌는지만 적어서는 안 된다.
두 번째 채널이 있는지 확인하라
두 개의 cmdlet이 이 질문에 직접 답한다. 연결 목록은 사용 중인 채널을 보여 주고, 세션 요약은 연결 자체를 보여 준다. 느린 복사 중에 둘 다 실행하라.
Get-SmbMultichannelConnection
Get-SmbConnection같은 서버에 대해 선택된 것으로 표시된 행이 둘 이상 있는지 찾고, 의심스러운 행의 클라이언트 주소를 확인하라. 그 주소가 터널 어댑터에 속한다면 두 번째 경로는 실제이며 확인된 것이다. 모든 행이 물리 인터페이스에 속한다면 멀티채널은 문제가 아니며 복사는 무관한 이유로 느린 것이다. 이 확인을 먼저 하라. 수리는 방해가 크므로 증거 일 분의 가치가 있다.
Get-NetIPAddress -IPAddress 10.20.30.44여기 나오는 주소는 자리 표시자다. 자신의 출력이 보고하는 값으로 바꿔라. 블로그에서 주소를 복사하는 것이야말로 동작하는 명령을 혼란스러운 오류 메시지로 만드는 길이다.
터널을 SMB에서 빼낸 다음 다시 측정하라
멀티채널을 끄는 것이 진단을 확인하는 가장 빠른 방법이며 되돌릴 수 있다. 클라이언트 설정은 복사하는 컴퓨터에, 서버 설정은 공유를 호스팅하는 컴퓨터에 적용하라. 어느 한쪽만으로도 여분의 채널을 살려 둘 수 있기 때문이다. 변경은 기존 연결이 아니라 새 연결에 적용되므로 열린 세션은 살아남는다. 무엇이든 측정하기 전에 두 컴퓨터를 재부팅하거나 적어도 공유에 대한 모든 핸들을 닫아라.
Set-SmbClientConfiguration -EnableMultiChannel $false -Force
Set-SmbServerConfiguration -EnableMultiChannel $false -Force새 상태를 확인하고, 서버가 이제 클라이언트에 무엇을 알리는지 보라.
Get-SmbClientConfiguration | Select-Object EnableMultiChannel
Get-SmbServerNetworkInterface | Format-List *터널 인터페이스는 그 알림 목록에서 빠져야 한다. 빠지지 않는다면 설정이 잘못된 끝에 적용되었거나 이전 세션이 아직 열려 있다. 파일 공유가 터널을 쓰지 않아야 한다면 대신 해당 어댑터에서 서버 구성 요소를 바인딩 해제하라. 그러면 터널은 다른 모든 서비스에 쓸 수 있는 상태로 남는다.
Get-NetAdapterBinding -Name "OpenVPN Data Channel Offload"
Disable-NetAdapterBinding -Name "OpenVPN Data Channel Offload" -ComponentID ms_server채널을 지운다는 착각 없이 LAN 경로를 선호하라
인터페이스 메트릭은 새 연결에 어느 경로를 선호할지 Windows에 알려 준다. 멀티채널이 이미 열기로 결정한 채널을 제거하지는 않는다. 터널의 메트릭을 높이는 것은 여전히 가치가 있다. 무관한 트래픽을 느린 경로에서 멀어지게 하고 선호 경로를 예측 가능하게 만들기 때문이다. 다만 그것은 미는 것이지 거르는 것이 아니다.
Get-NetIPInterface | Sort-Object InterfaceMetric | Select-Object InterfaceAlias, InterfaceMetric
Set-NetIPInterface -InterfaceAlias "OpenVPN Data Channel Offload" -AutomaticMetric Disabled -InterfaceMetric 1000별칭은 직접 입력하지 말고 그 출력에서 복사하라. 일부 설치에서는 어댑터 이름을 현지화하므로 영어 문자열이 맞지 않는다.
그다음 두 숫자를 다시 측정하라. 파일 복사와 같은 쌍을 통과하는 처리량 테스트다. 처리량 테스트가 한 번도 느리지 않았는데 복사가 회복된다면 멀티채널이 원인이므로 멈춰도 된다. 둘 다 무너진다면 터널이 병목이다 그리고 멀티채널은 그것을 증폭했을 뿐이다. 두 경로가 모두 올바르게 보이는데 복사가 느리다면 남은 문제는 공유, 스토리지 또는 필터 드라이버에 있으며, 그것은 다른 조사다.