Zeroconf
Zeroconf ist ein auf dem Address Resolution Protocol (ARP) aufbauenden Mechanismus, um für eine Netzwerkschnittstelle automatisch eine freie IP-Adresse auszuwählen. Für genau diesen Zweck ist dafür von der IANA der Adressbereich 169.254.0.0/16 vorgesehen
IP-Adresse zwischen 169.254.1.0 und 169.254.254.255
Die ersten 256 und die letzten 256 Adressen sind von der IANA für zukünftige Anwendungen reserviert und dürfen unter keinen Umständen ausgewählt werden.
Das sind also 254 * 254 = 64516 mögliche Adressen (die erste 254 ist für den Bereich 192.254.1.x – 192.254.254.x, die Zweite für den Bereich 192.254.y.1 – 192.254.y.254).
CN1
Der Crypto Chip hat eine eindeutige 6 Byte große Serienummer welche für die MAC Adresse verwendet wird. Somit also auch für die Berechnung der Zeroconf Adresse.
MAC Adresse
Die unteren drei Byte der Serienummer ergeben die unteren drei Bytes der MAC Adresse (NIC). Die oberen drei Bytes (OUI) sind FEED01 (unicast und locally administered).
Bei der Auswahl der IP Adresse müssen rechnerspezifische Information einfließen, wie etwa die MAC-Adresse der Netzwerkschnittstelle, um sicherzustellen, dass – soweit möglich – jedes Mal dieselbe IP-Adresse generiert wird (sie wird damit also pseudozufällig gewählt)
Hier wird der Zufallszahlengenerator mit den unteren 3 Bytes der MAC Adresse initialisiert. Das ergibt genau ein uint32_t was als Startwert geeignet ist:
1 2 3 4 |
// extern void srand(unsigned int __seed); uint32 seed = 0; memcyp(&seed, &mac[3], 3); srand(seed); |
Die oberen drei Bytes (0..2) der Seriennummer bleiben geheim, werden also niemals über das Netzwerk übertragen.
Die Überprüfung von Adressen auf Konflikte erfolgt mit Hilfe von ARP-probes. Ein ARP-probe ist ein ARP-Paket, bei dem die Absender-IP-Adresse auf 0.0.0.0 gesetzt wird und als Empfänger-IP-Adresse die zu überprüfende Adresse verwendet wird.
Sobald der Rechner bereit ist, mit der Konfliktüberprüfung zu beginnen, wartet er eine zufällig lange Zeit zwischen 1 und 2 Sekunden, und sendet dann drei ARP-probes aus, mit einem zufälligen Zeitabstand von 1 bis 2 Sekunden. Empfängt der Rechner zwischen dem Testanfang und 2 Sekunden nach Versenden der letzten ARP-probe ein ARP-Paket, bei dem die Absender-IP-Adresse der zu überprüfenden IP-Adresse entspricht, so wurde ein Konflikt gefunden, und der Rechner muss diese Prozedur mit einer anderen zufällig generierten IP-Adresse wiederholen.
Wird in diesem Zeitraum ein anderes ARP-probe empfangen, das als Empfänger IP Adresse die zu testende IP-Adresse enthält, und deren Absender-MAC-Adresse keiner der MAC-Adressen der Netzwerkschnittstelle des Rechners entspricht, so muss vom Rechner ebenfalls eine neue IP-Adresse generiert und überprüft werden. Das kann beispielsweise passieren, wenn zwei oder mehrere Rechner gleichzeitig versuchen, dieselbe Link-Local-Adresse zu konfigurieren.