PA159, přednáška a

Podobné dokumenty
Transportní vrstva. RNDr. Ing. Vladimir Smotlacha, Ph.D.

4. Transportní vrstva

5. Transportní vrstva

6. Transportní vrstva

Vlastnosti podporované transportním protokolem TCP:

Zabezpečení dat při přenosu

Přednáška 3. Opakovače,směrovače, mosty a síťové brány

Y36PSI Protokolová rodina TCP/IP

Hybrid congestion control for high-speed networks

Výlet za hranice TCP: protokoly pro sítě s velkým součinem latence a šířky pásma

Y36PSI QoS Jiří Smítka. Jan Kubr - 8_rizeni_toku Jan Kubr 1/23

CCNA 2/10 Další funkce TCP/IP Aleš Mareček Jaroslav Matějíček 1

Paralelizace datových přenosů

Vrstva přístupu k médiu (MAC) a/b/g/n

Eva Hladká. podzim 2011

Počítačové sítě II. 14. Transportní vrstva: TCP a UDP. Miroslav Spousta, 2005

3. Linková vrstva. Linková (spojová) vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl

Poˇ c ıtaˇ cov e s ıtˇ e pˇredn aˇsky Jan Outrata ˇr ıjen listopad 2008 Jan Outrata (KI UP) Poˇ c ıtaˇ cov e s ıtˇ e ˇ r ıjen listopad / 34

Počítačové sítě Transportní vrstva. Transportní vrstva

Počítačové sítě Systém pro přenos souborů protokol FTP

Analýza aplikačních protokolů

Jan Outrata. říjen prosinec 2010 (aktualizace září prosinec 2013)

Protokoly pro spolehlivý multicast

CAL (CAN Application Layer) a CANopen

POPIS STANDARDU CEN TC278/WG4. 1 z 5. Oblast: TTI. Zkrácený název: Zprávy přes CN 4. Norma číslo:

Počítačové sítě Datový spoj

PROTOKOL RDS. Dotaz na stav stanice " STAV CNC Informace o stavu CNC a radiové stanice FORMÁT JEDNOTLIVÝCH ZPRÁV

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Souhrn Apendixu A doporučení VHDL

Počítačové sítě. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Periferní zařízení, cvičení IPZ Analýza komunikace na sběrnici USB

Programovací jazyk Pascal

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

PDV /2018 Detekce selhání

12. VHDL pro verifikaci - Testbench I

SCTP protokol. Lukáš Krejčík

4. Síťová vrstva. Síťová vrstva. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme si funkci síťové vrstvy a jednotlivé protokoly.

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

Distribuované systémy a počítačové sítě

TFTP Trivial File Transfer Protocol

Čipové karty Lekařská informatika

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

EXTRAKT z české technické normy

Počítačové sítě Datový spoj

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP.

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Objektově orientované technologie Dynamický náhled Sekvenční diagram (Realizace UC) Daniela Szturcová

Knihovna DMX512lib Komunikace protokolem DMX512. TXV prvé vydání srpen 2010 změny vyhrazeny

Paralelní programování

Počítačové sítě 1 Přednáška č.6 Transportní vrstva

VÝVOJOVÉ TRENDY PROTOKOLU TCP PRO VYSOKORYCHLOSTNÍ SÍTĚ

Local Interconnect Network - LIN

Počítačové sítě II. 12. IP: pomocné protokoly (ICMP, ARP, DHCP) Miroslav Spousta,

SSL Secure Sockets Layer

Časová a prostorová složitost algoritmů

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Počítačové siete Transmission Control Protocol (TCP) Explicit Congestion Notification (ECN) SYN cookies

Optimalizace protokolu TCP

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Telekomunikační sítě LAN sítě

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

X.25 Frame Relay. Frame Relay

12. Bezpečnost počítačových sítí

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

dovolují dělení velkých úloh na menší = dekompozice

Řízení toku v přístupových bodech

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Replikace. Pro a proti replikaci. Vztah ke škálovatelnosti (1)

Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

NPRG030 Programování I, 2018/19 1 / :25:37

Kurz LSL skriptování. Shiny Iceberg 2009

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

Přepínaný Ethernet. Virtuální sítě.

LabView jako programovací jazyk II

Kódování signálu. Problémy při návrhu linkové úrovně. Úvod do počítačových sítí. Linková úroveň

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

PA159 - Bezpečnostní aspekty

Projekt IEEE 802, normy ISO 8802

