Puncte:0

Windows lasă automat grupuri multicast neutilizate?

drapel cg

Când am depanat multicast, nu am găsit nicio referință cu privire la semnificația câmpurilor returnate de această comandă:

C:\Users\Administrator>netsh int ip show joins level=verbose
    
 Interfața 5: Ethernet0
    
 Adresă multicast: 224.0.0.1
 Domeniul de aplicare: 0
 Referinte: 0
 Ultimul reporter? : Da
    
 Adresă multicast: 224.0.0.251
 Domeniul de aplicare: 0
 Referinte: 2
 Ultimul reporter? : Da
    
 Adresă multicast: 224.0.0.252
 Domeniul de aplicare: 0
 Referinte: 1
 Ultimul reporter? : Da

Ce să faci Domeniul de aplicare, Referințe și Ultimul reporter Rău?

Cred Referințe înseamnă numărul de procese care ascultă acel grup multicast specific. În cazul în care o aplicație se oprește/se blochează înainte de a părăsi grupul de multicast, acesta a folosit, acel număr ajunge la zero, dar de fapt nu este eliminat din listă și mașina continuă să primească fluxul multicast. Există vreo setare care împiedică acest lucru, de ex. după un timp grupul multicast nu mai este folosit de niciun proces, sistemul de operare îl părăsește automat?

Acest lucru se întâmplă pe Windows 10 și Windows Server 2019 folosind (în mod implicit) IGMPv3.

Puncte:0
drapel cn

Numele oficial pentru alăturarea/plecarea IGMP este Raportul de membru IGMP. Un router din amonte care se ocupă de IGMP într-o rețea cu acces multiplu se numește Querier. Într-adevăr, interogează periodic toate gazdele (224.0.0.1) pentru starea lor reală de membru al grupului.

Deoarece rețeaua cu acces multiplu poate fi destul de mare, acest lucru poate declanșa un aflux de rapoarte de membru IGMP care poate copleși rețeaua sau un interogator în sine; Având în vedere natura multicastului, nu contează cu adevărat câte gazde dintr-o rețea ascultă un anumit grup, doar una ar fi suficientă pentru a continua transmiterea acestui grup pe o interfață.

De altfel, la primirea interogării IGMP, toate gazdele pornesc un temporizator aleatoriu și primul care expiră trimite Raportul de membru la 224.0.0.1 pentru ca interogatorul și alții să îl audă. Dacă gazda a auzit că grupurile sale au fost deja raportate, anulează cronometrul. Arhitectura este construită astfel încât, în majoritatea cazurilor, doar câteva gazde vor răspunde efectiv la Query. Gazda care a raportat un grup în timpul acestui proces se numește Last Reporter pentru acest grup.

După cum puteți vedea, routerul din amonte habar nu are câți clienți ascultă un anumit grup. Deci, atunci când gazda trimite Leave Report, routerul nu oprește (și nu ar trebui prin proiectare) imediat acest flux multicast pe o interfață, deoarece ar putea fi alți clienți care îl ascultă. În schimb, trimite o interogare specifică IGMP acestui grup anume (adică 239.0.0.1) pentru a declanșa alți clienți care îl ascultă să trimită înapoi Raportul de membru.

Întrucât toate aceste chestii de interogare/raport sunt trimise asincron și nesigur prin multicast, există o probabilitate diferită de zero ca această interogare specifică să nu primească imediat un raport înapoi din cauza pierderii de pachete sau a altor probleme, astfel încât routerul în mod implicit încearcă să-l trimită de două ori (peste două intervale de interogare) și numai atunci grupul multicast este tăiat pe o interfață și fluxul de trafic se oprește. Același lucru este valabil dacă pentru o interogare standard de membru (pe 224.0.0.1) grupul anume nu este raportat înapoi de două ori, acest lucru se poate întâmpla dacă un software sau hardware funcționează defectuos înainte de a putea trimite un raport de părăsire pentru un grup.

Scope ca atare este un domeniu de adresă multicast care își are rădăcinile în vremurile vechiului și gloriosul Global Internet Multicast Routing Dream și specifică zona în care ar trebui să circule acest grup, 0 înseamnă rețea locală în IPv4.

kuma avatar
drapel cg
_Acest lucru s-ar putea întâmpla dacă un software sau un hardware funcționează defectuos înainte de a putea trimite un raport de părăsire pentru un grup_ Cred că în acest caz, acest grup va continua să apară în rezultatul `netsh int ip show join` cu 0 referințe și va fi primit de către calculatorul până la oprire? Dacă da, există vreo modalitate de a preveni acest lucru?
Peter Zhabin avatar
drapel cn
Acest grup va fi gunoiul colectat de nucleu și șters după o anumită perioadă de timp. Tocmai am făcut un test rapid - am lansat clientul meu IPTV pe un computer Windows și am început un canal. A apărut în `netsh int ip show join` cu 2 referințe, deoarece clientul are două procese. Apoi, l-am ucis cu foc, adică l-am terminat cu forța cu `TerminateProcess`. Grupul în cauză a fost afișat cu 0 referințe timp de aproximativ 10-15 secunde după aceea și apoi a dispărut complet. Care este problema reală pe care încerci să o rezolvi?
kuma avatar
drapel cg
grupul în cauză este afișat cu 0 referințe, nu dispare niciodată și pachetele din acel grup multicast sunt primite pe termen nelimitat. Se pare că gunoiul nu funcționează? Cum să verific asta?
Peter Zhabin avatar
drapel cn
În exemplul dvs. de mai sus, `224.0.0.1` este `toate gazdele` și este tratat de nucleul însuși, deci are 0 referințe, dar nu ar dispărea niciodată. Este posibil ca grupul la care vă uitați să fie ceva de genul acesta, vă rog să fiți mai precis, adică să furnizați adresa grupului și scenariul de utilizare?
kuma avatar
drapel cg
multicast-ul la care mă refer nu a fost surprins în captură de ecran. A fost un multicast cu scop administrativ (de exemplu, 239.10.10.10). Scenariul meu este foarte asemănător cu cel anterior al tău: am lansat o aplicație personalizată care s-a alăturat unui grup multicast, apoi închei aplicația cu forță și grupul multicast în cauză este afișat cu 0 referințe, nu dispare niciodată și pachetele din acel grup sunt primite pe termen nelimitat. Nu înțeleg de ce se întâmplă acest lucru și de ce a face același lucru cu VLC (încheierea forțată a aplicației) face ca grupul să dispară imediat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.