ArNet: Difference between revisions

From ciapini
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
''protocollo per micro-reti''
Un protocollo che implementa i livelli datalink (ISO/OSI 2), rete (ISO/OSI 3) e trasporto (ISO/OSI 4) per lo scambio di piccoli blocchi di dati (da 0 a 1024 byte) tra piccoli gruppi di nodi (massimo 255), connessi da un mezzo fisico trasmissivo condiviso. e' pensato per essere appggiato su [[arPhy]].
Un protocollo che implementa i livelli datalink (ISO/OSI 2), rete (ISO/OSI 3) e trasporto (ISO/OSI 4) per lo scambio di piccoli blocchi di dati (da 0 a 1024 byte) tra piccoli gruppi di nodi (massimo 255), connessi da un mezzo fisico trasmissivo condiviso. e' pensato per essere appggiato su [[arPhy]].



Revision as of 14:34, 4 February 2014

protocollo per micro-reti

Un protocollo che implementa i livelli datalink (ISO/OSI 2), rete (ISO/OSI 3) e trasporto (ISO/OSI 4) per lo scambio di piccoli blocchi di dati (da 0 a 1024 byte) tra piccoli gruppi di nodi (massimo 255), connessi da un mezzo fisico trasmissivo condiviso. e' pensato per essere appggiato su arPhy.

Diversamente dai sistemi a layer, il trasporto dei dati in arNet viene caratterizzato da delle features liberamente combinabili.

arNet si preoccupa SOLO (e non sempre) di:

altre features vanno implementate altrove: datagram/virtual circuit transport, crittografia...


Framing

um pacchetto arNet e' composto da:

la lunghezza dell'intero messaggio sara sempre 4 + (header_size * 4) + (payload_size * 4) bytes

minimo: 4 bytes

massimo: 4 + (2^8) * 4 + (2^4) * 4 = 1092 bytes

Indirizzamento

Lo spazio di indirizzamento di arNet e' composto di 4 sottolivelli da 2^8 indirizzi ognuno.

un nodo ha un indirizzo del tipo L0 xx L1 yy L2 zz L3 ww (brevemente xx.yy.zz.ww)

durante l'invio il mittente ha bisogno di specificare solo i livelli dell'indirizzo del destinatario sono differenti dai propri. questo incoraggia una topologia di rete che imiti la struttura dell'indirizzamento (ad esempio una rete ad albero), minimizzando il la complessita delle strategie di routing.

Routing

Virtual circuit

arNet definisce un virtual circuit tra due nodi mediante un VCI di 16 bit. un circuito e' un canale virtuale half duplex indicato dalla tripla src/dst/vci.

l'instaurazione del circuito puo avvenire con un handshake a 1 o 3 vie.

Packet reordering

  • SequenceNumber (24bit) numero di sequenza dei data blocks del payload

Accesso multiplo al mezzo condiviso

La mancanza di controllo di collisione e la scarsa larghezza di banda per i quali e' progettato arNet impongono uno schema di accesso al mezzo che minimizzi le collisioni e le ritrasmissioni.

ci sono due scenari:

Reservation mode

richiede la presenza di un router sul canale, e organizza una multiplazione deterministica a divisione di tempo e - se disponibile - divisione di frequenza (canale).

Contention mode

ognuno fa come cazzo gli pare

Header Block

sono una serie di almeno 1 blocchi con dimensione sempre 4 bytes (1 Data Block) che precedono sempre una serie di zero o piu blocchi dati.

il primo blocco e' chiamato default header ed e' sempre presente.

i blocchi header successivi sono indicati dall' header type

i blocchi header subiscono tutti block-coding -> #Interleaver


Default header

E' l'header di base, sta all'inizio di ogni messaggio e si occupa dell'instradamento locale. Dev'essere implementato su ogni nodo.

2b (protocol) 4b (header_size) 10b (payload_size) 8b (src) 8b (dst)

campi:

  • protocol numero di protocollo. arNet = 0x1
  • header_size numero di header che seguono il default header.
  • payload_size dimensione del blocco dati che segue in byte, viene poi paddato fino a un multiplo di 4
  • src indirizzo del mittente
  • dst indirizzo del destinatario

il multicast e' semplicemente un indirizzo di ricezione secondario sui client

src e dst sono significativi solo sul canale fisico, e' normale che ci siano client omonimi su due canali diversi

l'indirizzo 0 e' broadcast.

Segment Access Advertisement Header

il pacchetto viene mandato esclusivamente dai router per istruire i nodi che sono nel segmento di rete sul proprio indirizzo globale e sulle regole di accesso al canale

