Jump to content
Калькуляторы

MPLS в Linux: тестирование MPLS не только в Cisco и Mikrotik))

Короче, поднял я тестовый MPLS по схеме:

modprobe mpls_router
modprobe mpls_gso
modprobe mpls_iptunnel
sysctl -w net.mpls.conf.lo.input=1
sysctl -w net.mpls.platform_labels=1048575
ip link add veth0 type veth peer name veth1
ip link add veth2 type veth peer name veth3
sysctl -w net.mpls.conf.veth0.input=1
sysctl -w net.mpls.conf.veth2.input=1
ifconfig veth0 10.3.3.1/24 up
ifconfig veth2 10.4.4.1/24 up
ip netns add host1
ip netns add host2
ip link set veth1 netns host1
ip link set veth3 netns host2
ip netns exec host1 ifconfig veth1 10.3.3.2/24 up
ip netns exec host2 ifconfig veth3 10.4.4.2/24 up
ip netns exec host1 ip route add 10.10.10.2/32 encap mpls 112 via inet 10.3.3.1
ip netns exec host2 ip route add 10.10.10.1/32 encap mpls 111 via inet 10.4.4.1
ip -f mpls route add 111 via inet 10.3.3.2
ip -f mpls route add 112 via inet 10.4.4.2
ip netns exec host1 bash
ifconfig lo up
ip addr add 10.10.10.1/32 dev lo
ip netns exec host2 bash
ifconfig lo up
ip addr add 10.10.10.2/32 dev lo
ip netns exec host1 bash

Тестируем.

1. Вначале ping'ом:

Host1:
root@ne-vlezay80:~# ping 10.10.10.2 -I 10.10.10.1
PING 10.10.10.2 (10.10.10.2) from 10.10.10.1 : 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=63 time=0.043 ms
64 bytes from 10.10.10.2: icmp_seq=2 ttl=63 time=0.038 ms
64 bytes from 10.10.10.2: icmp_seq=3 ttl=63 time=0.049 ms
64 bytes from 10.10.10.2: icmp_seq=4 ttl=63 time=0.048 ms
64 bytes from 10.10.10.2: icmp_seq=5 ttl=63 time=0.048 ms
64 bytes from 10.10.10.2: icmp_seq=6 ttl=63 time=0.047 ms
64 bytes from 10.10.10.2: icmp_seq=7 ttl=63 time=0.044 ms
64 bytes from 10.10.10.2: icmp_seq=8 ttl=63 time=0.046 ms
^C
--- 10.10.10.2 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7174ms
rtt min/avg/max/mdev = 0.038/0.045/0.049/0.006 ms
Host2:
root@ne-vlezay80:~# ping 10.10.10.1 -I 10.10.10.2
PING 10.10.10.1 (10.10.10.1) from 10.10.10.2 : 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=1 ttl=63 time=0.040 ms
64 bytes from 10.10.10.1: icmp_seq=2 ttl=63 time=0.037 ms
64 bytes from 10.10.10.1: icmp_seq=3 ttl=63 time=0.037 ms
64 bytes from 10.10.10.1: icmp_seq=4 ttl=63 time=0.042 ms
64 bytes from 10.10.10.1: icmp_seq=5 ttl=63 time=0.042 ms
64 bytes from 10.10.10.1: icmp_seq=6 ttl=63 time=0.045 ms
64 bytes from 10.10.10.1: icmp_seq=7 ttl=63 time=0.045 ms
64 bytes from 10.10.10.1: icmp_seq=8 ttl=63 time=0.038 ms
^C
--- 10.10.10.1 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7176ms
rtt min/avg/max/mdev = 0.037/0.040/0.045/0.008 ms

Ну, что? Потестируем iperf'ом:

Host1:
iperf3 -s -B 10.10.10.2 -D
Host2:
root@ne-vlezay80:~# ip netns exec host1 bash
root@ne-vlezay80:~# iperf3 -c 10.10.10.2 -B 10.10.10.1   
Connecting to host 10.10.10.2, port 5201
[  4] local 10.10.10.1 port 57039 connected to 10.10.10.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.00 GBytes  17.2 Gbits/sec    0   1.95 MBytes       
[  4]   1.00-2.00   sec  2.01 GBytes  17.2 Gbits/sec    0   1.95 MBytes       
[  4]   2.00-3.00   sec  2.01 GBytes  17.2 Gbits/sec    0   1.95 MBytes       
[  4]   3.00-4.00   sec  2.01 GBytes  17.3 Gbits/sec    0   1.95 MBytes       
[  4]   4.00-5.00   sec  2.01 GBytes  17.2 Gbits/sec    0   1.95 MBytes       
[  4]   5.00-6.00   sec  2.01 GBytes  17.2 Gbits/sec    0   1.95 MBytes       
[  4]   6.00-7.00   sec  2.01 GBytes  17.3 Gbits/sec    0   1.95 MBytes       
[  4]   7.00-8.00   sec  2.01 GBytes  17.3 Gbits/sec    0   1.95 MBytes       
[  4]   8.00-9.00   sec  2.01 GBytes  17.3 Gbits/sec    0   1.95 MBytes       
[  4]   9.00-10.00  sec  2.01 GBytes  17.3 Gbits/sec    0   1.95 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  20.1 GBytes  17.3 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  20.1 GBytes  17.3 Gbits/sec                  receiver

