Socket API per il Multicast



Documenti analoghi
Multicast e IGMP. Pietro Nicoletti

Concetti fondamentali. Indirizzamento. Multicast su LAN. Multicast su Internet. RTP/RTCP su multicast IP. Ostacoli all'utilizzo del multicast

Reti di Calcolatori. Il software

IP Multicast. Mario Baldi staff.polito.it/mario.baldi. Silvano Gai Nota di Copyright. Comunicazioni di gruppo

Protocollo IP e collegati

Uso di sniffer ed intercettazione del traffico IP

Argomenti della lezione

INDIRIZZI IP ARCHITETTURA GENERALE DEGLI INDIRIZZI IP FORME DI INDIRIZZI IP CINQUE FORME DI INDIRIZZI IP

Reti di Telecomunicazione Lezione 8

Reti standard. Si trattano i modelli di rete su cui è basata Internet

Reti di Telecomunicazione Lezione 6

ARP e instradamento IP

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport.

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori (a.a. 2010/11)

Multicast IPv6. Conferenza GARR_05 Pisa maggio

Indirizzo IP. Come si distinguono? Indirizzo IP : Network address : Host address: : 134

Protocolli di Comunicazione

Reti di Calcolatori

IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Transmission Control Protocol

Multicast IPv6. Teoria e pratica. Marco d Itri <md@linux.it> IPv6 Task Force Italia - Luglio ITgate Network

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

ICMP. Internet Control Message Protocol. Silvano GAI. sgai[at]cisco.com. Mario BALDI. mario.baldi[at]polito.it

