Het exacte aantal benodigde packets kan mogelijk anders zijn, want ieder packet van 188 bytes (is een MPEG packet) heeft ook nog die vaste MPEG header van 4 bytes en voor DOCSIS zelf is er ook nog sprake van een header waarin o.a. de MAC adressen van zender en ontvanger zijn vermeldt, het type DOCSIS packet en de grootte. Voor je voorbeeld gaan we uit van 8 packets.
Onderstaande screenshot laat 4 van die MPEG packets zien:
De MPEG header van 4 bytes is blauw gemarkeerd en de 0xFF bytes aan het einde van sommige packets zijn filler bytes om de DOCSIS payload op te vullen tot een volledig MPEG packet van 188 bytes. MPEG packet #1 en #4 bevatten beide een vrij kleine DOCSIS packet als payload en MPEG packets #2 en #3 bevatten samen als payload een DOCSIS packet dat net niet past in één MPEG packet.
Stel dat packet 3 van 8 nu wegvalt dan weet DOCSIS hier toch niets van?
DOCSIS weet daar wel van omdat de onderliggende hardware/firmware het packet niet konden herstellen (een uncorrectable). Er zitten allerlei controle mogelijkheden ingebouwd in de packets. Omdat de stream een eindeloze bitreeks is heeft de ontvanger dat ook nodig om bij verstoringen weer opzoek te gaan naar een nieuw begin van een MPEG packet. De 0x47 byte (is de sync byte) die je als eerste byte in de blauw gemarkeerde header van elk MPEG packet ziet heeft de ontvanger daarvoor bijvoorbeeld nodig. Ook klopt de volgnummering van de MPEG packets niet meer. De DOCSIS specificatie zegt er het volgende over:
C.2 MPEG Header Synchronization and Recovery in the European Technology Option
When implementing the second physical layer technology option referred to in Section 1 (1.1 Introduction and Purpose) and specified in Annex B, modifications described in EN 300 429 [EN 300 429] apply to the transport stream format.
The MPEG-2 packet stream SHOULD be declared "in frame" (i.e., correct packet alignment has been achieved) when five consecutive correct sync bytes, each 188 bytes from the previous one, have been received.
The MPEG-2 packet stream SHOULD be declared "out of frame", and a search for correct packet alignment started, when nine consecutive incorrect sync bytes are received.
Alleen volledige DOCSIS packets die zijn samengesteld uit één of meerdere MPEG packets worden verder verwerkt door de volgende protocol implementatie lagen.
Maar omdat TCP op een hogere laag detecteert dat het TCP packet niet klopt vraagt het clients OS om een retransmit. En dan komt het hele TCP packet weer in 8 DOCSIS packets naar je toe.
In geval van het TCP voorbeeld mist de TCP laag dus een volledig TCP packet en zal vragen om een retransmit. Bij andere protocollen zal er geen sprake te zijn van een retransmit als er bij zo'n protocol geen sprake is van een gegarandeerde aflevering.
DOCSIS is eigenlijk (als je het vergelijkt) UDPachtig, waarbij je geen controle hebt over de correctheid van de ontvangen berichten aan de overzijde. Het is een bulk stream van data, thats it? Het modem kan wel zelf beslissen (lokale beslissing) dat een pakket corrupt is wat hij zojuist ontving?
Klopt.
Begrijp ik jouw tekst dan goed dat in de payload van 188bytes zowel DOCSIS momt pakketten kunnen zitten + eventuele datapaletten van de gebruiker? Of zijn die altijd gescheiden maar kunnen wel uit meerdere unieke DOCSIS packets bestaan?
Een nieuw DOCSIS packet begint altijd als payload van een nieuw MPEG packet (vandaar dat opvullen met 0xFF bytes) zodat iedere ontvanger in het coaxsegment altijd eerst kan synchroniseren op het begin van een MPEG packet en vervolgens op basis van de DOCSIS header kan bepalen of het DOCSIS packet als payload van één of meerdere MPEG packet bestemd is voor het modem of daarop aangesloten apparatuur. Zo niet, dan die MPEG packet reeks genegeerd worden.
Het modem bij de klant is dus ook nooit in rust. Het verwerkt continu MPEG packets met een constante bitrate van iets meer dan 51 Mbps. Zie onderstaand een voorbeeld van de Internet downstream op 338 MHz zoals die binnenkomt op alle AOP's in mijn coaxsegment:
De MPEG packet met PID 0x1FFE bevatten de DOCSIS payload. De packets met PID 0x1FFF kan zijn de NULL packets die door het modem genegeerd kunnen worden. Rechts onder zie je de totale data rate van de stream die dus gebaseerd is op een packet grootte van 188 bytes. De gebruikte DVB-C hardware/firmware/drivers laten dus niet de packets zien voor de Reed-Solomon error correctie wanneer ze nog 204 bytes groot zijn. De gebruikte TS Analyzer tool gaat overigens uit van het DVB protocol en weet dus niet dat deze MPEG packets worden gebruikt voor de doorgifte van het DOCSIS. Vandaar de '?' in de kolom voor de stream type. In de DOCSIS specificatie is aangegeven dat alleen PID 0x1FFE gebruikt wordt terwijl bij DVB allerlei PID's gebruikt worden.
Toevallig had het signaal in mijn coaxsegment zojuist weer even een kleine hickup (uncorrectables) en dan zie je volgende in de gebruikte tool:
Op de MPEG laag is dus door de gebruikte tool vastgesteld dat er 4 MPEG packets ontbreken en bij het opnieuw synchroniseren heeft de tool kennelijk nog een 0x47 sync byte gevonden die een vreemd packet met PID 0x15AC opleverde. Zoals gezegd is de gebruikte tool eigenlijk bedoeld voor DVB analyse, dus zal men zich niet netjes houden aan bovenstaande DOCSIS synchronisatie regel om minimaal 5 opeenvolgende 0x47 bytes te hebben gehad op 188 bytes intervallen.
Wat merk je als gebruiker van een T3 error en dezelfde vraag voor een T4 error? Want dit kan ook slechts een administratieve handeling/foutmelding zijn terwijl je datapackets wel goed aan kwamen op dat specifieke moment maar je mgmt packets niet.
Zoals aangegeven stuurt een modem met vaste intervallen een ranging request via de upstream naar de CMTS en verwacht dan binnen een bepaalde tijd een ranging response van de CMTS terug via de downstream. Als dat niet gebeurt start het modem een retry loop waarbij weer een ranging request naar de CMTS wordt verstuurd en er weer gewacht wordt op een ranging response. Die retry loop wordt dan een aantal keer herhaald (volgens Volpe 16 keer) en als er dan nog steeds geen response binnen is van de CMTS registreert het modem een T3 timeout en moet ervan uit gaan dat de verbinding met de CMTS niet in orde is.
In een poging om dat op te lossen wordt opnieuw het registratie proces bij de CMTS doorlopen waarbij dus ook alle eerder geconfigureerde downstreams en upstreams opnieuw worden gekoppeld (de CMTS bepaalt immers ook van welke streams het modem gebruik van mag maken). Tijdens die registratie wordt er geen gebruiker data verkeer afgehandeld, dus als de gebruiker op een dergelijk moment iets op het internet aan het doen was komt er dan even geen reactie en als er sprake was van actieve verbindingen met servers kan het zijn dat die verbindingen een timeout geven.
Voor een T4 timeout geldt een functioneel gezien een andere DOCSIS aanleiding, maar ook daar is sprake van een aantal keer opnieuw proberen en wil het uiteindelijk nog niet lukken moet het modem weer uitgaan van een slechte verbinding en het registratie proces opnieuw doorlopen. In beide gevallen toont de modem status pagina slechts een telling van het aantal voorkomens van T3/T4 timeouts en moet je op de log pagina van het modem kunnen zien op welk tijdstip de T3/T4 timeout is opgetreden. Dit zal aangemerkt zijn als een critical fout omdat op dergelijke momenten de service voor de gebruiker onderbroken wordt.
Zie de volgende pagina van Volpe voor uitleg van meer DOCSIS timeouts:
http://volpefirm.com/docsis_timout_descriptions/