10. Techniky formální verifikace a validace

Základy počítačových sítí Model počítačové sítě, protokoly

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Binární soubory (datové, typované)

Směrování- OSPF. Směrování podle stavu linek (LSA) Spolehlivé záplavové doručování

Počítačové sítě Teoretická průprava II. Ing. František Kovařík

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Protokol S-BUS pro MORSE Popis protokolu

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Počítačové sítě. Miloš Hrdý. 21. října 2007

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Počítačové sítě pro V3.x Teoretická průprava I. Ing. František Kovařík

Přidělování paměti II Mgr. Josef Horálek

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

LdrLib KNIHOVNY PRO TVORBU ZAVADĚČE (LOADERU) ŘÍDICÍCH APLIKACÍ. Příručka uživatele a programátora

Model ISO - OSI. 5 až 7 - uživatelská část, 1 až 3 - síťová část

Algoritmizace prostorových úloh

Měření NGA - praktické ukázky a zkušenosti

Transkript:

PA159, přednáška 2 21. a 28. 9. 2007

Co nás dnes čeká... Úvaha o tom, jak zapisovat protokoly Úvod do abstraktní protokolové notace Zajištěné přenosové protokoly TCP

Abstraktní protokolová notace

Specifikace protokolů Jak vůbec formálně protokol specifikovat? Popis v přirozeném jazyce problém s exaktností, jednoznačností Popis v programovacím jazyce typicky v C neohrabané, matematicky nepraktické a neelegantní hůře čitelné (na druhé straně notaci zná dost lidí) problém s verifikací Diagramy

Specifikace protokolů (2) Časové osy p m q čas d o d o d o d: dotaz - o: odpověď, 3x

Specifikace protokolů (3) Časové osy přehledné pro jednoduché případy, obtížně použitelné pro složitější Problém s dokazováním/verifikací => Potřeba formální notace Abstraktní protokolová (AP) notace M. Gouda, Protocol verification made simple: a tutorial. Computer Networks and ISDN Systems 25 (1993), 969-980 M. Gouda, Elements of Network Protocol Design, 1998

Prodejní automat ;o) process client Ukázka AP var ready_client : boolean begin ready_client -> send money to vending_machine; send selection to vending_machine; ready_client := false rcv item from vending_machine -> ready_client := true; end process vending_machine var ready_to_sell : boolean begin rcv money from client -> ready_to_sell := true; rcv selection from client -> if ready_to_sell -> send item to client ~ready_to_sell -> skip fi; ready_to_sell := false; end

Elementy AP Základní struktura specifikace process <process name> const inp var begin end <const name>,..., <const name> <inp name>:<inp type>,..., <inp name>:<inp type> <var name>:<var type>,..., <var name>:<var type> <action>... <action> Typy konstant positive integer sdílení konstant se stejným jménem přes procesy

Elementy AP (2) Typy vstupů boolean, range, integer, set, enumerated, array nesdílí se inp <inp name> : boolean inp <inp name> : <lower bound>.. <upper bound> inp <inp name> : integer inp <inp name> : set {<member> <condition>} inp <inp name> : <name of an input of type set> inp <inp name> : array [<index range>] of <type> Proměnné boolean, range, integer, enumerated, array nesdílí se

Elementy AP (3) Akce <guard of p> -> <statement of p> Stráže operátory porovnání: =, /=, <, >, <=, >= logické operace:,, ~ aritmetické operace: +,, *, + n, n, min, max příjem dat recv <message of p> from <process name q> timeout timeout <protocol predicate>

Elementy AP (4) Výrazy dolce far niente skip přiřazení x.0,..., x.k := E.0,..., E.k napřed se vyhodnotí, pak se přiřadí! odeslání zprávy/dat send <message p> to <process name q>

Elementy AP (5) sekvence výrazů <statement>; <statement> podmíněný výběr ( k local_guard.k = true) if <local_guard.0> -> <statement_0>... <local_guard.k> -> <statement.k> fi opakování do <local_guard> -> <statement> od Kanál p q: ch.p.q #ch.p.q-počet zpráv v kanálu ch.p.q m#ch.p.q - počet zpráv m v kanálu ch.p.q

Elementy AP (6) Vykonávání specifikace protokolu nedeterministický výběr výběr z více povolených možností ve výrazu if výběr z více povolených akcí atomicita akce férové vykonávání protokolu je-li akce neustále povolena, bude určitě vykonána definice přes nekonečné běhy

