Architetture di protocolli
Gruppo Reti TLC
[email protected]
http://www.tlc.polito.it/
ARCHITETTURE DI PROTOCOLLI - 1
Architetture e protocolli
• Definizione CCITT
– Comunicazione: trasferimento di informazioni
secondo convenzioni prestabilite
• La comunicazione richiede cooperazione
• Una descrizione astratta delle modalità di
comunicazione tra due o più utenti richiede la
definizione di un
– modello di riferimento
ARCHITETTURE DI PROTOCOLLI - 2
Architetture e protocolli
• Al massimo livello di astrazione il modello di
riferimento specifica una
– architettura di rete
ARCHITETTURE DI PROTOCOLLI - 3
Architetture di protocolli
• Un’architettura di rete definisce gli oggetti
usati per descrivere
– il processo di comunicazione
– le relazioni tra tali oggetti
– le funzioni necessarie per la comunicazione
– le modalità organizzative delle funzioni
ARCHITETTURE DI PROTOCOLLI - 4
Architetture di protocolli
• Si usano architetture stratificate
–
–
–
–
semplicità di progetto
facilità di gestione
semplicità di standardizzazione
separazione di funzioni
ARCHITETTURE DI PROTOCOLLI - 5
Separazione di funzioni: Internet
subnet 1
subnet 2
host 4
router 2
router 3
applicativi
controllo
errori
host 1
host 3
instradamento
subnet 4
router 1
subnet 3
host 2
trasferimento
pacchetti
ARCHITETTURE DI PROTOCOLLI - 6
OSI
7
Applicazione
6
Presentazione
5
Sessione
4
Trasporto
3
Rete
2
Collegamento
1
Fisico
ARCHITETTURE DI PROTOCOLLI - 7
Architetture stratificate
Application
User
Presentation
Netw. Appl.
Session
Session
Transport
End to End
Service
Network
Routing
Internetwork
Data Link
Data Link
Physical
Physical
OSI
DECNET
Application
Network
Transaction
Service
Presentation
Service
Data
Flow Mana.
Trans. Servi.
Control
Virtual Route
Explicit Route
Transm. Group
Data Link
Physical
ARPA
SNA
ARCHITETTURE DI PROTOCOLLI - 8
half
session
path
control
OSI ed Internet
OSI
Application
Presentation
Session
Internet Protocol Suite
NFS
Telnet
FTP
SMTP
SNMP
XDR
RPC
Transport
Network
TCP e UDP
ICMP
IP
Arp e Rarp
Data Link
Physical
Protocolli
di routing
Non Specificati
ARCHITETTURE DI PROTOCOLLI - 9
B - ISDN
Piano di gestione
Piano di controllo
Livelli alti
Piano di utente
Livelli alti
AAL
ATM
Fisico
ARCHITETTURE DI PROTOCOLLI - 10
Protocolli
• Definizione CCITT
– descrizione formale delle procedure adottate per
assicurare la comunicazione tra due o più
oggetti dello stesso livello gerarchico
• Definizione di protocolli:
– semantica
• insieme di comandi e risposte
– sintassi
• struttura di comandi e risposte
– temporizzazione
• sequenze temporali di comandi e risposte
ARCHITETTURE DI PROTOCOLLI - 11
Protocolli
• I protocolli sono insiemi di regole:
– semantiche
• algoritmi
– sintassi
• formati
– temporizzazione
ARCHITETTURE DI PROTOCOLLI - 12
Modello di riferimento ISO/OSI
• (Open System Interconnection) è recepito
nei seguenti standard
– ISO IS 7498
– CCITT X.200
• I principi fondamentali definiti dal modello di
riferimento OSI sono oggi universalmente
accettati.
• Ciò non significa che tutte le architetture di
protocolli siano conformi al modello OSI.
ARCHITETTURE DI PROTOCOLLI - 13
Modello OSI
Sistema 1
Sistema 2
mezzi
trasmissivi
Sistema 3
Sistema j
Sistema n
ARCHITETTURE DI PROTOCOLLI - 14
Modello OSI
Sistema A
Sistema B
Sistema C
Sistema D
mezzi trasmissivi
processi applicativi
ARCHITETTURE DI PROTOCOLLI - 15
Strati o livelli
strato più
elevato
(N + 1) - strato
(N) - strato
(N - 1) - strato
strato più
basso
Sistema
B
Sistema
A
sottosistema
mezzi trasmissivi
ARCHITETTURE DI PROTOCOLLI - 16
Entità
– elementi attivi di un sottosistema
– svolgono le funzioni di strato
– interagiscono all’interno di uno strato
Sistema
B
Sistema
A
(N) - strato
(N) - entità
mezzi trasmissivi
ARCHITETTURE DI PROTOCOLLI - 17
Stratificazione
• Ogni strato (o livello)
– fornisce servizi allo strato superiore
– usando
• i servizi dello strato inferiore
• le proprie funzioni
• Identificabili:
– fornitori di servizio
– utenti del servizio
– punti di accesso al servizio: SAP (Service
Access Point)
ARCHITETTURE DI PROTOCOLLI - 18
Servizi
• Gli utenti del livello N, le (N+1)-entità,
cooperano e comunicano usando lo
(N)-servizio fornito dallo (N)-fornitore di
servizio
usa
(N + 1) - strato
(N) - strato
(N) - servizio
fornisce
ARCHITETTURE DI PROTOCOLLI - 19
Servizi
(N) - servizio
N+1
N
N+1
(N) - fornitore
di servizio
N
Black-Box per le
(N + 1) - entità
ARCHITETTURE DI PROTOCOLLI - 20
Servizi
(N-1) - servizio
N
N-1
N
(N-1) - fornitore
di servizio
N-1
Black-Box per le
(N) - entità
ARCHITETTURE DI PROTOCOLLI - 21
SAP
(N) - livello
(N - 1) - SAP
(N) - entità
(N-1) - entità
(N-1) - entità
(N-1) - livello
ARCHITETTURE DI PROTOCOLLI - 22
Protocolli
Sistema A
Sistema B
(N+1) - protocollo
(N+1) - entità
(N+1) - entità
(N) - servizio
(N) - SAP
(N) - strato
(N) - protocollo
(N) - entità
(N) - entità
ARCHITETTURE DI PROTOCOLLI - 23
Indirizzi
(N) - titolo
(N) - Strato
(N) - entità
(N - 1) - SAP
(N - 1) - Strato
(N - 1) - entità
(N - 1) indirizzo
ARCHITETTURE DI PROTOCOLLI - 24
Funzioni di identificazione
• (N) directory
(N) - entità
(N-1) - indirizzo
(N) - titolo
ARCHITETTURE DI PROTOCOLLI - 25
Funzioni di identificazione
• (N)-mapping
(N) - indirizzo
(N) - SAP
(N) - entità
(N - 1) - SAP
(N - 1) - indirizzo
ARCHITETTURE DI PROTOCOLLI - 26
Tipologie di mapping
F
G
H
J
K
K
C
(N) - strato
A
B
one-to-one
hierarchical
C
L
K
D
M
L
D
D
M
E
E
tabular
ARCHITETTURE DI PROTOCOLLI - 27
Connessioni
(N) - entità
A
(N) - strato
(N) - entità
B
(N) - entità
C
(N - 1) - SAP
(N - 1) - strato
(N-1) - connessioni
ARCHITETTURE DI PROTOCOLLI - 28
Connessioni
(N) - entità
A
(N) - strato
(N) - entità
C
(N) - entità
B
(N - 1) - SAP
(N - 1) - strato
connessione
punto - multipunto
connessioni
punto - punto
ARCHITETTURE DI PROTOCOLLI - 29
Connessione
(N) - entità
A
(N) - strato
(N) - entità
B
(N) - entità
C
(N - 1) - SAP
(N - 1) - strato
(N - 1) - CEP
ARCHITETTURE DI PROTOCOLLI - 30
Connessioni
(N) - entità
A
(N) - strato
(N) - entità
B
(N) - entità
C
(N - 1) - CEP
(N - 1) - SAP
(N - 1) - strato
(N - 1) - CEP.id
ARCHITETTURE DI PROTOCOLLI - 31
Accordo
Accordo tra tre parti
Le tre parti
(N + 1) - entità
(N + 1) - entità
(N) - fornitore di servizio
ARCHITETTURE DI PROTOCOLLI - 32
Accordo
• Nel caso di trasferimento di informazioni
senza connessione è sufficiente un accordo
tra due parti
Le due parti
(N + 1) - entità
(N + 1) - entità
(N + 1) - entità
(N + 1) - entità
Le due
parti
Le due
parti
- fornitoredi
di servizio
servizio
(N)(N)
- fornitore
ARCHITETTURE DI PROTOCOLLI - 33
Accordo
• Nel caso di trasferimento di informazioni con
connessione è necessario un accordo tra le
tre parti
Le tre parti
(N + 1) - entità
(N + 1) - entità
(N + 1) - entità
(N + 1) - entità
- fornitoredi
di servizio
servizio
(N)(N)
- fornitore
ARCHITETTURE DI PROTOCOLLI - 34
Connessioni
• multiplazione di (N) - connessioni su una
(N-1)-connessione
(N+1) - strato
(N) - CEP
(N) - SAP
(N) - strato
ARCHITETTURE DI PROTOCOLLI - 35
Connessioni
• suddivisione di una (N) - connessione su più
(N - 1) - connessioni
(N) - CEP
(N) - SAP
(N) - strato
ARCHITETTURE DI PROTOCOLLI - 36
Creazione PDU
(N) - PDU
(N) - livello
(N - 1) - SDU
SAP
interfaccia
(N - 1) - PCI
(N - 1) - SDU
(N-1) - livello
(N - 1) - PDU
ARCHITETTURE DI PROTOCOLLI - 37
Creazione PDU
• Sulle unità dati esiste la possibilità di
– segmentazione
– concatenazione
• La segmentazione può avvenire sia
costruendo più (N)-PDU da una (N)-SDU, sia
generando più (N-1)-SDU da una (N)-PDU.
• Analogamente per la concatenazione.
ARCHITETTURE DI PROTOCOLLI - 38
Trasferimento informazioni
Sistema A
Sistema B Sistema C Sistema D
mezzi trasmissivi
percorso delle informazioni
ARCHITETTURE DI PROTOCOLLI - 39
Trasferimento informazioni
dati
Trasmettitore
Ricevitore
APCI ASDU
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
PPCI
SPCI
TPCI
NPCI
DLPCI
PSDU
SSDU
TSDU
NSDU
DLSDU
bit o simboli
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
ARCHITETTURE DI PROTOCOLLI - 40
Primitive
(N) - entità
(N) - protocollo
(N) - SAP
RISPOSTA
CONFERMA
RICHIESTA
(N) - SAP
INDICAZIONE
utente
(N) - servizio
utente
(N) - servizio
(N + 1) - strato
(N) - strato
(N) - entità
fornitore dell’ (N) - servizio
ARCHITETTURE DI PROTOCOLLI - 41
Uso di primitive
Servizio confermato
Utente
del servizio
Primitiva
di richiesta
Primitiva
di conferma
Fornitore
del servizio
Utente
del servizio
Primitiva
di indicazione
Primitiva
di risposta
ARCHITETTURE DI PROTOCOLLI - 42
Uso di primitive
Servizio non confermato
Utente
del servizio
Primitiva
di richiesta
Fornitore
del servizio
Utente
del servizio
Primitiva
di indicazione
ARCHITETTURE DI PROTOCOLLI - 43
Uso di primitive
Servizio iniziato dal fornitore
Utente
del servizio
Primitiva
di indicazione
Fornitore
del servizio
Utente
del servizio
Primitiva
di indicazione
ARCHITETTURE DI PROTOCOLLI - 44
Uso di primitive
Apertura di connessione
(N + 1) - entità
(N) - CONNECT
(N + 1) - entità
(N) - fornitore
di servizio
(N) - CONNECT
REQUEST
INDICATION
(N) - CONNECT
(N) - CONNECT
RESPONSE
CONFIRM
(N) - SAP
(N) - SAP
ARCHITETTURE DI PROTOCOLLI - 45
Uso di primitive
Trasferimento dati
(N + 1) - entità
(N) - DATA
(N) - fornitore
di servizio
(N + 1) - entità
(N) - DATA
REQUEST
INDICATION
(N) - SAP
(N) - SAP
ARCHITETTURE DI PROTOCOLLI - 46
Uso di primitive
Chiusura di connessione
iniziata dall’utente
(N + 1) - entità
(N) - DISCONNECT
(N) - fornitore
di servizio
REQUEST
(N + 1) - entità
(N) - DISCONNECT
INDICATION
(N) - SAP
(N) - SAP
ARCHITETTURE DI PROTOCOLLI - 47
Setti strati OSI
applicazione
presentazione
sessione
trasporto
rete
collegamento
fisico
Protocollo di applicazione
Protocollo di presentazione
Protocollo di sessione
Protocollo di trasporto
Protocollo di rete
applicazione
presentazione
sessione
trasporto
rete
Protocollo di collegamento
Protocollo di strato fisico
collegamento
fisico
mezzi trasmissivi
ARCHITETTURE DI PROTOCOLLI - 48
Sistemi
• sistemi terminali
• sistemi di rilegamento (relay)
SISTEMA A
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
RELAY SYSTEM
Rete
Colleg.
Fisico
SISTEMA B
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
mezzi trasmissivi
ARCHITETTURE DI PROTOCOLLI - 49
Reti pubbliche
strati di
utilizzazione
protocolli di utilizzazione
strati di
trasferimento
strati di
trasferimento
protocolli di
accesso
protocolli di
rete
nodo di
accesso
apparecchio
terminale
sezione di accesso
strati di
trasferimento
nodo di
transito
sezione di rete interna
ARCHITETTURE DI PROTOCOLLI - 50
Strato 1: fisico
• Physical layer:
– fornisce i mezzi meccanici, fisici, funzionali e
procedurali per attivare, mantenere e disattivare
le connessioni fisiche
– ha il compito di effettuare il trasferimento delle
cifre binarie scambiate dalle entità di livello di
collegamento
– le unità dati sono bit o simboli
– definizione di codifiche di linea, connettori, livelli
di tensione
ARCHITETTURE DI PROTOCOLLI - 51
Strato 2: collegamento
• Data link layer
– fornisce i mezzi funzionali e procedurali per il
trasferimento delle unità dati tra entità di livello
rete e per fronteggiare malfunzionamenti del
livello fisico
– funzioni fondamentali:
• rivelazione e recupero degli errori di trasmissione
• controllo di flusso
• delimitazione delle unità dati
ARCHITETTURE DI PROTOCOLLI - 52
Strato 3: rete
• Network layer
– fornisce i mezzi per instaurare, mantenere e
abbattere le connessioni di rete tra entità di
livello trasporto
– fornisce i mezzi funzionali e procedurali per lo
scambio di informazioni tra entità di livello
trasporto
– funzioni fondamentali:
• instradamento
• controllo di flusso e congestione
• tariffazione
ARCHITETTURE DI PROTOCOLLI - 53
Strato 4: trasporto
• Transport layer
– fornisce alle entità di livello sessione le
connessioni di livello trasporto
– colma le deficienze della qualità di servizio delle
connessioni di livello rete
– ottimizza l’uso del servizio di livello rete
– funzioni fondamentali:
• controllo d’errore
• controllo di sequenza
• controllo di flusso
ARCHITETTURE DI PROTOCOLLI - 54
Strato 4: trasporto
– è il livello più basso con significato da estremo a
estremo
– esegue la multiplazione e la suddivisione di
connessioni
– permette la frammentazione di messaggi in
pacchetti e la loro ricomposizione
ARCHITETTURE DI PROTOCOLLI - 55
Strato 5: sessione
• Session layer
– assicura alle entità di presentazione una
connessione di sessione
– organizza il colloquio tra le entità di
presentazione
– struttura e sincronizza lo scambio di dati in modo
da poterlo sospendere, riprendere e terminare
ordinatamente
– maschera le interruzioni del servizio trasporto
ARCHITETTURE DI PROTOCOLLI - 56
Strato 6: presentazione
• Presentation layer
– risolve i problemi di compatibilità per quanto
riguarda la rappresentazione dei dati da
trasferire
– risolve i problemi relativi alla trasformazione
della sintassi dei dati
– può fornire servizi di cifratura delle informazioni
ARCHITETTURE DI PROTOCOLLI - 57
Strato 7: applicazione
• Application layer
– fornisce ai processi applicativi i mezzi per
accedere all’ambiente OSI
• Esempi di servizio
– trasferimento di file - FTAM
– terminale virtuale - VT
– posta elettronica - X.400
ARCHITETTURE DI PROTOCOLLI - 58
Esempio
• Rete semplicissima
U1
N1
U2
ARCHITETTURE DI PROTOCOLLI - 59
Esempio
• Supponiamo che una (4)-entità debba
comunicare con una (4)-entità remota e
seguiamo passo - passo
– primitive
– SDU
– PDU
ARCHITETTURE DI PROTOCOLLI - 60
Esempio
U1
N1
U2
• servizio di livello 3 con connessione
• servizio di livello 2 senza connessione
• servizio di livello 1 senza connessione
ARCHITETTURE DI PROTOCOLLI - 61
Esempio
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 62
Esempio
X,X’
Direttorio
X
A,H
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 63
Esempio
N-CONNECT.request (H,A,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 64
Esempio
N-PDU (H,A,VCid’,call request,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 65
Esempio
A,H
Instradamento
X
A,Z
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 66
Esempio
A,Z
Mapping
X
B,D
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 67
Esempio
DL-DATA.request (D,B,DL-SDU,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 68
Esempio
DL-PDU (D,B,DL-SDU,DL-PCI)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 69
Esempio
B,D
Mapping
X
C,E
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 70
Esempio
PH-DATA.request (E,C,simbolo)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 71
Esempio
X
X’
Z
A
H
B
D
F
I
C
E
G
J
01100111
ARCHITETTURE DI PROTOCOLLI - 72
Esempio
PH-DATA.indication (E,C,simbolo)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 73
Esempio
DL-PDU (D,B,DL-SDU,DL-PCI)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 74
Esempio
DL-DATA.indication (D,B,DL-SDU,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 75
Esempio
N-PDU (H,A,VCid’,call request,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 76
Esempio
A,H
Instradamento
X
Z,H
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 77
Esempio
Z,H
Mapping
X
F,I
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 78
Esempio
N-PDU (H,A,VCid’’,incoming call,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 79
Esempio
DL-DATA.request (I,F,DL-SDU,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 80
Esempio
DL-PDU (I,F,DL-SDU,DL-PCI)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 81
Esempio
F,I
Mapping
X
G,J
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 82
Esempio
PH-DATA.request (J,G,simbolo)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 83
Esempio
X
X’
Z
A
H
B
D
F
I
C
E
G
J
01100111
ARCHITETTURE DI PROTOCOLLI - 84
Esempio
PH-DATA.indication (J,G,simbolo)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 85
Esempio
DL-PDU (I,F,DL-SDU,DL-PCI)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 86
Esempio
DL-DATA.indication (I,F,DL-SDU,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 87
Esempio
N-PDU (H,A,VCid’’,incoming call,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 88
Esempio
N-CONNECT.indication (H,A,CEP.id’,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 89
Esempio
N-CONNECT.response (CEP.id’,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 90
Esempio
N-PDU (A,H,VCid’’,call accepted,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 91
Esempio
N-PDU (A,H,VCid’’,call accepted,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 92
Esempio
N-PDU (A,H,VCid’,call connected,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 93
Esempio
N-PDU (A,H,VCid’,call connected,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 94
Esempio
N-CONNECT.confirm (A,H,CEP.id’’,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 95
Esempio
T-PDU (T-PCI,T-SDU)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 96
Esempio
N-DATA.request (CEP.id’’,N-SDU,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 97
Esempio
N-DATA.indication (CEP.id’,N-SDU,...)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 98
Esempio
T-PDU (T-PCI,T-SDU)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 99
Esempio
N-DISCONNECT.request (CEP.id’)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 100
Esempio
N-DISCONNECT.indication (CEP.id’’)
X
X’
Z
A
H
B
D
F
I
C
E
G
J
ARCHITETTURE DI PROTOCOLLI - 101
Scarica

osi