Att tänka på vi protokoll skissande ?

Avdelningen för programmering, nätverk samt alternativa OS.
Post Reply
User avatar
Ancalagon
Posts: 550
Joined: 2002-03-08 14:16:41
Location: Stockholm

Att tänka på vi protokoll skissande ?

Post by Ancalagon »

Tja!
Jag tänker hitta på ett litet protokoll för att skyffla data mellan mina små nätverkande skräpapplikationer och nu undrar jag, har någon bra tips att komma med ?

Kan tänka mig att det finns endel saker man bör undvika o.s.v. ...
Jag söker alltså mycket generella tips ...

/Anca
User avatar
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Post by pwm »

Det enda jag kan komma på är att undvika protokoll som kör stop-and-go, dvs sänder ett paket och väntar på svar innan nästa paket går iväg.

De är visserligen väldigt enkla att koda men överföringshastigheten stinker. Inga som helst problem att få större överföringar att använda mindre än 10% av länkkapaciteten.
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

pwm wrote:Det enda jag kan komma på är att undvika protokoll som kör stop-and-go, dvs sänder ett paket och väntar på svar innan nästa paket går iväg.

De är visserligen väldigt enkla att koda men överföringshastigheten stinker. Inga som helst problem att få större överföringar att använda mindre än 10% av länkkapaciteten.
Sökord på google: "sliding window"
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Re: Att tänka på vi protokoll skissande ?

Post by IcePic »

Ancalagon wrote:Kan tänka mig att det finns endel saker man bör undvika o.s.v. ...
Jag söker alltså mycket generella tips ...
Varje gång du tänker "Hum, om jag gör så här så spar jag 12 bitar" så ska du backa och tänka om.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
Ancalagon
Posts: 550
Joined: 2002-03-08 14:16:41
Location: Stockholm

Post by Ancalagon »

Tack för tipsen! ;D
User avatar
linc
Administratör
Posts: 7602
Joined: 2002-02-13 22:22:11
Location: Skåneland
Contact:

Re: Att tänka på vi protokoll skissande ?

Post by linc »

IcePic wrote:
Ancalagon wrote:Kan tänka mig att det finns endel saker man bör undvika o.s.v. ...
Jag söker alltså mycket generella tips ...
Varje gång du tänker "Hum, om jag gör så här så spar jag 12 bitar" så ska du backa och tänka om.
Varför?
hej.
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Re: Att tänka på vi protokoll skissande ?

Post by IcePic »

linc wrote:
IcePic wrote:
Ancalagon wrote:Kan tänka mig att det finns endel saker man bör undvika o.s.v. ...
Jag söker alltså mycket generella tips ...
Varje gång du tänker "Hum, om jag gör så här så spar jag 12 bitar" så ska du backa och tänka om.
Varför?
För att alla problem med RPC, ASN.1 och Y2k beror allihopa på att man utvecklar idiotprotokoll
för dataöverföring och lagring som ska göra "smarta saker". Kollar man på XML eller liknande så må de vara
bloatade och äckliga, men det tar 0 tid att överföra datat iaf. Och det är mer eller mindre tokenkelt
att få ut nån sorts info ur dem utan att konstra sig med hur lång en "int" är eller om man har bigendian-vs-littleendian
när man för över binärdata på nätet. Vill man skicka över värdet "hundratusen" så kan man gott
och väl sända 7bitars-ascii i stil med "100000" så kommer alla maskiner kunna tolka det (helst med
nån separator givetvis, semikolon eller nåt mellan varje värde) så blir det oändligt mycket enklare
för en tredjepartsperson att läsa av strömmen och se vad som far förbi istället för att börja
greja med att "ok, max-värdet för X är 100000, så det ryms inom log2(100000)=17 bitar så
om vi klumpar ihop 6 st. sådana så tar det 6*17=102 bitar och ryms inom 13 bytes, och vi får
ett par bitar över för status-fluff".

Jämför den parserkoden och beskrivningen med att istället parsa strängen:
"100000,96650,34534,56777,23455,32377" bara.
Skillnaden i tid att skicka 13 bytes över 100mbit-nätet istället för den 30-40 bytes långa asciisträngen är ju
inte ens mätbar. Samma sak om man ska lagra den på hårddisken.

Skulle man helt plötsligt vilja skicka ett värde på 900000 eller 3 465 456 så kommer asciilösningen
att "bara funka" medans bitpackade versionen måste göras om och helst få nån sorts "versionsbit"
som säger att numera kör vi inte 17 bitar per tal utan 26 eller 42.

Helt plötsligt är det inte bara kod som ska göras om utan protokollet, och det är trist och dumt
att sitta och designa om protokollet mest hela tiden för att man skulle spara 20 bytes i ett ethernetpaket.

Därför ska man inte lägga tid på hur mycket man kunde spara i bitar hit och dit utan göra det
enklast tänkbara även om det kostar en byte per true/false osv.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
linc
Administratör
Posts: 7602
Joined: 2002-02-13 22:22:11
Location: Skåneland
Contact:

Post by linc »

Tack.. bra svar. ;)
hej.
User avatar
pwm
Skribent
Posts: 1261
Joined: 2003-11-22 15:51:44
Location: Umeå

Re: Att tänka på vi protokoll skissande ?

Post by pwm »

IcePic wrote:Därför ska man inte lägga tid på hur mycket man kunde spara i bitar hit och dit utan göra det
enklast tänkbara även om det kostar en byte per true/false osv.
Om man inte som jag just arbetar med en applikation där bärarlagret har en överföringshastighet på 20 bps exklusive bortfall för felkorrektion!
-Tbred 2700 @ 2.4GHz, 1024MB, WinXP Prof, 800GB
-Tbred 2600 @ 2.225GHz, 1024MB, Linux, 1353GB
-Tbred 1700 @ 1.75GHz, 1024MB, WinXP Prof, 444GB
-P4 3.06GHz, 1024MB, WinXP Prof, 120GB
-PII 2x400MHz, 512MB, Win2k Prof, 79GB
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Post by IcePic »

linc wrote:Tack.. bra svar. ;)
Tilläggas kan ju att det finns andra saker som t.ex "när ska jag packa mitt data" där den sluga iden
verkar vara just att bloat:a på i protokollet/lagringen och sedan köra zip över datat efteråt. Är det
så att man har lämnat en massa nollor (på bit eller bytenivå) så kommer zip äta upp det iaf så de går
nästintill bort ändå, så man kan lika gärna "slösa" på den nivån ändå.
Vissa får ju läskiga ideer som att packa enskilda fält osv, vilket krånglar till allting i onödan.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Re: Att tänka på vi protokoll skissande ?

Post by IcePic »

pwm wrote:Om man inte som jag just arbetar med en applikation där bärarlagret har en överföringshastighet på 20 bps exklusive bortfall för felkorrektion!
Det är 1 miljarddel av alla datoranvändare som har det specialfallet, ni fyra från NASA som pratar live med
marsbilen behöver inte tipsen på 64bits.se's programmeringsforum. Resten av oss sitter med
100mbit-nät, 100G+ diskar och GHz-cpu:er. =)
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Re: Att tänka på vi protokoll skissande ?

Post by IcePic »

IcePic wrote:Resten av oss sitter med 100mbit-nät, 100G+ diskar och GHz-cpu:er. =)
Och även om vi inte gör det så kan man designa sin applikation för det fallet. Min segaste maskin
(amiga4000) har 10mbit-nät och 15G disk så om nån gör nåt som tar 30-40 bytes per paket istället
för 17 så lovar jag att tom den kommer orka med det.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
Post Reply