CCDP – High Availability & VSS

Tänkte skriva ett inlägg om Cisco’s VSS, vilket är en Cisco-proprietär lösning för att clustra två (eller fler, implementeras i par) fysiska 6500/4500 switch-chassin till en virtuell switch, vilket vi kommer se senare har en hel del fördelar sett till både prestanda & redundans. VSS finns just nu endast tillgängligt på Ciscos Catalyst 4500 & 6500-serie.

vss6500

High Availability

Layer 2 Looped

l2-loopad

Ovanstående är väl den vanligaste lösningen som åtminstone jag fått lära mig från CCNA/CCNP-spåret när vi vill ha redundans i access-lagret. Vi kör Lager 2 upp till distributions-lagret som i sin tur använder sig av något FHRP som HSRP eller VRRP.

Detta leder dock i sin tur att endast en distributions-switch är aktiv gateway (den andra står i standby och tar endast emot ~50% av returtrafiken tack vare lastbalansering), redundanta länkar blockeras dessutom av spanning-tree. Vi använder helt enkelt endast ~50-60% av den tillgängliga prestandan.

Genom att använda PVST/MST skulle vi dock åtminstone kunna lastbalansera mellan VLAN:en genom att göra D1 Active/RB för Vlan 20 och D2 Active/RB för Vlan 30 exempelvis, observera att STP-topologin kommer se annorlunda ut för de olika vlanen.

Layer 2 Loopfree

l2-loopfri

Om vi istället skulle konvertera etherchanneln mellan distributions-switcharna till en L3-länk kommer STP att släppa blockeringen på upplänkarna då det inte längre finns risk för någon loop, däremot är vi nu tvungna att använda oss av lokala vlan (vilket är en relativt ovanligt lösning fortfarande och kan vara svårt att realisera).

Vi kommer fortfarande endast ha en aktiv gateway, men vi kan åtminstone dela upp detta mellan distributions-switcharna för att få lastbalansering per vlan.

Layer 3 Routed

l3-routed

En tredje lösningen är att använda oss av ett helt routat nät, dvs köra Lager 3 hela vägen ner till access-lagret och låta exempelvis OSPF sköta hanteringen av redundanta länkar. Vi slipper även använda STP och det finns nu möjlighet att faktiskt använda all tillgänglig kapacitet då vi inte heller behöver något FHRP.

Detta är dock en betydligt dyrare lösning då det kräver access-switchar med MLS-funktioner och är därför inte heller den speciellt vanlig.

Cisco’s GLBP är även en tänkbar lösning för Layer 2-topologierna då det tillåter oss att ha flera aktiva gateways för ett och samma vlan, men verkar inte finnas implementerat i speciellt många switch-modeller ännu. Mer info om GLBP finns här & här!

Virtual Switching System

vss-logical

Då VSS slår samman distributions-switcharna till en logisk enhet ger det oss flera av fördelarna i likhet med den routade modellen. Vi behöver inte oroa oss för Spanning-tree och behöver heller inte använda oss av ett FHRP för Gateway-redundans.  Det ger oss även möjlighet att sätta upp en variant av Etherchannel (MEC) trots att vi terminerar kablarna i två skilda chassin, mer om detta längre ner i inlägget.

VSS-domain

VSS använder sig av SSO & NSF för att snabbt kunna svänga över till Standby-routern om ett fel skulle inträffa. Den aktiva switchen sköter alla “Control Plane”-funktioner som exempelvis:

  • Management (SNMP, Telnet, SSH)
  • Layer 2 Protokoll (BPDU, PDUs, LACP, PAgP etc)
  • Layer 3 Protokoll (OSPF, EIGRP etc)
  • Software data

Observera dock att “Data Plane” fortfarande är aktivt på Standby-switchen och används fullt ut till skillnad mot exempelvis HSRP! Både Active & Standby sköter individuellt forwarding lookups för inkommande trafik via “Policy Feature Card (PFC)”.

Vi kan verifiera vilken switch som är aktiv via kommandot “show switch virtual”:

vss#show switch virtual
Switch mode: Virtual Switch
Virtual switch domain number: 200 
Local switch number: 1 
Local switch operational role: Virtual Switch Active 
Peer switch number: 2 
Peer switch operational role: Virtual Switch Standby

Virtual-MAC

vss-mac

När vi bootar upp vår virtuella switch kommer den som är Active att sätta sin MAC-adress på samtliga Layer 3-interface, standby-switchen hämtar denna information och använder samma MAC på sina egna interface. Även om ett avbrott inträffar och Standby slår över till Active kommer den fortfarande att behålla denna MAC-adress! Startar vi däremot om båda switcharna och Dist-2 behåller sin roll som active kommer mac-adressen att ändras (till 5678 i ovanstående exempel).

Det finns även möjlighet att istället använda en virtuell mac-adress för att försäkra sig om att MAC-adressen alltid kommer vara densamma oavsett vilken av switcharna som blir aktiv efter omstart.  Switchen räknar själv ut adressen genom att kombinera VSS-gruppnumret med en pool av VSS-adresser. Konfigurationen är enligt följande:

VSS(config-vs-domain)# switch virtual domain 100
VSS (config-vs-domain)#mac-address use-virtual
Configured Router mac address (0008.e3ff.fd34) is different from operational 
value (0013.5f48.fe40). Change will take effect after the configuration is saved 
and the entire Virtual Switching System (Active and Standby) is reloaded.
VSS(config-vs-domain)#

VSL – Virtual Switch Link

En speciell typ av Etherchannel sätts upp mellan switcharna, VSL, för att ge den aktiva switchen möjlighet att kontrollera hårdvaran i standby-switchen. Den används även för att skicka information om “line card status”, Distributed Forwarding Card (DFC) programmering, system management, diagnostik men även vanlig data-trafik när det är nödvändigt.

vss-vsh

För att försäkra sig om att VSL-control frames har prioritet över vanlig datatrafik enkapsuleras data i en speciell “Virtual Switch Header (VSH)” på 32 bitar och sätter Priority-biten till 1. All trafik lastbalanseras och använder underliggande Etherchannel-protokollen LACP eller PAgP för att sätta upp kanalen. 6500 Switcharna har förövrigt en hel del mer hashing-scheman att använda till skillnad mot 3650 vi använder i skolan. 😉

vss(config)#port-channel load-balance ? 
dst-ip Dst IP Addr 
dst-mac Dst Mac Addr 
dst-mixed-ip-port Dst IP Addr and TCP/UDP Port 
dst-port Dst TCP/UDP Port 
mpls Load Balancing for MPLS packets 
src-dst-ip Src XOR Dst IP Addr 
src-dst-mac Src XOR Dst Mac Addr 
src-dst-mixed-ip-port Src XOR Dst IP Addr and TCP/UDP Port 
src-dst-port Src XOR Dst TCP/UDP Port 
src-ip Src IP Addr 
src-mac Src Mac Addr 
src-mixed-ip-port Src IP Addr and TCP/UDP Port 
src-port Src TCP/UDP Port

