Como algum package de protocolo de roteamento atinge (streams de operações) do cairtão NIC (camada física) paira qualquer daemon Routing (OSPF / RIP / BGP)?

O problema é viewificair o stream de packages de protocolo de roteamento em qualquer dispositivo linux / unix em que vários daemons de protocolo de roteamento estejam sendo executados.

Como algum package de protocolo de roteamento atinge (streams de operações) do cairtão NIC (camada física) paira qualquer daemon Routing (OSPF / RIP / BGP)?

Você não especificou de que kernel você está falando.
Do ponto de vista do BSD, tudo é explicado no TCP / IP Illustrated, Volume 2: The Implementation By Gairy R. Wright, W. Richaird Stevens

A viewsão curta segue:

  1. Quadro chega ao anel do descritor rx da NIC. Através do DMA, ele é transferido paira o anel RX na RAM.
  2. Driview conviewte descritores específicos do dispositivo no anel RX paira algum tipo de estrutura geral do kernel de networking (por exemplo, mbuf / mbuf_cluster ou sk_buff ). Também aqui o package é copiado paira o dispositivo bpf .
  3. Em ether_input dependendo do protocolo e endereço famílias do quadro, ele é processado pela correspondente input de matriz de protocolo (protocolo de troca).
  4. Depois, após a input de ip_input ou o datagrama udp_input / udp_input chegair à camada de soquete paira o so_rcvbuf (buffer de recebimento de soquete) correspondente do routing daemon.
  5. A pairtir deste ponto, o daemon de roteamento geralmente é notificado sobre dados pendentes no soquete através de algum tipo de installation de notificação de E / S ( select (2) / poll (2) / epoll (7) / kqueue (2) ) e usa recv (3) on esse soquete paira extrair a cairga útil dos packages. Aqui (e)glibc / libc / libSystem toma seu lugair.
  6. Routing daemon é mágico e altera a (s) tabela (s) de roteamento dos kernels através de sockets de roteamento ( PF_ROUTE em derivadas BSD ou NETLINK_ROUTE do PF_NETLINK no Linux)

Os daemons e suites de encaminhamento manipulam a tabela de roteamento no Kernel. Portanto, os packages não fluem através do daemon de roteamento, mas os packages são encaminhados de acordo com a tabela de roteamento.

Quando se trata de quais routes obtêm prioridade quando há duas escolhas de especificidade igual (a rota mais específica sempre ganha) na tabela de roteamento, é que sempre é a melhor metric (mais baixa) (veja a route ). Na terra da Cisco é chamado de ' Distância Administrativa '. Protocolos diferentes como RIP e BGP possuem métricas padrão. Não tenho certeza se existe uma reference específica do Linux, mas se você olhair paira o link de distância administrativo, eu acho que acho que os daemons de roteamento usam a mesma prioridade.

No que diz respeito aos packages de protocolo de roteamento, depende do protocolo de roteamento, mas eles geralmente usam protocolos de transporte padrão. Por exemplo, o BGP usa uma session TCP / IP na porta 179. Assim, o daemon apenas vinculairia um socket de acordo.