Linux облегченные туннели

Linux теперь поддерживает облегченные туннели https://lwn.net/Articles/650778/ что означает туннель, настроенный на маршрутах (поэтому нет необходимости настраивать один интерфейс для туннеля).

Но, к сожалению, мне не удалось найти много документации по ним. В серии патчей, связанной выше, синтаксисip route add 40.1.1.1/32 encap vxlan id 10 dst 50.1.1.2 dev vxlan0,

Но на моем нынешнем iproute-5.2.0, здесь нет encap vxlan, только encap ip id ... (с mpls, bpf, seg6...). Похоже, что тип encap определяется автоматически в зависимости от устройства. Так что вместо того, чтобы делать

   $ ip link add dev vxlan1 type vxlan id 30001 remote 20.1.1.2 dstport 4789
   $ ip link set dev vxlan1 up
   $ ip addr add 20.1.1.1/24 dev vxlan1
   $ ip route add 10.1.1.1 dev vxlan1

мы можем сделать вместо

   $ ip link add vxlan1 type vxlan dstport 4789 external
   $ ip link set dev vxlan1 up
   $ ip addr add 20.1.1.1/24 dev vxlan1
   $ ip route add 10.1.1.1 encap ip id 30001 dst 20.1.1.2 dev vxlan1

Это дает следующий маршрут:

10.1.1.1  encap ip id 30001 src 0.0.0.0 dst 20.1.1.2 ttl 0 tos 0 dev vxlan1 scope link 

(Я не уверен, что src 0.0.0.0 значит в этом случае.)

Таким образом, преимущество в том, что мы можем настроить один интерфейс vxlan и настроить разные маршруты с разными идентификаторами и точками назначения vxlan (но, к сожалению, нет способа изменить dstport по маршруту).

Но я не совсем понимаю, как это должно работать для туннелей ipip и gre / gretap. Единственная документация, которую мне удалось найти, находится на китайском языке https://linux.cn/article-10672-1.html где они используют эти команды для gre-tap:

    $ ip l add dev tun type gretap external
    $ ifconfig tun 1.1.1.7/24 up
    $ ip r r 2.2.2.11 via 1.1.1.11 dev tun encap ip id 1000 dst 172.168.0.1 key

Таким образом, я могу догадаться, что "удаленный ADDR" - это 172.168.0.1, но каким будет "локальный ADDR" облегченного gre-туннеля в этом случае? Что это ip id значит для gre или ipip туннель?

У gre может быть ключ, а патчи для добавления key ключевое слово для ip route encap здесь https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=0fb4d21956f4a9af225594a46857ccf29bd747bc но это только устанавливает флаг, здесь нет аргументов key Ключевое слово здесь.

Также я протестировал и могу добавить маршрут 'encap ip' к стандартному интерфейсу Ethernet. Что делает в этом случае encap, как он угадывает, какой тип инкапсуляции использовать?

2 ответа

(Я не уверен, что означает в этом случае src 0.0.0.0.)

В сети обычно эта нотация служит неопределенным / неограниченным параметром.

Используется при привязке слушающих сокетов по всему хосту без особых ограничений сетевого интерфейса.

Это также используется для default route численное представление.

Итак, возвращаясь к этому самому случаю, я на 99% уверен, что это будет означать использование таблицы маршрутов узла для поиска подходящего адреса источника для локальной стороны инкапсуляции туннеля, поскольку в противном случае это явно не указано.

Таким образом, я могу догадаться, что "удаленный ADDR" - это 172.168.0.1, но каким будет "локальный ADDR" облегченного gre-туннеля в этом случае?

Должно быть очень же 0.0.0.0 с тем же значением, как описано выше.

Что ip id означает для gre или ipip tunnel?

Просто различимый идентификатор туннеля, который будет заполнен в информации о маршруте под LWTUNNEL_IP_ID и позже используется для поиска туннеля.

в серии патчей, связанной выше, синтаксис ip route add 40.1.1.1/32 encap vxlan id 10 dst 50.1.1.2 dev vxlan0.

...

Но на моем текущем iproute-5.2.0 нет никакого encap vxlan

Серия патчей датирована Fri, 10 Jul 2015 16:19:02 +0200между тем 5.2.0 совершить

tag v5.2.0
Tagger: Stephen Hemminger <stephen@networkplumber.org>
Date:   Mon Jul 8 11:11:36 2019 -0700

ясно говорит нам, что это 2019. - 4 года прошло. Я думаю, что это объясняет противоречие, которое вы видите.

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