skip to Main Content
Automation Arista EVPN-VXLAN with Python

İnternet üzerinden iki farklı datacenter'ı birbirine bağlamak için kullanılabilen EVPN-VXLAN teknolojisi, Arista üzerinde Python ile yapılabilir. Önemli kısım; bu mimaride MPLS veya özel devreler üzerinden değil, internet üzerinden bağlantı kurulacaktır. EVPN-VXLAN, layer2 seviyesinde VLAN'ların uzatılmasını sağlar. Böyle bir topolojide sıklıkla VLAN'lar oluşturabilir ve yönlendiriciler üzerinde birbirine bu VLAN bilgilerini duyurabilir. Ancak bu VLAN'ları oluştururken veya duyurma işlemini yaparken canlı sistemlerde dikkatli olunmalıdır. Arista switch'lerde REST API teknolojisinden faydalanılarak, EVPN-VXLAN ortamında Python ile ağ operasyonları daha basit hale getirilebilir. Böylece günlük operasyonlar, daha kontrollü ve otomotize edilmiş şekilde yapılabilir.

Örnek topolojide, internet üzerinden BGP aracılığıyla bağlanan iki datacenter bulunur. Client'lar datacenter switch'lerine bağlıdır ve EVPN-VXLAN aracılığıyla aynı layer2 broadcast domain'inde bulunur.

Python'ı Arista switch'lerde kullanmak için bazı gereksinimlere ihtiyaç vardır.

  • Bazı json yöntemlerini kullanmak için jsonrclib kütüphanesi içe aktarılmalıdır. Bu kütüphane, json formatındaki REST API kullanımında gereklidir. Arista switch'lerin API URL'ine jsonrpclib kütüphanesinin
  • Server metodu ile erişilebilir. Bu metot; kullanıcı adı, şifre, IP, port vb. parametreler gerektirir. Örnek kodda; eapi_url parametresi değişkenidir.
  • SSL doğrulamasını geçebilmek için ssl kütüphanesi içe aktarılmalıdır.
  • API'ye erişmek için parametreleri ve komutlarda kullanılacak bazı değişkenleri tanımlıyoruz. Örnek kodda; 1500-1779 vlan aralığı oluşturukacak ve EVPN'e taşınacaktır.
  • Örnek kodda; cmds listesi, komutları cihazalara uygulamak için kullanılacaktır. Komutlar, daha esnek olması için değişkenler alır.

Python Code


import jsonrpclib
from pprint import pprint
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

port=443
username='admin'
password='arista'
ip='172.16.91.200'
vlan= "1500-1779"
asnumber="100"

cmds= [
"configure",
"vlan" +' '+str(vlan),
"interface vxlan 1",
"vxlan vlan add"+' '+ str(vlan)+' '+"vni"+' '+str(vlan),
"router bgp "+' '+str(asnumber),
"vlan-aware-bundle A",
"vlan add"+' '+str(vlan),
"write memory"
]

eapi_url='https://{}:{}@{}:{}/command-api'.format(username, password, ip, port)
eapi_conn = jsonrpclib.Server(eapi_url)
response = eapi_conn.runCmds(1,cmds)
pprint(response)

Sonuç


DC-1#show vlan >>>>>>>>>>>>>>>CREATED VLANs
VLAN Name Status Ports
1500 VLAN1500 active Vx1
1501 VLAN1501 active Vx1
1502 VLAN1502 active Vx1
(…omitted)
1778 VLAN1778 active Vx1
1779 VLAN1779 active Vx1

DC-1#show running-config interfaces vxlan 1 >>>>>>>>>CREATED VNIs
interface Vxlan1
vxlan source-interface Loopback1
vxlan udp-port 4789
vxlan vlan 100,1500-1779 vni 100,1500-1779

DC-1#show running-config section bgp >>>>>>>>>ADVERTISED VLANs
router bgp 100
(…omitted)
vlan-aware-bundle A
rd 100:1.1.1.1
route-target import 400:100
route-target export 100:100
redistribute learned
vlan 100,1500-1779

This Post Has 0 Comments

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Siber Güvenlik Eğitimi: Çalışanlarınızı Tehditlere Karşı Nasıl Eğitirsiniz?

Siber güvenlik, günümüz iş dünyasında hayati önem taşır. Çalışanlar, genellikle…

Devamını oku
Back To Top