Où est stockée la table d'adjacence de Cisco Hardware dCEF?

8

Pour Cisco Hardware dCEF, basé sur certains documents publiés sur le site Web de Cisco, au niveau de la carte / interface de ligne d'entrée, il recherche conceptuellement la FIB avec l'adresse IP dst et obtient un pointeur vers une entrée de table de contiguïté, où les informations de réécriture L2 sont stockées, par exemple, nexthop mac, etc.

Mais ce qui me confond, c'est que la réécriture L2 ne se produit-elle pas sur la carte / interface de ligne de sortie? Si oui, alors pourquoi cette table de contiguïté est-elle stockée en entrée? Ou où se passe la recherche de table de contiguïté? entrée ou sortie? Si c'est sur l'entrée, les informations de réécriture L2 sont-elles transférées de la carte d'entrée à la carte de ligne de sortie? Ne serait-ce pas un gaspillage de bande passante de tissu?

wei
la source
1
Réfléchissez à: comment un paquet peut-il être transmis à l'interface de sortie si l'interface d'entrée n'a pas de contiguïté?
Ricky Beam
Eh bien, vous n'avez pas besoin de stocker la table d'adjacence who, vous pouvez stocker une sorte d'ID d'ajacence, puis à la sortie, vous pouvez utiliser cet id d'adjacence pour rechercher la table d'adjacence et obtenir les informations de réécriture L2. En fait, si cette table de contiguïté est stockée sur asic d'entrée, vous devrez stocker les informations de contiguïté de chaque carte de ligne de sortie sur la carte de ligne d'entrée, ne serait-ce pas un énorme gaspillage de mémoire?
wei

Réponses:

9

Mais ce qui me confond, c'est que la réécriture L2 ne se produit-elle pas sur la carte / interface de ligne de sortie?

Pas vraiment, la décision de transfert / suppression, la recherche de contiguïté L2, la décrémentation du TTL, le calcul de la somme de contrôle IP, etc. se produisent tous sur la carte de ligne d' entrée .

Conceptuellement, vous pouvez diviser le flux d'informations en un plan de contrôle et un plan de données, même dans le châssis du routeur. Il semble que la plus grande partie de votre confusion tourne autour du fonctionnement du plan de contrôle ... voici un schéma rapide que j'ai piraté pour illustrer ...

IPC et CEF

  • Le processeur de route construit la table CEF à partir des informations de contiguïté de couche 2 (y compris Ethernet, ppp, sonet, etc ...) ainsi que toutes les routes préférées
  • L'ensemble des informations CEF et de table de contiguïté sont regroupées dans des messages IPC, qui sont envoyés entre le processeur de route et toutes les cartes de ligne. Les entrées CEF individuelles sont rendues sous forme de XDR dans le message IPC. Un XDR n'est qu'un moyen spécifique à Cisco d'écrire des entrées CEF dans un message IPC.
  • Les cartes de ligne individuelles décompressent les XDR des messages IPC et créent (ce qui devrait être) une copie exacte du CEF du processeur de route et de la table de contiguïté sur la carte de ligne.
  • Une fois que la linecard a terminé les révisions des tables CEF et d'adjacence, un processus spécifique à la plate-forme s'exécute sur la linecard pour calculer les structures de données nécessaires au matériel de la plate-forme pour transmettre et réécrire les paquets sur la linecard elle-même.

L'IPC synchronisé est assez critique pour le fonctionnement de dCEF; si vous ne gardez pas les messages synchronisés entre toutes les cartes de ligne, vous pouvez vous retrouver avec des incohérences de préfixe .

La mécanique de la façon dont le routeur le fait est spécifique à la plate-forme, donc je ferai référence à la plate-forme que je connais le mieux, qui est Catalyst 6500 avec Supervisor720 / Supervisor2T. Le moteur de transfert et de réécriture sur une carte de ligne Catalyst 6500 dCEF est en fait une copie miniature du superviseur lui-même; ainsi le processus entier de transmission et de commutation IP s'exécute comme s'il faisait comme si le paquet était transmis de manière centralisée sur le superviseur. La linecard d'entrée dCEF recherche les informations requises dans la table CAM / CEF, puis construit un en-tête qu'elle attache au paquet.

La linecard de sortie regarde l'en-tête et utilise les informations de contiguïté à l'intérieur pour écrire le paquet sur le fil.

Pourquoi cette table d'adjacence est stockée en entrée?

Vous pouvez donc prendre l'intégralité de la décision de transfert sur l'entrée.

Si c'est sur l'entrée, les informations de réécriture L2 sont-elles transférées de la carte d'entrée à la carte de ligne de sortie?

Oui

Ne serait-ce pas un gaspillage de bande passante de tissu?

Je ne pense pas, mais là encore, je pourrais être biaisé :-)

Mike Pennington
la source
Merci beaucoup pour la réponse détaillée! Je suppose essentiellement que linecard fib est synchronisé avec rp. Ma confusion est en fait autour du plan de données, car je sais que certains produits non-Cisco font une recherche de table de contiguïté sur la sortie, donc j'essaie de savoir si Cisco choisit vraiment de le faire en entrée et pourquoi, pour moi, cela gaspille de la mémoire et bande passante du tissu.
wei
Les déchets sont subjectifs. Vous devez faire la recherche quelque part; on pourrait dire que faire une recherche sur la sortie gaspille des ressources et rend le produit plus cher. Le débat pourrait durer longtemps en jetant des pierres aux différents angles de l'objet de votre aversion. En bout de ligne, Cisco choisit de dépenser une quantité modeste de mémoire sur la carte de ligne d'entrée, et les informations de contiguïté ne sont pas envoyées à travers la structure sur le Catalyst6500 de toute façon; les résultats de contiguïté sont envoyés à la carte de ligne de sortie via un RBUS dédié.
Mike Pennington
Pour en savoir plus sur le papier RBUS: Sup720 Architecture
Mike Pennington
3

Lorsque le Cisco Express Forwarding distribué est activé, les linecards, tels que les linecards VIP ou les linecards de routeur Internet de la gamme Cisco 12000, conservent une copie identique des tables FIB et adjacentes. Les linecards effectuent le transfert express entre les adaptateurs de port, libérant ainsi le RP d'implication dans l'opération de commutation. Cisco Express Forwarding distribué utilise un mécanisme de communication interprocessus (IPC) pour assurer la synchronisation des tables FIB et des tables de contiguïté sur le RP et les linecards. - Cisco

Le RP (exécutant divers processus de protocole de routage) construit la FIB et la publie sur toutes les cartes de ligne. Il y a un FIB, mais il est répliqué sur chaque linecard. (oui, parfois ils se désynchronisent.)

Ricky Beam
la source
Ouais, cette partie je comprends. La partie qui m'embrouille est que tous les documents publiés par Cisco semblent impliquer que les informations de réécriture L2 sont recherchées en entrée, ce qui n'a pas beaucoup de sens pour moi.
wei