# Segment routing

Segment routing, es una forma de redes de computadoras, es una variante moderna de encaminamiento de origen qué está siendo desarrollado dentro de SPRING y grupos de trabajo de IETF. En una red con segment routing, un nodo de entrada puede preparar una cabecera para paquetes que contengan una lista de segmentos, que son instrucciones que se ejecutan en nodos posteriores de la red. Estas instrucciones pueden ser instrucciones de reenvío, como una instrucción para reenviar un paquete a un destino o interfaz específicos. Segment routing funciona tanto en la parte superior de una red MPLS como en una red IPv6
En una red MPLS, los segmentos se codifican como etiquetas MPLS. Bajo IPv6, se utiliza un nuevo encabezado llamado Encabezado de Enrutamiento de Segmento (SRH). Los segmentos de una SSR están codificados en una lista de direcciones IPv6.

## Funcionamiento de Segment Routing

El enrutamiento de segmentos divide la red en "segmentos" donde cada nodo y enlace puede tener asignado un identificador de segmento, o un SID, que es anunciado por cada nodo utilizando extensiones de protocolo de enrutamiento estándar (ISIS/OSPF o BGP), eliminando la necesidad de ejecutar protocolos de distribución de etiquetas adicionales.
Existen tres variantes principales de un SID global:
* SID del prefijo - Un identificador de segmento asociado con un prefijo.
* SID de nodo - Un identificador de segmento asignado a un loopback que identifica un nodo específico.
* Anycast SID - Un identificador de segmento compartido asignado a un loopback compartido por un conjunto de enrutadores.
Algoritmo de Prefix-SID
El enrutamiento de segmentos soporta el uso de múltiples algoritmos de enrutamiento, es decir puede soportar diferentes cálculos de rutas cortas basados en restricciones. El algoritmo incluye Prefix SID para el anuncio de los identificadores. Existen dos algoritmos que trabajan con SR:
* Shortest Path First: Este algoritmo es por defecto de SR. Los paquetes son reenviados basándose en el algoritmo ECMP Shortest Path First (SPF) empleado por los IGPs. Sin embargo, se permite explícitamente que un punto medio implemente otro reenvío basado en la política local. El algoritmo Shortest Path First es el comportamiento predeterminado y actual de la mayoría de las redes.
* Strict Shortest Path First (Strict-SPF): Este algoritmo ordena que el paquete sea reenviado de acuerdo con el algoritmo ECMP-aware SPF e indica a cualquier router el camino y que ignore cualquier posible política local que anule la decisión SPF. El SID anunciado con el algoritmo Strict-SPF asegura que la ruta que va a tomar el paquete es la ruta SPF esperada, y no alterada.

## Segment Routing MPLS

El enrutamiento de segmentos MPLS es el enrutamiento de segmentos basado en MPLS forwarding plane, los segmentos son divididos en varias partes en una ruta de red y se les asigna un ID de segmento a cada segmento y nodo de reenvío de red. Los segmentos y nodos se disponen secuencialmente (lista de segmentos) para formar una ruta de reenvío.

### Transporte simplificado de servicios MPLS

El enrutamiento de segmentos puede ofrecer el mismo servicio de tunelización que MPLS de forma simplificada usando sólo IS-IS y OSPF.
El proveedor de servicios puede habilitar fácilmente servicios como L3VPN, VPLS y VPWS mediante la configuración de un Nodo-SID por borde de red y los túneles ECMP serán creados automáticamente desde cualquier entrada a cualquier borde de salida. LDP y RSVP no son más requerido, y eso lleva a los siguientes beneficios:
* Simple Operación: Menos señalización en la red, lo que significa una ganancia en términos de ancho de banda y complejidad de la operación
* Escalabilidad : Sólo una etiqueta para cada nodo, lo que reduce el número de entradas LSDB.

### Enrutamiento de segmentos y coexistencia de LDP

Dentro de la arquitectura MPLS, el enrutamiento de segmentos puede coexistir con LDP y RSVPTE. Segment Routing Global Block asegura que las etiquetas utilizadas para Segment Routing y LDP se asignan desde diferentes bloques de etiquetas. Si tanto el enrutamiento de segmentos como el LDP son habilitados en el mismo router, el LDP tiene prioridad por defecto, pero esto se puede cambiar usando la configuración CLI.

## Segment Routing con IPv6

El enrutamiento de Segmentos puede ser implementado en el modelo de ruteo de origen en MPLS como para IPv6, SR-IPv6 está integrado con el RFC2460 e introduce cambios menores a través de una nueva cabecera de tipo de enrutamiento:
* Encabezamiento de enrutamiento de Segmentos
* La dirección SRH de requerimiento de seguridad (HMAC)
EL enrutamiento de Segmentos es muy flexible e interoperable con nodos non-SR, de este modo cualquier dispositivo IPv6 puede mejorarse con SR: un router, un servidor, cualquier dispositivo, aplicación, terminal. Los segmentos se identifican por direcciones IPv6 y no necesitan ninguna señalización específica, de esta manera no hay necesidad de anunciar nada más en IGP. Así una dirección IPv6 puede representar algo más que un router: una interfaz, un dispositivo, un servicio, una aplicación.

## Segment Routing con SDN

El uso de nodo de origen por sí solo ayuda a controlar las rutas de reenvío sobre las que se transmiten los paquetes a través de una red. Con el enrutamiento de segmentos también ha renovado el interés en el elemento de computacional de camino (PCE). El PCE es un controlador de Ingeniería de Tráfico que gestiona la red asignando las rutas y recursos correctos a los servicios que los necesitan. El uso de PCE también hace que las redes definidas por software (SDN) sean más atractivas en las redes WAN. La simplificación de la red permite características de ancho de banda bajo demanda que necesitan las aplicaciones SDN. La técnica del PCE de enrutamiento de segmentos y el módulo computacional de rutas centralizadas se utilizan conjuntamente para controlar y ajustar las rutas de las redes. El enrutamiento de segmentos soporta tanto redes tradicionales como redes SDN. Es compatible con los equipos existentes y garantiza una evolución sin problemas de las redes existentes hacia redes SDN.