il routing e' un instradamento tra segmenti diversi. ogni segmento ha un indirizzo e un livello.

tutti i nodi che ricevono il pacchetto e vogliono aderire al router devono memorizzare queste impostazioni.

i nodi fanno il possibile per non trasmettere durante la trasmissione del SAAH.

i router presenti sul segmento devono concordare sulle informazioni contenute in questo pacchetto e trasmetterlo a turno.

4b (htype) 8b (segaddr) 8b (timeframe) 8b (beacon_period) 4b (reserved_window)
  • htype tipo header 0x1
  • timeframe_size dimensione timeframe del segmento in multipli di 16byte trasmessi al bitrate corrente.
  • beacon_period il prossimo SAAH verra spedito dopo questo periodo misurato in timeframe_size, non necessariamente dallo stesso router.
  • segaddr indirizzo del segmento di rete
  • reserved_window l'offset del primo slot libero sul canale di default. i client che non hanno prenotato uno slot attenderanno almeno reserved_window*timeframe prima di trasmettere.

il tempo di riferimento del segmento viene resettato all'inizio dello start block di ogni SAAH inviato dal router

letture:

Global Routed Transport Header

viene usato dai nodi per mandare dati in maniera routed (ossia tra nodi che stanno su un segmento potenzialmente diverso).

4b (htype) 4b (ttl) 2b (seglevel) 8b (segsrc) 8b (segdst)
  • htype tipo header 0x2
  • ttl numero di hop massimi di routing. viene decrementato ad ogni hop.
  • seglevel livello gerarchico del segmento.
  • segsrc id del segmento di rete del mittente.
  • segdst id del segmento di rete del destinatario.
  • i client ignorano i messaggi con segaddr diverso dal proprio
  • i router invece li inoltrano

letture:

Slot Reservation Request Header

4b (htype) 5b (queue_size) 2b (fecn) 2b (becn) 1b (slotresreq) 1b (repeatreq)

Request-To-Send (RTS), richiesta di prenotazione slot.

  • fecn forward congestion notification. il nodo ha la coda di output piena e ha bisogno di trasmettere prima possibile. da 00 normale a 11 congestionato.
  • becn backward congestion notification. il nodo ha la coda di input piena e chiede che gli si mandino i dati piu tardi possibile. da 00 normale a 11 congestionato.
  • slotresreq prenotazione di slot tempo/canale. il nodo non trasmette dati e fanno fede per la prenotazione i valori del suo default header.
  • repeatreq richiesta di ripetizione del pacchetto da parte del router.

Slot Reservation Reply Header

4b (htype) 8b (src) 8b (dst) 2b (channel) 5b (timeframe_offset) 5b (window_size)

Il router risponde alle prenotazioni di slot tempo/canale con questo header.

  • htype tipo header 0x2
  • src nodo che deve trasmettere
  • dst nodo che deve ricevere
  • channel canale sul quale si devono collocare i due nodi
  • timeframe_offset momento nel quale va avviata la transazione in tempo*bloccodati
  • window_size durata massima della transazione in blocchi dati

CRC Header

per avere conferma che il messaggio e' stato trasportato senza essere danneggiato

4b (htype) 2b (crctype) 1b (ackreq) 1b () 16b (crc)
  • htype tipo header 0x3
  • crctype tipo crc (0x0000 = CRC-24 di OpenPGP)
  • ackreq il nodo chiede la conferma con un ack
  • crc valore crc di TUTTO il blocco dati

VC Header

4b (htype) 16b (vci) 1b (syn) 1b (ack) 1b (rst) 1b (fin)
  • htype tipo header 0x4
  • vci virtual circuit identifier

SEQ Header

4b (htype) 16b (sequence)
  • htype tipo header 0x4
  • sequence numero di sequenza del primo data block del payload

Timing Header

4b (htype) 11b (date) 17b (time)
  • htype tipo header 0x5
  • date days from epoch
  • time seconds of day

Global Routing Advertisement Header

TODO il pacchetto viene mandato esclusivamente dai router ad altri router per descrivere la topologia della rete

Cifratura

algoritmo di cifratura: AES-256 (blocco 128 bit, chiave 256 bit)

la chiave e' composta di 64 caratteri esadecimali

il blocco crittato e' sempre di 16byte


Letture

Glossario

  • Canale: suddivisione del mezzo fisico.
    • la comunicazione su un canale non collide con quelle su altri canali
    • cambiare canale e' piu costoso che cambiare simbolo
  • blocco: sinonimo di PDU. esistono i seguenti tipi di blocco:
    • start block
    • header block
    • payload block