VPLS: различия между версиями
|  (Новая страница: «VPLS Для клиента сеть будет выглядеть как бродкастовый домен.  Для провайдера набор канало…») | |||
| Строка 1: | Строка 1: | ||
| VPLS | В L2VPN используются только каналы точка-точка, и нет возможности обеспечить связность точка-многоточка. Эту проблему решает - VPLS. | ||
| Для провайдера набор каналов точка-точка | Для клиента сеть будет выглядеть как бродкастовый домен. ''full-mesh'' между точками. | ||
| Для провайдера набор каналов точка-точка.   | |||
| В vpls соединения точка-точка принято называть ''pseudo-wire''. | В vpls соединения точка-точка принято называть ''pseudo-wire''. | ||
| Строка 13: | Строка 14: | ||
| * На PE1 в VPLS прилетел фрейм, VPLS: запомнил какой mac, соотнес с портом: A -> int 1.   | * На PE1 в VPLS прилетел фрейм, VPLS: запомнил какой mac, соотнес с портом: A -> int 1.   | ||
| * PE1 флудит его во все интерфейсы. А '''pseudo-wire''', воспринимает как интерфейсы. Т.о. фрейм долетел до PE2.   | * PE1 флудит его во все интерфейсы. А '''pseudo-wire''', воспринимает как интерфейсы. Т.о. фрейм долетел до PE2.   | ||
| * PE2 заучивает mac: A -> pseudo-wire 1. | * PE2 заучивает mac: A -> pseudo-wire 1 (''lsi interface''). | ||
| * Фрейм, пришедший с локального интерфейса, должен быть разослан '''всем''' PE. | * Фрейм, пришедший с локального интерфейса, должен быть разослан '''всем''' PE. | ||
| {{note|text=* Фрейм, пришедший с локального интерфейса флудится во все локальные интерфейсы и pseudo-wire. | {{note|text=* Фрейм, пришедший с локального интерфейса флудится во все локальные интерфейсы и pseudo-wire. | ||
| *Фрейм, который пришел от pseudo-wire, флудится только в локальные интерфейсы. | *Фрейм, который пришел от pseudo-wire (''lsi''), флудится только в локальные интерфейсы. | ||
| Чтобы не было петли.}} | Чтобы не было петли.}} | ||
| Строка 28: | Строка 29: | ||
| ====BGP==== | ====BGP==== | ||
| BGP выполняет функцию signaling и auto-discovery. PE ищет какие PE вступили в тот же VPLS и отправляет им NLRI. | |||
| Передается NLRI, аналогичный BGP L2VPN: | Передается NLRI, аналогичный BGP L2VPN: | ||
| * label base | * label base | ||
| Строка 34: | Строка 37: | ||
| * offset | * offset | ||
| То есть для работы VPLS в настройках включаем тот же самый l2vpn signaling. | То есть для работы VPLS в настройках BGP включаем тот же самый l2vpn signaling. | ||
| Licruit - метки (на выход, вход). В отличие от L2VPN каждому локальному интерфейсу назначать метку нет смысла, ведь внутри VPLS уже есть соответствие ''mac - interface''. Поэтому в VPLS метка должна была бы назначиться целиком на '''RI (per instance, per site)'''. | Licruit - метки (на выход, вход). В отличие от L2VPN каждому локальному интерфейсу назначать метку нет смысла, ведь внутри VPLS уже есть соответствие ''mac - interface''. Поэтому в VPLS метка должна была бы назначиться целиком на '''RI (per instance, per site)'''. | ||
| Строка 40: | Строка 43: | ||
| Но эта логика не правильная. =( | Но эта логика не правильная. =( | ||
| Learnig mac-адресов! делает эту схему многоточкой! Блок меток соответствует удаленному site, чтобы когда пакет придет на РЕ понимать с какого site он пришел. Это требуется, чтобы сделать правильный learning. | Learnig mac-адресов! делает эту схему многоточкой! Блок меток соответствует '''удаленному site''', чтобы когда пакет придет на РЕ понимать с какого site он пришел. Это требуется, чтобы сделать правильный learning. | ||
| В остальном весь остальной процесс signaling аналогичен L2VPN. | В остальном весь остальной процесс signaling аналогичен L2VPN. | ||
| Строка 47: | Строка 50: | ||
| ====LDP==== | ====LDP==== | ||
| Между PE требуется full-mesh. | |||
| В случае l2circuit указывали удаленный PE. В VPLS, помимо всего прочего, потребуется добавить всех remote-site-id. | В случае l2circuit указывали удаленный PE. В VPLS, помимо всего прочего, потребуется добавить всех remote-site-id. | ||
| ===+/-=== | ===+/-=== | ||
| VPLS +:   | VPLS +:   | ||
| *удобнее в трабшутинге | |||
| *в отличие от L2VPN не требует указания remote-site | |||
| *обеспечивает схему коммутации точка-многоточка | |||
| -  | VPLS - : | ||
| *бродкаст домен => защита от петель между PE<>CE: STP и остальные методы на L2 сегменте. | |||
| *может передавать только ''ethernet'' | |||
| ===Configuration=== | |||
| Рассматриваем вариант VPLS-BGP. | |||
| VPLS - : | '''Lagavulin:''' | ||
|  [edit protocols bgp] | |||
|  set family l2vpn signaling | |||
|  [edit interfaces] | |||
|  ge-0/0/1 { | |||
|     vlan-tagging; | |||
|     encapsulation vlan-vpls; | |||
|  [edit interfaces ge-0/0/1 unit 804] | |||
|     encapsulation vlan-vpls;  | |||
|     vlan-id 804; | |||
|     family vpls; | |||
|  [edit routing-instances oak] | |||
|           instance-type vpls; | |||
|           interface ge-0/0/0.804; | |||
|           route-distinguisher 10.200.86.7:1313; | |||
|           vrf-target target:1111:1313; | |||
|           protocols { | |||
|               vpls { | |||
|                   site-range 5; | |||
|                   no-tunnel-services; | |||
|                   site ce4 { | |||
|                       site-identifier 1; | |||
|                       interface ge-0/0/0.804; | |||
| '''Tormore''' | |||
|  [edit routing-instances oak] | |||
|  instance-type vpls; | |||
|  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; | |||
|        interface ge-0/0/0.804; | |||
|        route-distinguisher 10.200.86.3:1313; | |||
|        vrf-target terget:1111:1313; | |||
|        protocols { | |||
|            vpls { | |||
|                site-range 5; | |||
|                no-tunnel-services; | |||
|                site ce8 { | |||
|                    site-identifier 2; | |||
|                    interface ge-0/0/0.804; | |||
| ===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 | |||
Версия 11:57, 12 ноября 2016
В L2VPN используются только каналы точка-точка, и нет возможности обеспечить связность точка-многоточка. Эту проблему решает - VPLS.
Для клиента сеть будет выглядеть как бродкастовый домен. full-mesh между точками.
Для провайдера набор каналов точка-точка.
В vpls соединения точка-точка принято называть pseudo-wire.
Forwarding
Хосты посылает свитч: свитч бродкастит и лернит.
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.
Licruit - метки (на выход, вход). В отличие от L2VPN каждому локальному интерфейсу назначать метку нет смысла, ведь внутри VPLS уже есть соответствие mac - interface. Поэтому в VPLS метка должна была бы назначиться целиком на RI (per instance, per site).
Но эта логика не правильная. =(
Learnig mac-адресов! делает эту схему многоточкой! Блок меток соответствует удаленному site, чтобы когда пакет придет на РЕ понимать с какого site он пришел. Это требуется, чтобы сделать правильный learning.
В остальном весь остальной процесс signaling аналогичен L2VPN.
Site-ID в данной схеме принципиального значения не имеет. Требуется только для PE для внутренних вычислений, поэтому можно просто выбрать и назначить site-id, или задать auto-site-id.
LDP
Между PE требуется full-mesh.
В случае l2circuit указывали удаленный PE. В VPLS, помимо всего прочего, потребуется добавить всех remote-site-id.
+/-
VPLS +:
- удобнее в трабшутинге
- в отличие от L2VPN не требует указания remote-site
- обеспечивает схему коммутации точка-многоточка
VPLS - :
- бродкаст домен => защита от петель между PE<>CE: STP и остальные методы на L2 сегменте.
- может передавать только ethernet
Configuration
Рассматриваем вариант VPLS-BGP.
Lagavulin:
[edit protocols bgp]
set family l2vpn signaling
[edit interfaces]
ge-0/0/1 {
   vlan-tagging;
   encapsulation vlan-vpls;
[edit interfaces ge-0/0/1 unit 804]
   encapsulation vlan-vpls; 
   vlan-id 804;
   family vpls;
[edit routing-instances oak]
         instance-type vpls;
         interface ge-0/0/0.804;
         route-distinguisher 10.200.86.7:1313;
         vrf-target target:1111:1313;
         protocols {
             vpls {
                 site-range 5;
                 no-tunnel-services;
                 site ce4 {
                     site-identifier 1;
                     interface ge-0/0/0.804;
Tormore
[edit routing-instances oak]
instance-type vpls;
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;
      interface ge-0/0/0.804;
      route-distinguisher 10.200.86.3:1313;
      vrf-target terget:1111:1313;
      protocols {
          vpls {
              site-range 5;
              no-tunnel-services;
              site ce8 {
                  site-identifier 2;
                  interface ge-0/0/0.804;
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