内容简介:SDNSDN(软件定义网络)是一个概念、是一个思想、一个框架、是一种网络设计理念,它有三个特征1.控制平面与转发平面分离
编辑推荐: |
本文来自于博客园,本文主要介绍SDN定义的接口以及OpenFlow可以看做是接口的一种实现,进行定义与处理,更多详细内容请阅读下文。 |
SDN
SDN(软件定义网络)是一个概念、是一个思想、一个框架、是一种网络设计理念,它有三个特征
1.控制平面与转发平面分离
2.控制平面集中化
3.网络可编程
OpenFlow
OpenFlow是控制平面和转发平面之间的通讯协议,类比编程中的概念,SDN可以看做是定义的接口,OpenFlow可以看做是接口的一种实现
Open vSwitch
Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机。在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略、网络隔离、流量监控等等。
Openvswitch的架构图如下所示
主要组成解释如下
1.ovs-vswitchd:守护程序,实现交换功能,和 Linux 内核兼容模块一起,实现基于流的交换flow-based switching。
2.ovsdb-server:轻量级的数据库服务,主要保存了整个OVS的配置信息,包括接口啊,交换内容,VLAN啊等等。ovs-vswitchd会根据数据库中的配置信息工作
3.ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则
4.ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此 工具 操作的时候会更新ovsdb-server中的数据库
5.ovs-appctl:主要是向OVS守护进程发送命令的,一般用不上
6.ovsdbmonitor:GUI工具来显示ovsdb-server中数据信息
7.ovs-controller:一个简单的OpenFlow控制器
8.ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容
Open vSwitch端口
端口是收发数据包的单元。OpenvSwitch中,每个端口都属于一个特定的网桥。端口收到的数据包会经过流规则的处理,发往其他端口;也会把其他端口来的数据包发送出去.主要有
Flow语法
Open vSwitch支持openflow协议,openflow channel 负责与controller进行交互,交换机基于流表(Flow Table)转发,每个流表包含许多流表项entry,每个entry是对数据包处理的规则,其主要组成如下图
match Fields(匹配字段)主要如下:
对于add?flow,add?flows和mod?flows这三个命令,还需要指定要执行的动作:actions=[target][,target...]。其中Priority为流表优先级,是一个0-65535之间的数字,值越大,优先级越高。一个流规则中可能有多个Instructions(动作),按照指定的先后顺序执行。
Cookie是用来标示一系列流的64位数字。
Flow处理过程
如果有多个流表,则数据包按流表id从小到大一次进行匹配,如下图所示
报文在一个流表中进行匹配是,找优先级最高的流表项进行匹配,如下图所示
Neutron
使用Overlay技术解决传统网络问题
1.大容量的MAC表项和ARP表项
部署Overlay网络后,虚拟机数据封装在IP数据包中,对于承载网络(特别是接入交换机)只需要学习隧道端点的MAC,MAC地址规格需求极大降低。对于核心网关处的设备表项(MAC/ARP)要求依然极高,当前的解决方案仍然是采用分布式网关方式,通过多个核心网关设备来提高表项的总体规格。
2.4K VLAN Trunk问题
3.4K VLAN上限问题
针对VLAN只能支持数量4K以内的限制,在Overlay技术中扩展了隔离标识的位数,可以支持高达16M的用户,极大扩展了隔离数量。针对VLAN技术下广播风暴问题,Overlay对广播流量转化为组播流量,可以避免网络本身的无效流量带宽浪费。
4.虚拟机迁移网络依赖问题
Overlay是把二层报文封装在IP报文之上的新的数据格式,因此,只要网络支持IP路由可达就可以部署Overlay网络,而IP路由网络本身已经非常成熟,且在网络结构上没有特殊要求。而且路由网络本身具备良好的扩展能力,很强的的故障自愈能力和负载均衡能力。采用Overlay技术后,企业不用改变现有网络架构即可用于支撑新的云计算业务,极方便用户部署
相关概念
Neutron管理下面的实体:
网络:隔离的 L2 域,可以是虚拟、逻辑或交换。
子网:隔离的 L3 域,IP 地址块。其中每个机器有一个 IP,同一个子网的主机彼此 L3 可见。
端口:网络上虚拟、逻辑或交换端口。 所有这些实体都是虚拟的,拥有自动生成的唯一标示id,支持CRUD功能,并在数据库中跟踪记录状态。
网络
隔离的 L2 广播域,一般是创建它的用户所有。用户可以拥有多个网络。网络是最基础的,子网和端口都需要关联到网络上。
网络上可以有多个子网。同一个网络上的主机一般可以通过交换机或路由器连通起来。
子网
隔离的 L3 域,子网代表了一组分配了 IP 的虚拟机。每个子网必须有一个 CIDR 和关联到一个网络。IP 可以从 CIDR 或者用户指定池中选取。
子网可能会有一个网关、一组 DNS 和主机路由。不同子网之间 L3 是互相不可见的,必须通过一个三层网关(即路由器)经过 L3 上进行通信。
端口
可以进出流量的接口,往往绑定上若干 MAC 地址和 IP 地址,以进行寻址。一般为虚拟交换机上的虚拟接口。
虚拟机挂载网卡到端口上,通过端口访问网络。当端口有 IP 的时候,意味着它属于某个子网。
抽象系统架构
无论哪种具体的网络虚拟化实现,一个简化和抽象后的系统架构可以表述为下图所示(Neutron部署后什么样子的)。
1.Virtualization Layer可以看做是一个大的虚拟交换机
2.启用 DVR 特性后允许东西向流量和带有 Floating IP 的南北向流量不经过网络节点的转发,直接从计算节点的外部网络出去
3.VXLAN和GRE就是各个主机的Virtualization Layer聚合成一个大Virtualization Layer的技术
VXLAN模式
vxlan和gre模型差不多,只是隧道网桥br-tun(Virtualization Layer)的聚合方式不同,,vxlan是通过VNI来建立隧道连接,gre是通过GRE ID
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 一文读懂监督学习、无监督学习、半监督学习、强化学习这四种深度学习方式
- 学习:人工智能-机器学习-深度学习概念的区别
- 统计学习,机器学习与深度学习概念的关联与区别
- 混合学习环境下基于学习行为数据的学习预警系统设计与实现
- 学习如何学习
- 深度学习的学习历程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming PHP
Rasmus Lerdorf、Kevin Tatroe、Peter MacIntyre / O'Reilly Media / 2006-5-5 / USD 39.99
Programming PHP, 2nd Edition, is the authoritative guide to PHP 5 and is filled with the unique knowledge of the creator of PHP (Rasmus Lerdorf) and other PHP experts. When it comes to creating websit......一起来看看 《Programming PHP》 这本书的介绍吧!