Har vi dessutom ett Supervisor Engine 2T-kort kan vi använda lastbalansera baserad på VLAN-information:

VSS2T(config)# port-channel load-balance ?
dst-ip Dst IP Addr 
dst-mac Dst Mac Addr 
dst-mixed-ip-port Dst IP Addr and TCP/UDP Port
dst-port Dst TCP/UDP Port
mpls Load Balancing for MPLS packets
src-dst-ip Src XOR Dst IP Addr 
src-dst-mac Src XOR Dst Mac Addr 
src-dst-mixed-ip-port Src XOR Dst IP Addr and TCP/UDP Port
src-dst-port Src XOR Dst TCP/UDP Port
src-ip Src IP Addr 
src-mac Src Mac Addr 
src-mixed-ip-port Src IP Addr and TCP/UDP Port
src-port Src TCP/UDP Port
vlan-dst-ip Vlan, Dst IP Addr 
vlan-dst-mixed-ip-port Vlan, Dst IP Addr and TCP/UDP Port
vlan-src-dst-ip Vlan, Src XOR Dst IP Addr 
vlan-src-dst-mixed-ip-port Vlan, Src XOR Dst IP Addr and TCP/UDP Port
vlan-src-ip Vlan, Src IP Addr 
vlan-src-mixed-ip-port Vlan, Src IP Addr and TCP/UDP Port

Fantastiskt nog har Cisco även implementerat en ny funktion för att faktiskt verifiera vilken väg trafiken tar, något som var oerhört omständigt tidigare, är väl bara att hoppas att detta även kommer i nyare IOS-versioner för de “enklare” switcharna också sen.

Det har även implementeras något som kallas “Adaptive Load-balacing”, vilket gör att switchen inte längre behöver behöver resetta sina portar om ett interface tas bort/läggs till i etherchanneln (avbrott som annars varade ~200-300ms, vilket på en 10Gb-länk kan vara en hel del förlorad data).

vss#sh etherchannel load-balance hash-result ?
interface Port-channel interface
ip IP address
ipv6 IPv6 
l4port Layer 4 port number 
mac Mac address 
mixed Mixed mode: IP address and Layer 4 port number 
mpls MPLS 
vss#sh etherchannel load-balance hash-result interface port-channel 120 ip 192.168.220.10 192.168.10.10 
Computed RBH: 0x4 
Would select Gi1/2/1 of Po120

vss-vslboot

När vi aktiverat VSS på switcharna används RRP för att bestämma vilken av switcharna som ska ta rollen som Active. Vi kan på förhand bestämma vilken vi vill ha som aktiv genom att konfigurera priority på båda switcharna.

Det finns även möjlighet till att konfigurera preemption, men detta avråder man ifrån att använda i Arch-boken då det leder till längre konvergenstid. VSL Etherchanneln måste bestå av minst två 10Gb-länkar (max 8) och ska helst termineras i två skilda linjekort för maximal redundans.

Multichassis EtherChannel (MEC)

vss-mec

En av de största fördelarna med VSS förutom den ökade redundansen är möjligheten att sätta upp en variant på Etherchannel trots att den fysiska kopplingen går till två skilda chassin. Lösningen kallas Multichassis Etherchannel (MEC) och kan konfigureras som både L2 eller L3. I princip fungerar MEC precis som en helt vanlig Etherchannel men något som däremot skiljer sig är hur lastbalanseringen utförs.

Istället för att endast använda en hashing-algoritm för att bestämma vilken port som skall användas prioriterar MEC alltid lokala interface över interface den behöver gå via VSL-länken för att nå. För trafik som måste floodas ut på VLANet (broadcast, multicast eller unknown unicast) skickas en kopia av paketet över VSL-länken, men från den dokumentation jag hittat ignoreras tydligen detta paket av mottagaren då den förutsätter att paketet redan skickats ut på LAN:et vilket låter lite märkligt, så hur väl detta stämmer låter jag vara osagt…

Inkommande “Control Plane”-trafik som STP, PAgP eller VTP-data kommer däremot att vidarebefordras över VSL-länken till Active-switchen då det bara finns en aktiv RP. MEC har förövrigt stöd för både PAgP & LACP och alla förhandlingar sköts av Active-switchen.

Om samtliga lokala interface på något av chassina skulle gå ner konverteras MEC till en vanlig Etherchannel och trafiken fortsätter skickas över VSL-länken istället utan något längre avbrott.

Redundans

Standby-switchen använder följande funktioner för att upptäcka eventuella fel som uppstår på primären:

  • VSL Protocol
  • Cisco Generic Online Diagnostics (GOLD) failure event
  • CDL-based hardware assistance
  • Full VSL-link down

vss-failover

Om standby upptäcker ett avbrott initieras en SSO switchover och den tar över rollen som Active vilket enligt Cisco ska ta under sekunden att göra.  Om däremot det endast är en av VSL-länkarna som går ner fortsätter switcharna precis som vanligt, däremot kommer trafik som skickas över återstående VSL-länkar att få en höjd delay på ~50-100ms.

Om däremot samtliga VSL-länkar går ner uppstår det en hel del problem!

vss-dualactive

Standby upptäcker att den inte längre har kontakt med Active och initierar därför en SSO failover och går själv över till Active-state. Men switchen som redan var i Active kommer däremot endast tro att den tappat kontakt med Standby och fortsätter som vanligt. Vi har nu två switchar som båda är i Active och som bl.a. använder samma IP- & MAC-adresser.

Detta leder ju i sin tur till en hel del problem som ip-konflikter och BPDU’s som skickas med samma Bridge-ID m.m. Det är därför väldigt viktigt med hög redundans för just VSL-länkarna och Cisco’s rekommendationer med att vi terminerar anslutningarna i olika linjekort.  Cisco har även implementerat ytterligare några säkerhetsfunktioner för att upptäcka detta så snabbt som möjligt:

  • Enchanced PAgP
  • Layer 3 BFD
  • Fast Hello

vss-pagp

Enhanced PAgP skickar vid avbrott på VSL-länken direkt ut ett PAgP-meddelande med TLV-fältet innehållandes dess VSS Active ID. Om de upptäcker en mismatch kommer den ena switchen direkt ställa sig i Recovery-mode istället.

Vi aktiverar detta via:

vss#conf t 
Enter configuration commands, one per line. End with CNTL/Z. 
vss(config)#switch virtual domain 10 
vss(config-vs-domain)#dual-active detection pagp 
vss(config-vs-domain)#dual-active trust channel-group 20 
vss(config-vs-domain)#

vss-fasthellos