A nyní trochu praxe... Kódování Manchester odesílající proces process s inp data : array [0..1] of integer var x : integer begin end true -> if data[x] = 0 -> send one to r; send zero to r data[x] = 1 -> send zero to r; send one to r; fi; x := x + 1;

přijímající proces process r var rcvd : array [0..1] of integer y : integer, store : boolean, {store := false} lastb : 0..1 begin end rcvd zero from s -> if store lastb = 1 -> rcvd[y], y, store := 0, y+1, false ~store lastb = 0 -> store := true; fi; lastb = 0 rcv one from s -> if store lastb = 0 -> rcvd[y], y, str := 1, y+1, false ~store lastb = 1 -> store := true; fi; lastb = 1 rcv error from s -> store := ~store;

Elementy AP (7) zprávy s poli <message name> ( <field.0>,..., <field.n ) send m(x.0,..., x.n) to q recv m (x.0,..., x.n) from p nedeterministické přiřazování x := any x := random pole procesů process <process array> [<index> : <type>,..., <index> : <type>] process p[i: 0..n-1] send mesg to p[i+1] recv mesg from p[i-1]

Elementy AP (8) parametrizované akce v deklarační části přibude par <parameter declaration list> použití par j : 0..2, r : 0..1... requested[j,r] -> requested[j,r] := false; send grant(r) to p[j] requested[0,0] -> requested[0,0] := false; send grant(0) to p[0] requested[1,0] -> requested[1,0] := false; send grant(0) to p[1] requested[2,0] -> requested[2,0] := false; send grant(0) to p[2] requested[0,1] -> requested[0,1] := false; send grant(1) to p[0] requested[1,1] -> requested[1,1] := false; send grant(1) to p[1] requested[2,1] -> requested[2,1] := false; send grant(1) to p[2]

