W co najmniej jednej implementacji istnieje twardy limit pojemności tabeli ARP. Co się stanie, gdy pamięć podręczna ARP jest pełna, a pakiet jest oferowany z miejscem docelowym (lub następnym przeskokiem), które nie jest buforowane? Co dzieje się pod maską i jaki jest wpływ na jakość usług?
Na przykład routery Brocade NetIron XMR i Brocade MLX mają konfigurowalne ip-arp
maksimum systemowe . Domyślna wartość w tym przypadku to 8192; rozmiar podsieci / 19. Z dokumentacji nie wynika jasno, czy dotyczy to interfejsu, czy całego routera, ale dla celów tego pytania możemy założyć, że dotyczy to interfejsu.
Niewielu sieci celowo skonfigurowałoby podsieć / 19 na interfejsie, ale tak się nie stało. Migrowaliśmy rdzeń routera z modelu Cisco do Brocade. Jedną z wielu różnic między Cisco a Brocade jest to, że Cisco akceptuje trasy statyczne, które są zdefiniowane zarówno za pomocą interfejsu wychodzącego, jak i adresu następnego przeskoku, ale Brocade nalega na jedno lub drugie. Porzuciliśmy adres następnego skoku i zachowaliśmy interfejs. Później dowiedzieliśmy się o błędach naszych metod i zmieniliśmy interfejs z adresu na następny przeskok, ale początkowo wszystko wydawało się działać.
+----+ iface0 +----+
| R1 |-----------| R2 |---> (10.1.0.0/16 this way)
+----+.1 .2+----+
10.0.0.0/30
Przed migracją R1 był Cisco i miał następującą trasę.
ip route 10.1.0.0 255.255.0.0 iface0 10.0.0.2
Po migracji R1 był Brokatem i miał następującą trasę.
ip route 10.1.0.0 255.255.0.0 iface0
R2 jest routerem Cisco, a routery Cisco domyślnie wykonują ARP proxy . Jest to (błędna) konfiguracja produkcyjna, która ustaliła przepełnienie pamięci podręcznej ARP.
- R1 odbiera pakiet przeznaczony dla sieci 10.1.0.0/16.
- Na podstawie statycznej trasy interfejsu R1 ARP dla miejsca docelowego
iface0
- R2 rozpoznaje, że może dotrzeć do miejsca docelowego i odpowiada na ARP własnym MAC.
- R1 buforuje wynik ARP, który łączy IP w sieci zdalnej z MAC R2.
Dzieje się tak dla każdego określonego miejsca docelowego w 10.1.0.0/16. W konsekwencji, mimo że / 16 jest właściwie podsieciowy poza R2 i istnieją tylko dwa węzły na łączu sąsiadującym z R1 i R2, R1 cierpi z powodu przeciążenia pamięci podręcznej ARP, ponieważ powoduje, że R2 zachowuje się tak, jakby wszystkie 65 000 adresów były bezpośrednio połączone.
Powodem, dla którego zadaję to pytanie, jest to, że mam nadzieję, że pomoże mi to zrozumieć raporty o problemach z usługą sieciową (dni później), które doprowadziły nas ostatecznie do przepełnienia pamięci podręcznej ARP. W duchu modelu StackExchange próbowałem wyjaśnić to, co uważam za ostre, konkretne pytanie, na które można obiektywnie odpowiedzieć.
EDYCJA 1 Aby być jasnym, pytam o część warstwy kleju między łączem danych (warstwa 2) a siecią (warstwa 3), a nie o tabelę przesyłania MAC w warstwie łącza danych. Host lub router buduje ten pierwszy, aby mapować adresy IP na adresy MAC, podczas gdy przełącznik buduje ten drugi, aby mapować adresy MAC na porty.
EDYCJA 2 Chociaż doceniam wysiłek, jaki podjęli respondenci, aby wyjaśnić, dlaczego niektóre implementacje nie podlegają przepełnieniu pamięci podręcznej ARP, uważam, że ważne jest, aby to pytanie dotyczyło tych, którzy są. Pytanie brzmi: „co się stanie, kiedy”, a nie „, czy sprzedawca X jest podatny na”. Wykonałem teraz swoją część, opisując konkretny przykład.
EDYCJA 3 Kolejnym pytaniem, na które nie ma odpowiedzi, jest „jak zapobiec przepełnieniu pamięci podręcznej ARP?”