Fast Hello’s kräver en dedikerad L2-länk mellan switcharna som endast används för att skicka just Fast Hellos, konfigen är dock väldigt simpel.

vss(config)# interface fastethernet 1/2/40
vss(config-if)# dual-active fast hello
WARNING: Interface FastEthernet1/2/40 placed in restricted config mode. All 
extraneous configs removed!
vss(config)# switch virtual domain 10
vss(config-vs-domain)# dual-active detection fast hello
vss(config-vs-domain)# exit)

BFD spar vi till en annan gång då det känns värdigt ett helt eget inlägg. :

MDH Lab – Switch Case Study

Topologi

lab4-3clean

Objectives

  • Plan and design the International Travel Agency switched network as shown in the diagram and described below.
  • Implement the design on the switches and router.
  • Verify that all configurations are operational and functioning according to the requirements.

Requirements

You will configure a group of switches and a router for the International Travel Agency. The network includes two distribution switches, S1 and S3, and two one access layer switches, S2. External router R3 and S1 provide inter-VLAN routing. Design the addressing scheme using the address space 172.16.0.0/16 range. You can subnet it any way you want, although it is recommended to use /24 subnets for simplicity.

  1. Place all switches in the VTP domain CISCO. Make S1 the VTP server and all other switches VTP clients.
  2. On S1, create the VLANs shown in the VLAN table and assign the names given. For subnet planning, allocate a subnet for each VLAN.
  3. Configure S1 as the primary spanning-tree root bridge for all VLANs. Configure S3 as the backup root bridge for all VLANs.
  4. Configure Fa0/4 between S1 and S3 as a Layer 3 link and assign a subnet to it.
  5. Create a loopback interface on S1 and assign a subnet to it.
  6. Configure the Fa0/3 link between S1 and S3 as an ISL trunk.
  7. Statically configure all inter-switch links as trunks.
  8. Configure all other trunk links using 802.1Q.
  9. Bind together the links from S1 & S3 to the access-switch together in an EtherChannel.
  10. Enable PortFast on all access ports.
  11. On S2, place Fa0/15 through Fa0/17 in VLAN 10. Place Fa0/19 and Fa0/25 in VLAN 20. Place Fa0/21-22 in VLAN 30.
  12. Create an 802.1Q trunk link between R3 and S3. Only VLANs 10 and 40 to pass through the trunk.
  13. Configure R2 subinterfaces for VLANs 10 and 40.
  14. Create an SVI on S1 in VLANs 20, 30, and 40. Create an SVI on S3 in VLAN 10 and 30, an SVI on S2 in VLAN 40.
  15.  Enable IP routing on S1 and S3. On R2 and S1, configure EIGRP for the whole major network (172.16.0.0/16) and disable automatic summarization.

VLANs:

  • Vlan 10 – Red
  • Vlan 20 – Blue
  • Vlan 30 – Orange
  • Vlan 40 – Green

Genomförande

Subnetting

Jag har som synes redan lagt in den subnetting jag gjorde i topologin men såhär ser den ut iaf: 172.16.0.0/16

Vlan 10 - Red 172.16.10.0/24
 Vlan 20 - Blue 172.16.20.0/24
 Vlan 30 - Orange 172.16.30.0/24
 Vlan 40 - Green 172.16.40.0/24

S1

Lo0 - 172.16.1.1/24
Vlan 20 - 172.16.20.1/24
Vlan 30 - 172.16.30.1/24
Vlan 40 - 172.16.40.1/24
S1-S3 Link - 172.16.13.1/24

S3

Vlan 10 - 172.16.10.3/24
S1-S3 Link - 172.16.13.3/24

S2

Vlan 40 - 172.16.40.2/24

R3

Vlan 40 - 172.16.40.200/24
Vlan 10 - 172.16.10.200/24

Med den information vi fått ovan kan vi uppdatera vår topologi lite:

Basic L2-konfig

S1 – Kom ihåg att S1 även ska vara Root-bridge för samtliga VLAN & VTP-server

Switch(config)#hostname S1
 S1(config)#line con 0
 S1(config-line)#logging sync
 S1(config-line)#!Trunk-links till S2
 S1(config-line)#int range fa0/1 - 2
 S1(config-if-range)#switchport trunk encaps dot1q
 S1(config-if-range)#switchport mode trunk
 S1(config-if-range)#description to S2
 S1(config-if-range)#channel-protocol lacp
 S1(config-if-range)#channel-group 1 mode active
 Creating a port-channel interface Port-channel 1
S1(config-if-range)#!L3-link till S3
 S1(config-if-range)#inte fa0/4
 % Command exited out of interface range and its sub-modes.
 Not executing the command for second and later interfaces
 S1(config-if)#no switchport
 S1(config-if)#ip add 172.16.13.1 255.255.255.0
 S1(config-if)#description to S3 L3-port
 S1(config-if)#!ISL-trunk till S3
 S1(config-if)#int fa0/3
 S1(config-if)#switchport trunk encapsulation isl
 S1(config-if)#switchport mode trunk
 S1(config-if)#description Trunklink to S3
 S1(config-if)#!VTP
 S1(config-if)#exit
 S1(config)#vtp mode server
 Device mode already VTP SERVER.
 S1(config)#vtp domain CISCO
 Changing VTP domain name from NULL to CISCO
 S1(config)#
 *Mar 1 00:14:20.226: %SW_VLAN-6-VTP_DOMAIN_NAME_CHG: VTP domain name changed to CISCO.
 S1(config)#!VLANs
 S1(config)#vlan 10
 S1(config-vlan)#name Red
 S1(config-vlan)#vlan 20
 S1(config-vlan)#name Blue
 S1(config-vlan)#vlan 30
 S1(config-vlan)#name Orange
 S1(config-vlan)#vlan 40
 S1(config-vlan)#name Green
 S1(config-vlan)#exit
 S1(config)#spanning-tree vlan 1,10,20,30,40 root primary

S3 – Ska även vara Secondary Root-bridge för samtliga vlan

Switch(config)#hostname S3
 S3(config)#line con 0
 S3(config-line)#logging sync
 S3(config-line)#!Trunk-links till S2
 S3(config-line)#int range fa0/1 - 2
 S3(config-if-range)#switchport trunk encaps dot1q
 S3(config-if-range)#switchport mode trunk
 S3(config-if-range)#channel-protocol lacp
 S3(config-if-range)#channel-group 1 mode active
 Creating a port-channel interface Port-channel 1