iperf Done.

root@ne-vlezay80:~# iperf3 -c 10.10.10.2 -B 10.10.10.1 -b -b 1tb
Connecting to host 10.10.10.2, port 5201
[  4] local 10.10.10.1 port 57609 connected to 10.10.10.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   1.00-2.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   2.00-3.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   3.00-4.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   4.00-5.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   5.00-6.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   6.00-7.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   7.00-8.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   8.00-9.00   sec  2.11 GBytes  18.1 Gbits/sec    0   1.95 MBytes       
[  4]   9.00-10.00  sec  2.11 GBytes  18.2 Gbits/sec    0   1.95 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  21.1 GBytes  18.1 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  21.1 GBytes  18.1 Gbits/sec                  receiver

iperf Done.


 

tcpdump:

root@ne-vlezay80:~# tcpdump -i veth2 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth2, link-type EN10MB (Ethernet), capture size 262144 bytes
07:02:36.886598 IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1677, seq 1, length 64
07:02:36.886617 MPLS (label 111, exp 0, [s], ttl 64) IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1677, seq 1, length 64
07:02:37.895065 IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1677, seq 2, length 64
07:02:37.895081 MPLS (label 111, exp 0, [s], ttl 64) IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1677, seq 2, length 64

root@ne-vlezay80:~# tcpdump -i veth0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:03:30.368146 MPLS (label 112, exp 0, [s], ttl 64) IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1679, seq 1, length 64
07:03:30.368172 IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1679, seq 1, length 64
07:03:31.399057 MPLS (label 112, exp 0, [s], ttl 64) IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1679, seq 2, length 64
07:03:31.399080 IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1679, seq 2, length 64
07:03:32.423182 MPLS (label 112, exp 0, [s], ttl 64) IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1679, seq 3, length 64
07:03:32.423210 IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1679, seq 3, length 64
07:03:33.447195 MPLS (label 112, exp 0, [s], ttl 64) IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1679, seq 4, length 64
07:03:33.447214 IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1679, seq 4, length 64
07:03:34.471219 MPLS (label 112, exp 0, [s], ttl 64) IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 1679, seq 5, length 64
07:03:34.471239 IP 10.10.10.2 > 10.10.10.1: ICMP echo reply, id 1679, seq 5, length 64

Как видим, в Linux MPLS работает довольно таки не плохо, но нехватает:

*VPLS

*MPLS в netfilter для фильтрации mpls-пакетов на P уровне. :D

 

А так впринцепе, всё работает.

 

В случае чего для стыка с провайдером хватит.

Вот связанные проекты:

https://frrouting.org/

https://github.com/FRRouting/frr/pull/343

 

Кстати, вот ifconfig:

root@ne-vlezay80:~# ifconfig
lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:2 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:100 (100.0 B)  TX bytes:100 (100.0 B)

veth1     Link encap:Ethernet  HWaddr d2:60:95:e8:a4:d6  
         inet addr:10.3.3.2  Bcast:10.3.3.255  Mask:255.255.255.0
         inet6 addr: fe80::d060:95ff:fee8:a4d6/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:1047404 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2164674 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:22610878516 (21.0 GiB)  TX bytes:104546390092 (97.3 GiB)

 

Самое прикольное то, что некакой фрагментации нет))

Что касается ipv6:

root@ne-vlezay80:~# ifconfig
lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         inet6 addr: 2001:db8::2/128 Scope:Global
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:35 errors:0 dropped:0 overruns:0 frame:0
         TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:5116 (4.9 KiB)  TX bytes:5116 (4.9 KiB)

veth1     Link encap:Ethernet  HWaddr d2:60:95:e8:a4:d6  
         inet addr:10.3.3.2  Bcast:10.3.3.255  Mask:255.255.255.0
         inet6 addr: fd00:2::2/64 Scope:Global
         inet6 addr: fe80::d060:95ff:fee8:a4d6/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:313962692 errors:0 dropped:0 overruns:0 frame:0
         TX packets:621934215 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:65709865620 (61.1 GiB)  TX bytes:2855621015039 (2.5 TiB)

