Características Generales de EIGRP
-
Upload
hugo-alberto-rivera-diaz -
Category
Engineering
-
view
101 -
download
8
Transcript of Características Generales de EIGRP
Características Generales de EIGRP:
Es un protocolo de transporte confiable
Establece adyacencias
Usa tablas de vecinos y topología
Utiliza el algoritmo de actualización por difusión (DUAL).
Usa actualizaciones ilimitadas
Con más detalle:
El protocolo de transporte confiable (RTP) proporciona una entrega confiable y no
confiable de paquetes EIGRP.
EIGRP establece relaciones con routers conectados directamente que también están
habilitados para EIGRP. Estas relaciones crean adyacencias.
Todo esto es utilizado por el algoritmo de actualización por difusión (DUAL).
DUAL garantiza rutas simples y rutas de respaldo a través del dominio de
enrutamiento.
Al igual que RIP v2, EIGRP funciona con enrutamiento sin clase o con clase.
Podemos deshabilitar las sumarización automática y resumir manualmente redes para
reducir el tamaño de las tablas de enrutamiento (comando no auto-summary)
METRICA EIGRP IGRP y EIGRP utilizan la métrica compuesta de ancho de banda ,retardo ,confiabilidad y carga.
Los protocolos de enrutamiento utilizan sólo el ancho de banda y el retardo en forma predeterminada.Pero EIGRP utiliza cálculos más avanzados.
ACTUALIZACIONES Y MECANISMOS EIGRP Eigrp utiliza cinco tipos de paquetes distintos:
paquetes de saludo
paquetes de actualizacion
acuse de recibo(ACK)
paquetes de consulta y respuesta.
EIGRP no envía actualizaciones periódicas y las entradas de ruta no expiran.
EIGRP utiliza un protocolo Hello (muy ligero) para comprobar que sigue conectado a
sus vecinos. Sólo los nuevos cambios(por ejemplo cambios en la topología o la desconexión de
una interfaz) producen una actualización de enrutamiento.
DUAL nos asegura rutas sin bucles. EIGRP no utiliza temporizadores de espera. Lo que hace es buscar las rutas por
medio de un sistema de cálculos de ruta entre los routers.
La consecuencia es una convergencia más rápida que la de los protocolos de enrutamiento vector distancia.
Los routers EIGRP descubren vecinos y establecen adyacencias mediante el paquete de saludo.
EIGRP envía actualizaciones parciales y limitadas (sólo propaga actualizaciones
parciales de aquellos routers que se ven afectados por un cambio). De esta forma eigrp minimiza el ancho de banda requerido para enviar los paquetes EIGRP.
OTROS PROBLEMAS EIGRP Otro de los problemas de los protocolos de enrutamiento son los loops de enrutamiento.
Los protocolos de enrutamiento Véctor distancia evitan esos loops con temporizadores de espera y horizontes divididos. Pero la principal forma que
tiene EIGRP para evitar esos loops de enrutamiento es con el algoritmoDUAL.
DUAL rastrea todas las rutas y por medio de la métrica selecciona rutas eficientes y sin loops; de esta forma acaba seleccionando la ruta de menor costo.
DISTANCIA ADMINISTRATIVA EIGRP La distancia administrativa constituye la confiabilidad del origen de la ruta.
EIGRP tiene una distancia administrativa predeterminada de 90 para las rutas internas
y de 170 para las rutas importadas desde un origen externo(como rutas predeterminadas). Además hemos de tener en cuenta que EIGRP tiene el Valor de 5
para las rutas sumarizadas.
COMANDOS CISCO para EIGRP Comandos para configurar EIGRP correctamente: Router>enable
Router#config terminal
Router(config)# Router eigrp numero_de_sistema_autónomo
por ej: Router(config)#router eigrp 1
(el numero 1 identifica este proceso EIGRP que se ejecuta en
este router).
Router(config-router)#network 172.16.0.0
(publicamos una red directamente conectada)
Router(config-router)#network 192.168.10.0 0.0.0.3
(con la máscara wildcard publicamos una subred específica
directamente conectada)
TABLAS EIGRP
Tabla de Vecinos:En esta tabla EIGRP guarda las rutas hacia los routers vecinos
(directamente conectados) . (El comando show ip eigrp neighbors es muy útil para
verificar y solucionar problemas con EIGRP.)
Tabla de Topología: En esta tabla EIGRP guarda las rutas de los destinos de sus
routers vecinos. (show ip eigrp topology)
Tabla de Enrutamiento: En esta tabla con la información de la “Tabla de Topología”
EIGRP selecciona la mejor ruta hacia cada destino. (show ip route) Para poder establecer adyacencias de vecinos, EIGRP requiere que todos los routers del mismo dominio de enrutamiento estén configurados con el mismo ID de proceso.
Cualquier interfaz en este router que coincida con la dirección de red dada con el
comando network, estará habilitada para enviar y recibir actualizaciones EIGRP.
Lenguaje ensamblador
El lenguaje ensamblador es el lenguaje de programación utilizado para escribir programas
informáticos de bajo nivel, y constituye la representación más directa del Código
máquina específico para cada arquitectura de computadoras legible por un programador.
Aun hoy se utiliza en la programación de handler o manipuladores de dispositivos de hardware.
Características
El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados secciones especiales del código programado.
Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre Hardware, son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
Lenguaje
Un programa escrito en lenguaje ensamblador consiste en una serie de Instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser
cargadas en la Memoria de un sistema basado en Microprocesador. Por ejemplo, un Procesador x86 puede ejecutar la siguiente instrucción Binaria como se expresa en código de máquina:
Binario: 10110000 01100001 (Hexadecimal: 0xb061)
La representación equivalente en lenguaje ensamblador es más fácil de recordar:
MOV al, 061h
Esta instrucción significa:
Asigna el valor Hexadecimal 61 (97 Decimal) al registro "al".
El mnemónico "mov" es un código de operación u "opcode", elegido por los
diseñadores de la colección de instrucciones para abreviar "move" (mover, pero en el sentido de copiar valores de un sitio a otro). El opcode es seguido por una lista
de argumentos o parámetros, completando una instrucción de ensamblador típica. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el
lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más
extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un código máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudo instrucción al grupo "haga si menor que", y "si = 0" sobre el resultado
de la condición anterior.
Código máquina
El código máquina, o lenguaje de máquina, está formado por instrucciones sencillas, que -dependiendo de la estructura del procesador- pueden especificar:
Registros específicos para operaciones aritméticas, direccionamiento o control de funciones.
Posiciones de memoria específicas (offset). Modos de direccionamiento usados para interpretar operandos.
Las operaciones más complejas se realizan combinando estas instrucciones
sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo. Casi todas las instrucciones utilizan 2 operandos específicos para realizar su función. Ejemplo, cuando deseamos mover un valor constante
hacia un registro de almacenamiento debemos especificar ambos operandos. Las operaciones disponibles en la mayoría de los conjuntos de instrucciones incluyen:
mover
llenar un registro con un valor constante (Ej.: mov al, `20`). o mover datos de una posición de memoria a un registro o viceversa (Ej.: mov al, [si]) o escribir y leer
datos de dispositivos (Ej.: lea dx, offset cadena)
computar
sumar, restar, multiplicar o dividir los valores de dos registros, colocando el
resultado en uno de ellos o en otro registro (Ej.: sum, mul, div, entres otras instrucciones). o realizar operaciones binarias, incluyendo operaciones lógicas (AND/OR/XOR/NOT) o comparar valores entre registros (mayor, menor, igual) (Ej.:
cmp)
afectar el flujo del programa
saltar a otra posición en el programa y ejecutar instrucciones allí(Ej.: jmp) o saltar
si se cumplen ciertas condiciones (IF) (Ej.: jnb, jnz, jb, jz, jne, je, entre otros) o saltar a otra posición, pero guardar el punto de salida para retornar (Ej.: CALL,
llamada a subrutinas) Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instrucción compleja hace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo:
salvar varios registros en la Pila de una sola vez mover grandes bloques de memoria
Ejemplos de lenguaje ensamblador
Ejemplo 1
El siguiente es un ejemplo del programa clásico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS) en modo texto
(por defecto).
.model small
.stack
.data Cadena1 DB 'Hola Mundo.$'
.code
programa:
mov ax, @data mov ds, ax mov dx, offset Cadena1
mov ah, 9 int 21h
int 20h end programa
2. Microprocesador
La parte principal de todo ordenador es el microprocesador , que es el encargado de ejecutar las
instrucciones que le especificamos en un programa y realizar las comunicaciones con los demas
perifèricos para realizar la tarea que se le ha encomendado.
Aunque el curso es integramente de ensamblador, quiero que tengas una base de conocimiento
de usos que realiza el microprocesador con el resto de componentes de tu ordenador.
Para que te sirva de referencia , te dire que el microprocesador para realizar las tareas que se le
encomienden, debe realizar primero la puesta en memoria del programa que le decimos que
debe ejecutar y seguir una serie de pasos antes de realizar dicha ejecución.
Para ello, el programa se alojara en la memoria a partir de una direcciòn determinada, a èsta
direcciòn a partir de ahora la vamos a llamar "direcciòn de inicio" o "direcciòn de comienzo".
3. Los Registros
Hace tiempo, cuando los microprocesadores eran basados en tegnologia de 16 bits, los registros
del microprocesador, debian de ser tambien de 16 bits, probablemente a la falta de tegnologia
de la epoca.
Hoy en dia los registros son de amplio margen en bits, y esto se lo explico, por que para poder
acceder a una posicion de memoria, dado que la memoria de los ordenadores puede ser de
megas, los regitros de 16 no permitian poder superar la barrera de los 64K osea que como
maximo podian acceder a 65535 posiciones de memoria, quedando la restante inutil.
Hoy en dia con la aparicion de la memoria Extendida y Expandida, esto es algo que ya ha pasado
a la historia, pero cuando tenian que acceder a los 64K que se tenian por registro, para poder
acceder a una direccion de memoria superior se creo los llamados registros de segmento.
4. La instrucción Mov
Aunque la entrada en el lenguaje la iremos haciendo despacio para que no le cueste asimilar los
conceptos , he preferido introducirle ya en esta instruccion del lenguaje ensamblador, pues sera
una de las instrucciones que mas usara en sus programas y la que ya seguro que conoce o ha
visto en algun programa.
Con la instruccion Mov se puede decir que asignamos valores a los registros, bien es cierto que
como hemos visto anteriormente en el capitulo de registros, tenemos dos tipos de registros, los
normales y los de segmento, a cada uno de ellos la asignacion de valores por medio del mov se
produce de forma distinta.
La forma estandar de la instruccion Mov seria:
Mov AX,16
Con esto hemos introducido el valor 16 en el registro AX, pero esto no es lo mismo que:
Mov AX[16]
Esto aunque nos parezca parecido o igual , en realidad es completamente diferente, mientras
que con Mov AX,16, introducimos el valor 16 en el registro AX, con Mov AX[16] , en realidad
introducimos en el registro AX el valor que se encuentre en la posicion de memoria numero 16.
Esto es algo que debe fijarse por ahora, pues con el tiempo vera la diferencia rapidamente y
notara enseguida como es cada instruccion y como se comporta cada una de ellas, que como ha
podido ver sus efectos son totalmente distintos.
Otra asignacion con los registros normales, son las que se producen entre ellos mismos:
Mov AX,BX
Esto carga el valor del registro BX en el AX, osea que ahora tendrian tanto AX como BX el mismo
valor, tambien hemos de decir que con esto, el valor que tuviera AX se perderia al asignarle el
valor que tiene BX.
5. Sistemas numéricos
Aunque no parezca razonable pasar de la instruccion Move a los sistemas numèricos , en
realidad el capitulo anterior cumple la funcion de darle a conocer el manejo de determinados
registros y determinadas formas de hacerlo.
El presente capitulo pretende darle a conocer los tipos de sistemas numèricos que normalmente
va a usar, como se pasa o realiza la conversion de un sistema a otro.
Sistema decimal
El sistema decimal es el que practicamente todos usamos, osea de 1 al infinito, dicho sistema de
basa en la unidad , osea el uno, todos son multiplos o producto de la suma de unidades (2 = 1 +
1) y asi sucesivamente.
Sistema Hexadecimal
El sistema hexadecimal esta basado en los valores del 1 al 15 , compuesto por los numeros del 0
al 9 y por las letras A,B,C,D,E,F quedando la tabla de valores de la siguiente forma:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Sistema Binario
El sistema se basa en valores, el 0 y el 1, aunque con la union de ambos es puede crear
cualquier numero. Para cada valor posee una determinada caracteristica , siendo su tabla de
valores del 0 al 15 asi:
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
Esto se denomina numeracion binaria en base de 4 bits, el significado de la palabras bit ,
identifica a cada uno de los valores de que esta compuesto, puesto que esta compuesto de 4
posible valores de 0 o 1 , por ejemplo el 1 e 0001 , osea 3 ceros y un 1, osea 4 bit.
6. ASCII y BCD
El ASCII
El ASCII o American Standard Code for Information Interchange (Codigo estandar americano
para el intercambio de informacion) es una serie completa de los caracteres y numeros que
forman las palabras, a los cuale se les da un determinado numero que va desde el 0 al 255 y
con los cuales se realizan intercambio de informacion independientemente del ordenador y tipo
de sistema operativo que utilizemos.
Este sistema es utilizado normalmente para texto , y su almacenamiento en memoria o fichero
es de un byte por cada letra/numero/simbolo de forma que la palabra "hola" ocuparia 4 bytes,
uno por cada una de las letras que la componen.
Tabla ASCII
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
27
28
29
30
31
32
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ̂
95 _
96 ̀
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 •
128 €
129 •
130 ‚
131 ƒ
132 „
133 …
134 †
135 ‡
136 ̂
137 ‰
138 Š
139 ‹
140 Œ
141 •
142 Ž
143 •
144 •
145 ‘
146 ’
147 “
148 ”
149 •
150 –
151 —
152 ̃
153 ™
154 š
155 ›
156 œ
157 •
158 ž
159 Ÿ
160
161 ¡
162 ¢
163 £
164
165 ¥
166
167 §
168
169 ©
170 ª
171 «
172 ¬
173
174 ®
175 ̄
176 °
177 ±
178 ²
179 ³
180
181 µ
182 ¶
183 ·
184
185 ¹
186 º
187 »
188
189
190
191 ¿
192 À
193 Á
194 Â
195 Ã
196 Ä
197 Å
198 Æ
199 Ç
200 È
201 É
202 Ê
203 Ë
204 Ì
205 Í
206 Î
207 Ï
208 Ð
209 Ñ
210 Ò
211 Ó
212 Ô
213 Õ
214 Ö
215 ×
216 Ø
217 Ù
218 Ú
219 Û
220 Ü
221 Ý
222 Þ
223 ß
224 à
225 á
226 â
227 ã
228 ä
229 å
230 æ
231 ç
232 è
233 é
234 ê
235 ë
236 ì
237 í
238 î
239 ï
240 ð
241 ñ
242 ò
243 ó
244 ô
245 õ
246 ö
247 ÷
248 ø
249 ù
250 ú
251 û
252 ü
253 ý
254 þ
255 ÿ
Esta es la tabla de codigos de ASCII, aunque del 1 al 31 no se vea nada, en realidad si lo hay
pues son codigos de control del propio sistema, el 32 no se ve pero es el codigo del espacio.
7. Registros de la CPU
La CPU tiene 14 registros internos, cada uno de 16 bits.
Los primeros cuatro, AX, BX, CX, y DX son registros de uso general y tambien pueden ser
utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como
parte superior y parte inferior del regitro, mediante AH y AL, que son alto (high) y bajo (low) del
registro AX. De la misma forma se hace referencia a los registros de proposito general (BX, CX y
DX.).
Los registros son conocidos por sus nombres específicos:
AX Acumulador BX Registro base CX Registro contador DX Registro de datos DS Registro del
segmento de datos ES Registro del segmento extra SS Registro del segmento de pila CS
Registro del segmento de código BP Registro de apuntadores base SI Registro índice fuente DI
Registro índice destino SP Registro del apuntador de la pila IP Registro de apuntador de
siguiente instrucción F Registro de banderas
8. Las interrupciones
Una interrupción es una instrucción que detiene la ejecución de un programa para permitir el uso
de la CPU a un proceso que es mas importante. Una vez concluido este último proceso se
devuelve el control a la aplicación anterior.
Por ejemplo, cuando estamos trabajando con un procesador de palabras y en ese momento llega
un aviso de uno de los puertos de comunicaciones, se detiene temporalmente la aplicación que
estabamos utilizando para permitir el uso del procesador al manejo de la información que está
llegando en ese momento. Una vez terminada la transferencia de información se reanudan las
funciones normales del procesador de palabras.
Las interrupciones ocurren muy seguido, sencillamente la interrupción que actualiza la hora del
día ocurre aproximadamente 18 veces por segundo. Para lograr administrar todas estas
interrupciones, el ordenador cuenta con un espacio de memoria, llamado memoria baja, donde
se almacenan las direcciones de cierta localidad de memoria donde se encuentran un juego de
instrucciones que la CPU ejecutará para despues regresar a la aplicación en proceso.
9. Los segmentos
La arquitectura de los procesadores x86 obliga al uso de segmentos de memoria para manejar la
información, el tamaño de estos segmentos es de 64kb.
El motivo es que teniendo en cuenta que el tamaño máximo de un número que puede manejar
el procesador esta dado por una palabra de 16 bits o registro, no sería posible accesar a más de
65536 localidades de memoria utilizando uno solo de estos registros, ahora, si se divide la
memoria de la pc en grupos o segmentos, cada uno de 65536 localidades, y utilizamos una
dirección en un registro exclusivo para localizar cada segmento, y entonces cada dirección de
una casilla específica la formamos con dos registros, nos es posible accesar a una cantidad de
4294967296 bytes de memoria, lo cual es, en la actualidad, más memoria de la que veremos
instalada en una PC.
Aunque pueda parecer que se puedan producir errores, no es asi, el sistema de funcionamiento
es muy sencillo:
Tenemos 3 segmentos de memoria, por que teniamos 170 Kb de memoria y entonces los hemos
dividido de forma que podamos acceder a todos ellos, para esto hemos creado 2 segmentos de
64 Kb que son 128 y un tercer segmento de 42 Kb.
Y ahora tenemos que accedemos a la posicion 40000, pero tenemos tres posiciones una en el
segmento uno, en el dos y en el tres, para diferenciar cual de las tres es, tenemos los registros
de segmento que me indican que segmento contiene la direccion correcta.
Con esta operacion tan sencilla, solo necesitamos saber cual es la direccion y de que segmento
para poder guardar o sacar un dato , pero con esto podemos acceder a toda la memoria que
tengamos.
10. La asignación
Instrucción MOV
Estas instrucciones se utilizan para asignar datos entre celdas de memoria, registros y la
pila(stack).
MOV Destino,Fuente
Este es el modelo estandar de declaracion de la instruccion, Destino hace referencia al lugar
donde se moverán los datos y fuente es el lugar de donde se obtendran los datos.
Ejemplos:
MOV AX,0006h
(Asigna al registro AX el valor de la direccion 0006h)
MOV BX,AX
(Asigna al registro BX el valor de contiene AX)
MOV BX,4C00h
(Asigna al registro BX el valor que contiene la direccion 4C00h)
11. Ari tmética
Instrucciones aritméticas
Estas instrucciones se utilizan para poder realizar las sumas, restas, incrementos, etc..
ADD Destino, Origen
SUB Destino, Origen
INC Destino
DEC Destino
NEG Destino
Sumas
ADD Destino, Origen
Este es el modelo estandar de declaracion de la suma, suma los valores de Origen y Destino y el
resultado de dicha suma lo guarda en Destino.
Restas
SUB Destino, Origen
Este es el modelo estandar de declaracion de la resta, resta los valores de Origen y Destino y el
resultado de dicha resta lo guarda en Destino.
Incrementos
INC Destino
Este es el modelo estandar de declaracion del incrmento, lo que realiza es el incremento en uno
el destino.
Decrementos
DEC Destino
Este es el modelo estandar de declaracion del decremento, lo que realiza es el decremento en
uno el destino.
NEG
NEG Destino
Este es el modelo estandar de complemento a dos, lo que realiza es el complemento a dos de
destino.
Las instrucciones INC, DEC y NEG aceptan todos los registros excepto los de segmento, siendo
igual a la asignación que se le aplica al método MOV.