S3(config-if-range)#
 S3(config-if-range)#description to S2
 S3(config-if-range)#inte fa0/3
 % Command exited out of interface range and its sub-modes.
 Not executing the command for second and later interfaces
 S3(config-if)#!ISL-trunk till S1
 S3(config-if)#switchport trunk encaps ISL
 S3(config-if)#switchport mode trunk
 S3(config-if)#description ISL-trunk to S1
 S3(config-if)#!L3-port till S1
 S3(config-if)#int fa0/4
 S3(config-if)#no switchport
 S3(config-if)#ip add 172.16.13.3 255.255.255.0
 S3(config-if)#description L3-link to S1
 S3(config-if)#exit
 S3(config)#vtp mode client
 Setting device to VTP CLIENT mode.
 S3(config)#vtp domain CISCO
 Domain name already set to CISCO.
 S3(config)#spanning-tree vlan 1,10,20,30,40 root secondary

S2

Switch(config)#hostname S2
 S2(config)#line con 0
 S2(config-line)#logging sync
 S2(config-line)#!Etherchannels till S1 & S3
 S2(config-line)#inte range fa0/1 - 2
 S2(config-if-range)#switchport mode trunk
 S2(config-if-range)#description to S1
 S2(config-if-range)#channel-protocol lacp
 S2(config-if-range)#channel-group 1 mode passive
 Creating a port-channel interface Port-channel 1
S2(config-if-range)#int range fa0/3 - 4
 S2(config-if-range)#switchport mode trunk
 S2(config-if-range)#description to S3
 S2(config-if-range)#channel-protocol lacp
 S2(config-if-range)#channel-group 2 mode passive
 Creating a port-channel interface Port-channel 2
S2(config-if-range)#exit
 S2(config)#!VTP
 S2(config)#vtp mode client
 Setting device to VTP CLIENT mode.
 S2(config)#vtp domain CISCO
 Domain name already set to CISCO.
S2(config)#!Host-interface
 S2(config)#int range fa0/15 - 17
 S2(config-if-range)#switchport mode access
 S2(config-if-range)#switchport access vlan 10
 S2(config-if-range)#spanning-tree portfast
 S2(config-if-range)#int range fa0/19 - 20
 S2(config-if-range)#switchport mode access
 S2(config-if-range)#switchport access vlan 20
 S2(config-if-range)#spanning-tree portfast
 S2(config-if-range)#int range fa0/21-22
 S2(config-if-range)#switchport mode access
 S2(config-if-range)#switchport access vlan 30
 S2(config-if-range)#spanning-tree portfast
 S2(config-if-range)end

L3-Konfig

S1 – Kom ihåg att aktivera routing innan vi lägger in EIGRP-konfig

S1(config)#int lo0
 S1(config-if)#ip add 172.16.1.1 255.255.255.0
 S1(config-if)#!SVIs for VLANs
 S1(config-if)#int vlan 20
 S1(config-if)#ip add 172.16.20.1 255.255.255.0
 S1(config-if)#description Red
 S1(config-if)#int vlan 30
 S1(config-if)#ip add 172.16.30.1 255.255.255.0
 S1(config-if)#description Blue
 S1(config-if)#int vlan 40
 S1(config-if)#ip add 172.16.40.1 255.255.255.0
 S1(config-if)#description Green
 S1(config-if)#exit
 S1(config)#ip routing
 S1(config)#router eigrp 1
 S1(config-router)#network 172.16.0.0
 S1(config-router)#no auto
 S1(config-router)#no auto-summary

S3

S3(config)#int vlan 10
 S3(config-if)#ip add 172.16.10.3 255.255.255.0
 S3(config-if)#description Red
 S3(config-if)#int vlan 30
 S3(config-if)#ip add 172.16.30.3 255.255.255.0
 S3(config-if)#description Orange
 S3(config-if)#exit
 S3(config)#ip routing
S3(config-if)#!trunk to R3
S3(config-if)#int fa0/5
S3(config-if)#description trunk to R3
S3(config-if)#switchport mode trunk
S3(config-if)#switchport trunk allowed vlan 10,40

S2

S2(config)#int vlan 40 
S2(config-if)#ip add 172.16.40.2 255.255.255.0 
S2(config-if)#description Green

Då var all switch-konfig klar, endast routern kvar.. R3

Router(config)#hostname R3
 R3(config)#inte fa0/1
 R3(config-if)#description to S3-trunklink
 R3(config-if)#no shut
 R3(config-if)#inte fa0/1.10
 R3(config-subif)#encapsulation dot1q 10
 R3(config-subif)#ip add 172.16.10.200 255.255.255.0
 R3(config-subif)#inte fa0/1.40
 R3(config-subif)#encapsulation dot1q 40
 R3(config-subif)#ip add 172.16.40.200 255.255.255.0
 R3(config-subif)#exit
R3(config)#router eigrp 1
 R3(config-router)#network 172.16.0.0
 R3(config-router)#no auto-summary
 R3(config-router)#end

Verifiering – L3

S1#sh ip route
Codes: 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
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 6 subnets
C 172.16.40.0 is directly connected, Vlan40
C 172.16.30.0 is directly connected, Vlan30
C 172.16.20.0 is directly connected, Vlan20
C 172.16.13.0 is directly connected, FastEthernet0/4
D 172.16.10.0 [90/28416] via 172.16.40.200, 00:01:51, Vlan40
C 172.16.1.0 is directly connected, Loopback0
R3#sh ip route
Codes: 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
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 6 subnets
C 172.16.40.0 is directly connected, FastEthernet0/1.40
D 172.16.30.0 [90/28416] via 172.16.40.1, 00:02:35, FastEthernet0/1.40
D 172.16.20.0 [90/28416] via 172.16.40.1, 00:02:35, FastEthernet0/1.40
D 172.16.13.0 [90/30720] via 172.16.40.1, 00:02:35, FastEthernet0/1.40
C 172.16.10.0 is directly connected, FastEthernet0/1.10
D 172.16.1.0 [90/156160] via 172.16.40.1, 00:02:35, FastEthernet0/1.40
S1#ping 172.16.40.200
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/9 ms
S1#ping 172.16.10.200
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/8 ms
S1#ping 172.16.40.2
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/9 ms
R3#ping 172.16.40.2
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

Verifiering L2

S3#sh interface trunk
Port Mode Encapsulation Status Native vlan
Fa0/3 on isl trunking 1
Fa0/5 on 802.1q trunking 1
Po1 on 802.1q trunking 1
Port Vlans allowed on trunk
Fa0/3 1-4094
Fa0/5 10,40
Po1 1-4094
S1#sh spanning-tree summary
Switch is in pvst mode
Root bridge for: VLAN0001, VLAN0010, VLAN0020, VLAN0030, VLAN0040
S2#sh etherchannel summary
Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 2
Number of aggregators: 2
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Fa0/1(P) Fa0/2(P) 
2 Po2(SU) LACP Fa0/3(P) Fa0/4(P)