root@ne-vlezay80:~# iperf3 -c 2001:0db8::1 -B 2001:0db8::2
Connecting to host 2001:0db8::1, port 5201
[  4] local 2001:db8::2 port 52989 connected to 2001:db8::1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  1.96 GBytes  16.8 Gbits/sec    0   2.46 MBytes       
[  4]   1.00-2.00   sec  1.97 GBytes  16.9 Gbits/sec    0   2.46 MBytes       
[  4]   2.00-3.00   sec  1.97 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   3.00-4.00   sec  1.98 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   4.00-5.00   sec  1.98 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   5.00-6.00   sec  1.98 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   6.00-7.00   sec  1.98 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   7.00-8.00   sec  1.98 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   8.00-9.00   sec  1.98 GBytes  17.0 Gbits/sec    0   2.46 MBytes       
[  4]   9.00-10.00  sec  1.97 GBytes  16.9 Gbits/sec    0   2.46 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  19.7 GBytes  17.0 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  19.7 GBytes  17.0 Gbits/sec                  receiver

iperf Done.

root@ne-vlezay80:~# tcpdump -i veth0 -n -p mpls
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:46:38.343051 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 10, length 64
11:46:39.367051 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 11, length 64
11:46:40.391088 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 12, length 64
11:46:41.415051 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 13, length 64
11:46:42.439056 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 14, length 64
11:46:43.463054 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 15, length 64
11:46:44.487062 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 16, length 64
11:46:45.511013 MPLS (label 112, exp 0, [s], ttl 64) IP6 2001:db8::2 > 2001:db8::1: ICMP6, echo request, seq 17, length 64
^C
8 packets captured
8 packets received by filter
0 packets dropped by kernel

Edited by ne-vlezay80

Share this post


Link to post
Share on other sites

Автору тонны нефти! Но одна просьба - можно немного комментариев к примеру, для тех кто не нок)

Share this post


Link to post
Share on other sites

Автору тонны нефти! Но одна просьба - можно немного комментариев к примеру, для тех кто не нок)

Тут и так всё понятно.

Share this post


Link to post
Share on other sites

Собственно, ничего нового автор нам не принёс, всё это есть в анонсах ядер. Да вообщем-то статические метки не сильно и интересны. За исключением каких-то особо изощрённых кейсов, никто статически метки в наше время не назначает, а делают это через специальные протоколы (transport ldp/rsvp ,service ldp/bgp)

 

вот когда взлетит l2vpn/l3vpn с сигнализацией, это будет действительно достойно внимания.

 

ТС, не пробовали скрестить l3-vpn-ы с linux frrouting с виртальными cisco, mikrotik, etc?

 

Голый P-роутер с форвардингом на ядре линукса, мне кажется, не особо интересный кейс

Share this post


Link to post
Share on other sites

>*MPLS в netfilter для фильтрации mpls-пакетов на P уровне. :D

 

Ну вообще это считается ошибкой дизайна и обычно подобных фич нет в явном виде(mpls label acl) в hw-mpls-свитчах/роутерах. Хотя конечно если сильно захотеть, то в некоторых железках можно явно сказать, что если байт X=Y, то дропать пакет. В принципе, так можно сделать и на linux с использованием iptables bpf, но опять же повторюсь, если вам это надо, то это ошибка дизайна сети

Share this post


Link to post
Share on other sites

Собственно, ничего нового автор нам не принёс, всё это есть в анонсах ядер. Да вообщем-то статические метки не сильно и интересны. За исключением каких-то особо изощрённых кейсов, никто статически метки в наше время не назначает, а делают это через специальные протоколы (transport ldp/rsvp ,service ldp/bgp)

 

вот когда взлетит l2vpn/l3vpn с сигнализацией, это будет действительно достойно внимания.

 

ТС, не пробовали скрестить l3-vpn-ы с linux frrouting с виртальными cisco, mikrotik, etc?

 

Голый P-роутер с форвардингом на ядре линукса, мне кажется, не особо интересный кейс

 

вот когда взлетит l2vpn/l3vpn с сигнализацией, это будет действительно достойно внимания.

Для обычной маршрутизации это не надо. Если тебе нужен l2vpn/l3vpn, то можно на конце сети использовать OpenBSD. Как P - linux впринцепе пока сойдёт. Кстати, если по каким-то причинам придётся в добровольно-принудительном порядке использовать MPLS - этого хватит. А это уже VPLS. Linux, пока умеет только MPLS.

