# 14. Packet Life

{% hint style="info" %}
A forwarding entity always forwards packets in per-flow order to\
zero, one or more of the forwarding entity’s own transmit interfaces\
and never forwards a packet to the packet’s own receive interface.\
Brian Petersen. Hardware Designed Network
{% endhint %}

Одно из удивительнейших достижений современности — это то, как, сидя в Норильске, человек может чатиться со своим другом в Таиланде, параллельно покупать билет на вечерний самолёт к нему, расплачиваясь банковской картой, в то время, как где-то в Штатах на виртуалочке его бот совершает сделки на бирже со скоростью, с которой его сын переключает вкладки, когда отец входит в комнату.\
А через 10 минут он закажет такси через приложение на телефоне, и ему не придётся даже брать с собой в дорогу наличку.\
В аэропорту он купит кофе, расплатившись часами, сделает видеозвонок дочери в Берлин, а потом запустит кинцо онлайн, чтобы скоротать час до посадки.\
За это время тысячи MPLS-меток будут навешаны и сняты, миллионы обращений к различным таблицам произойдут, базовые станции сотовых сетей передадут гигабайты данных, миллиарды пакетов больших и малых в виде электронов и фотонов со скоростью света понесутся в ЦОДы по всему миру.

Это ли не электрическая магия?

В своём вояже к QoS, теме обещанной многократно, мы сделаем ещё один съезд. На этот раз обратимся к жизни пакета в оборудовании связи.\
Вскроем этот синий ящик и распотрошим его.

![](https://3903873742-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LIgRTPaaN7wUujKIWEz%2F-LKBX3G4rLabhFHw-tW6%2F-LKBXccyTVr6yFGXbB5c%2Fimage.png?alt=media\&token=74bce3a0-ca4a-48f3-9099-93c8b39a4d65)

Забегая вперёд, немного поговорим о плоскостях и введём некоторые определения.

Итак, есть две плоскости весьма чёткое деление архитектуры сетевого устройства на две части: Control и Data Plane. Это элегантное решение, которое годы назад позволило абстрагировать путь трафика от физической топологии, зародив пакетную коммутацию, и которое является фундаментом всей индустрии сегодня.\
**Data Plane** — это пересылка трафика со входных интерфейсов в выходные — чуть ближе к точке назначения. Data Plane руководствуется таблицами маршрутизации/коммутации/меток (далее будем называть их **таблицами пересылок**). Здесь мет места задержкам — всё происходит быстро.\
**Control Plane** — это уровень протоколов, контролирующих состояние сети и заполняющих таблицы пересылок (BGP, OSPF, LDP, STP, BFD итд.). Тут можно помедленнее — главное — построить правильные таблицы.

Для чего такое разделение оказалось нужным, читайте в [соответствующей главе](http://linkmeup.ru/blog/312.html#PLANES).\
Поскольку все предыдущие [14 частей СДСМ](http://linkmeup.ru/sdsm) были так или иначе про плоскость управления, в этот раз мы будем говорить о плоскости пересылки.

И в первую очередь введём понятие транзитных и локальных пакетов.\
**Транзитные** — это пакеты, обрабатывающиеся исключительно на Data Plane и не требующие передачи на плоскость управления.\
Они пролетают через узел быстро и прозрачно.\
Преимущественно это пользовательские (клиентские) данные, адрес источника и назначения которых за пределами данного устройства (и, скорее всего, сети провайдера вообще).\
Среди транзитного трафика могут быть и протокольные — внутренние для сети провайдера, но не предназначенные данному узлу.\
Например, BGP или Targeted LDP.

**Локальные** делятся на три разных вида:

* Предназначенные приложению на данном устройстве.

  То есть либо адрес назначения принадлежит ему (настроен на нём).

  Либо адрес назначения броадкастовый (ARP) или мультикастовый (OSPF Hello), который устройство должно прослушивать.

> Здесь важно понимать, что речь об адресе самого внутреннего заголовка пересылки: например, для BGP или OSPF — это IP, для ISIS или STP — MAC.\
> При этом пакет, [DIP](http://lookmeup.linkmeup.ru/#term53) которого внешний, а [DMAC](http://lookmeup.linkmeup.ru/#term606) — локальный, остаётся транзитным, поскольку пакет нужно доставить на выходной интерфейс вовне, а не на Control Plane.

* Сгенерированные данным устройством. То есть созданные на ЦПУ, на Control Plane, и отправленные на Data Plane.
* Транзитные пакеты, требующие обработки на плоскости управления. Примерами могут служить пакеты, у которых истёк TTL — нужно генерировать ICMP TTL Expired in Transit. Или пакеты с установленными IP Option: Router Alert или Record Route.

Мы в этой статье поговорим обо всех. Но преимущественно речь будет о транзитных — ведь именно на них провайдер зарабатывает деньги.
