Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.
C’est alors la barrière de la prise en main qui fait peur, et pourtant...
Les logiciels libres
L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.
Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.
Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.
Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.
L'utilisation de DHCP pour attribuer des adresses IP est bien connue. Ce
nouveau RFC spécifie comment utiliser DHCP pour attribuer des
adresses MAC.
Dans quels cas est-ce utile ? La principale motivation vient des
environnements virtualisés où on crée des quantités industrielles de
machines virtuelles. C'est le cas chez les
gros hébergeurs, par exemple, ou bien dans les organisations qui ont
d'immenses fermes de machines. Si les adresses MAC de ces machines
sont attribuées au hasard, le risque de collision est important,
d'autant plus qu'il n'y a pas de protocole de détection de ces
collisions. (Sur le risque de collision, notamment en raison du
paradoxe de l'anniversaire, voir le RFC 4429, annexe A.1.) Bien sûr, les adresses MAC n'ont pas
besoin d'être uniques au niveau mondial, mais la taille de certains
réseaux L2 fait que la
collision est un réel problème. Un autre scénario est celui des
objets connectés (RFC 7228), où leur nombre
pourrait menacer l'espace d'adressage OUI. L'idée
est donc de récupérer ces adresses MAC auprès d'un serveur
DHCP, ce qui évitera les collisions.
En effet, le protocole DHCP, normalisé pour sa version
IPv6 dans le RFC 8415,
ne sert pas qu'à attribuer des adresses IP. On peut s'en servir pour
n'importe quel type de ressources. Et il offre toutes les fonctions
nécessaires pour gérer ces ressources, et de nombreuses mises en
œuvre déjà bien testées. Notre RFC va donc s'appuyer dessus pour les
adresses MAC de 48 bits (EUI-48) d'IEEE 802 (et
peut-être dans le futur pour d'autres types d'adresses).
Dans ces adresses de 48 bits, un bit nous intéresse
particulièrement, le U/L. Comme son nom l'indique (U =
universal, L = local), il
indique si l'adresse suit le mécanisme d'allocation de l'IEEE (et est donc a priori unique au niveau
mondial) ou bien si l'adresse est gérée selon des règles
locales. Les adresses allouées via DHCP seront en général des
adresses à gestion locale. Étant purement locales (aucune garantie
quant à leur unicité), elles ne doivent pas être utilisées pour
fabriquer le DUID - DHCP Unique Identifier - de
DHCP (cf. RFC 8415, section 11). Notez aussi
que la norme IEEE
802c découpe l'espace local en quatre parties (détails dans
l'annexe A du RFC ou, pour les courageuses et les courageux, dans la
norme 802c). Pendant qu'on parle de l'IEEE, leur norme 802
1CQ prévoit un mécanisme d'affectation des adresses MAC, qui
peut être un concurrent de celui de ce RFC. Le RFC 8948 fournit un moyen de choisir l'un de ces quadrants.
Un peu de terminologie est nécessaire pour suivre ce RFC (section
3). Un bloc d'adresses est une suite
consécutive d'adresses MAC. IA_LL désigne une
Identity Association for Link-Layer Address et
c'est une option DHCP (code 138) qui va beaucoup servir. Autre
option DHCP, LLADDR (code 139) qui est l'option
qui va servir à transporter les adresses MAC.
La section 4 du RFC présente les principes de déploiement de la
solution. Il y a notamment deux scénarios envisagés :
- Le mode relais, où le client DHCP ne sera pas le
destinataire final des adresses MAC. Par exemple, dans le cas de
la virtualisation, le client DHCP sera
l'hyperviseur qui demandera un bloc
d'adresses qu'il attribuera ensuite aux machines virtuelles qu'il
crée. Le serveur DHCP verra donc un client très gourmand,
demandant de plus en plus d'adresses MAC.
- Le mode direct, où le client DHCP sera la machine
utilisatrice de l'adresse MAC. C'est notamment le mode envisagé
pour l'IoT, chaque objet demandant son
adresse MAC. Comme il faudra bien une adresse MAC pour faire du
DHCP afin de demander une adresse MAC, les objets utiliseront les
adresses temporaires normalisées dans IEEE
802.11. Comme l'adresse MAC changera une fois allouée, il
faut veiller à ne pas utiliser des
commutateurs méchants qui bloquent le port
en cas de changement d'adresse.
Bon, sinon, le fonctionnement de l'allocation d'adresses MAC
marche à peu près comme celui de l'allocation d'adresses IP. Le
client DHCP envoie un message Solicit
incluant
une option IA_LL qui contient elle-même une option LLADDR qui
indique le type d'adresse souhaitée et peut aussi inclure une
suggestion, si le client a une idée de l'adresse qu'il voudrait. Le
serveur répond avec Advertise
contenant
l'adresse ou le bloc d'adresses alloué (qui ne sont pas forcément
ceux suggérés par le client, comme toujours avec DHCP). Si
nécessaire, il y aura ensuite l'échange habituel
Request
puis Reply
. Bref,
du DHCPv6 classique. Le client devra renouveler l'allocation au
bout du temps indiqué dans le bail (le serveur peut toujours donner
l'adresse sans limite de temps, cf. RFC 8415,
section 7.7). Le client peut explicitement abandonner l'adresse,
avec un message Release
. On l'a dit, ça se
passe comme pour les adresses IP.
Les fanas du placement exact des bits liront la section 10, où
est décrit l'encodage de l'option IA_LL et de la « sous-option »
LLADDR. C'est là qu'on trouvera l'indication des blocs d'adresses
MAC, encodés par la première adresse puis la taille du bloc
(-1). Ainsi, 02:04:06:08:0a
/ 3 indique un bloc
qui va de 02:04:06:08:0a
à
02:04:06:08:0d
. Pendant qu'on parle de bits,
notez que les bits indiquant diverses caractéristiques de l'adresse
MAC figurent dans le premier octet, et que la transmission se fait
en commençant par le bit le moins significatif (IEEE 802 est
petit-boutien pour les bits). Ainsi,
l'adresse citée plus haut, 02:04:06:08:0a
a un
premier octet qui vaut 2, soit 00000010 en binaire, ce qui sera
transmis comme 01000000. Le premier bit est le M, qui indique ici
qu'il s'agit d'une adresse
unicast, le second est
U/L, indiquant ici que c'est bien une adresse locale, les deux bits
suivants sont une nouveauté de IEEE
802c et indiquent le quadrant des adresses (cf. annexe A du
RFC, puis le RFC 8948).
Quelques conseils pour les administrateurs des serveurs DHCP qui
feront cette allocation d'adresses MAC figurent en section 11 du
RFC. Par exemple, il ne faut allouer que des adresses locales (bit
U/L à 1).
Les deux nouvelles options, IA_LL et LLADDR ont été mises dans
le
registre IANA.
Pour finir, l'annexe A du RFC résume la norme IEEE 802c. Dans la
norme IEEE 802 originale, il y avait, comme indiqué plus haut, un
bit U/L qui disait si l'adresse était gérée selon des règles locales
(et n'était donc pas forcément unique au niveau mondial). 802c
ajoute à ces adresses locales la notion de quadrant, découpant
l'espace local en quatre. Après le bit M (unicast
ou groupe) et le bit U/L (local ou pas). deux bits indiquent dans
quel quadrant se trouve l'adresse :
- 01 est Extended Local, des adresses qui
comportent un identifiant de l'organisation, le CID
(Company ID), et qui sont donc apparemment
garanties uniques à l'échelle de la planète,
- 11 est Standard Assigned, elles sont
affectées par le protocole IEEE concurrent de celui du RFC,
- 00 est Administratively Assigned, ce sont
les « vraies » adresses locales, attribuées comme on veut (comme
l'était la totalité de l'espace des adresses locales autrefois,
les adresses d'exemple plus haut
(
02:04:06:08:0a
et suivantes sont dans ce
quadrant),
- 10 est réservé pour un usage futur.
Un mécanisme de sélection du quadrant est normalisé dans le
RFC 8948.
Pour l'instant, je ne connais pas de mise en œuvre de ce RFC que
ce soit côté client ou serveur.