skip to main |
skip to sidebar
Cisco EtherChannel® construye su tecnología en base a estándares 802.3 full-duplex de Fast Ethernet.EtherChannel agrupa varios enlaces Ethernet en un único enlace lógico, proveyendo así más ancho de banda de hasta 16 veces la capacidad máxima del enlace (full-duplex). Por ejemplo, agrupando enlaces Fast Ethernet de 100 Mbps cada uno, pudiéndose agrupar hasta 8 enlaces, se puede lograr una capacidad de hasta 1600 Mbps en full-duplex.Esta tecnología aplica tanto para Fast EthernetChannel (FEC) o Gigabit EtherChannel (GEC).Las características más resaltantes que se puede lograr con esta tecnología son:- Incremento de ancho de banda.
- Convergencia rápida con tolerancia a fallas.
- Balanceo de cargas.
Configuración de EtherChannelEtherChannel maneja dos protocolos:
- Port Aggregation Control Protocol (PAgP, propietario de Cisco) [1].
- Link Aggregation Conrol Protocol (LACP, IEEE 802.3ad) [2].
Los protocolos ya mencionados son incompatibles.Los modos de configuración son:on: en este modo, un EtherChannel útil existe si dos grupos de puertos en modo on están conectados entre sí. En este modo no existe tráfico de negociación.auto: modo PAgP que coloca un puerto en estado de negociación pasiva, sólo responde a los paquetes PAgP.desirable: modo PAgP que coloca un puerto es estado de negociación activa, es decir, el puerto inicia el envío de paquetes PAgP a otros puertos LAN.pasive: modo LACP que pone a un puerto en modo pasivo de negociación, sólo recibe paquetes LACP.active: modo LACP que coloca a un puerto en modo activo de negociación.Ejemplos:1) Tenemos dos switches, SW1 y SW2, de la misma marca (Cisco), cuyas interfases Fast Ethernet 0/1 y 0/2 de cada switch serán configurados como EtherChannels en modo trunk, dentro de la VLAN 99 (para esto, los puertos 0/1 y 0/2 deben estar en la VLAN 99).SW1#config tSW1(config)#int range fast 0/1 – 2SW1(config-if)#no switchport mode accessSW1(config-if)#switchport mode trunkSW1(config-if)#switchport trunk native vlan 99SW1(config-if)#channel-group 2 mode active // El rango de número asignado a un grupo EtherChannel es de 1 – 64SW1(config-if)#endSW2#config tSW2(config)#int range fast 0/1 – 2SW2(config-if)#no switchport mode accessSW2(config-if)#switchport mode trunkSW2(config-if)#switchport trunk native vlan 99SW2(config-if)#channel-group 2 mode pasiveSW2(config-if)#end* Nota: En caso los puertos se encuentren en la VLAN nativa por defecto (VLAN 1), se pueden omitir las líneas de color negro.2) Configuraremos un switch SW3 para crear un EtherChannel PAgP y asociarlo a la VLAN 5. Tomarenos cuatro interfases Gigabit Ethernet, 0/1 al 0/4.SW3#config t SW3(config)#interface range gigabitethernet 0/1 – 4 SW3(config-if)#switchport mode accessSW3(config-if)#switchport access vlan 5SW3(config-if)#channel-group 3 mode desirable SW3(config-if)#end 3) Ahora realizaremos una configuración de Capa 3 para el switch SW3 del ejemplo anterior, asignándole una dirección IP.SW3#config tSW3(config)#interface port-channel 3SW3(config-if)#no switchport //Este comando funciona para switches multicapas, el cual es para entrar a configuración de Capa 3SW3(config-if)#ip address 192.168.20.10 255.255.255.0SW3(config-if)#end 4) Ahora, si ya tenemos un EtherChannel, conformado por Fast Ethernets, ya configurado en el switch SW4 y queremos agregar una interfase más a ese puerto, debemos configurarlo de la siguiente manera:SW4#config t SW4(config)#interface range fast 0/6 – 7 SW4(config-if)#no ip address SW4(config-if)#channel-group 4 mode desirable SW4(config-if)#end 5) Para configurar un switch con EtherChannel y agregarle balanceo de cargas, basta con seguir las siguientes líneas:SW5#config tSW5(config)#port –channel load-balance {dst-mac | src-mac} // balanceo por MAC address destino u origen, respectivamente. Por defecto src-macSW5(config)#end* Comandos de control EtherChannel#show etherchannel X port-channel#show interface {fastethernet | gigabitethernet} X/X etherchannel#show etherchannel load-balance
Referencias
[1] http://www.cisco.com/en/US/tech/tk389/tk213/tk484/tsd_technology_support_sub-protocol_home.html
[2] http://www.ieee802.org/3/ad/index.html
Esta poderosa herramienta open source para simular redes desde cableadas hasta inalámbricas (local y satelital) permite estudiar y simular protocolos TCP y analizar diferentes topologías.El ns-2 está escrito en C++ y utiliza el lenguaje Tcl/OTcl como interfase de comando y configuración. Los programas o scripts escritos en lenguaje Tcl/OTcl describen la topología de red, los parámetros y los eventos a simular.Para su instalación en cualquier distro de GNU/Linux, y así evitar problemas durante la instalación, se deben tener todos estos paquetes instalados:- autoconf
- automake
- gcc-c++
- libX11-devel
- xorg-x11-proto-devel
- libXt-devel
- libXmu-devel
La última versión de este simulador se puede encontrar en el siguiente link: http://www.isi.edu/nsnam/ns/ns-build.htmlAdjunto un script para que puedan probar el simulador. El lenguaje OTcl es intuitivo, si se tienen conocimientos de programación. La topologia del scritp 'nssimulation.tcl' tiene 5 fuentes TCP CUBIC sobre un enlace de cuello de botella.#Script: nssimulation.tcl#Autor: Rodolfo Ledesma#Licencia: GPLv3 #Programa#Crear la instancia del simuladorset ns [new Simulator]#Definir las variables y archivos de salidaset tf [open output.tr w]set window(1) [open win1 w]set window(2) [open win2 w]set window(3) [open win3 w]set window(4) [open win4 w]set window(5) [open win5 w]set param [open parameters w]#Orden para trazar todos los eventos de la simulación$ns trace-all $tf#Tres archivos de análisis del enlace#qsize, qlost [paquetes], qbw [Kbps], VS tiemposet qsize [open queuesize.tr w]set qbw [open queuebw.tr w]set qlost [open queuelost.tr w]#Definir un proceso de finalización 'finish'proc finish {} { global ns tf qsize qbw qlost $ns flush-trace close $qsize close $qbw close $qlost close $tf exit 0}#Crear un cuello de botella y nodos de destino#y el enlace entre ellosset n0 [$ns node]set n1 [$ns node]$ns duplex-link $n0 $n1 2Mb 10ms DropTail#Configurar número de flujos y duración de la simulaciónset NumbSrc 5set Duration 150#Nodos fuentesfor {set j 1} {$j<=$NumbSrc} {incr j} {set S($j) [$ns node]}#Definir 2 parámetros para cada conexión#Inicio de transmisión y el retardo de propagaciónset startT(1) 1set startT(2) 2set startT(3) 3set startT(4) 2set startT(5) 5set dly(1) 0set dly(2) 40set dly(3) 40set dly(4) 90set dly(5) 90#Asignación de parámetros a cada nodo fuentefor {set i 1} {$i<=$NumbSrc} {incr i} {puts $param "dly($i) $dly($i) ms"puts $param "startT($i) $startT($i) seg" }#Enlace entre fuente y cuello de botellafor {set j 1} {$j<=$NumbSrc} {incr j} {$ns duplex-link $S($j) $n0 100Mb $dly($j)ms DropTail$ns queue-limit $S($j) $n0 300}#Tamaño de cola n0-n1$ns queue-limit $n0 $n1 150#Fuentes TCPfor {set j 1} {$j<=$NumbSrc} {incr j} {set tcp_src($j) [new Agent/TCP/Linux]$tcp_src($j) set timestamps_ true$tcp_src($j) set window_ 100000$ns at 0 "$tcp_src($j) select_ca cubic"}#Destinos TCPfor {set j 1} {$j<=$NumbSrc} {incr j} {set tcp_snk($j) [new Agent/TCPSink/Sack1]$tcp_snk($j) set ts_echo_rfc1323_ true}#Conexionesfor {set j 1} {$j<=$NumbSrc} {incr j} {$ns attach-agent $S($j) $tcp_src($j)$ns attach-agent $n1 $tcp_snk($j)$ns connect $tcp_src($j) $tcp_snk($j)}#Fuentes FTPfor {set j 1} {$j<=$NumbSrc} {incr j} {set ftp($j) [$tcp_src($j) attach-source FTP]}#Definir tamaño de paquetes de las fuentes TCPfor {set j 1} {$j<=$NumbSrc} {incr j} {$tcp_src($j) set packetSize_ 1040}#Cronograma de eventos para los agentes FTPfor {set i 1} {$i<=$NumbSrc} {incr i} {$ns at $startT($i) "$ftp($i) start"$ns at $Duration "$ftp($i) stop"}#Proceso de salida del tamaño de ventanaproc plotWindow {tcpSource file k} {global nsset time 0.005set now [$ns now]set cwnd [$tcpSource set cwnd_]puts $file "$now $cwnd"$ns at [expr $now+$time] "plotWindow $tcpSource $file $k"}#Guardar salidas de tamaño de ventana en winXfor {set j 1} {$j<=$NumbSrc} {incr j} {$ns at 0.1 "plotWindow $tcp_src($j) $window($j) $j"}#Muestrear la cola del cuello de botella a 100 Hz.#y guardarlo en qm.trset qmon [$ns monitor-queue $n0 $n1 [open qm.tr w] 0.01][$ns link $n0 $n1] queue-sample-timeout;proc record {} {global ns qmon qsize qbw qlost n0 n1set time 0.01set now [$ns now]$qmon instvar parrivals_ pdepartures_ bdrops_ bdepartures_ pdrops_puts $qsize "$now [expr $parrivals_-$pdepartures_-$pdrops_]"puts $qbw "$now [expr $bdepartures_*8/1024/$time]"set bdepartures_ 0puts $qlost "$now [expr $pdrops_/$time]"$ns at [expr $now+$time] "record"}#Orden de inicio y finalización de eventos$ns at 0.0 "record"$ns at [expr $Duration] "finish"$ns run