Клиент жалуется, что при ICMP запросе на коробку сбрасывается маркировка, причем с SNMP такой проблемы нет.
Пример SNMP:
1 2 |
Linux# snmpwalk -v2c -c public 172.16.1.1 .1.3.6.1.6.3.10.2.1.3 iso.3.6.1.6.3.10.2.1.3.0 = INTEGER: 201050578 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Linux# tcpdump -vvnpi ens160 host 172.16.1.1 tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes 08:32:08.736045 IP (tos 0x0, ttl 64, id 29544, offset 0, flags [DF], proto UDP (17), length 71) 10.0.0.1.33892 > 172.16.1.1.161: [bad udp cksum 0x581d -> 0xbe99!] { SNMPv2c C="public" { GetNextRequest(29) R=1004947708 .1.3.6.1.6.3.10.2.1.3 } } 08:32:08.737385 IP (tos 0x40, ttl 253, id 10551, offset 0, flags [none], proto UDP (17), length 76) 172.16.1.1.161 > 10.0.0.1.33892: [udp sum ok] { SNMPv2c C="public" { GetResponse(34) R=1004947708 .1.3.6.1.6.3.10.2.1.3.0=201050578 } } 08:32:08.737440 IP (tos 0x0, ttl 64, id 29545, offset 0, flags [DF], proto UDP (17), length 72) 10.0.0.1.33892 > 172.16.1.1.161: [bad udp cksum 0x581e -> 0xb996!] { SNMPv2c C="public" { GetNextRequest(30) R=1004947709 .1.3.6.1.6.3.10.2.1.3.0 } } 08:32:08.738499 IP (tos 0x40, ttl 253, id 10552, offset 0, flags [none], proto UDP (17), length 74) 172.16.1.1.161 > 10.0.0.1.33892: [udp sum ok] { SNMPv2c C="public" { GetResponse(32) R=1004947709 .1.3.6.1.6.3.10.2.1.4.0=1500 } } ^C 4 packets captured 4 packets received by filter 0 packets dropped by kernel |
Коробка действительно ответила с корректным QoS, происходит это благодаря настройки: snmp-server ip dscp 16 .
C ICMP не все так радужно, QoS сбрасывается в BE:
1 2 3 4 5 6 |
Linux# ping 172.16.1.1 -Q 64 -c 1 PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data. 64 bytes from 172.16.1.1: icmp_seq=1 ttl=253 time=0.679 ms --- 172.16.1.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.679/0.679/0.679/0.000 ms |
1 2 3 4 5 6 7 8 9 10 |
Linux# tcpdump -vvnpi ens160 host 172.16.1.1 tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes 08:20:15.889341 IP (tos 0x40, ttl 64, id 15376, offset 0, flags [DF], proto ICMP (1), length 84) 10.0.0.1 > 172.16.1.1: ICMP echo request, id 14248, seq 1, length 64 08:20:15.890011 IP (tos 0x0, ttl 253, id 15376, offset 0, flags [DF], proto ICMP (1), length 84) 172.16.1.1 > 10.0.0.1: ICMP echo reply, id 14248, seq 1, length 64 ^C 2 packets captured 2 packets received by filter 0 packets dropped by kernel |
По умолчанию OS на ICMP отвечает с тем же QoS с каким к нему пришел IP пакет, пример для linux, тоже самое для коробок Cisco/Juniper/etc, Linux:
Отправил «серый» пакет, ответ также в BE:
1 2 3 4 5 6 |
Linux# ping -c 1 127.1 PING 127.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.097 ms --- 127.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.097/0.097/0.097/0.000 ms |
1 2 3 4 5 6 7 8 9 10 |
Linux# tcpdump -vvvnpi lo icmp tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes 15:10:14.422718 IP (tos 0x0, ttl 64, id 39366, offset 0, flags [DF], proto ICMP (1), length 84) 127.0.0.1 > 127.0.0.1: ICMP echo request, id 10471, seq 1, length 64 15:10:14.422756 IP (tos 0x0, ttl 64, id 39367, offset 0, flags [none], proto ICMP (1), length 84) 127.0.0.1 > 127.0.0.1: ICMP echo reply, id 10471, seq 1, length 64 ^C 2 packets captured 4 packets received by filter 0 packets dropped by kernel |
Отправляем «цветной»:
1 2 3 4 5 6 |
Linux# ping -Q 64 -c 1 127.1 PING 127.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.091 ms --- 127.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.091/0.091/0.091/0.000 ms |
1 2 3 4 5 6 7 8 9 10 |
Linux# tcpdump -vvvnpi lo icmp tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes 15:08:15.002575 IP (tos 0x40, ttl 64, id 23967, offset 0, flags [DF], proto ICMP (1), length 84) 127.0.0.1 > 127.0.0.1: ICMP echo request, id 10396, seq 1, length 64 15:08:15.002611 IP (tos 0x40, ttl 64, id 23968, offset 0, flags [none], proto ICMP (1), length 84) 127.0.0.1 > 127.0.0.1: ICMP echo reply, id 10396, seq 1, length 64 ^C 2 packets captured 4 packets received by filter 0 packets dropped by kernel |
Пример для Juniper:
1 2 3 4 5 6 |
user1@PE1> show configuration interfaces lo0 unit 0 { family inet { address 127.0.0.1/32; } } |
1 2 3 4 5 6 |
user1@PE1> ping 127.0.0.1 tos 0x40 count 1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.574 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.574/0.574/0.574/0.000 ms |
1 2 3 4 5 6 7 8 |
root@R2> monitor traffic interface lo0.0 no-resolve detail Address resolution is OFF. Listening on lo0.0, capture size 1514 bytes 11:45:01.340220 In IP (tos 0x40, ttl 64, id 449, offset 0, flags [none], proto: ICMP (1), length: 84) 127.0.0.1 > 127.0.0.1: ICMP echo request, id 9989, seq 0, length 64 11:45:01.340350 In IP (tos 0x40, ttl 64, id 450, offset 0, flags [none], proto: ICMP (1), length: 84) 127.0.0.1 > 127.0.0.1: ICMP echo reply, id 9989, seq 0, length 64 ^C 2 packets received by filter 0 packets dropped by kernel |
Адрес управления коробки находится в GRT, и трафик на нее приходит уже без MPLS меток, а с EXP трафиком проблем нет, значить кто-то на входе/выходе делает перемаркировку.На вышестоящей коробке в сторону нашей PE проблем нет, посмотрим на PE MPLS-ые интерфейсы и их настройки QoS на входе:
1 2 3 4 |
PE1# show mpls interfaces Interface IP Tunnel BGP Static Operational GigabitEthernet1/25 Yes (ldp) No No No Yes GigabitEthernet1/26 Yes (ldp) No No No Yes |
По умолчанию сбрасывается в BE:
1 2 3 4 5 6 7 8 |
PE1# show mls qos ip GigabitEthernet1/25 [In] Default. [Out] Default. QoS Summary [IPv4]: (* - shared aggregates, Mod - switch module) Int Mod Dir Class-map DSCP Agg Trust Fl AgForward-By AgPoliced-By Id Id ----------------------------------------------------------------------------------- Gi1/25 1 In Default 0 0* No 0 74090086010 0 |
Тикает счетчик перемаркировки:
1 2 3 4 5 6 7 8 |
PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538810406 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538810416 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538810424 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538810425 |
Настраиваем trust:
1 2 3 |
PE1(config)# interface range GigabitEthernet1/25, GigabitEthernet1/26 PE1(config-if-range)# mls qos trust dscp PE1# |
Перемаркировка прекратилась:
1 2 3 4 5 6 7 8 9 10 |
PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538813613 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538813613 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538813613 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538813613 PE1# show mls statistics module 1 | i TOS Total ip packets with TOS changed : 1538813613 |
Проверяем:
1 2 3 4 5 6 |
Linux# ping 172.16.1.1 -Q 64 -c 1 PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data. 64 bytes from 172.16.1.1: icmp_seq=1 ttl=253 time=0.724 ms --- 172.16.1.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.724/0.724/0.724/0.000 ms |
1 2 3 4 5 6 7 8 9 10 |
Linux# tcpdump -vvnpi ens160 host 172.16.1.1 tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes 08:37:33.481016 IP (tos 0x40, ttl 64, id 25123, offset 0, flags [DF], proto ICMP (1), length 84) 10.0.0.1 > 172.16.1.1: ICMP echo request, id 14260, seq 1, length 64 08:37:33.481731 IP (tos 0x40, ttl 253, id 25123, offset 0, flags [DF], proto ICMP (1), length 84) 172.16.1.1 > 10.0.0.1: ICMP echo reply, id 14260, seq 1, length 64 ^C 2 packets captured 2 packets received by filter 0 packets dropped by kernel |