A opět trochu praxe... protokol pro alokaci zdrojů uživatel process user[i: 0..n-1] const var begin end s {# of resources} wait : boolean, r : 0..s-1 ~wait -> wait, r := true, any; send request(r) to controller; rcv grant(r) from c -> wait := false; send release(r) to controller

hlídač process controller const var par s {# of resources}, n avail : array [0..s-1] of boolean, requested : array [0..n-1, 0..s-1] of boolean j : 0..n-1, r : 0..s-1 begin rcv request(r) from u[j] -> requested[j,r] := true rcv release(r) from u[j] -> avail[r] := true avail[r] requested[j,r] -> avail[r], requested[j,r] := false, false; send grant(r) to user[j]; end protokol není férový - hlídač může stále ignorovat jeden proces (pozor, podmínka férového výkonu protokolu sice platí, ale potíže je v tom, že díky nastavení avail[r] := false je příslušná akce na vypnuta!)

process controller řešení: a) determinismus (klientům přiděluji v definovaném pořadí) b) randomizace: const var par begin s {# of resources}, n avail : array [0..s-1] of boolean, requested : array [0..n-1, 0..s-1] of boolean k : 0..n-1, x : 0..n-1 {random user} j : 0..n-1, r : 0..s-1 rcv request(r) from u[j] -> if avail[r] -> avail[r] := false; send grant(r) to user[j] ~avail[r] -> requested[j,r] := true rcv release(r) from u[j] -> x := random; k := x + n 1; end do k /= x ~requested[k,r] -> k := k + n if requested[k,r] -> ~requested[k,r] -> avail[r] := true fi 1 od; requested[k,r] := false; send grant(r) to user[k]

Chyby při přenosu sítí 3 základní typy ztráta dat poškození dat zahozením se dá převést na ztrátu přeuspořádání zpráv/paketů pro snazší práci se zavádí 2 pravidla atomičnost chyb chyby se vyskytují zřídka (pouze konečný počet chyb v potenciálně nekonečném běhu protokolu)

Ošetření chyb příjem poškozených dat převedeme na ztrátu recv error from p -> skip ztráta paketu => timeout timeout ~ready (sendmoney#ch.client.machine + getselection#ch.machine.client = 0)

Normální timeouty Forma normálního timeoutu timeout po každý pár (ms#ch.s.t <= ks) (mt#ch.t.u <= kt) platí, že stráž akce posílající zprávy mt má tvar recv ms from s timeout (local predicate of process p) (mp#ch.p.q <= kp) (mq#ch.q.r <= kq)... (my#ch.y.z <= ky) ~ready (sendmoney#ch.client.machine <= 0) (getselection#ch.client.machine <= 0)

Normální timeouty (2) Implementace pomocí hodin s reálným časem p q r D p.p.q D g.q.r D p.q.r čas

Zajištěný protokol pro transportní vrstvu

Požadavky na protokol Odolnost vůči chybám kontrola integrity dat detekce výpadků pomocí timeoutů vypořádání se s přeuspořádáním (nějak) Obrana proti zahlcení přijímajícího uzlu informace od přijímající strany Obrana proti zahlcení sítě není-li spolehlivá odezva ze sítě, odhad

Odolnost proti chybám Detekce poškození dat Backward Error Recovery ověření integrity kontrolní součty v případě selhání data skartována vyžádá se nová kopie Forward Error Recovery data jsou posílána redundantně tak, že se omezené výpadky dají rekonstruovat n-ohraničené poškození, ztráty a přeuspořádání

Odolnost proti chybám (2) Detekce výpadku => potvrzování vlastně také Backward Error Recovery určité množství dat může být odesláno bez potvrzení Typy potvrzení individuální potvrzování kumulativní potvrzování blokové potvrzování negativní potvrzování (přímo informace o výpadku)

Kumulativní potvrzování sent ack d na sent ~ack d ns ~sent ~ack d 0 1 2 3 4 5 6 7 8 9 10 11 12 13 rcvd ~ack d ack d nr process sender const w {ns - na <= w} var na, ns, i : integer begin na + w > ns -> send data(ns) to receiver; ns := ns + 1 rcv ack(i) from receiver -> na := max(na, i) timeout t-guard -> send data(na) to receiver rcv error from receiver -> skip end t-guard = na < ns (#ch.q.p = 0)

Kumulativní potvrzování (2) process receiver const inp var begin end w wr : integer {receiver window} nr, j : integer, rcvd : array [0..wr-1] of boolean, akn : boolean {true if receiver hasn t acked last received message} rcv data(j) from p -> if true -> {busy receiver} skip j < nr -> akn := true nr <= j < nr + wr -> rcvd[j mod wr] := true; do rcvd[nr mod wr] -> {deliver data(nr)} rcvd[nr mod wr], nr, akn := false, nr+1, true od; fi akn -> send ack(nr) to sender; akn := false; rcv error from sender -> skip

Kumulativní potvrzování (3) Je nutné použít neohraničená sekvenční čísla příklad problému s ohraničenými čísly: 1. odesílatel pošle data(3), data(4) 2. příjemce pošle ack(4), ack(5) 3. ack(5) se zadrhne na lince a je předběhnut následnými acky 4. dojde k přetočení ohraničených sekvenčních č. 5. přijde ack(5) 6. neštěstí je hotovo ;-)

Další typy potvrzování Individuální potvrzování každé zprávy zvlášť neefektivní použití cirkulárního bufferu o velikosti nejméně 2w možnost použití ohraničených sekvenčních čísel Blokové potvrzování přijatých spojitých bloků cirkulární buffer o velikosti nejméně 2w možnost použití ohraničených sekvenčních čísel

Řízení velikosti okna modifikace odesílatele u kumulativního potvrzování stačí modifikace odesílatele povede-li se bez ztráty zprávy odeslat více než cmax zpráv, je okno w inkrementováno o 1 dojde-li k timeoutu a zmenšení velikosti okna, je třeba počítat s tím, že mohlo dojít ke ztrátě dat v dosud nepotvrzeném okně a zmenšovat proto dál okno (condition DNR)

process sender const wmin, wmax {window limits, wmin < wmax} inp cmax : integer {cmax > 0} var na, ns, i : integer, w : wmin..wmax, {ns - na <= w} c : integer, {counter for consecutive data ack d without being resent} ra, rs : integer {auxiliary variables assigned to na+1, ns when packet loss occurs} begin na + w > ns -> send data(ns) to receiver; ns := ns + 1 rcv ack(i) from receiver -> na, c := max(na, i), c + max(i-na, 0) if c >= cmax -> w, c := min(w+1, wmax), c-cmax c < cmax -> skip fi timeout t-guard ~akn -> if (ra <= na na < rs) -> skip {condition DNR} ~(ra <= na na < rs) -> w, rs := max(w/2, wmin), ns fi; ra, c := na + 1, 0; send data(na) to receiver rcv error from receiver -> skip end

Kvalita protokolu Agresivita schopnost využít dostupnou volnou kapacitu Responsivnost schopnost přizpůsobení se menší kapacitě Férovost férové (případně jinak definované) dělení šířky pásma mezi klienty při požadavcích převyšujících možnosti sítě

TCP

Z historie Poprvé formálně specifikován r. 1974: Vint Cerf, Yogen Dalal a Carl Sunshine Zajišťuje spolehlivost ochranu proti zahlcení (různé algoritmy) uspořádání paketů

Mechanismy potvrzování kumulativní potvrzování piggybacking (duplexní protokol) potvrzení je součástí zprávy jdoucí opačným směrem jedno potvrzení na 2 segmenty je-li přenos dost rychlý (timeout 500ms) duplikované potvrzení indikuje ztracený (poškozený) paket

Zpracování malých zpráv Nagleův algoritmus 1. Pokud proces p obdržel potvrzení pro všechna data dříve odeslaná q, potom proces p posílá zprávu ihned 2. Pokud proces p neobdržel potvrzení pro všechna data dříve odeslaná q, potom proces p uloží zprávu pro pozdější odeslání 3. Pokud velikost uložených zpráv přesáhne maximální velikost segmentu (MSS), tak se začne odesílat

řízení velikosti okna Řízení toku

Okno TCP outstanding window (ownd) receiver window (rwnd) flow control, self-clocking congestion window (cwnd)

Řízení zahlcení aproximativní detekce zahlcení pomocí výpadků následná detekce existují i preventivní mechanismy závislost na informacích ze sítě congestion window (cwnd) bw = 8*MSS*cwin/RTT v případě že owin je limitováno cwin

Hlavička TCP

Ustavení spojení Entity (programy) A a B, sekvenční čísla SEQ(A) a SEQ(B) A: SYN, RAND(SEQ(A)) -> B B: SYN/ACK, RAND(SEQ(B)), SEQ(A)+1 -> A A: ACK, SEQ(B)+1 -> B => three-way handshake

Fáze Slow Start cwnd += MSS pro každý ACK exponenciální nárůst cwnd limitováno sstresh přechod do congestion avoidance fáze

Fáze Congestion Avoidance (Tahoe) AIMD (Tahoe) additive increase, multiplicative decrease cwnd += 1 MSS během každého RTT bez výpadku cwnd = cwnd / 2 při výpadku Detekce výpadku timeout duplikované ACKy při výpadku sstresh = max{0.5*cwnd, 2*MSS} návrat k slow start fázi

Chování velikosti okna Tahoe

Vylepšené chování Reno fast retransmission detekce výpadku 3 duplikovanými ACKy fast recovery neprovádí se fáze slowstart sstresh = max{0.5*cwnd, 2*MSS} (stejný jako TAHOE) cwnd = sstresh + 3*MSS

Chování velikosti okna Reno

Reakce na zahlcení celé aktuální okénko (owin) TCP Tahoe klasický cummulative ACK jeden segment v rámci Fast Retransmit TCP Reno více segmentů v rámci Fast Retransmit TCP NewReno právě ztracené segmenty TCP SACK blokové potvrzení

Alternativní přístup k řízení zahlcení Vegas monitoruje RTT zahlcení detekuje pomocí prodlužování RTT na zahlcení reaguje lineárním poklesem cwnd

TCP Response Function Vztah mezi rychlostí výpadků a propustností (owin/bw) owin ~ 1.2/sqrt(p) bw = 8*MSS*owin/RTT bw = (8*MSS/RTT)*1.2/sqrt(p) p... packet loss rate [packet/s]

Responsivnost TCP Schopnost návratu na plnou přenosovou rychlost po výpadku Přepokládejme výpadek v okamžiku, kdy cwnd = bw*rtt ρ = bw. RTT 2. MSS 2 závislost na RTT a MSS/MTU

Responsivnost TCP (2) TCP responsiveness Time (s) 18000 16000 14000 12000 10000 8000 6000 4000 2000 0 0 50 100 150 200 RTT (ms) C= 622 Mbit/s C= 2.5 Gbit/s C= 10 Gbit/s

Férovost TCP

Vylepšování implementace TCP checksum offloading jak při vysílání, tak při příjmu zero copy uživatelský prostor <-> jádro <-> karta page flipping Linux, FreeBSD, Solaris

Povídání o současném dění kolem zajištěných protokolů pro přenosovou vrstvu na PSaA II.