Отправка пакетов с тегами MPLS из приложения Linux

Я написал некоторое программное обеспечение VPN, которое теперь должно быть в состоянии пометить удаленный туннель с помощью тегов MPLS.

Я посмотрел на источник Mausezahn (который может отправлять пакеты MPLS), и кажется, что он создает весь кадр Ethernet, используя различные вспомогательные функции, а затем передает этот кадр Ethernet ядру с помощью libnet_write,

постановка /send_eth.c:

     ...
     tmpls = libnet_build_mpls(tx.mpls_label,
                   tx.mpls_exp,
                   tx.mpls_bos,
                   tx.mpls_ttl,
                   NULL,
                   0,
                   l,
                   0);
     ...
     t = libnet_build_ethernet (tx.eth_dst,
                tx.eth_src,
                tx.eth_type,
                tx.eth_payload,
                tx.eth_payload_s,
                L,
                t);
     if (t == -1)
     {
          fprintf(stderr, " mz/create_eth_frame: Can't build Ethernet header: %s\n",
          libnet_geterror(l));
          exit(EXIT_FAILURE);
     }
     if (verbose) (void) print_frame_details();
     libnet_write(L);
     ...

Мой код в настоящее время использует туннельный интерфейс IP-уровня (например, tun0) для доставки пакетов в ядро.

Если я захочу использовать MPLS, мне нужно будет вместо этого начать использовать интерфейс крана?

Или есть другой способ, такой как ioctls на fd tun0?

Или мне нужно использовать libnet_write?

0 ответов

Другие вопросы по тегам