Härligt! Stötte på lite problem under labben då det visade sig att interfacet jag tänkte använda mellan Switch & Router inte var directly connected. Det var inga problem att sätta upp trunkingen etc men trafiken fastnade i någon dold switch eller dylikt. Från början var det tänkt att Routern skulle vara ansluten till S2 men det fanns tyvärr inget interface att använda där som fungerade. Fick istället göra om ritningen lite och använda länken mellan R3-S3 men det fungerade ju precis lika bra efter lite mindre modifieringar. 🙂 Kul labb!

MDH Lab – Inter-VLAN MLS Routing

Topologi

lab4-2real

Objective

  • Route between VLANs using a 3560 switch with an internal route processor using Cisco Express Forwarding (CEF).

Background

The current network equipment includes a 3560 distribution layer switch and two 2960 access layer switches. The network is segmented into three functional subnets using VLANs for better network management. The VLANs include Finance, Engineering, and a subnet for equipment management, which is the default management VLAN, VLAN 1. After VTP and trunking have been configured for the switches, switched virtual interfaces (SVI) are configured on the distribution layer switch to route between these VLANs, providing full connectivity to the internal network.

Genomförande

Easy! Blir inte så mycket förklaringar här då all konfig är rätt självklar. Först fixar vi upp grundkonfigen:

S1

Switch(config)#hostname S1
S1(config)#line con 0
S1(config-line)#logging sync
S1(config-line)#int range fa0/3 - 4
S1(config-if-range)#switchport trunk encaps dot1q
S1(config-if-range)#switchport mode trunk
S1(config-if-range)#channel-protocol pagp
S1(config-if-range)#channel-group 2 mode desirable 
Creating a port-channel interface Port-channel 2
S1(config-if-range)#int range fa0/1 - 2
S1(config-if-range)#switchport trunk encaps dot1q
S1(config-if-range)#switchport mode trunk
S1(config-if-range)#channel-protocol pagp
S1(config-if-range)#channel-group 1 mode desirable
Creating a port-channel interface Port-channel 1
S1(config-if-range)#exit
S1(config)#vtp mode server
Device mode already VTP SERVER.
S1(config)#vtp domain Cisco
Changing VTP domain name from NULL to Cisco
S1(config)#vlan 100
S1(config-vlan)#name Finance
S1(config-vlan)#vlan 200
S1(config-vlan)#name Engineering
S1(config-vlan)#exit
S1(config)#spanning-tree vlan 1,100,200 root primary 
S1(config)#

S3

Switch(config)#hostname S3
S3(config)#line con 0
S3(config-line)#logging sync
S3(config-line)#int range fa0/1 - 4
S3(config-if-range)#switchport trunk encaps dot1q
S3(config-if-range)#switchport mode trunk
S3(config-if-range)#int range fa0/1 - 2
S3(config-if-range)#channel-protocol pagp
S3(config-if-range)#channel-group 1 mode desirable 
Creating a port-channel interface Port-channel 1
3(config-if-range)#int range fa0/3 - 4
S3(config-if-range)#channel-protocol pagp
S3(config-if-range)#channel-group 2 mode auto
Creating a port-channel interface Port-channel 2
S3(config-if-range)#exit
S3(config)#vtp domain Cisco
Domain name already set to Cisco.
S3(config)#vtp mode client
Setting device to VTP CLIENT mode.

S2

Switch(config)#hostname S2
S2(config)#int range fa0/1 - 4
S2(config-if-range)#switchport mode trunk
S2(config-if-range)#int range fa0/1 - 2
S2(config-if-range)#channel-protocol pagp
S2(config-if-range)#channel-group 1 mode auto
Creating a port-channel interface Port-channel 1
S2(config-if-range)#int range fa0/3 - 4
S2(config-if-range)#channel-protocol pagp
S2(config-if-range)#channel-group 2 mode auto
Creating a port-channel interface Port-channel 2
S2(config-if-range)#exit
S2(config)#vtp mode client
Setting device to VTP CLIENT mode.
S2(config)#vtp domain Cisco
Domain name already set to Cisco.
S2#sh etherchannel summary
Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 2
Number of aggregators: 2
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) PAgP Fa0/1(P) Fa0/2(P) 
2 Po2(SU) PAgP Fa0/3(P) Fa0/4(P)
S3#sh etherchannel summary
Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 2
Number of aggregators: 2
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) PAgP Fa0/1(P) Fa0/2(P) 
2 Po2(SU) PAgP Fa0/3(P) Fa0/4(P)

Allt ok så långt!

Så då återstår det bara att konfa upp lite L3 SVI’s, vilket är oerhört enkelt egentligen.

S1(config)#interface vlan 1
S1(config-if)#ip add 172.16.1.1 255.255.255.0
S1(config-if)#no shut
S1(config-if)#interface vlan 100
S1(config-if)#ip add 172.16.100.1 255.255.255.0
S1(config-if)#no shut
S1(config-if)#interface vlan 200
S1(config-if)#ip add 172.16.200.1 255.255.255.0
S1(config-if)#no shut
S1(config-if)#exit

Lätt att glömma är att vi även måste aktivera routing-funktionen i switchen!

S1(config)#ip routing

Vi har ju tyvärr ingen host att testa med nu men vi kan åtminstone dra en ping från S3 till något av S1’s vlan.

S3(config)#int vlan 1
S3(config-if)#ip add 172.16.1.3 255.255.255.0
S3(config-if)#no shut
S3(config-if)#exit
S3(config)#ip default-gateway 172.16.1.1
S3(config)#do ping 172.16.200.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.200.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/203/1007 ms

Vackert.

Om vi tar en titt i CEF-table för 172.16.1.3 kan vi se följande:

S1#sh ip cef 172.16.1.3 detail
 172.16.1.3/32, epoch 2, flags attached
 Adj source: IP adj out of Vlan1, addr 172.16.1.3 038C1420
 Dependent covered prefix type adjfib cover 172.16.1.0/24
 attached to Vlan1

Och switchen har även ett entry i adjacency-table med L2-information för nexthop (S3):

S1#sh adjacency detail
Protocol Interface Address
IP Vlan1 172.16.1.3(8)
0 packets, 0 bytes
epoch 0
sourced in sev-epoch 0
Encap length 14
0014A8899CC00024C33F9EC00800
L2 destination address byte offset 0
L2 destination address byte length 6
Link-type after encap: ip
ARP

MDH Lab – Etherchannel

Topologi

lab2-2

Objective

  • Configure EtherChannel

Background

Four switches have just been installed. The distribution layer switches are Catalyst 3560 switches, and the access layer switches are Catalyst 2960 switches. There are redundant uplinks between the access layer and
distribution layer.

Usually, only one of these links could be used; otherwise, a bridging loop might occur. However, using only one link utilizes only half of the available bandwidth. EtherChannel allows up to eight redundant links to be bundled together into one logical link.

In this lab, you configure Port Aggregation  Protocol (PAgP), a Cisco EtherChannel protocol, and Link Aggregation Control Protocol (LACP), an IEEE 802.3ad open standard version of EtherChannel.

