网络层概述
网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。
网络层向其上层提供两种服务:
1.面向连接的虚电路服务
2.无连接的数据报服务
面向连接的虚电路服务
核心思想是“可靠通信应由网络自身来保证”。
必须首先建立网络层连接 —— 虚电路(Virtual Circuit,VC),以保证通信双方所需的一切网络资源。
通信双方沿着已建立的虚电路发送分组。
通信结束后,需要释放之前所建立的虚电路。
分组的首部仅在连接建立阶段使用完整的目的主机地址,之后每个分组的首部只需要携带一条虚电路编号即可。
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确(无差错按序到达、不丢失、不重复)到达接收方。
很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继(Frame Relay,FR)、异步传输模式(Asynchronnous Transfer Mode,ATM)
无连接的数据报服务
核心思想是“可靠通信应由用户主机来保证”。不需要建立网络层连接。每个分组可走不同的路径。 因此,每个分组的首部都必须携带目的主机的完整地址。通信结束后,没有需要释放的连接。
这种通信方式所传送的分组可能误码、丢失、重复和失序。
异构网络互连
网际协议IP
网际协议IP可以互连各种不同的网络接口。
在网际层和IP协议配合使用的还有四个协议,分别的网际控制报文协议ICMP、网际组管理协议IGMP、逆地址解析协议RARP、地址解析协议ARP。
IP协议使用逆地址解析协议RARP、地址解析协议ARP,网际控制报文协议ICMP、网际组管理协议IGMP使用IP协议。
异构网络互连
网络层的数据层面和控制层面
软件定义网络SDN概述
网络层的数据层面和控制层面
回忆路由器的功能:
1.为主机间的通信提供转发服务
2.路由选择
路由器之间传送的信息:
1.主机间的分组
2.路由信息
路由之间交互路由信息,并利用路由算法得出路由表,再根据路由表得出转发表。
在控制层面中,每一个路由器无法独自创建出自己的路由表,路由器必须和相邻的路由器周期性的交换路由信息,然后创建自己的路由表。
根据路由选择协议所使用的路由算法计算路由,需要用软件来进行,这需要花费很多时间。
在数据层面中,每一个路由器根据自己的转发表转发分组,通常用硬件来完成。
在SDN体系结构中,路由器中的路由软件不存在了,因此路由器之间不再交换路由信息,只是进行数据转发。
在控制层面中,有一个在逻辑上集中的远程控制器。
逻辑上集中的远程控制器在物理上可由不同地点的多个服务器组成。
远程控制器:
远程控制器掌握各主机和整个网络的状态。
远程控制器能够为每一个分组计算出最佳的路由。
远程控制器为每一个路由器生成其正确的转发表。
OpenFlow协议
OpenFlow协议概述
OpenFlow协议可被看成是SDN体系结构中控制层面与数据层面之间的通信接口。
OpenFlow协议使得控制层面的控制器可以对数据层面中的物理设备进行直接访问和控制。
传统意义上的数据层面的任务
SDN中的广义转发
SDN的广义转发分为以下两个步骤:
1.进行“匹配”:能够对网络体系结构中各层 (数据链路层、网络层、运输层)首部中的字段进行匹配。
2.执行“动作”:不仅转发分组,还可以负载均衡、重写IP首部(类似NAT路由器中的地址转换)、人为地阻挡或丢弃一些分组(类似防火墙一样)。
OpenFlow交换机和流表
在SDN的广义转发中,完成“匹配+动作”的设备并不局限在网络层工作,因此不再称为路由器,而称为 “OpenFlow交换机”或“分组交换机”,或更简单地称为“交换机”。
相应的,在SDN中取代传统路由器中转发表的是“流表(Flow Table)”。
OpenFlow交换机中的流表是由SDN远程控制器来管理的。
SDN远程控制器通过一个安全信道,使用OpenFlow协议来管理OpenFlow交换机中的流表。
一个流就是穿过网络的一种分组序列,而在此序列中的每个分组都共享分组首部某些字段的值。例如, 某个流可以是具有相同源IP地址和目的IP地址的一连串分组。
如图涉及数据链路层、网际层、运输层,三个层次的首部,在OpenFlow交换机中,既可以处理数据链路层的帧,也可以处理网际层的IP数据报,还可以处理运输层
的TCP或UDP报文。
计数器字段是一组计数器:
1.记录已经与该流表项匹配的分组数量的计数器
2.记录该流表项上次更新到现在经历时间的计数器
动作字段是一组动作,当分组匹配某个流表项时,执行该流表项中动作字段指明的以下某个或多个动作:
①把分组转发到指明的端口
②丢弃分组
③把分组进行复制后再从多个端口转发出去
④重写分组的首部字段(包括数据链路层、网际层以及运输层的首部)
SDN体系结构及其四个关键特征
基于流的转发:
由SDN控制器控制的分组交换机分布在数据层面中,而分组的转发可以基于数据链路层、网络层和运输层协议数据单元PDU中的首部字段的值进行,这与传统路由器仅根据IP数据报的目的IP地址进行转发有着明显的区别。
各分组交换机的流表中的流表项都是由SDN控制器进行计算、管理和安装的。
SDN的转发规则都详细规定在各分组交换的流表中。
数据层面和控制层面分离:
在传统的转发设备路由器中,数据层面与控制层面都位于同一个设备中。
但在SDN中,数据层面与控制层面是分离的,也就是二者不在同一个设备中。
数据层面有许多相对简单而快速的分组交换机,这些分组交换机基于各自的流表执行“匹配+动作”的规则。
控制层面则由若干服务器和相应的软件组成,这些服务器和软件计算并管理这些分组交换机中的流表。
位于数据层面分组交换机之外的网络控制功能:
SDN中的控制层面是用各类软件实现的,而且这些软件还可以处于不同的机器上,并且还可能远离位于数据层面的分组交换机。
SDN控制层面的软件包含两个构件,一个构件是SDN控制器(网络操作系统),另一个构件是若干个网络控制应用程序。
SDN控制器维护准确的网络状态信息,例如 远程链路、分组交换机和主机的状态,并把这些信息提供给运行在控制层面的各种控制应用程序,另外还会提供一些方法,使得这些控制层面的应用程序能够对数据层面中的分组交换机进行监视、编程和控制。
可编程的网络:
通过在SDN控制层面中的一些网络控制应用程序,使得整个SDN网络称为可编程的网络。
SDN控制器使用这些网络控制应用程序,来控制数据层面中的各分组交换机。
例如:路由选择网络控制应用程序能够确定源点和终点之间的端到端路径。
网络控制应用程序还可以决定哪些分组在进入某个分组交换机时必须被阻挡也就是进行接入控制。
另外,网络控制应用程序还可以配置分组交换机,在转发分组时执行负载均衡的措施。
SDN控制器与其下面的数据层面中的受控设备的通信接口称为南向API。
SDN控制器与其上面的控制层面中的网络控制应用程序的接口称为北向API。
SDN控制器
SDN控制器可划分为三个层次,分别是通信层、网络范围的状态管理层、到网络控制应用程序层的接口。
通信层,是SDN控制器的底层,其任务是通过南向API接口,完成与数据层面中受控设备的通信。
网络范围的状态管理层,是SDN控制器的中间层,SDN控制层面若要做出任何最终的控制决策,例如在所有的分组交换机中配置流表以便进行端到端的转发,或实现负载均衡,或实现某种特殊的防火墙能力,就需要让控制器掌握全网的主机信息,链路信息,分组交换机信息,以及其他受SDN控制器控制的设备的信息。
到网络控制应用程序层的接口,是SDN控制器的顶层。SDN控制器与网络控制应用程序的交互都需要通过北向API接口完成。该AP接口允许网络控制应用程序对网络范围的状态管理层中的网络状态和流表进行读写操作。