VPLS: различия между версиями

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 20 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{#description2: VPLS Forwarding. VPLS Signaling. Выделение меток в VPLS. Vlan в VPLS. Multihoming VPLS. Конфигурация VPLS. Траблшутинг VPLS. Информация для подготовки к экзаменам Juniper.}}
В L2VPN используются только каналы точка-точка, и нет возможности обеспечить связность точка-многоточка. Эту проблему решает - VPLS.
В L2VPN используются только каналы точка-точка, и нет возможности обеспечить связность точка-многоточка. Эту проблему решает - VPLS.


Строка 30: Строка 31:


==BGP==
==BGP==
BGP выполняет функцию signaling и auto-discovery. PE ищет какие PE вступили в тот же VPLS и отправляет им NLRI.
BGP выполняет функцию signaling и auto-discovery. PE ищет какие PE законнектились в тот же VPLS и отправляет им NLRI.


Передается NLRI, аналогичный BGP L2VPN:
Передается NLRI, аналогичный BGP L2VPN:
Строка 40: Строка 41:
То есть для работы VPLS в настройках BGP включаем тот же самый l2vpn signaling.
То есть для работы VPLS в настройках BGP включаем тот же самый l2vpn signaling.


Licruit - метки (на выход, вход). В отличие от L2VPN каждому локальному интерфейсу назначать метку нет смысла, ведь внутри VPLS уже есть соответствие ''mac - interface''. Поэтому в VPLS метка должна была бы назначиться целиком на '''RI (per instance, per site)'''.
L2-circuit - это по сути метки (на выход, вход). В отличие от L2VPN каждому локальному интерфейсу назначать метку нет смысла, ведь внутри VPLS уже есть соответствие ''mac - interface''. Поэтому в VPLS метка должна была бы назначиться целиком на '''RI (per instance, per site)'''.


Но эта логика не правильная. =(
Но эта логика не правильная. =(


Learnig mac-адресов! делает эту схему многоточкой! Блок меток соответствует '''удаленному site''', чтобы когда пакет придет на РЕ понимать с какого site он пришел. Это требуется, чтобы сделать правильный learning.
Learning mac-адресов! делает эту схему многоточкой!  
 
Блок меток соответствует-выделяется '''удаленному site''', чтобы когда пакет придет на РЕ понимать с какого site он пришел. Это требуется, чтобы сделать правильный learning.


В остальном весь остальной процесс signaling аналогичен L2VPN.
В остальном весь остальной процесс signaling аналогичен L2VPN.
Строка 53: Строка 56:
Между PE требуется full-mesh.
Между PE требуется full-mesh.


В случае l2circuit указывали удаленный PE. В VPLS, помимо всего прочего, потребуется добавить всех remote-site-id.
В случае l2circuit указывали удаленный PE.  
 
В VPLS, помимо всего прочего, потребуется добавить для всех удаленных PE remote-site-id ручками.


=Метки=
=Метки=
Как и а BGP L2VPN в NLRI передается:
Как и у L2VPN в NLRI передается:
* label base (начальная)
* label base (начальная)
* site-ID
* site-ID
Строка 100: Строка 105:
=Configuration=
=Configuration=
==BGP based VPLS==
==BGP based VPLS==
'''Lagavulin:'''
Минимальный рабочий конфиг:


На всех роутерах:
*BGP-family:
  [edit protocols bgp]
  [edit protocols bgp]
  set family l2vpn signaling
  set family '''l2vpn signaling'''
*encapsulation vlan-vpls (как для LDP signalling, так и для BGP signaling):
  [edit interfaces]
  [edit interfaces]
  ge-0/0/1 {
  ge-0/0/1 {
    vlan-tagging;
     encapsulation ''vlan-vpls|flexible-ethernet-services''
     encapsulation vlan-vpls;
  [edit interfaces ge-0/0/1 unit 804]
  [edit interfaces ge-0/0/1 unit 804]
     encapsulation vlan-vpls;  
     encapsulation '''vlan-vpls''';  
     vlan-id 804;
     vlan-id 804;
    family vpls;


'''Lagavulin:'''
  [edit routing-instances oak]
  [edit routing-instances oak]
         instance-type vpls;
         instance-type vpls;
Строка 122: Строка 128:
         protocols {
         protocols {
               vpls {
               vpls {
                site-range 5;
                 no-tunnel-services;
                 no-tunnel-services;
                 site ce4 {
                 site ce4 {
                     site-identifier 1;
                     site-identifier 1;
                    interface ge-0/0/0.804;
'''Tormore'''
[edit routing-instances oak]
        instance-type vpls;
        vlan-id 804;
        interface ge-0/0/1.801;
        route-distinguisher 10.200.86.9:100;
        vrf-target target:300:200;
        protocols {
            vpls {
                site-range 5;
                no-tunnel-services;
                site ce9 {
                    site-identifier 3;
                    interface ge-0/0/1.804
'''Oban'''


[edit routing-instances oak]
Дополнительные часто используемые параметры:
        instance-type vpls;
*'''connectivity-type permanent''' - вне зависимости от состояния интерфейсов - поднимет VPLS.
        vlan-id 804;
*'''mac-table-size 6000 packet-action drop''' - ограничение по макам в VPLS.
        interface ge-0/0/0.804;
*'''site-range 8''' - ограничение по количеству site в рамках одного VPLS.
        route-distinguisher 10.200.86.3:1313;
===Multihoming (BGP signaling)===
        vrf-target terget:1111:1313;
        protocols {
            vpls {
              site-range 5;
              no-tunnel-services;
              site ce8 {
                    site-identifier 2;
                    interface ge-0/0/0.804;
 
===VPLS Multihoming (BGP signaling)===
Используется для подключения одного site клиента к нескольким PE.
Используется для подключения одного site клиента к нескольким PE.


Строка 175: Строка 151:
{{note|text=Если требуется использовать multihoming для VPLS, то нужно учесть, что это будет работать только с BGP сигнализацией. '''Не LDP'''.}}
{{note|text=Если требуется использовать multihoming для VPLS, то нужно учесть, что это будет работать только с BGP сигнализацией. '''Не LDP'''.}}


====Config====
Настраиваем:
#Одинаковый site-id для multi homed PE.
#Одинаковый site-id для multi homed PE.
#Разный RD для multi homed PE.
#Разный RD для multi homed PE.
Строка 186: Строка 162:
  +  oak {
  +  oak {
  +      instance-type vpls;
  +      instance-type vpls;
+      vlan-id 200;
  +      interface ge-0/0/0.200;
  +      interface ge-0/0/0.200;
  +      interface ge-0/0/0.210;
  +      interface ge-0/0/1.200;
+      interface ge-0/0/0.220;
  +      route-distinguisher 10.200.86.1:100;
  +      route-distinguisher 10.200.86.1:100;
  +      vrf-target target:1111:100;
  +      vrf-target target:1111:100;
Строка 199: Строка 175:
  +                  '''site-preference primary'''';
  +                  '''site-preference primary'''';
  +                  '''active-interface primary''' ge-0/0/0.200;
  +                  '''active-interface primary''' ge-0/0/0.200;
  +                  interface ge-0/0/0.210;
  +                  interface ge-0/0/1.200;}}}}
+                  interface ge-0/0/0.220;}}}}


==LDP based VPLS==
==LDP based VPLS==
Строка 223: Строка 198:
         neighbor 10.200.86.8; }}
         neighbor 10.200.86.8; }}


===Защита от петель===
Дополнительные часто используемые параметры:
 
*'''connectivity-type permanent''' - вне зависимости от состояния интерфейсов - поднимет VPLS.
*'''mac-table-size 6000 packet-action drop'''- ограничение по макам в VPLS.
*'''site-range 8''' - ограничение по количеству site в рамках одного VPLS.
 
===Multihoming (LDP signaling)===
Когда два PE, смотрят в сторону одного и того же CE, без настройки дополнительных протоколов можно настроить VPLS таким образом => один из PE настраиваем как primary, второй backup.
Когда два PE, смотрят в сторону одного и того же CE, без настройки дополнительных протоколов можно настроить VPLS таким образом => один из PE настраиваем как primary, второй backup.


Строка 236: Строка 217:
На удаленном PE backup роутер будет находиться в статусе: ''BK -- Backup connection''.
На удаленном PE backup роутер будет находиться в статусе: ''BK -- Backup connection''.


А если в конфиг к backup-neighbor добавить еще и standby, то на удаленных PE он будет болтаться в статусе: ''ST -- Standby connection''.
А если в конфиг к backup-neighbor добавить еще и ''standby'', то на удаленных PE он будет болтаться в статусе: ''ST -- Standby connection''.
А сам backup роутер будет устанавливать сессию с удаленным PE (State = Up)
А сам backup роутер будет устанавливать сессию с удаленным PE (State = Up)


Строка 296: Строка 277:
  lagavulin> show route forwarding-table vpn oak
  lagavulin> show route forwarding-table vpn oak
  lagavulin> show vpls mac-table instance oak
  lagavulin> show vpls mac-table instance oak
=Дополнительная информация=
*[[L2VPN]]
*[[EVPN]]
*[[Реализация MPLS в ядре сети]]

Текущая версия на 18:32, 15 июля 2021

В L2VPN используются только каналы точка-точка, и нет возможности обеспечить связность точка-многоточка. Эту проблему решает - VPLS.

Для клиента сеть будет выглядеть как бродкастовый домен. Full-mesh между точками.

Для провайдера: набор каналов точка-точка.

В vpls соединениях точка-точка принято называть pseudo-wire.

Forwarding

В обычном мире, не касаясь MPLS, когда хост посылает фрейм в свитч: свитч бродкастит и лернит.

VPLS-instance работает как свитч, который тоже бродкастит и лернит.

  • На PE1 в VPLS прилетел фрейм, VPLS: запомнил какой mac, соотнес с портом: A -> int 1.
  • PE1 флудит его во все интерфейсы. А pseudo-wire, воспринимаем как интерфейс. Т.о. фрейм долетел до PE2.
  • PE2 заучивает mac: A -> pseudo-wire 1 (lsi interface).
  • Фрейм, пришедший с локального интерфейса, должен быть разослан всем PE.

Фрейм, пришедший с локального интерфейса флудится во все локальные интерфейсы и pseudo-wire. Фрейм, который пришел от pseudo-wire (lsi), флудится только в локальные интерфейсы. Чтобы не было петли.

Когда прилетает фрейм с dest-mac уже известным, то он идет по уже заученному для него пути.

То есть с точки зрения форвардинга VPLS - один большой свитч!

Внутри VPLS происходит lookup по маку => должен быть включен tunnel-services.

Signaling

Pseudo-wire - строятся по LDP или BGP. В отличие от L2VPN, в VPLS - сигнализация по BGP имеет огромное приемущество.

BGP

BGP выполняет функцию signaling и auto-discovery. PE ищет какие PE законнектились в тот же VPLS и отправляет им NLRI.

Передается NLRI, аналогичный BGP L2VPN:

  • label base
  • label range
  • site-id
  • offset

То есть для работы VPLS в настройках BGP включаем тот же самый l2vpn signaling.

L2-circuit - это по сути метки (на выход, вход). В отличие от L2VPN каждому локальному интерфейсу назначать метку нет смысла, ведь внутри VPLS уже есть соответствие mac - interface. Поэтому в VPLS метка должна была бы назначиться целиком на RI (per instance, per site).

Но эта логика не правильная. =(

Learning mac-адресов! делает эту схему многоточкой!

Блок меток соответствует-выделяется удаленному site, чтобы когда пакет придет на РЕ понимать с какого site он пришел. Это требуется, чтобы сделать правильный learning.

В остальном весь остальной процесс signaling аналогичен L2VPN.

Site-ID в данной схеме принципиального значения не имеет. Требуется только для PE для внутренних вычислений, поэтому можно просто выбрать и назначить site-id, или задать auto-site-id.

LDP

Между PE требуется full-mesh.

В случае l2circuit указывали удаленный PE.

В VPLS, помимо всего прочего, потребуется добавить для всех удаленных PE remote-site-id ручками.

Метки

Как и у L2VPN в NLRI передается:

  • label base (начальная)
  • site-ID
  • label range

Исходя из полученных данных PE вычисляет свою метку для связи с тем PE, кот переслал блок:

label = label base (remote) + site-ID (local) - 1 (offset) (remote)

Инкапсуляция

Ниже описанное касается CE-facing интерфейс.

Для обычного Ethernet с vlan должна стоять: vlan-vpls. Она подходит как для qinq, так и для 802.1q.

Можно ставить ее как на логический интерфейс, так и на физический.

Если это не единственный тип инкапсуляции на физическом интерфейсе, то лучше на нем сразу указать тип инкапсуляции: flexible-ethernet-services.

Vlan

В рамках vrf VPLS можно определять vlan для VPLS путем конфигурирования vlan-id | vlan-tags

  • vlan-id <vlan-id> - в VPLS будет работать только один указанный vlan-id
  • vlan-id none - у приходящего пакета будет сниматься vlan-id tag. У исходящего навешиваться тот vlan-id tag, который указан на исходящем из VPLS интерфейсе.
  • vlan-id all - используется с logical interface, на которых настроено двойное теггирование. При этом на выходе из VPLS outer-tag будет навешиваться (push), на входе в VPLS outer-tag будет сниматься (pop). В VPLS будут бегать маки с inner vlan-id.
  • vlan-tags inner <> outer <> - позволяет работать VPLS с двумя тегами.

Если в VPLS указывает vlan каким-то из способов, то на interface нельзя использовать input-vlan-map и output-vlan-map

Со стороны клиента: влан на разных site должен совпадать. Иначе связности не будет.

+/-

VPLS +:

  • удобнее в трабшутинге
  • в отличие от L2VPN не требует указания remote-site
  • обеспечивает схему коммутации точка-многоточка

VPLS - :

  • бродкаст домен => защита от петель между PE<>CE
  • STP на PE<>CE
  • ERP на CE
  • LAG на PE <> CE
  • Active/backup links on PE
  • Multihomed CE with two PEs.
  • может передавать только ethernet

Configuration

BGP based VPLS

Минимальный рабочий конфиг:

На всех роутерах:

  • BGP-family:
[edit protocols bgp]
set family l2vpn signaling
  • encapsulation vlan-vpls (как для LDP signalling, так и для BGP signaling):
[edit interfaces]
ge-0/0/1 {
   encapsulation vlan-vpls|flexible-ethernet-services
[edit interfaces ge-0/0/1 unit 804]
   encapsulation vlan-vpls; 
   vlan-id 804;

Lagavulin:

[edit routing-instances oak]
        instance-type vpls;
        vlan-id 804;
        interface ge-0/0/0.804;
        route-distinguisher 10.200.86.7:1313;
        vrf-target target:1111:1313;
        protocols {
             vpls {
               no-tunnel-services;
               site ce4 {
                    site-identifier 1;

Дополнительные часто используемые параметры:

  • connectivity-type permanent - вне зависимости от состояния интерфейсов - поднимет VPLS.
  • mac-table-size 6000 packet-action drop - ограничение по макам в VPLS.
  • site-range 8 - ограничение по количеству site в рамках одного VPLS.

Multihoming (BGP signaling)

Используется для подключения одного site клиента к нескольким PE.

Только один PE будет активным и выбран в качестве designated forwarder, т.е. передавать трафик. Такой PE будет устанавливать с удаленным PE pseudo-wire.

Если что-то произойдет с активным PE, второй multihomed PE установит pseudo-wire до удаленного PE.

Удаленные PE, чтобы определить куда им все-таки нужно передавать трафик, используют процесс VPLS path-selection:

  1. Если advertisement bit = 0, то эта NLRI отбрасывается.
  2. Далее выбор идет по наибольшему site-preference приоритету.
  3. Далее по меньшему RID.
  4. Далее по меньшему ip адресу BGP Peer.

Удаленный PE выбрал активный multihomed PE, назначив его designated VE (VPLS edge). И стал использовать только 1 NLRI. До такого designated VE удаленный PE и построит pseudo-wire.

Если требуется использовать multihoming для VPLS, то нужно учесть, что это будет работать только с BGP сигнализацией. Не LDP.

Настраиваем:

  1. Одинаковый site-id для multi homed PE.
  2. Разный RD для multi homed PE.
  3. Указать интерфейсы в VPLS.
  4. Включить multihoming.
  5. Если на сети используется схема, где один и тот же site растянут на 2 PE, оба PE имеют линки в сторону одного CE, то можно определять активный PE с помощью site-preference backup|primary. Либо руками задавать site-preference. Backup-PE поднимет connections с удаленными PE только в случае отвала primary PE того же site.
  6. [В случае, если на одной PE несколько линков к CE]. Задаем active-interface. Если указываем any, то будет выбран один из перечисленных ниже интерфейсов. Если указываем primary, то активным сразу будет выбран явно заданный интерфейс. А остальные интерфейсы в порядке очереди будут использоваться при падении primary.
[edit routing-instances]
+   oak {
+       instance-type vpls;
+       vlan-id 200;
+       interface ge-0/0/0.200;
+       interface ge-0/0/1.200;
+       route-distinguisher 10.200.86.1:100;
+       vrf-target target:1111:100;
+       protocols {
+           vpls {
+               no-tunnel-services;
+               site blair 
+                   site-identifier 1;
+                   multi-homing;
+                   site-preference primary';
+                   active-interface primary ge-0/0/0.200;
+                   interface ge-0/0/1.200;}}}}

LDP based VPLS

Также обязательным:

  • instance-type vpls
  • lo должен быть добавлен в ldp
  • !!rt, rd - не обязательны!!

Есть несколько отличий:

  • Вводится vpls-id. Это просто идентификатор vpls. Аналогично virtual-circuit-id для l2vpn LDP signaling. То есть просто любое уникальное число.
  • Вручную указываются соседи - удаленные PE.
oban> show configuration routing-instances fox 
instance-type vpls;
interface ge-0/0/2.10; 
vlan-id {all | vlan-id | none}
protocols {
   vpls {
       encapsulation-type ethernet;
       no-tunnel-services;
       vpls-id 9876;
       neighbor 10.200.86.8; }}

Дополнительные часто используемые параметры:

  • connectivity-type permanent - вне зависимости от состояния интерфейсов - поднимет VPLS.
  • mac-table-size 6000 packet-action drop- ограничение по макам в VPLS.
  • site-range 8 - ограничение по количеству site в рамках одного VPLS.

Multihoming (LDP signaling)

Когда два PE, смотрят в сторону одного и того же CE, без настройки дополнительных протоколов можно настроить VPLS таким образом => один из PE настраиваем как primary, второй backup.

Настройки делаются на удаленных PE. К neighbor добавляется backup PE:

...
protocols {
   vpls {
       neighbor 10.200.86.8; 
           backup-neighbor 10.200.86.13
           revert-timer 100 }}

На удаленном PE backup роутер будет находиться в статусе: BK -- Backup connection.

А если в конфиг к backup-neighbor добавить еще и standby, то на удаленных PE он будет болтаться в статусе: ST -- Standby connection. А сам backup роутер будет устанавливать сессию с удаленным PE (State = Up)

Troubleshooting

lagavulin> show vpls connections    
Instance: oak
 Local site: ce4 (1)                   
   connection-site           Type  St     Time last up          # Up trans
   2                         rmt   Up     Nov 10 03:21:50 2016           1
     Remote PE: 10.200.86.3, Negotiated control-word: No
     Incoming label: 262146, Outgoing label: 262145 
     Local interface: lsi.1049088, Status: Up, Encapsulation: VPLS
       Description: Intf - vpls oak local site 1 remote site 2
   3                         rmt   Up     Nov 10 03:27:12 2016           1
     Remote PE: 10.200.86.9, Negotiated control-word: No
     Incoming label: 262147, Outgoing label: 262145 
     Local interface: lsi.1049089, Status: Up, Encapsulation: VPLS
       Description: Intf - vpls oak local site 1 remote site 3
lagavulin> show route table oak.l2vpn.0 detail 
oak.l2vpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
10.200.86.3:1313:2:1/96 (1 entry, 1 announced)
       *BGP    Preference: 170/-101
               Route Distinguisher: 10.200.86.3:1313
               Source: 10.200.86.3
               Protocol next hop: 10.200.86.3
               Age: 15:30 	Metric2: 1 
               Task: BGP_1111.10.200.86.3+50784
               Communities: target:1111:1313 Layer2-info: encaps:VPLS, control flags:, mtu: 0, site preference: 100
               Label-base: 262145, range: 8
               Localpref: 100
               Router ID: 10.200.86.3
               Primary Routing Table bgp.l2vpn.0
10.200.86.7:1313:1:1/96 (1 entry, 1 announced)
       *L2VPN  Preference: 170/-101
               Next hop type: Indirect 
               Next-hop reference count: 2
               Protocol next hop: 10.200.86.7
               Indirect next hop: 0 -
               Age: 27:51 	Metric2: 1 
               Task: oak-l2vpn
               Communities: Layer2-info: encaps:VPLS, control flags:, mtu: 0, site preference: 100
               Label-base: 262145, range: 8, status-vector: 0x18 
10.200.86.9:1313:3:1/96 (1 entry, 1 announced)
       *BGP    Preference: 170/-101
               Route Distinguisher: 10.200.86.9:1313
               Source: 10.200.86.9
               Protocol next hop: 10.200.86.9
               Local AS:  1111 Peer AS:  1111
               Age: 10:08 	Metric2: 1 
               Task: BGP_1111.10.200.86.9+59111
               Communities: target:1111:1313 Layer2-info: encaps:VPLS, control flags:, mtu: 0, site preference: 100
               Label-base: 262145, range: 8
               Localpref: 100
               Router ID: 10.200.86.9
               Primary Routing Table bgp.l2vpn.0

Как посмотреть маки:

lagavulin> show route forwarding-table vpn oak
lagavulin> show vpls mac-table instance oak

Дополнительная информация