多协议标签交换MPLS
多协议标签交换MPLS(multiProtocal Label Switching):“多协议”表示在MPLS的上层可以采用多种协议。
MPLS利用面向连接技术,使每个分组携带一个叫作标签的小整数(这叫作打上标签)。当分组到达交换机时,交换机读取分组的标签,并用标签值来检索分组转发表。这样就比查找路由表来转发分组快得多。
人们经常把多标签交换MPLS与异步传递方式ATM相联系,这仅仅是因为它们都采用了面向连接的工作方式。
MPLS的工作原理
在传统IP网络中,分组传输有着很大的不方便:
- 如每到达一个路由器,都必须查找转发表,并按照“最长前缀匹配”找到下一跳地址;
- 当网络很大时,查找大量转发表很耗费时间;
- 在突发通信量,往往还会使缓存溢出,引起分组丢失、传输延时增大和服务质量下降。
MPLS域和LSR路由器
基本工作流程
上述这种“由入口LSR确定进入MPLS域以后的转发路径” 称为显示路由选择,它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大区别。
转发等价类FEC
所谓“转发等价类”就是路由器按照同样方式对待的IP数据报的集合。这里“按照同样方式对待”表示从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。
入口节点并不是给每一个IP数据报指派一个不同的标签,而是将属于同样FEC的IP数据报都指派同样的标签。FEC和标签是一一对应的关系。
FEC数据均载
网络管理员采用自定义的FEC就可以更好地管理网络资源。这种均衡网络负载的做法也称为流量工程TE或者通信量工程
MPLS首部
MPLS并不要求下层的网络都使用面向连接的技术。因此一对MPLS路由器之间的物理连接,既可以由一个专用电路组成,也可以使用像以太网这样的网络。
但是这些网络并不提供打标签的手段,而IPv4 数据报首部也没有多余的位置存放MPLS标签。这就需要一个特殊的封装技术:
MPLS首部位置
MPLS首部格式
新一代MPLS
虽然 MPLS能够更快地转发分组,但其有关的控制协议(如 LDP)却比较复杂,其扩展性差,运行维护也较困难。
协议LDP也无法做到基于时延或带宽等要求的流量调度。为了根据需要灵活地选择流量的转发路径,就还需要再使用资源预留协议RSVP(第八章内容)。
但RSVP的信令非常复杂,每个节点都要维护一个庞大的链路信息数据库。此外,RSVP不支持等价多路径路由选择ECMP (Equal-CostMultipath Routing),而只会选择一条最优路径进行转发。
软件定义网络SDN
在SDN中,数据层面中的交换机是由控制层面进行控制的,这种控制是通过openflow协议来实现的。
传统意义的“转发”与SDN的广义转发
在SDN的广义转发中,完成“匹配+动作”的设备并不局限在网络层工作,因此不再称为路由器,而称为“OpenFlow交换机”或“分组交换机”,或更简单地称为“交换机”。
在SDN中取代传统路由器中转发表的是“流表(Flow Table)"。
流表
在SDN中取代传统路由器中转发表的是“流表(Flow Table)"。因此,流表就是“匹配+动作”的转发表。
流表项
首部字段值
计数器
动作
SDN的使用场景举例
简单转发
负载均衡
防火墙设置
SDN体系结构
SDN体系结构四种关键特征
SDN控制器的三个层次
目前已经出现了一些开放源代码控制器,或简称为开源控制器(Open Source Controller),最有代表性的就是 OpenDaylight和 ONOS。这里就不再进行讨论了。