ТС, не пробовали скрестить l3-vpn-ы с linux frrouting с виртальными cisco, mikrotik, etc?

cisco есть только от провайдера, он с ней соответственно игратся не даст.

mikrotik - нету и некогда не будет.

Голый P-роутер с форвардингом на ядре линукса, мне кажется, не особо интересный кейс

Какая тебе разница, на чём этот P-роутер! Самое главное, чтобы он со своими задачами справлялся.

 

А, вот кстати и сигналка для MPLS:

https://github.com/rwestphal/quagga-ldpd/wiki/ldpd-basic-test-setup

Share this post


Link to post
Share on other sites

Для обычной маршрутизации это не надо

для обычной маршрутизации мплс не нужен

Share this post


Link to post
Share on other sites

ne-vlezay80

зачем вам P-роутер на линуксе? Какие задачи он должен решать? Сейчас же китайцы научились делать дешевые mpls/l3-свитчи.

Share this post


Link to post
Share on other sites

ne-vlezay80

зачем вам P-роутер на линуксе? Какие задачи он должен решать? Сейчас же китайцы научились делать дешевые mpls/l3-свитчи.

зачем вам P-роутер на линуксе?

Для тестов. Сайчас правда MPLS не использую

Сейчас же китайцы научились делать дешевые mpls/l3-свитчи.

Там проблема в том, что всё то что касается MPLS надо лицензировать. Интересно было бы узнать, почему VPLS есть только на коммерчиском ПО, а также в OpenBSD?

Какие задачи он должен решать?

1. Маршрутизировать MPLS-пакеты

2. Выполнять DPI

 

Да и вообще, если linux умеет навешивать метку на пакеты, то но уже не P - а PE. Поддержка протокола LDP в Linux тоже есть. Это, например frrrouting или quagga-ldpd.

Если где нужен VPLS, там я планирую поставить OpenBSD.

Share this post


Link to post
Share on other sites

PE это как раз vpls / l2vpn / l3 vpn и прочие сервисы, а pop / push / swap это P )

Share this post


Link to post
Share on other sites

PE это как раз vpls / l2vpn / l3 vpn и прочие сервисы, а pop / push / swap это P )

А как тогда называется роутер, который делает так:

ip route add 91.222.1.0/24 encap mpls 111 via inet 91.222.0.250

Share this post


Link to post
Share on other sites

ne-vlezay80

ну это вырожденный случай PE, GRT-only, смысла от такого PE-роутера не видно от слова совсем

 

Интересно было бы узнать, почему VPLS есть только на коммерчиском ПО, а также в OpenBSD?

 

OVS умеет пушить до 3ёх меток. С точки зрения датаплейна, на ovs есть vpls

 

Open vSwitch version 2.4 can match, push, or pop up to 3 MPLS labels and look past the MPLS label into the encapsulated packet.

Share this post


Link to post
Share on other sites

ne-vlezay80

ну это вырожденный случай PE, GRT-only, смысла от такого PE-роутера не видно от слова совсем

 

Интересно было бы узнать, почему VPLS есть только на коммерчиском ПО, а также в OpenBSD?

 

OVS умеет пушить до 3ёх меток. С точки зрения датаплейна, на ovs есть vpls

 

Open vSwitch version 2.4 can match, push, or pop up to 3 MPLS labels and look past the MPLS label into the encapsulated packet.

 

OVS умеет пушить до 3ёх меток.

А почему не умеет больше?

А в OpenBSD с этим как?

 

PE-роутера не видно от слова совсем

А какой должен быть смысл от PE? Для некоторых случиев этого достаточно, что касательно MPLS есть в Linux?

Share this post


Link to post
Share on other sites

дак в итоге то работает как P и что там с PE ?

Share this post


Link to post
Share on other sites

дак в итоге то работает как P и что там с PE ?

Маршрут вида:

ip route add 91.220.110.0/24 encap mpls 111 via inet 172.18.177.11

Share this post


Link to post
Share on other sites

Почему-то если ты на linux поднял mpls, то его не видно в трайсе:

traceroute to 10.194.4.1 (10.194.4.1), 30 hops max, 60 byte packets
1  10.247.1.1 (10.247.1.1)  0.113 ms  0.108 ms  0.120 ms
2  10.247.0.250 (10.247.0.250)  0.303 ms  0.305 ms  0.308 ms
3  * * *
4  10.194.4.1 (10.194.4.1)  0.368 ms  0.372 ms  0.375 ms

Share this post


Link to post
Share on other sites

А его должно быть видно?

Вот трайс до гугла. Там вроде бы всё видно.