Genomförande

Är som synes samma topologi från förra labben så all gammal konfig ligger fortfarande kvar, bör dock inte ställa till med några problem förhoppningsvis. Har dock tagit bort ip-adresserna från vlan 1 (default interface vlan 1) på samtliga switchar.

Låt oss börja med att konfa upp PAgP & LACP.

S1 – PAgP

S1(config)#int range fa0/1 - 2
S1(config-if-range)#shut
S1(config-if-range)#channel-protocol pagp
S1(config-if-range)#channel-group 1 mode desirable 
Creating a port-channel interface Port-channel 1
S1(config-if-range)#no shut

S2 – PAgP

S2(config)#int range fa0/1 - 2
S2(config-if-range)#shut
S2(config-if-range)#channel-protocol pagp
S2(config-if-range)#channel-group 1 mode auto
Creating a port-channel interface Port-channel 1
S2(config-if-range)#no shut

S2 – LACP (Obs, kom ihåg att använda en ny channel-group!)

S2(config)#inte range fa0/3 -4
S2(config-if-range)#shut
S2(config-if-range)#channel-protocol lacp
S2(config-if-range)#channel-group 2 mode passive
Creating a port-channel interface Port-channel 2
S2(config-if-range)#no shut

S3 – LACP

S3(config)#int range fa0/1 -2 
S3(config-if-range)#shut
S3(config-if-range)#channel-protocol lacp
S3(config-if-range)#channel-group 2 mode active
Creating a port-channel interface Port-channel 2
S3(config-if-range)#no shut

Enklast är väl att verifiera på S2 att allt är ok.

S2#sh etherchannel summary
Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 2
Number of aggregators: 2
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) PAgP Fa0/1(P) Fa0/2(P) 
2 Po2(SU) LACP Fa0/3(P) Fa0/4(P)

Allt ok så långt.

Innan vi sätter upp L3-Etherchannel mellan S1 & S3 måste vi vara noga med att konfa upp det i rätt ordning, se tidigare inlägg för en genomgång av L3-Etherchannel.

S1

S1(config)#int range fa0/3 - 4
S1(config-if-range)#shut
S1(config-if-range)#no switchport 
S1(config-if-range)#channel-group 5 mode on
Creating a port-channel interface Port-channel 5
S1(config-if-range)#int po5
% Command exited out of interface range and its sub-modes.
 Not executing the command for second and later interfaces
S1(config-if)#ip add 10.1.1.101 255.255.255.0

S3

S3(config)#int range fa0/3 - 4
S3(config-if-range)#shut
S3(config-if-range)#no switchport 
S3(config-if-range)#channel-group 5 mode on
Creating a port-channel interface Port-channel 5
S3(config-if-range)#no shut
S3(config-if-range)#int po5
% Command exited out of interface range and its sub-modes.
 Not executing the command for second and later interfaces
S3(config-if)#ip add 10.1.1.102 255.255.255.0
S3(config-if)#end
S3#ping 10.1.1.101
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.101, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/3/9 ms

Då var det bara last-balanseringen kvar, vilket är väldigt simpelt att konfa.

För S1, S2 & S3:

S3(config)#port-channel load-balance src-dst-mac
S3#show etherchannel load-balance 
EtherChannel Load-Balancing Configuration:
 src-dst-mac
EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
 IPv4: Source XOR Destination MAC address
 IPv6: Source XOR Destination MAC address

Klart!

Switching – Etherchannel L2/L3

Under dagens föreläsning om InterVLAN-routing kom det upp en intressant fråga gällande Etherchannel som ingen riktigt visste svaret på från följande bild:

etherchannel-l3-question

Frågan var – Räcker det inte att konfigurera “no switchport” på Port-channeln endast?

Då jag testat det här en hel del tidigare tänkte jag det kunde vara lika bra att skriva ett inlägg om det. Det finns nämligen en hel del att tänka på när det kommer till i vilken ordning vi skapar vår port-channel.

Om vi endast försöker konfigurera vår port-channel  till “no switchport” och sedan förlita oss på att den ska spegla detta till “parent”-interfacen lär vi se en hel del problem som jag tänkte ta och visa exempel på i det här inlägget. Om du istället är ute efter mer grundläggande information om Etherchannel se tidigare inlägg här.

Något som du säkert redan känner till är att vid skapandet av Portchannel-interfacet så kollar switchen först vad “parent”-interfacen har för konfiguration och återspeglar sedan detta, likaså om vi i efterhand lägger till konfiguration på port-channeln så skickas detta (oftast) till våra parent-interface.

Men inte helt självklart är att detta även gäller huruvida det ska skapas en L2 eller L3-portchannel, detta kan nämligen leda till en hel del problem…

Vi tar och testar detta i praktiken:

S1(config)#inte range fa0/3 - 4
 S1(config-if-range)#shut
 S1(config-if-range)#channel-group 1 mode on
 Creating a port-channel interface Port-channel 1
 S1(config-if-range)#no shut

Om vi nu kollar status för port-channeln ser vi följande:

S1(config-if-range)#do sh etherchannel summary
 Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port
 Number of channel-groups in use: 1
 Number of aggregators: 1
Group Port-channel Protocol Ports
 ------+-------------+-----------+-----------------------------------------------
 1 Po1(SU) - Fa0/3(P) Fa0/4(P)

Vår port-channel är som synes en Layer 2-port och i status “In Use”/Bundled, allt ok så långt.

Men frågan är vad som händer när vi försöker lägger in no switchport på Port-channel 1? Det bör ju även speglas till våra vanliga interface?

S1(config)#inte po1
S1(config-if)#no switchport 
Command rejected: Not a convertible port.

Det är nämligen så att om vi skapat en Layer 2-portchannel kan vi EJ lägga till L3-interface i vår channel-group. Observera att det inte är själva port-channeln som nekar “no switchport”, utan det är när switchen försöker sätta parent-interfacen Fa0/3 & Fa0/4 till no switchport som det tar stopp.

Vi kan verifiera detta med att även försöka lägga in det direkt på interfacen istället.

S1(config-if)#int range fa0/3 - 4
S1(config-if-range)#no switchport 
S1(config-if-range)#

Nu kanske du tänker – men vafan det fungerade! Vi fick ju inget felmeddelande?

Men låt oss ta en titt på vår port-channel igen…

S1(config-if-range)#do sh etherchannel summary
Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SD) -

Observera att det inte längre finns några portar i vår channel-group! Let’s repeat, vi kan EJ ha L3-interface i en L2-portchannel! Etherchanneln anser därför att interfacen fa0/3 & fa0/4 är invalid och plockar bort dem från gruppen, switchen är till och med så snäll att den tar bort vår channel-group konfig:

