Перейти к содержимому
Калькуляторы

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

Изменено пользователем ne-vlezay80

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Собственно, ничего нового автор нам не принёс, всё это есть в анонсах ядер. Да вообщем-то статические метки не сильно и интересны. За исключением каких-то особо изощрённых кейсов, никто статически метки в наше время не назначает, а делают это через специальные протоколы (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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ne-vlezay80

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему-то если ты на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Я добовлял

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

ICMP Extensions for MultiProtocol Label Switching

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

ICMP Extensions for MultiProtocol Label Switching

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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://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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.