Ostatnio uczestniczyłem w ciekawym webbinarium zorganizowane przy forum CCIE.pl pod tytułem DCI “po nowemu” – prezentację prowadził Piotr Jabłoński.
Piotr pokazywał jak w dzisiejszych czasach można wykorzystać technologię VXVLAN do rozciągania L2 pomiędzy DataCenter lub w samym DC.
Po obejrzeniu stwierdziłem że trzeba zbudować laba i zobaczyć z czym się to je VXVLAN. Wstępnie VXVLAN zacząłem poznawać przy nauce Vmware NSX – wkrótce może jakiś wpis pojawi się w tym temacie też.
W chwili wolnej zbudowałem lab zgodnie z poniższym diagramem:
całość uruchomiłem na laptopie z wykorzystanie Vmware Workstation. Poniżej opiszę jak to uruchomić. Pokażę jak z wykorzystanie Cisco CSR1000v oraz Cisco ASAv można poznać wykorzystanie oraz zrozumieć działanie VXVLAN
Krok 1.
Uruchamiamy nasze wirtualki – ponieżej pokaże jak uruchomić CSR1000v pod Worksation. Cisco ASAv pokazałem we wpisie Instalacja ASAv w Labie
Importujemy Maszynę z CSR1000v do naszego Workstation:
Klikamy Open a Virtual Machine w nowym oknie wybieramy nasz polik OVA
po kliknięciu otwórz, w nowym oknie wpisujemy nazwę dla naszego Routera taka nazwa będzie wyświetlana w Inventory, w Storage path podajemy gdzie mają być przechowywane pliki wirtualnej maszyny.
Po kliknięciu Import rozpocznie się proces importu
po zakończeniu uruchamiamy wirtualną maszynę
przy pierwszym uruchomieniu musimy kliknąć dowolnym klawiszem tak aby rozpoczął proces uruchomienia.
Po zakończeniu możemy powtórzyć dla kolejnych 2 CSR’ów oraz ASAv proces.
Krok 2.
Przygotowanie Workstation do Laba
Tworzymy Lan Segmenty, tak aby były możliwe połączenia, zgodnie z diagramem wyżej.
Krok 3
Konfigurujemy je zgodnie z założeniami które są poniżej
Cisco CSR100v01 | ||
Interfejs | adresacja | opis |
Gi 1 | 10.10.30.2/24 | Połączenie z CSR1000v03 nasz Core |
Gi 2 | unatged | połączenie do PC1 |
Gi 3 | 192.168.220.11/24 | nasza adresacja wykorzystywana do MGMT. Interfejs w VRF MGMT |
Lo0 | 1.1.1.1/32 | Nasz adres loopback 0 |
Konfiguracja:
dla Interfejsu Gi1:
interface GigabitEthernet1 description csrv01<-->csrv03 ip address 10.10.30.1 255.255.255.0 negotiation auto no sh
dla Loopback 0
interface Loopback0 ip address 1.1.1.1 255.255.255.255
Gi 3
ip vrf mgmt description mgmt exit interface GigabitEthernet3 description MGMT ip vrf forwarding mgmt ip address 192.168.220.11 255.255.255.0 no sh end
Cisco CSR100v02 | ||
Interfejs | adresacja | opis |
Gi 1 | 10.10.40.2/24 | Połączenie z CSR1000v03 nasz Core |
Gi 2 | unatged | połączenie do PC2 |
Gi 3 | 192.168.220.12/24 | nasza adresacja wykorzystywana do MGMT. Interfejs w VRF MGMT |
Lo0 | 2.2.2.2/32 | Loopback 0 |
Konfiguracja:
dla Interfejsu Gi1:
interface GigabitEthernet1 description csrv02<-->csrv03 ip address 10.10.40.1 255.255.255.0 negotiation auto no sh
dla Loopback 0
interface Loopback0 ip address 2.2.2.2 255.255.255.255
Gi 3
ip vrf mgmt description mgmt exit interface GigabitEthernet3 description MGMT ip vrf forwarding mgmt ip address 192.168.220.12 255.255.255.0 no sh end
Cisco CSR100v03 | ||
Interfejs | adresacja | opis |
Gi 1 | 10.10.20.2/24 | Połączenie z ASAv01 |
Gi 2 | 10.10.30.2/24 | Połączenie z CSR1000v01 |
Gi 3 | 10.10.40.224 | Połączenie z CSR1000v02 |
Gi 4 | 192.168.220.10/24 | nasza adresacja wykorzystywana do MGMT. Interfejs w VRF MGMT |
Lo0 | 3.3.3.3/32 | Loopback 0 |
Konfiguracja:
Gi1:
interface GigabitEthernet1 ip address 10.10.20.2 255.255.255.0 no sh
Gi2:
interface GigabitEthernet2 ip address 10.10.30.2 255.255.255.0
Gi3:
interface GigabitEthernet3 ip address 10.10.40.2 255.255.255.0
Gi4:
ip vrf mgmt description mgmt exit interface GigabitEthernet4 description MGMT ip vrf forwarding mgmt ip address 192.168.220.10 255.255.255.0 no sh end
dla Loopback 0
interface Loopback0 ip address 3.3.3.3 255.255.255.255
Cisco ASAv01 | ||
Interfejs | adresacja | opis |
Gi 0/1 | 192.168.1.75/24 | Out – nasz styk z internetem |
Gi 0/2 | 10.10.20.1/24 | Połączenie z CSR1000v03 |
Konfiguracja:
Gi 0/1
interface GigabitEthernet0/0 nameif out security-level 0 ip address 192.168.1.75 255.255.255.0 no sh
Gi 0/2
interface GigabitEthernet0/1 nameif lan security-level 0 ip address 10.10.20.1 255.255.255.0 no sh
Krok 4
Konfigurujemy routing pomiędzy urządzeniami w mym przypadku wykorzystuję OSPF
CSRv01:
router ospf 1 network 1.1.1.1 0.0.0.0 area 0 network 10.10.30.0 0.0.0.255 area 0
CSRv02:
router ospf 1 network 2.2.2.2 0.0.0.0 area 0 network 10.10.40.0 0.0.0.255 area 0
CSRv03:
router ospf 1 network 3.3.3.3 0.0.0.0 area 0 network 10.10.20.0 0.0.0.255 area 0 network 10.10.30.0 0.0.0.255 area 0 network 10.10.40.0 0.0.0.255 area 0
ASAv01:
router ospf 1 network 10.10.20.0 255.255.255.0 area 0
Sprawdzamy działanie OSPF’a
CSRv01
csr1000v01#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override, p - overrides from PfR Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets C 1.1.1.1 is directly connected, Loopback0 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/3] via 10.10.30.2, 00:05:00, GigabitEthernet1 3.0.0.0/32 is subnetted, 1 subnets O 3.3.3.3 [110/2] via 10.10.30.2, 00:05:10, GigabitEthernet1 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks O 10.10.20.0/24 [110/2] via 10.10.30.2, 00:05:00, GigabitEthernet1 C 10.10.30.0/24 is directly connected, GigabitEthernet1 L 10.10.30.1/32 is directly connected, GigabitEthernet1 O 10.10.40.0/24 [110/2] via 10.10.30.2, 00:05:00, GigabitEthernet1
CSRv02
csr1000v02#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override, p - overrides from PfR Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/3] via 10.10.40.2, 00:13:31, GigabitEthernet1 2.0.0.0/32 is subnetted, 1 subnets C 2.2.2.2 is directly connected, Loopback0 3.0.0.0/32 is subnetted, 1 subnets O 3.3.3.3 [110/2] via 10.10.40.2, 00:13:31, GigabitEthernet1 10.0.0.0/8 is variably subnetted, 6 subnets, 3 masks O 10.10.20.0/24 [110/2] via 10.10.40.2, 00:13:21, GigabitEthernet1 O 10.10.30.0/24 [110/2] via 10.10.40.2, 00:13:31, GigabitEthernet1 C 10.10.40.0/24 is directly connected, GigabitEthernet1 L 10.10.40.1/32 is directly connected, GigabitEthernet1 C 10.20.20.12/30 is directly connected, GigabitEthernet2 L 10.20.20.13/32 is directly connected, GigabitEthernet2
CSRv03
core-csrv03#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override, p - overrides from PfR Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/2] via 10.10.30.1, 00:14:18, GigabitEthernet2 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 10.10.40.1, 00:14:08, GigabitEthernet3 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks C 10.10.20.0/24 is directly connected, GigabitEthernet1 L 10.10.20.2/32 is directly connected, GigabitEthernet1 C 10.10.30.0/24 is directly connected, GigabitEthernet2 L 10.10.30.2/32 is directly connected, GigabitEthernet2 C 10.10.40.0/24 is directly connected, GigabitEthernet3 L 10.10.40.2/32 is directly connected, GigabitEthernet3
ASAv
asav01# show route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, + - replicated route Gateway of last resort is 192.168.1.1 to network 0.0.0.0 S* 0.0.0.0 0.0.0.0 [1/0] via 192.168.1.1, out O 1.1.1.1 255.255.255.255 [110/12] via 10.10.20.2, 00:15:18, lan O 2.2.2.2 255.255.255.255 [110/12] via 10.10.20.2, 00:15:18, lan O 3.3.3.3 255.255.255.255 [110/11] via 10.10.20.2, 00:15:18, lan C 10.10.20.0 255.255.255.0 is directly connected, lan L 10.10.20.1 255.255.255.255 is directly connected, lan O 10.10.30.0 255.255.255.0 [110/11] via 10.10.20.2, 00:15:18, lan O 10.10.40.0 255.255.255.0 [110/11] via 10.10.20.2, 00:15:18, lan C 192.168.1.0 255.255.255.0 is directly connected, out L 192.168.1.75 255.255.255.255 is directly connected, out
Krok 5
Uruchamiamy PIM
Na każdym z routerów CSR wykonujemy komendy
ip multicast-routing distributed ip pim bidir-enable ip pim rp-address 3.3.3.3 bidir
oraz na każdym interfejsie włączamy PIM
interface Loopback0 ip pim sparse-mode
interface GigabitEthernet1 ip pim sparse-mode
a na CSRv03 dodatkowe na GigabitEthernet 2 i 3
interface GigabitEthernet2 ip pim sparse-mode interface GigabitEthernet3 ip pim sparse-mode
sprawdzamy dostępność sąsiedztwo w PIM
csr1000v01#show ip pim neighbor PIM Neighbor Table Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID Capable, L - DR Load-balancing Capable Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode 10.10.30.2 GigabitEthernet1 00:07:35/00:01:32 v2 1 / DR B S P G
csr1000v02#show ip pim neighbor PIM Neighbor Table Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID Capable, L - DR Load-balancing Capable Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode 10.10.40.2 GigabitEthernet1 00:00:11/00:01:32 v2 1 / DR B S P G
core-csrv03#show ip pim neighbor PIM Neighbor Table Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID Capable, L - DR Load-balancing Capable Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode 10.10.20.1 GigabitEthernet1 00:09:37/00:01:42 v2 1 / B G 10.10.30.1 GigabitEthernet2 00:09:38/00:01:28 v2 1 / B S P G 10.10.40.1 GigabitEthernet3 00:01:38/00:01:35 v2 1 / B S P G
Krok 6
Przechodzimy do właściwej konfiguracji w pierwszym etapie będziemy konfigurować VXVLAN pomiędzy CSRv02 i CSRv01 na tych dwóch urządzeniach będziemy wykonywać poniższe komendy:
w pierwszej kolejności definiujemy port udp do używania w vxvlan jest to konfiguracja opcjonalna według dokumentacji Cisco.
vxlan udp port 4444
tworzymy interfejs NVE (Network Virtualization Endpoint) gdzie definiujemy:
vni id jest id VXVLAN mamy duży wybór od 4096 do 16 milonów a dokładnie w zakresie 4096-16777215
mcast-group – wybieramy nasz adres multicast dla zdefiniowanego VNI
interface nve1 no ip address member vni 6666 mcast-group 239.100.100.100 source-interface Loopback0
po wykonaniu powyższego polecenia możemy sprawdzić dostępność peerów w nve
csr1000v01#show nve peers Interface Peer-IP VNI Peer state nve1 2.2.2.2 6666 -
csr1000v02#show nve peers Interface Peer-IP VNI Peer state nve1 1.1.1.1 6666 -
krok 7
Konfigurujemy bridge pomiędzy siecią fizyczną a siecią wirtualną czy konfigurujemy port który będzie miał dostęp do vxvlan
w tej chwili mamy dwie stacje z Windows 7, chcemy aby widziały się wzajemnie na tym kroku. PC1 ma adres 192.168.220.10 a PC2 192.168.220.20.
Na tych samych urządzeniach co wyżej konfigurowaliśmy interfejs NVE, teraz konfigurujemy port GI 2 tak aby był untagged
CSRv01
interface GigabitEthernet2 description csrv01<-->PC1 no ip address no sh service instance 6666 ethernet encapsulation untagged exit exit
tworzymy bridge domain – będzie nam łączyć vxvlan 6666 z portem Gi2
bridge-domain 6666 member vni 6666 member GigabitEthernet2 service-instance 6666
CSRv02
interface GigabitEthernet2 description csrv02<-->PC2 no ip address no sh service instance 6666 ethernet encapsulation untagged exit exit
tworzymy bridge domain – będzie nam łączyć vxvlan 6666 z portem Gi2
bridge-domain 6666 member vni 6666 member GigabitEthernet2 service-instance 6666
po wykonaniu tych kroków logujemy się na któregoś z PC i starmy się pingować drugiego, a na routerach CSRv01 i CSRv02 powinniśmy widzieć mac adresy w bridge-domain
csr1000v01#show bridge-domain 6666 Bridge-domain 6666 (2 ports in all) State: UP Mac learning: Enabled Aging-Timer: 300 second(s) GigabitEthernet2 service instance 6666 vni 6666 AED MAC address Policy Tag Age Pseudoport 0 000C.29B8.7ABF forward dynamic 289 nve1.VNI6666, VxLAN src: 1.1.1.1 dst: 2.2.2.2 0 000C.2990.8ACD forward dynamic 287 GigabitEthernet2.EFP6666
csr1000v02#show bridge-domain 6666 Bridge-domain 6666 (2 ports in all) State: UP Mac learning: Enabled Aging-Timer: 300 second(s) GigabitEthernet2 service instance 6666 vni 6666 AED MAC address Policy Tag Age Pseudoport 0 000C.29B8.7ABF forward dynamic 252 GigabitEthernet2.EFP6666 0 000C.2990.8ACD forward dynamic 213 nve1.VNI6666, VxLAN src: 2.2.2.2 dst: 1.1.1.1
Sprawdzamy jak wygląda status NVE
csr1000v02#show nve interface nve 1 detail Interface: nve1, State: Admin Up, Oper Up Encapsulation: Vxlan source-interface: Loopback0 (primary:2.2.2.2 vrf:0) Pkts In Bytes In Pkts Out Bytes Out 156 25307 28 3361
Krok 8
Przyszła pora na konfigurację Cisco ASAv
Konfigurujemy port udp dla VXVLAN
vxlan port 4444
włączamy multicast
multicast-routing
Konfigurujemy interfejs NVE
nve 1 encapsulation vxlan source-interface lan
na interfejsie GigiaEthernet 0/1 włączamy komunikację VXVLN
interface GigabitEthernet0/1 nve-only
przyszła pora na konfigurację interfejsu VNI i podłączenie do naszego segmentu vxvlan. Nadajemy IP które będzie dla PC1 i PC2 gateway do Internetu.
interface vni1 segment-id 6666 nameif vxvlan6666 security-level 0 ip address 192.168.200.1 255.255.255.0 vtep-nve 1 mcast-group 239.100.100.100 no sh
po wykonanu tych kroków sprawdzamy czy w NVE widzimy nowe sąsiedztwo oraz czy w bridge-domain widzimy mac adresy PC1,PC2, oraz GW
csr1000v01#show nve peers Interface Peer-IP VNI Peer state nve1 2.2.2.2 6666 - nve1 10.10.20.1 6666 -
csr1000v01#show bridge-domain 6666 Bridge-domain 6666 (2 ports in all) State: UP Mac learning: Enabled Aging-Timer: 300 second(s) GigabitEthernet2 service instance 6666 vni 6666 AED MAC address Policy Tag Age Pseudoport 0 000C.29B8.7ABF forward dynamic 245 nve1.VNI6666, VxLAN src: 1.1.1.1 dst: 2.2.2.2 0 000C.2927.C9A1 forward dynamic 299 nve1.VNI6666, VxLAN src: 1.1.1.1 dst: 10.10.20.1 0 000C.2990.8ACD forward dynamic 245 GigabitEthernet2.EFP6666
csr1000v02#show nve peers Interface Peer-IP VNI Peer state nve1 10.10.20.1 6666 - nve1 1.1.1.1 6666 - csr1000v02#show bridge-domain 6666 Bridge-domain 6666 (2 ports in all) State: UP Mac learning: Enabled Aging-Timer: 300 second(s) GigabitEthernet2 service instance 6666 vni 6666 AED MAC address Policy Tag Age Pseudoport 0 000C.29B8.7ABF forward dynamic 300 GigabitEthernet2.EFP6666 0 000C.2927.C9A1 forward dynamic 300 nve1.VNI6666, VxLAN src: 2.2.2.2 dst: 10.10.20.1 0 000C.2990.8ACD forward dynamic 174 nve1.VNI6666, VxLAN src: 2.2.2.2 dst: 1.1.1.1
asav01# show nve 1 summary nve 1, source-interface "lan" is up Encapsulation: vxlan Number of configured static peer VTEPs: 0 Number of discovered peer VTEPs: 2 Number of VNIs attached to nve 1: 1
asav01# show arp vtep-mapping vxvlan6666 192.168.200.20 000c.29b8.7abf 360 2.2.2.2 vxvlan6666 192.168.200.10 000c.2990.8acd 2154 1.1.1.1
Krok 9
Konfigurujemy NAT na Cisco ASAv tak aby stacje mogły dostać się do Internetu i sprawdzamy dostęp do Neta.
NAT:
nat (vxvlan6666,out) source dynamic any interface
ACL’ka
access-list vxvlan6666_access_in extended permit ip any any
ze PC1 lub PC2 sprawdzamy czy możemy dostać się do Internetu
Linki: