基于Linux 内核的 Namespace(命名空间)机制
namespace是linux自带的功能,用来隔离内核资源的机制,如进程pid,主机名与域名,网络设备端口等。
什么是容器?容器其实就是一个虚拟化的独立的沙箱环境,和宿主机或者其他的容器之间是独立隔离的,他有自己的网络环境,用户权限,进程pid等。
容器是依托于一个物理机或者一个虚拟机的,在此之上可以有多个容器,容器之间是感受不到彼此的存在的,在网络中可以被看做是一个独立的个体存在
而namespace起到的作用就是让资源之间互相隔离,成为一个独立的存在。
其实容器就是一个轻量级的虚拟化服务器,你可以在一台物理机上面运行两个容器,然后在两个容器中运行tomcat,端口都是8080,而不会有端口占用的问题,因为两台容器的都有自己网络环境,他们的NetWork namespace是不同的,网络环境被隔离了起来让容器不会感受到彼此的存在,在容器中的tomcat以为只有自己一个tomcat。
SDN
SDN是一种拥有逻辑集中式的控制平面,抽象化的数据平面的新网络架构
数据平面与控制平面分离,控制平面与数据平面之间有统一的开放接口 OpenFlow,通过统一而开放的南向接口来实现对网络直接进行编程控制。
SDN 网络应用层:实现了对应的网络功能应用。这些应用程序通过调用 SDN 控制器的北向接口,实现对网络数据平面设备的配置、管理和控制。
北向接口:是 SDN 控制器与网络应用之间的开放接口,它将数据平面资源和状态信息抽象成统一的开放编程接口。
SDN 控制器:是 SDN 的大脑。控制器不仅要通过北向接口给上层网络应用提供不同层次的可编程能力,还要通过南向接口对 SDN 数据平面进行统一配置、管理和控制。
南向接口:是 SDN 控制器与数据平面之间的开放接口。 SDN 控制器通过南向接口对数据平面进行编程控制,实现数据平面的转发等网络行为。
SDN 数据平面:包括基于软件实现的和基于硬件实现的数据平面设备。数据平面设备通过南向接口接收来自控制器的指令,并按照这些指令完成特定的网络数据处理。同时,SDN 数据平面设备也可以通过南向接口给控制器反馈网络配置和运行时的状态信息。
只要网络硬件可以集中式的利用软件管理,可编程化,控制转发层面分开,就可以认为是SDN
它的提出是因为传统的网络架构无法满足人类需求,设备的配置过于麻烦。
下一代网络,需要可编程按需定制,集中式统一管理,动态流量监管,自动化部署等等
OpenFlow
转发和控制分离是SDN网络的本质特点之一 ,而实现SDN网络的转控分离架构,就需要在SDN控制器与数据转发层之间建立一个通信接口标准
也就是openflow协议
OpenFlow引入了“流表”的概念,转发器通过流表来指导数据包的转发。控制器正是通过OpenFlow提供的接口在转发器上部署相应的流表,从而实现对转发平面的控制。