Building configuration...
Current configuration : 63 bytes
!
interface FastEthernet0/3
 no switchport
 no ip address
end
interface FastEthernet0/4
 no switchport
 no ip address
end

För att krångla till det lite ytterligare, när vi inte längre har några medlemmar i en channel-group kan vi faktiskt ändra vår L2-portchannel till L3. 🙂

S1(config-if-range)#int po1
% Command exited out of interface range and its sub-modes.
 Not executing the command for second and later interfaces
S1(config-if)#no switchport
*Mar 1 01:00:57.852: %LINK-3-UPDOWN: Interface Port-channel1, changed state to down
S1(config-if)#do sh etherchannel summary
Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(RD) -

Vi har nu en Layer 3-portchannel och kan därför lägga till våra L3-interface till gruppen igen.

S1(config-if)#int range fa0/3 - 4     
S1(config-if-range)#channel-group 1 mode on
*Mar 1 01:02:27.719: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
*Mar 1 01:02:28.726: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to up

För att summera – det är EXTREMT viktigt att tänka efter i vilken ordning vi skapar vår etherchannel. 

Att konfigurera interfacen i följande ordning hade orsakat samma problem:

int range fa0/3 - 4
channel-group 1 mode on
no switchport

int port-channel 1
no switchport

Vill vi ha en L3-portchannel måste vi ALLTID specificera no switchport på interfacet INNAN vi ansluter den till en channel-group (som sedan i sin tur skapar port-channeln). Alternativt så skapar vi port-channeln själva först och konfigurerar parent-interface i efterhand:

interface port-channel 5
no switchport
ip add 10.0.0.1 255.255.255.0
int range fa0/3 - 4
no switchport 
channel-group 5 mode on

Här måste vi dock istället passa oss så vi inte försöker lägga till ett L2-interface till en L3-portchannel och återigen får problem. 😉

S1(config)#int port-channel 5
S1(config-if)#no switchport 
S1(config-if)#ip add 10.0.0.1 255.255.255.0
S1(config-if)#int range fa0/3 - 4
S1(config-if-range)#channel-group 5 mode on
Command rejected (Port-channel5, Fa0/3): Either port is L2 and port-channel is L3, or vice-versa
% Range command terminated because it failed on FastEthernet0/3

En hel del att tänka på med andra ord som kanske inte är så självklart alla gånger. 🙂

Switching – Etherchannel

Etherchannel ger oss möjlighet att aggregera redundanta länkar, och vi kan på så vis ta vara på all potentiell bandbredd istället för att länkarna ska blockeras av Spanning-tree. Nedanstående video från Keith Barker förklarar konceptet väldigt bra:

  • Interfacen som används måste ligga i samma VLAN alt. vara trunk-portar
  • Kan ej använda SPAN
  • Ändringar i det logiska port-channel interfacet påverkar alla portar i gruppen (channel-group)
  • Ändringar på enskilt interface återspeglas ej till gruppen, alla interface i gruppen måste ha identisk konfig!
  • Rekommenderat att konfigurera Speed & Duplex manuellt på samtliga länkar
  • Supportar länkhastigheter från 100M upp till 10 Gigabit
  • Etherchanneln kan användas som en L2 access-port, trunk, tunnel eller L3-interface

Etherchannel har stöd för att aggregera 2 till maximalt 8 aktiva länkar!

Protokoll

etherchannelprotocol

negotiation_modes

Som synes måste vi konfigurera Active eller Desirable på åtminstone en av switcharna för att det ska bildas en Etherchannel om vi använder oss av protokollen LACP eller PAgP.  Vi kan även “hårdkonfa” en Etherchannel utan att använda PAgP eller LACP via kommandot “channel-group x mode on”.

När vi konfigurerar Etherchannel rekommenderar Brian Dennis (CCIEx4) från INE att man alltid först stänger ner berörda interface för att undvika en del buggar som kan uppstå, detta är dock inget som nämns i Cisco materialet.

Port Aggregation Protocol (PAgP)

  • Cisco proprietärt
  • Använder channel-modes: desirable & auto

netlab

S1

S1(config)#int range fa0/3 - 4
S1(config-if-range)#shut
S1(config-if-range)#channel-protocol pagp
S1(config-if-range)#channel-group 1 mode desirable
S1(config-if-range)#no shut
Creating a port-channel interface Port-channel 1
*Mar 1 00:14:54.435: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/3, changed state to up
*Mar 1 00:14:54.879: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/4, changed state to up

Observera dock att port-channel interfacet ej kom upp! Då vi konfade interfacet till desirable kommer S1 nu börja skicka PAgP-paket till S3, men den kommer inte skapa Etherchanneln förrän den fått svar.

S3

S3(config)#int range fa0/3 - 4
S3(config-if-range)#shut
S3(config-if-range)#channel-protocol pagp
S3(config-if-range)#channel-group 1 mode auto
S3(config-if-range)#no shut
Creating a port-channel interface Port-channel 1
*Mar 1 00:15:46.167: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/4, changed state to up
*Mar 1 00:15:46.285: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/3, changed state to up
*Mar 1 00:15:52.039: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
*Mar 1 00:15:53.046: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to up

S3 börjar nu svara på S1’s förfrågan om att skapa en Etherchannel och interfacet går därför upp både på S1 & S3, vilket tog cirka 7 sekunder i min topologi med 2st 3560’s.

 1#show etherchannel summary
 Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
 M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port

Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) PAgP Fa0/3(P) Fa0/4(P)

Unikt för PAgP är även funktionen “non-silent“:

S3(config-if)#channel-group 1 mode desirable ?
 non-silent Start negotiation only after data packets received
S3(config-if)#channel-group 1 mode auto ?
 non-silent Start negotiation only after data packets received

Cisco ger följande rekommendationer för hur vi ska konfigurera detta:

  • Use the non-silent keyword when you connect to a device that transmits bridge protocol data units (BPDUs) or other traffic. Use this keyword with the auto or desirable mode. PAgP non-silent adds an extra level of link state detection because it listens for BPDUs or other traffic in order to determine if the link functions properly. This adds a form of UniDirectional Link Detection (UDLD) capability that is not available when you use the default silent PAgP mode.
  • Use the silent keyword when you connect to a silent partner (which is a device that does not generate BPDUs or other traffic). An example of a silent partner is a traffic generator that does not transmit packets. Use the silent keyword with auto or desirable mode. If you do not specify silent or non-silent, silent is assumed.
  • The silent mode does not disable the PAgP ability to detect unidirectional links. However, when you configure a channel, non-silent prevents a unidirectional port from even joining the link.
  • A PAgP configuration (the set port channel {desirable | auto} command) is safer than a non-PAgP configuration (the set port channel on command). A PAgP configuration provides protection for unidirectional links and also avoids misconfigurations that can arise when there are ports channeling on one side of the link and not on the other side.

