路由协议
- 1. 定义
- 2. IGP
- 2.1 RIP
- 2.2 OSPF
- 3. BGP
- 4. MPLS
1. 定义
互联网中需要通过路由将数据发送至目标主机。
路由器根据路由控制表(RoutingTable)转发数据包,它根据所收到的数据包中目标主机的IP地址与路由控制表的比较得出下一个应该接收的路由器。
(1)静态路由与动态路由
静态路由是指事先设置好路由器和主机中并将路由信息固定的一种方法,通常是由使用者手工操作完成的。
而动态路由是指让路由协议在运行过程中自动地设置路由控制信息的一种方法。动态路中,路由器根据设置的路由协议给相邻路由器发送自己已知的网络连接信息,而这些信息又像接力一样依次传递给其他路由器,直至整个网络都了解时,路由控制表也就制作完成了。
(2)路由控制范围
根据路由控制的范围,由协议大致分为两大类:
- 外部网关协议(EGP,Exterior Gateway Protocol)
- 内部网关协议(IGP,Interior Gateway Protocol)
(3)路由算法
路由控制有各种各样的算法,其中最具代表性的有两种是:
- 距离向量(Distance-Vector)算法
- 链路状态(Link-State)算法
距离向量算法(DV)是指根据距离(代价)和方向决定目标网络或目标主机位置的一种方法。该方法中,每个路由器掌握的信息都不相同。
链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。
(4)主要协议
路由协议名 | 下一层协议 | 方式 | 适用范围 | 循环检测 |
---|---|---|---|---|
RIP | UDP | 距离向量 | 域内 | 不可以 |
OSFP | IP | 链路状态 | 域内 | 可以 |
BGP | TCP | 路径向量 | 对外连接 | 可以 |
2. IGP
2.1 RIP
(1)定义
路由信息协议(RIP,Routing Information Protocol)是一种较为简单的内部网关协议(IGP,Interior Gateway Protocol),包括RIP-1和RIP-2两个版本。
RIP是一种基于距离矢量(DV)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的距离。通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP主要应用于规模较小的网络中,例如校园网以及结构较简单的地区性网络。
(2)工作原理
广播路由控制信息
根据距离向量确定路由信息
2.2 OSPF
(1)定义
开放式最短路径优先(OSPF,Open Shortest Path First)是IETF根据中间系统到中间系统的路由选择协议(IS-IS,Intermediate System to Intermediate System Intra- Domain routing information exchange protocol)开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
(2)工作原理
OSPF网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告(LSA,Link State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。
每台路由器都通过链路状态数据库(LSDB,Link State DataBase)掌握全网的拓扑结构。
每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。在网络拓扑稳定的情况下,各个路由器得到的有向图是完全相同的。
(3)报文类型
类型 | 报文名称 | 功 能 |
---|---|---|
1 | 问候(HELLO) | 确认相邻路由器、确定指定路由器 |
2 | 数据库描述(Database Description) | 链路状态数据库的摘要信息 |
3 | 链路状态请求(LinkState Request ) | 请求从数据库中获取链路状态信息 |
4 | 链路状态更新(Link State Update) | 更新链路状态数据库中的链路状态信息 |
5 | 链路状态确认应答(Link State Acknowledgement ) | 链路状态信息更新的确认应答 |
(4)工作机制
OSPF的运行机制包括以下5个步骤:
- 通过交互Hello报文形成邻居关系
路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文。如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系。
- 通过泛洪LSA通告链路状态信息
形成邻居关系的路由器之间进一步交互LSA形成邻接关系。每台路由器根据自己周围的网络拓扑结构生成LSA,LSA描述了路由器所有的链路、接口、邻居及链路状态等信息,路由器通过交互这些链路信息来了解整个网络的拓扑信息。
- 通过组建LSDB形成带权有向图
通过LSA的泛洪,路由器会把收到的LSA汇总记录在LSDB中。最终,所有路由器都会形成同样的LSDB,如图3所示。LSA是对路由器周围网络拓扑结构的描述,而LSDB则是对整个自治系统的网络拓扑结构的描述,LSDB是LSA的汇总。
- 通过SPF算法计算并形成路由
当LSDB同步完成之后,每一台路由器都将以其自身为根,使用SPF算法来计算一个无环路的拓扑图来描述它所知道的到达每一个目的地的最短路径(最小的路径代价)。这个拓扑图就是最短路径树,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径。
- 维护和更新路由表
根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表形成指导数据转发的路由表项,并且实时更新。同时,邻居之间交互Hello报文进行保活,维持邻居关系或邻接关系,并且周期性地重传LSA。
3. BGP
(1)定义
边界网关协议(BGP,Border Gateway Protocol)是一种用来在路由选择域之间交换网络层可达性信息(NLRI,Network Layer Reachability Information)的路由选择协议,当前使用的版本是BGP-4。
Internet是一个由多个自治系统(AS,Autonomous System)相互连接构成的大网络,BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间,连接不同组织机构(自治系统)。
(2)AS
自治系统(AS,Autonomous System)指的是一组在统一行政管理下且遵循特定路由策略的互联网协议(IP)前缀集合。
简单来说,AS是一个大型网络或网络组,它们之间遵循着统一的路由策略,自治系统又被称为路由选择域(routing domain)。
互联网是由一个又一个的自治系统AS组成,每个接入互联网的计算机或设备都归属于某个AS。
AS必须具有一个公开且正式登记的自治系统编号(ASN),ASN由互联网地址分派机构(IANA, Internet Assigned Numbers Authority)统一管理。
ASN分为16位和32位两种类型:2007年以前,所有的ASN均为16位,范围从1至65,535。随着数量的耗尽——类似于IPv4地址——引入了32位的ASN,其范围从65,536扩展到4,294,967,295。
截止目前,全球一共分配了191626个as自治系统号,中国到目前有3,236多个自治系统。
全球的自治系统编号由互联网编号分配局(IANA)进行管理,并由五个地区互联网注册处负责分配。
- 非洲网络信息中心(AFRINIC):非洲
- 亚太网络信息中心(APNIC):亚洲和太平洋地区
- 北美互联网注册处(ARIN):加拿大、美国及部分加勒比海岛屿
- 拉丁美洲和加勒比网络信息中心(LACNIC):拉丁美洲和加勒比地区
- 欧洲IP网络协调中心(RIPE NCC):欧洲、中东和中亚
(3)BGP报文中的角色
- Speaker:发送BGP报文的路由设备称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP Speaker。当BGP Speaker收到来自其它AS的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给所有其他BGP Speaker(发布该路由的BGP Speaker除外)。
- Peer:相互交换报文的BGP Speaker之间互称对等体(Peer)。
BGP扬声器为了在 AS之间交换 BGP信息,必须与所有AS建立对等的BGP连接。BGP则基于AS之间的合约进行数据包的转发。BGP一般选择AS 数最少的路径,不过仍然要遵循各个AS之间签约的细节进行更细粒度的路由选择。
BGP中数据包送达目标网络时,会生成一个中途经过所有AS的编号列表,叫做AS路径信息访问列表(ASPathList)。ASPathList不仅包含转发方向和距离,还涵盖了途径所有AS的编号。BGP这种根据所要经过的路径信息访问列表进行路由控制的协议属于路径向量(PathVector)型协议。
(4)BGP的报文
BGP的运行是通过报文驱动的,共有Open、Update、Notification、Keepalive和Route-refresh五种报文类型。
- Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系。对等体在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。
- Update报文:用于在对等体之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
- Notification报文:当BGP检测到错误状态时,就向对等体发出Notification报文,之后BGP连接会立即中断。
- Keepalive报文:BGP会周期性地向对等体发出Keepalive报文,用来保持连接的有效性。
- Route-refresh报文:Route-refresh报文用来请求对等体重新发送所有的可达路由信息。
(5)BGP处理过程
BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。
建立连接后,BGP邻居之间交换整个BGP路由表。BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。
(6)BGP有限状态机
BGP有限状态机共有六种状态,分别是Idle
、Connect
、Active
、Open-Sent
、Open-Confirm
和Established
。
在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。
- Idle状态下,BGP拒绝任何进入的连接请求,是BGP初始状态。
- Connect状态下,BGP等待TCP连接的建立完成后再决定后续操作。
- Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。
- Open-Sent状态下,BGP等待对等体的Open报文。
- Open-Confirm状态下,BGP等待一个Notification报文或Keepalive报文。
- Established状态下,BGP对等体间可以交换Update报文、Route-refresh报文、Keepalive报文和Notification报文。
BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。
4. MPLS
(1)定义
多协议标签交换(MPLS,Multi-Protocol Label Switching)是由IETF 提出的一种在IP骨干网上利用标签来指导数据报文高速转发的协议。
MPLS位于TCP/IP协议栈中的链路层和网络层之间,用于向IP层提供连接服务,同时又从链路层得到服务。相对于传统的IP路由方式,MPLS提供了一种新的网络交换方式,它将IP地址映射为简短且长度固定、只具有本地意义的标签,以标签交换替代IP查表,从而显著提升转发效率。
MPLS的标签转发本质上是一种隧道技术,可以在IP网络中构筑一条逻辑上的隧道,而且MPLS兼容不同的网络层和链路层协议,因此,MPLS可以很好的为各种L2VPN、L3VPN以及EVPN业务提供公网隧道服务。
(2)工作原理
MPLS的实现原理是指:转发等价类(FEC,Forwarding Equivalence Class)分配标签来建立标签交换路径(LSP,Label Switched Path)
MPLS是一种分类转发技术,它将具有相同转发处理方式的数据分组归为一类,称为转发等价类(FEC,Forwarding Equivalence Class)。MPLS对相同FEC的数据分组采取完全相同的处理方式。
FEC的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议种类、业务类型等要素的任意组合。例如,在采用最长匹配算法的IP路由转发中,去往同一个目的地址的所有报文就是一个FEC。
标签交换路径(LSP,Label Switched Path)是指属于同一FEC的报文(即封装了MPLS标签的报文)在MPLS域内转发所经过的路径。
(3)MPLS标签
MPLS标签是一个短而定长的、只具有本地意义的标识符,用于唯一标识一个分组所属的FEC。
标签共有4个域:
- Label:20bit,标签值域。
- Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),其作用与Ethernet802.1p的作用类似。
- BoS:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签。
- TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。
MPLS标签的基本操作包括:
- Push(标签压入):指当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
- Swap(标签交换):当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
- Pop(标签弹出):当报文离开MPLS域时,将MPLS报文的标签去掉;或者MPLS倒数第二跳的节点处去掉栈顶标签,减少标签栈中的标签数目。
(4)MPLS网络主要包含以下要素:
MPLS网络主要包含以下要素:
- 支持MPLS功能的网络设备称为标签交换路由器(LSR,Label Switching Router),它是MPLS网络的基本组成单元。由一系列连续的LSR构成的网络区域称为MPLS域。
- MPLS域内部的LSR称为Core LSR,如果一个LSR的相邻节点都运行MPLS,则该LSR就是Core LSR。
- 位于MPLS域边缘、连接其它网络的LSR称为标签边缘路由器(LER,Label Edge Router),如果一个LSR有一个或多个不运行MPLS的相邻节点,那么该LSR就是LER。
在MPLS网络中,任何两个LER之间都可以建立LSP,用来转发进入MPLS域的报文,中间可途径若干个Core LSR。因此,一条LSP的Ingress和Egress都是LER,而Transit是Core LSR。