4.1.4 Le protocole AIM: API_IPsec Messages
Pour communiquer l'API_IPsec avec les applications ou
avec les API_IPsec distantes on a défini le protocole API_IPsec Messages
(AIM). Il permet d'encapsuler différents structures qui ont
l'information nécessaire pour communiquer soit messages de signalisation
(confirmations, ouvrir/fermer sockets, etc.) soit messages de fonctions pour
gérer la couche IPsec (opérations de
créer/consulter/modifier/effacer associations ou politiques de
sécurité dans la base de données, synchronisation avec la
SAD/SPD, etc.). Pour le protocole AIM on a défini les quatre structures
: un Header commun dans tous le message, et trois structures « dm_XX
» spécifiques. Un message est composé d'un Header et d'une
structure « dm_XX » selon le Type de message. Uniquement la structure
dm_FUNCTION peut contenir forcement des paramètres, cela veut dire,
plusieurs structures dm_PARAM ; aussi, on peut avoir sans problèmes
plusieurs dm_FUNCTION dans le même message, l'une après l'autre.
Voici un schéma pour clarifier :
Toes de Message Structure
HEADER
API_MSG_ERR API_MSG_ACK API_MSG_NCK
API_MSG_FUNCTION
ID TYPE LENGTH
API_MSG_PARAMETERS
- Numéro de paquet (unique)
- Type de Message. Il indique la structure « dm_XX
» qui suivra le Header.
-
dm_RESPONSE
|
- Code de ACK / ERROR. Il contient un numéro
lié au Type de Message ou de Fonction qu'on a traité.
- Code = RETURN_FUNCTION, RETURN_PARAM
|
CODE
|
|
|
TABLE TYPE LENGTH
|
- Table de la DB : TB_SA, TB_SP, TB_MH ... - Type de
Fonction : ADD, UPDATE, DELETE ...
- Taille totale de la fonction : cet en-tête +
paramètres
|
|
|
|
dm_PARAM
|
|
TAG LENGTH
- Type de Paramètre : ID, SA_MODE, SA_TYPE
... Taille variable du paramètre : il permet connaître combien
de bytes il faut lire pour obtenir la valeur du paramètre.
Taille totale du message en bytes (header
inclusive)
DATA
APX_SCK_CLOSE API_MSG_EXIT APX_SCK_RESTART REM_SCK_OPEN
API_SYN_IPSEC
Messages de signalisation ou d'opération directe.
Pas besoin d'une structure « dm_XX »
Figure 16. Type de messages et structures du protocole
AIM
|
Étude d'IPsec Projet d'une API_IPSEC
pour la Mobilite et le Multihoming
|
|
Ensuite, on présente les exemples plus
représentatifs des messages qu'on peut créer, et on fait
évident l'encapsulation :
HEADER
PARAM N value
PARAM 1
PARAM 2
dm_FUNCTION 1
value
value
dm_FUNCTION 2
dm_FUNCTION N
HEADER
dm_RESPONSE CODE = valueuchar
HEADER
dm_RESPONSE CODE = RE TPARAM
dm_PARAM
value
HEADER YPE = Message
HEADER YPE = REM_MSG_FUNC
dm_PARAM (tag=@)
Address API_REMOTE
dm_FUNCTION 1
value
PARAM 1
Figure 17. Exemples de messages encapsulés dans
le protocole AIM
Ce protocole contraint les applications qui veulent
utiliser l'API_IPsec de compiler et exécuter une libraire pour
envoyer/recevoir les messages. Dans la section du Prototype
développé on détaillera cette librairie et la table de
messages, de fonctions et de paramètres associées.
|