http://www.cisco.com/en/US/tech/tk389/tk213/technologies_tech_note09186a00800949c2.shtml#silent

Link Aggregation Control Protocol (LACP)

  • Öppen/Industri-standard, 802.3ad
  • Använder channel-modes: active & passive

LACP ger oss även möjligheten att lägga till totalt 16st interface i en “channel-group”. Etherchannel kommer fortfarande endast ha 8st aktiva interface, men skulle en av dessa länkar gå ner aktiveras istället någon av de andra åtta som står i standby-läge!

Vilken port som blir aktiv/standby bestäms efter “port priority-number” – lägst nummer = högst prio.  Består av 2 byte priority & 2 byte port-name, per default väljs de med lägst interface-nummer. Kan konfigureras via:

S3(config)#inte fa0/3
 S3(config-if)#lacp port-priority ?
 <0-65535> Priority value

Supportar 100M FastEthernet till 10 Gigabit – dvs vi kan få upp till (8x10Gb)x2=160Gb.

S1

 S1(config)#int range fa0/3 - 4
 S1(config-if-range)#shut
 S1(config-if-range)#channel-protocol lacp
 S1(config-if-range)#channel-group 1 mode active
 S1(config-if-range)#no shut

S3

 S3(config)#int range fa0/3 - 4
 S3(config-if-range)#shut
 S3(config-if-range)#channel-protocol lacp
 S3(config-if-range)#channel-group 1 mode passive
 S3(config-if-range)#no shut
 *Mar 1 00:30:56.205: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/3, changed state to up
 *Mar 1 00:30:57.086: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/4, changed state to up
 *Mar 1 00:30:57.195: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
 *Mar 1 00:30:58.202: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to up

Statisk

 S1(config)#int range fa0/3 - 4
 S1(config-if-range)#shut
 S1(config-if-range)#channel-group 1 mode on
 S1(config-if-range)#no shut
 S3(config)#int range fa0/3 - 4
 S3(config-if-range)#shut
 S3(config-if-range)#channel-group 1 mode on
 S3(config-if-range)#no shut
 S1#sh etherchannel summary
 Flags: D - down P - bundled in port-channel
 I - stand-alone s - suspended
 H - Hot-standby (LACP only)
 R - Layer3 S - Layer2
 U - in use f - failed to allocate aggregator
 M - not in use, minimum links not met
 u - unsuitable for bundling
 w - waiting to be aggregated
 d - default port
 Number of channel-groups in use: 1
 Number of aggregators: 1
 Group Port-channel Protocol Ports
 ------+-------------+-----------+-----------------------------------------------
 1 Po1(SU) - Fa0/3(P) Fa0/4(P)

Load-Balancing

Etherchannel ger oss även möjlighet att lastbalansera över länkarna, vilket förövrigt är per frame och inte per bit. Detta skiljer sig dock lite från vad vi är vana vid från andra protokoll som du kommer se längre ner. Vilket interface som skall användas bestäms från resultatet av en hashing-algoritm baserad på den load-balancing method vi använder oss av.

etherchannel-lb

Vilken som används per default är beroende av modell på switchen, 3560:n jag använder har stöd för följande metoder:

  • dst-ip Dst IP Addr
  • dst-mac Dst Mac Addr
  • src-dst-ip Src XOR Dst IP Addr
  • src-dst-mac Src XOR Dst Mac Addr
  • src-ip Src IP Addr
  • src-mac Src Mac Addr

Men använder src-mac per default, vi kan verifiera detta med kommandot “show etherchannel load-balance“.

S3#show etherchannel load-balance 
EtherChannel Load-Balancing Configuration:
 src-mac
EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source MAC address
 IPv4: Source MAC address
 IPv6: Source MAC address

Algoritmen fungerar som så att den tar “3 least significant bits”, och använder vi endast en parameter (src-mac) som i detta fall används görs inget mer.

netlab

För enkelhetens skull, säg att vi lastbalanserar mellan S1 & S3 över två fysiska länkar, och vi har två datorer med mac-adresserna aaaa.0000.0000 & bbbb.1111.1111 som är kopplade till S1. Vi Konverterar mac-adressen till binärt och tar de sista 3 bitarna:

aaaa.0000.0000 -> 3 Least significant bits = 000
bbbb.1111.1111 -> 3 Least significant bits = 001

S1 kommer även ge ett hash-värde för varje interface i channel-groupen (max 8):

Interface 1= 0
Interface 2 = 1

Interface 8 = 7

Om resultatet av hash-algoritmen blir 0 kommer trafiken skickas på Interface 1 (Fa0/3), om den blir 1 kommer trafiken gå över Interface 2 (Fa0/4).

Detta leder som du kanske förstår till en del problem. Skulle trafiken gå via en router kommer source mac alltid vara densamma, således kommer endast ett fysiskt interface att användas oavsett hur många vi har i vår etherchannel! Av denna anledning är det viktigt att tänka till vilken typ av trafik vi har och anpassa algoritmen så vi får en så stor spridning som möjligt. Tyvärr är det endast de riktigt dyra switcharna (Catalyst 6xxx) som klarar att lastbalansera baserat på Lager 4-information.

Vi konfigurerar detta med kommandot:

port-channel load-balance n

Om vi anger två parametrar för hashing-algoritmen, exempelvis src-mac & dest-mac, tas “3 least significant bits” från båda adresserna och switchen utför sedan istället en XOR-operation.

xor

Layer 3

När vi använder en MLS har vi även möjligheten att konfigurera vårat etherchannel till ett Lager 3-interface. Tillvägagångssättet är lite bakvänt men fortfarande väldigt basic.

S1

S1(config)#int range fa0/3 - 4
 S1(config-if-range)#shut
 S1(config-if-range)#exit
S1(config)#interface port-channel 5
 S1(config-if)#no switchport
 S1(config-if)#ip add 10.0.0.1 255.255.255.0
S1(config-if)#int range fa0/3 - 4
 S1(config-if-range)#no switchport
 S1(config-if-range)#channel-group 5 mode desirable
 S1(config-if-range)#channel-protocol pagp
 S1(config-if-range)#no shut

S3

S3(config)#int range fa0/3 - 4
 S3(config-if-range)#shut
 S3(config-if-range)#exit
S3(config)#interface port-channel 5
 S3(config-if)#no switchport
 S3(config-if)#ip add 10.0.0.2 255.255.255.0
S3(config-if)#int range fa0/3 - 4
 S3(config-if-range)#no switchport
 S3(config-if-range)#channel-group 5 mode auto
 S3(config-if-range)#channel-protocol pagp
 S3(config-if-range)#no shut

Verifiering

S3(config-if-range)#do ping 10.0.0.1
Type escape sequence to abort.
 Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:
 !!!!!
 Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/9 ms