ne-vlezay80@ne-vlezay80:~$ traceroute -e 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1  10.247.1.1 (10.247.1.1)  0.106 ms  0.103 ms  0.114 ms
2  100.64.0.1 (100.64.0.1)  0.563 ms  0.694 ms  0.832 ms
3  192.168.192.193 (192.168.192.193)  5.063 ms  5.064 ms  5.059 ms
4  * * *
5  google2.inet2.net (85.112.122.160)  39.354 ms  39.491 ms  39.493 ms
6  216.239.42.53 (216.239.42.53) <MPLS:L=494993,E=4,S=1,T=1>  38.684 ms 216.239.42.53 (216.239.42.53) <MPLS:L=492321,E=4,S=1,T=1>  31.405 ms 216.239.42.53 (216.239.42.53) <MPLS:L=492881,E=4,S=1,T=1>  31.328 ms
7  209.85.249.79 (209.85.249.79) <MPLS:L=546540,E=4,S=1,T=1>  39.431 ms 209.85.249.79 (209.85.249.79) <MPLS:L=547084,E=4,S=1,T=1>  39.420 ms  39.421 ms
8  216.239.40.246 (216.239.40.246)  31.307 ms 216.239.47.139 (216.239.47.139)  48.716 ms  48.802 ms

Share this post


Link to post
Share on other sites
Вот трайс до гугла. Там вроде бы всё видно.

 

Видимо, там нет нужного для этого кода. Я точно не помню, но вроде хопы в MPLS не считаются. Тогда для того, что бы отвечал промежуточный роутер в трассе, надо какую-то внешнюю прибамбасу добавлять в роутер. Иначе никак не узнать, что "пора ехать назад".

Share this post


Link to post
Share on other sites
Вот трайс до гугла. Там вроде бы всё видно.

 

Видимо, там нет нужного для этого кода. Я точно не помню, но вроде хопы в MPLS не считаются. Тогда для того, что бы отвечал промежуточный роутер в трассе, надо какую-то внешнюю прибамбасу добавлять в роутер. Иначе никак не узнать, что "пора ехать назад".

Я добовлял

Share this post


Link to post
Share on other sites

Видимо, речь идет об этом расширении:

 

https://tools.ietf.org/html/draft-ietf-mpls-icmp-01

ICMP Extensions for MultiProtocol Label Switching

 

Если расширение поддерживается, то, логично предположить, что должно отвечать. Я бы в коде полазил.

Share this post


Link to post
Share on other sites

Видимо, речь идет об этом расширении:

 

https://tools.ietf.org/html/draft-ietf-mpls-icmp-01

ICMP Extensions for MultiProtocol Label Switching

 

Если расширение поддерживается, то, логично предположить, что должно отвечать. Я бы в коде полазил.

Кстати, у меня есть какая-то заброшанная сборка, на ядре 4.8.6, где данные тесты mpls проваливаются с треском. iperf выдаёт не больше 11Mbps, хотя должен 17-16Gbps. Как я понял, в той сборке был баг.

Share this post


Link to post
Share on other sites

Видимо, речь идет об этом расширении:

 

https://tools.ietf.org/html/draft-ietf-mpls-icmp-01

ICMP Extensions for MultiProtocol Label Switching

 

Если расширение поддерживается, то, логично предположить, что должно отвечать. Я бы в коде полазил.

Кстати, у меня есть какая-то заброшанная сборка, на ядре 4.8.6, где данные тесты mpls проваливаются с треском. iperf выдаёт не больше 11Mbps, хотя должен 17-16Gbps. Как я понял, в той сборке был баг.

 

Каким образом вы связали трейс в mpls с тем, что на каком-то ядре у вас была медленная скорость?

 

Вам же сказали причину - для того чтобы трейс отображался нужна реализация этого в коде, которой, вероятно, нет в ядре linux

Share this post


Link to post
Share on other sites

Видимо, речь идет об этом расширении:

 

https://tools.ietf.org/html/draft-ietf-mpls-icmp-01

ICMP Extensions for MultiProtocol Label Switching

 

Если расширение поддерживается, то, логично предположить, что должно отвечать. Я бы в коде полазил.

Кстати, у меня есть какая-то заброшанная сборка, на ядре 4.8.6, где данные тесты mpls проваливаются с треском. iperf выдаёт не больше 11Mbps, хотя должен 17-16Gbps. Как я понял, в той сборке был баг.

 

Каким образом вы связали трейс в mpls с тем, что на каком-то ядре у вас была медленная скорость?

 

Вам же сказали причину - для того чтобы трейс отображался нужна реализация этого в коде, которой, вероятно, нет в ядре linux

А это что?

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=a59166e470868d92f0813977817e99e699398af5

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this