SWITCH. 100 Mb/s (UTP cat. 5E) Mb/s SWITCH. (UTP cat. 5E) 100 Mb/s. (UTP cat.

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Gli indirizzi dell Internet Protocol. IP Address

Gli indirizzi di IPv6

Internetworking TCP/IP: esercizi

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO

Indirizzamento privato e NAT

Cos è. Protocollo TCP/IP e indirizzi IP. Cos è. Cos è

INFOCOM Dept. Antonio Cianfrani. Virtual LAN (VLAN)


CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

GLI INDIRIZZI DELL INTERNET PROTOCOL (IP ADDRESS) 2. Fondamenti sugli indirizzi dell Internet Protocol 2. Struttura di un indirizzo IP 2

Internet Control Message Protocol ICMP. Struttura di un Messaggio ICMP. Segnalazione degli Errori

Instradamento IP A.A. 2005/2006. Walter Cerroni. IP: instradamento dei datagrammi. Routing : scelta del percorso su cui inviare i dati

ASSEGNAZIONE INDIRIZZI IP

COMPLESSO SCOLASTICO INTERNAZIONALE GIOVANNI PAOLO II. Pianificazione di reti IP (subnetting)

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Introduzione alle applicazioni di rete

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Informazioni Generali (1/2)

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Inizializzazione degli Host. BOOTP e DHCP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Parte II: Reti di calcolatori Lezione 21

PROF. Filippo CAPUANI TCP/IP

Laurea in INFORMATICA

Reti di Calcolatori - Laboratorio. Lezione 6. Gennaro Oliva

Indice. Prefazione XIII

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

ARP e RARP. Silvano GAI. sgai[at]cisco.com. Mario BALDI. mario.baldi[at]polito.it Fulvio RISSO

Parte II: Reti di calcolatori Lezione 16

Sicurezza nelle reti

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Gestione degli indirizzi

Livello di Rete. Gaia Maselli

Dal protocollo IP ai livelli superiori

Socket & RMI Ingegneria del Software - San Pietro

Gestione degli indirizzi

L'indirizzo IP. Prof.ssa Sara Michelangeli

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Progettare un Firewall

Lezione n.9 LPR- Informatica Applicata

TCP/IP. Principali caratteristiche

P2-11: BOOTP e DHCP (Capitolo 23)

Configurazione Rete in LINUX

ARP (Address Resolution Protocol)

Introduzione al TCP/IP Indirizzi IP Subnet Mask Frame IP Meccanismi di comunicazione tra reti diverse Classi di indirizzi IP Indirizzi IP privati e

Il modello TCP/IP. Sommario

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

Laurea in INFORMATICA

Internet e protocollo TCP/IP

Reti di Calcolatori. Lezione 2

Laboratorio di reti Relazione N 5 Gruppo 9. Vettorato Mattia Mesin Alberto

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2

Lezione 1 Introduzione

Forme di indirizzamento

Cenni di programmazione distribuita in C++ Mauro Piccolo

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Maschere di sottorete a lunghezza variabile

Capitolo 4: Gli indirizzi dell Internet Protocol (IP address)

Access Control List (I parte)

Socket TCP. prima parte

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

Hot Standby Routing Protocol e Virtual Router Redundancy Protocol

Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

Calcolatrice IP Online

Protocollo ICMP, comandi ping e traceroute

Il routing in Internet Exterior Gateway Protocols

RETI INTERNET MULTIMEDIALI. Multicast

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Martedì 15 Novembre 2005

Transcript:

Socket API per il Multicast Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/ e-mail: massimo@iac.rm.cnr.it

Cosa è il Multicast Il multicast è utilizzato per trasmettere informazioni a più host contemporaneamente. Una tipica situazione è quella in cui si vuole trasmettere in tempo reale audio e/o video a sistemi che partecipano ad una multiconferenza distribuita. 2

L unicast L unicast è la normale situazione in cui un mittente invia ed un destinatario riceve (eventualmente invertendo i ruoli). Il TCP è, per la sua natura di protocollo orientato alla connessione, sempre unicast. L UDP supporta più paradigmi di comunicazione anche se il più utilizzato è sempre l unicast. 3

Selezione nel caso del Multicast Non tutti i pacchetti di multicast sono ricevuti e processati. Solo quelli la cui destinazione (indirizzo e numero di porta) sono stati in precedenza registrati come di interesse. I pacchetti multicast sono presentati a livello kernel come qualsiasi altro pacchetto IP. La sola differenza può essere nell algoritmo di instradamento che definisce dove instradare (o non instradare) i pacchetti stessi. 4

Indirizzi Multicast 0 31 Address Range: +-+----------------------------+ 0 Class A Address 0.0.0.0-127.255.255.255 +-+----------------------------+ +-+-+--------------------------+ 1 0 Class B Address 128.0.0.0-191.255.255.255 +-+-+--------------------------+ +-+-+-+------------------------+ 1 1 0 Class C Address 192.0.0.0-223.255.255.255 +-+-+-+------------------------+ +-+-+-+-+----------------------+ 1 1 1 0 MULTICAST Address 224.0.0.0-239.255.255.255 +-+-+-+-+----------------------+ +-+-+-+-+-+--------------------+ 1 1 1 1 0 Reserved 240.0.0.0-247.255.255.255 +-+-+-+-+-+--------------------+ 5

Indirizzi Multicast Quelli che ci interessano sono gli indirizzi di classe D. Ogni datagram IP il cui indirizzo di destinazione inizia con 1110 è un datagram IP di tipo multicast. I rimanenti 28 bit identificano il gruppo di multicast a cui deve essere inviato il datagram. Viene spesso utilizzata l analogia della radio: per ascoltare un certo programma bisogna sintonizzare la radio su una certa specifica frequenza; allo stesso modo bisogna sintonizzare il kernel per ricevere i pacchetti inviati ad uno specifico gruppo di multicast. 6

Gruppi multicast speciali Esistono alcuni gruppi di multicast speciali che non dovrebbero essere usati nelle normali applicazioni: [224.0.0.1] è il gruppo all-hosts. Se si invia un pacchetto di ping a questo gruppo, tutti gli host che supportano il multicast dovrebbero rispondere dato che un host deve fare il join a questo gruppo all atto dell inizializzazione delle interfacce che supportano il multicast; [224.0.0.2] è il gruppo all-routers. Tutti i router devono fare il join a questo gruppo sulle interfacce che supportano il multicast. [224.0.1.1] è l indirizzo per NTP (Network Time Protocol). Questi gruppi sono regolamente pubblicati tra gli Assigned Numbers RFC. 7

Scope degli indirizzi multicast IPv4 non definisce un ambito dei pacchetti multicast (mentre IPv6 ha un campo esplicito di 4 bit per questo scopo). TTL Scope ---------------------------------------------------------------------- 0 Limitato allo stesso host. Non viene inviato all esterno. 1 Limitato alla stessa subnet. Non viene inviato da un router. <32 Limitato alla stessa organizzazione. <64 Limitato alla stessa regione. <128 Limitato allo stesso continente. <255 Nessuna restrizione. Globale. L intervallo di indirizzi da 239.0.0.0 a 239.255.255.255 è riservato per l administrative scoping. 8

Indirizzi Multicast IPv6 112-bit group ID ------------------------------------------------------------------- FF flag scope 10 bytes ignored 32 bits ------------------------------------------------------------------- 4-bit 4-bit --------------------- IPv6 Ethernet address 3333 --------------------- Il flag di 4-bit di multicast IPv6 differenzia tra un gruppo well-known (con valore 0) ed un gruppo transiente di multicast (con valore 1). I 3 bit superiori di questo campo sono riservati. Il campo di 4-bit scope specifica quanto lontano può arrivare il pacchetto di multicast. 9

IPv6 scope Scope IPv4 TTL ---------------------------------------------------------------------- 1 node-local 0 2 link-local 1 5 site-local <32 8 organization-local 14 global <255 ---------------------------------------------------------------------- 10

Invio di datagram multicast Il traffico di multicast è gestito a livello di transporto con UDP. In linea di principio, un applicazione deve solo aprire un socket UDP e riempire un indirizzo di multicast di classe D con la destinazione a cui devono essere inviati i dati. Ci sono, comunque, alcune operazioni, che un processo che invia deve poter controllare. 11

Ricevere Datagram Multicast Il broadcast è, in un certo senso, più semplice da implementare del multicast. Non è richiesto ai processi di dare indicazioni su cosa fare con i pacchetti di broadcast. Il sistema operativo sa di dover leggere e consegnare tutti i pacchetti di broadcast alle applicazioni. Con il multicast è necessario informare il kernel di quali gruppi di multicast si è interessati a ricevere i pacchetti. Con il multicast è possibile per più processi su un dato host appartenere allo stesso gruppo di multicast (con UDP un solo processo riceverebbe un datagram unicast ). 12

Programmazione Multicast L API per il multicasting richiede solo cinque nuove opzioni per i socket che sono quindi gestite con le setsockopt() e getsockopt(): int getsockopt(int s, int level, int optname, void* optval, int* optlen); int setsockopt(int s, int level, int optname, const void* optval, int optlen); Per il multicast, il level è sempre IPPROTO IP. 13

Programmazione Multicast Le opzioni per il multicast sono le seguenti: optname setsockopt() optval type getsockopt() IP(V6)_MULTICAST_LOOP yes u_char (u_int) yes IP(V6)_MULTICAST_TTL(HOPS) yes u_char yes IP(V6)_MULTICAST_IF yes struct in_addr (u_int) yes IP(V6)_ADD_MEMBERSHIP yes struct ip(v6)_mreq no IP(V6)_DROP_MEMBERSHIP yes struct ip(v6)_mreq no Uno degli errori più comuni è quello di invocare setsockopt con un int come argomento per specificare il TTL o il loopback. 14

Programmazione Multicast: IP ADD MEMBERSHIP La struttura ip mreq (/usr/include/linux/in.h) contiene i seguenti elementi: struct ip_mreq { struct in_addr imr_multiaddr; /* IP multicast address of group */ struct in_addr imr_interface; /* local IP address of interface */ }; Per ricevere un datagram multicast, un processo deve fare il join al gruppo di multicast e deve anche fare il bind del socket UDP al numero di porta che viene utilizzato come destinazione dei datagram inviati a quel gruppo 15

Per l IPv6 si utilizza la struttura seguente: struct ipv6_mreq { /* IPv6 multicast address of group */ struct in6_addr ipv6mr_multiaddr; }; /* local IPv6 address of interface */ int ipv6mr_ifindex; 16

Opzioni socket per il multicast L opzione IP(V6) MULTICAST IF specifica l interfaccia per i datagram outgoing inviati attraverso il socket. L interfaccia locale specificata quando un processo esegue la join ad un gruppo è quello da cui i datagram multicast in arrivo saranno ricevuti. Se non viene specificata nessuna opzione prima di inviare un socket in multicast, l interfaccia viene scelta dal kernel, il TTL o hop limit è definito uguale ad 1 ed una copia del datagram viene inviata in loopback. 17

Mapping degli indirizzi IP Multicast sugli indirizzi Ethernet I frame Ethernet hanno un campo di destinazione di 48 bit. Per facilitare l associazione degli indirizzi IP di Multicast agli indirizzi Ethernet, l IANA ha riservato un range di indirizzi per il multicast. Ogni frame Etherne con destinazione nel range da 01-00-5e-00-00-00 a 01-00-5e-ff-ff-ff (hex) contene dati per un gruppo di multicast: il prefisso 01-00-5e identifica il frame come multicast; il bit successivo è sempre 0. Rimangono in questo modo solo 23 bit per l indirizzo di multicast. Dato che i gruppi di multicast sono di 28 bit, l associazione non può essere uno-a-uno. 18

Solo i 23 bit meno significativi del gruppo di multicast sono utilizzati nel frame. I rimanenti 5 bit sono ignorati e si hanno quindi 32 differenti gruppi di multicast associati allo stesso indirizzo Ethernet. 28 bit +-+-+-+-+----------------------+ D MULTICAST Address 224.0.0.0-239.255.255.255 +-+-+-+-+----------------------+ --------------------- 01005e 23 bit IPv4 Ethernet address --------------------- 19

Multicast on a WAN Quando un processo su un host effettua la join ad un gruppo di multicast, l host invia un messaggio Internet Group Management Protocol (IGMP) a tutti i router multicast notificandoli di aver effettuato la join. Il router multicast scambia questa informazione utilizzando il protocollo di routing del multicast, in modo che ogni router multicast sappia cosa fare quando riceve un pacchetto destinato all indirizzo di multicast. Se più processi su un host effettuano il join allo stesso gruppo, viene inviato il messaggio IGMP solo la prima volta. Nel caso del invio in multicast, un router può dover copiare il datagram. 20

In genere per il pacchetti inviati in unicast non viene mai effettuata una copia. 21

IGMP I messaggi IGMP hanno la seguente struttura: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type Max Resp Time Checksum +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Group Address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 22

IGMP (V1) Quando un host effettua il join ad un nuovo gruppo, il kernel invia un messaggio IGMP report (type 2). Questo pacchetto IGMP è generato dal kernel come risposta al comando IP ADD MEMBERSHIP. I routers inviano periodicamente IGMP Host Membership Queries all all-hosts group (224.0.0.1) con TTL 1 (ogni 60-120 secondi). Tutti gli host che supportano il multicast li ricevono ma non rispondono immediatamente per evitare una IGMP Host Membership Report storm. Viene inviata una risposta dopo un intervallo di tempo (ritardo) random per ogni gruppo a cui appartengono sulla stessa 23

interfaccia da cui hanno ricevuto la richiesta 24

Broadcast Con il Broadcast ogni host su una subnet che non partecipa all applicazione deve processare il datagram UDP. I kernel derivati da BSD non permettono di frammentare un datagram da inviare in broadcast. L indirizzo Ethernet per i pacchetti di broadcast è ff:ff:ff:ff:ff:ff. 25