# Multi-Field

Наиболее часто встречающийся тип классификации на входе в DS-домен. Не доверяем имеющейся маркировке, а на основе заголовков пакета присваиваем класс.

Зачастую это способ вообще «включить» QoS, в случае, когда отправители не проставляют маркировку.\
Достаточно гибкий инструмент, но в то же время громоздкий — нужно создавать непростые правила для каждого класса. Поэтому внутри DS-домена актуальнее BA.

## **Практика по MF классификации**

Схема та же:

![](/files/-LMaZLtcqGQIAag8F7rM)

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

Это прекрасно внутри DS-домена, но неприемлемо в точке входа.\
А давайте теперь не будем слепо доверять? На **Linkmeup\_R2** ICMP будем метить как EF (исключительно для примера), TCP как AF12, а всё остальное CS0.\
Это будет MF (Multi-Field) классификация.

1. Процедура та же, но теперь матчить будем по ACL, которые выцепляют нужные категории трафика, поэтому сначала создаём их.\
   **На Linkmeup\_R2:**

   ```
   ip access-list extended TRISOLARANS_ICMP_ACL
   permit icmp any any
   ip access-list extended TRISOLARANS_TCP_ACL
   permit tcp any any
   ip access-list extended TRISOLARANS_OTHER_ACL
   permit ip any any
   ```
2. Далее определяем классификаторы:

   ```
   class-map match-all TRISOLARANS_TCP_CM
   match access-group name TRISOLARANS_TCP_ACL
   class-map match-all TRISOLARANS_OTHER_CM
   match access-group name TRISOLARANS_OTHER_ACL
   class-map match-all TRISOLARANS_ICMP_CM
   match access-group name TRISOLARANS_ICMP_ACL
   ```
3. А теперь определяем правила перемаркировки в политике:

   ```
   policy-map TRISOLARANS_ADMISSION_CONTROL
   class TRISOLARANS_ICMP_CM
   set ip dscp ef
   class TRISOLARANS_TCP_CM
   set ip dscp af11
   class TRISOLARANS_OTHER_CM
   set ip dscp default
   ```
4. И вешаем политику на интерфейс. На input, соответственно, потому что решение нужно принять на входе в сеть.

   ```
   interface Ethernet0/1
   service-policy input TRISOLARANS_ADMISSION_CONTROL
   ```

ICMP-тест с конечного хоста Trisolaran1. Никак сознательно не указываем класс — по умолчанию 0.

**Политику с Linkmeup\_R1 я уже убрал, поэтому трафик приходит с маркировкой CS0, а не CS7.**

![](/files/-LMaZLtibdn7PG_-n-WD)

Вот два дампа рядом, с Linkmeup\_R1 и с Linkmeup\_R2:

**Linkmeup\_R1. E0/0.**

![](/files/-LMaZLtkNXl9qKfbgur6)

[*pcapng*](https://yadi.sk/d/dT8QCu7n3YkjZ4)

**Linkmeup\_R2. E0/0.**

![](/files/-LMaZLtm4TWTJ8HrdWUk)

[*pcapng*](https://yadi.sk/d/3OOzH2Ww3YkjZ9)

Видно, что после классификаторов и перемаркировки на Linkmeup\_R2 на ICMP-пакетах не только DSCP поменялся на EF, но и MPLS Traffic Class стал равным 5.\
Аналогичный тест с telnet 172.16.2.2. 80 — так проверим TCP:

![](/files/-LMaZLto2IhjIk39fmxu)

**Linkmeup\_R1. E0/0.**

![](/files/-LMaZLtqXWb_m5lcrysl)

[*pcapng*](https://yadi.sk/d/M21gTk2f3Ykkaa)

**Linkmeup\_R2. E0/0.**

![](/files/-LMaZLts3YUdg1eq5-Qv)

[*pcapng*](https://yadi.sk/d/GdyZtBI-3YkkZa)

ЧИТО — Что И Требовалось Ожидать. TCP передаётся как AF11.\
Следующим тестом проверим UDP, который должен попасть в CS0 согласно нашим классификаторам. Для этого воспользуемся iperf (привезти его в Linux Tiny Core изи через Apps). На удалённой стороне **iperf3 -s** — запускаем сервер, на локальной **iperf3 -c -u -t1** — клиент (**-c**), протокол UDP (**-u**), тест в течение 1 секунды (**-t1**).

![](/files/-LMaZLtuaXQfQRuLVi9r)

**Linkmeup\_R1. E0/0.**

![](/files/-LMaZLtwyK6By6hVZ7go)

[*pcapng*](https://yadi.sk/d/FG9eNhV93YkoD7)

**Linkmeup\_R2. E0/0**

![](/files/-LMaZLtyWxWYtKd6pIMu)

[*pcapng*](https://yadi.sk/d/t3hRvRMk3YkoDR)

С этого момента всё, что приходит в этот интерфейс, будет классифицировано согласно настроенным правилам.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linkmeup.gitbook.io/sdsm/15.-qos/3.-klassifikaciya-i-markirovka/2-multi-field.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
