Failo kopijavimas tarp dviejų Windows kompiuterių yra greitas tol, kol abu prisijungia prie tos pačios VPN, o tada jis sugriūva, nors tos pačios poros pralaidumo testas vis dar rodo beveik linijos greitį. Šis skirtumas ir yra diagnozė: ryšys geras, o kažkas pačiam perdavimui renkasi prastesnį kelią. Tas kažkas dažniausiai yra SMB3 kelių kanalų režimas, darantis būtent tai, kam buvo sukurtas. Išimkite papildomą kanalą ir kopija grįš prie fizinio ryšio.

Simptomas laukia lėčiausio kanalo

Kelių kanalų režimas leidžia vienai SMB sesijai naudoti kelis TCP ryšius, po vieną kiekvienai tinkamai adresų porai tarp kliento ir serverio. Kai abu kompiuteriai yra vietiniame tinkle ir tame pačiame tunelyje, Windows gali suporuoti vietinio tinklo adresus su tunelio adresais ir abi poras laikyti tinkamomis naudoti. Sesijoje galiausiai lieka daugiau kanalų, nei reikia fiziniam ryšiui, ir vienas jų yra kur kas lėtesnis.

Tai nesugenda. Tai laukia, nes sesija negali baigtis greičiau už lėčiausią kanalą.

Štai kodėl pralaidumo testas gali atrodyti sveikas, kol kopija vos juda: vieno srauto matavimas gali pasirinkti vieną kelią, o perdavimas buvo paskirstytas dviem. Perskaitykite kanalų sąrašą prieš keisdami bet kokį adapterio nustatymą ir skaitykite jį, kol kopija dar vyksta, nes neaktyvi sesija nieko nerodo. Tai, ką užsirašysite, turėtų įvardyti sąsają už kiekvieno kanalo, o ne tik tai, kaip lėtai atrodė rezultatas.

Patvirtinkite, kad yra antras kanalas

Du cmdlet atsako į šį klausimą tiesiogiai. Ryšių sąrašas rodo naudojamus kanalus, o sesijos suvestinė rodo patį ryšį. Paleiskite abu lėto kopijavimo metu.

Get-SmbMultichannelConnection
Get-SmbConnection

Ieškokite daugiau nei vienos eilutės, pažymėtos kaip pasirinkta tam pačiam serveriui, tada išsiaiškinkite kliento adresą įtartinoje eilutėje. Jei tas adresas priklauso tunelio adapteriui, antras kelias yra tikras ir patvirtintas. Jei kiekviena eilutė priklauso fizinei sąsajai, kelių kanalų režimas nėra jūsų problema ir kopija lėta dėl nesusijusios priežasties. Atlikite šį patvirtinimą pirmiausia, nes taisymas yra pakankamai trikdantis, kad nusipelnytų minutės įrodymų.

Get-NetIPAddress -IPAddress 10.20.30.44

Adresai čia yra vietos žymekliai. Pakeiskite juos tuo, ką praneša jūsų pačių išvestis, nes adreso kopijavimas iš tinklaraščio yra būdas, kuriuo veikianti komanda virsta painia klaidos žinute.

Išimkite tunelį iš SMB ir tada matuokite iš naujo

Išjungti kelių kanalų režimą yra greičiausias būdas patvirtinti diagnozę, ir tai grįžtama. Taikykite kliento nustatymą kompiuteryje, kuris kopijuoja, o serverio nustatymą kompiuteryje, kuriame talpinama bendrinama vieta, nes bet kuri pusė viena gali išlaikyti papildomą kanalą gyvą. Pakeitimas galioja naujiems ryšiams, o ne esamiems, todėl atvira sesija jį išgyvena. Paleiskite iš naujo abu kompiuterius arba bent uždarykite visus bendrinamos vietos deskriptorius prieš ką nors matuodami.

Set-SmbClientConfiguration -EnableMultiChannel $false -Force
Set-SmbServerConfiguration -EnableMultiChannel $false -Force

Patvirtinkite naują būseną, tada pažiūrėkite, ką serveris dabar skelbia klientams.

Get-SmbClientConfiguration | Select-Object EnableMultiChannel
Get-SmbServerNetworkInterface | Format-List *

Tunelio sąsaja turėtų iškristi iš to skelbiamo sąrašo. Jei neiškrenta, nustatymas atsidūrė ne tame gale arba sena sesija vis dar atidaryta. Jei failų bendrinimas tiesiog neturi naudoti tunelio, atriškite serverio komponentą nuo to adapterio, o tai palieka tunelį tinkamą visoms kitoms paslaugoms.

Get-NetAdapterBinding -Name "OpenVPN Data Channel Offload"
Disable-NetAdapterBinding -Name "OpenVPN Data Channel Offload" -ComponentID ms_server

Teikite pirmenybę vietinio tinklo keliui neapsimetinėdami, kad jis ištrina kanalus

Sąsajos metrika pasako Windows, kuriam keliui teikti pirmenybę naujiems ryšiams. Ji nepašalina kanalo, kurį kelių kanalų režimas jau nusprendė atidaryti. Padidinti tunelio metriką vis tiek verta, nes tai laiko nesusijusį srautą toliau nuo lėto kelio ir daro pageidaujamą maršrutą nuspėjamą, bet tai pastūmėjimas, o ne filtras.

Get-NetIPInterface | Sort-Object InterfaceMetric | Select-Object InterfaceAlias, InterfaceMetric
Set-NetIPInterface -InterfaceAlias "OpenVPN Data Channel Offload" -AutomaticMetric Disabled -InterfaceMetric 1000

Nukopijuokite slapyvardį iš tos išvesties, o ne įveskite jį ranka, nes kai kurios instaliacijos lokalizuoja adapterio pavadinimą ir angliška eilutė nesutaps.

Tada dar kartą išmatuokite abu skaičius: failo kopijavimą ir pralaidumo testą ta pačia pora. Jei kopija atsigauna, nors pralaidumo testas niekada nebuvo lėtas, priežastis buvo kelių kanalų režimas ir galite sustoti. Jei sugriūva abu, tunelis yra kliūtis ir kelių kanalų režimas tik ją sustiprino. Jei kopija išlieka lėta, nors abu keliai atrodo teisingi, likusi problema gyvena bendrinamoje vietoje, saugykloje ar filtro tvarkyklėje, o tai jau kitas tyrimas.

Susiję straipsniai