/ 12.1.-mpls-evpn / 1.-evpn-basic.md
1.-evpn-basic.md
 1  # Базовая часть технологии EVPN
 2  
 3  Как и VPLS, EVPN использует для сигнализации исключительно протокол BGP, но использует уже новые NLRI: [AFI](http://lookmeup.linkmeup.ru/#term569) 25 [SAFI](http://lookmeup.linkmeup.ru/#term568) 70 \(некоторые версии Wireshark еще не знают данное AFI/SAFI и при снятии дампа пишут unknown SAFI for AFI 25\). Использование нового семейства адресов обусловлено тем, что EVPN использует для изучения MAC-адресов не только data-plane, как в стандартном VPLS или коммутаторе, но и control-plane:  
 4  ![](https://habrastorage.org/files/871/bbb/cdc/871bbbcdc18d4d039cd7603cb120790d.png)
 5  
 6  > Маленькое лирическое отступление: возможно иллюстрации в стиле Brocade кому-то не понравятся, но использование данных иллюстраций обусловлено тем, что если использовать обозначения маршрутизаторов и коммутаторов в стиле Juniper или Cisco, то мы на некоторых рисунках получим не читаемое месиво, а нам этого не хочется. Ну и лично мне такие рисунки как то больше нравятся \(но это, как говорится, на вкус и цвет...\).
 7  
 8  Ниже представлен список всех обозначений на схемах:  
 9  ![](https://habrastorage.org/files/3e8/74f/d02/3e874fd025894eb1b47650388d7da413.png)  
10  Давайте рассмотрим, как же происходит изучение MAC-адресов в EVPN. Использовать будем вот такую банальную сеть:  
11  ![](https://habrastorage.org/files/c06/8d6/ab9/c068d6ab994c4386906294ce96341872.png)  
12  Представим, что CE1 хочет отправить ICMP пакет на CE2:
13  
14  1. Так как у CE1 нет MAC-адреса CE2, то CE1 делает широковещательный ARP запрос на резолв адреса CE2.
15  2. PE1, получив от CE1 широковещательный пакет, анализирует его заголовок и понимает, что этот пакет надо переслать всем остальным PE маршрутизаторам в данном широковещательном домене. Помимо этого, PE1 записывает source MAC в MAC-таблицу соответствующего bridge-домена.
16  
17     Если бы у нас был VPLS, то больше никаких операций PE1 не стал бы производить. Но у нас EVPN, поэтому PE1 генерирует BGP Update, в котором указывает MAC-адрес CE1 и метку VPN, и отправляет его на все остальные PE маршрутизаторы \(естественно, через роутрефлектор\).
18  
19  3. PE2 и PE3 получают данный широковещательный пакет и отправляют его всем подключенным CE-маршрутизаторам. Как и в VPLS, в EVPN есть функция split horizon — пакет, полученный от PE маршрутизатора, не будет отправлен на другие PE маршрутизаторы.
20  
21     В VPLS PE2 и PE3, при получении пакета от PE1, должны были бы записать MAC-адрес CE1 в MAC-таблицы и ассоциировать его с PW в сторону PE1. Но в EVPN изучать MAC-адреса по source адресам пакетов, пришедшим от других PE маршрутизаторов, нет необходимости, ведь PE1 уже сделал анонс MAC+label, а значит PE1 и PE2 запись в таблицу MAC-адресов сделают по данному анонсу \(да, как в L3VPN с IPv4 префиксами\).
22  
23  4. PE2 получает от CE2 ответ на данный ARP запрос. Так как MAC-адрес CE1 и метка до него уже известны из полученного от PE1 BGP анонса, то пакет отправляется юникастом прямиком на PE1. Помимо этого PE2 записывают MAC-адрес CE2 в MAC-таблицу и генерирует BGP Update, в котором указывает MAC-адрес CE2 и метку, и отправляет его на остальные PE маршрутизаторы.
24  5. PE1 получает уже юникастовый пакет и по MAC-таблице отправляет его в соответствующий интерфейс.
25  
26  Как вы уже поняли, EVPN использует MAC-адреса, как роутинговые адреса. Это можно сравнить с распределением маршрутов внутри L3VPN.
27  
28  Думаю все прочитавшие статью о L2VPN помнят, что в VPLS распределение меток с помощью BGP производится блоками, так как получателю пакета \(в смысле PE маршрутизатору\) необходимо знать, с какого PE-маршрутизатора прилетел данный пакет, и ассоциировать MAC-адрес с PW до этого PE маршрутизатора. В EVPN такой необходимости уже нет. Это происходит из за того, что EVPN обрабатывает MAC-адреса, так же, как L3VPN IPv4 префиксы — PE маршрутизатор, изучив новый MAC-адрес через data plane от подключенного CE маршрутизатора, сразу анонсирует данный MAC по BGP. В BGP анонсе указывается MPLS метка и protocol next-hop \(как правило, это лупбек PE маршрутизатора\). В итоге все остальные PE маршрутизаторы знают куда отправлять пакет и с какой меткой.
29  
30  > Интересный факт: в VPLS \(любом его виде\), в описанном выше сценарии, PE3 узнала бы только MAC-адрес CE1, так как от CE2 к CE1 пакет передается уже юникастом и не попадет на PE3. А при использовании EVPN PE3 изучает оба MAC-адреса: и CE1 и CE2, первый узнает из анонса от PE1, второй из анонса от PE2.
31  
32  Надеюсь, принцип работы технологии понятен, и теперь мы можем перейти от теории к практике и посмотреть на работу EVPN на примере.
33