-
OSI七层模型
下面一张图简单的罗列出了OSI七层模型结构以及每一层的主要功能。
- 软件定义网络(SDN)
SDN(Software Defined Network)即软件定义网络,是一种网络设计理念,或者一种推倒重来的设计思想。它的基本思路是将网络的控制平面和数据平面进行分离,从而通过集中地控制器的软件平台去实现可编程化控制底层硬件,实现对网络资源灵活的按需配置。
SDN按照功能可以分为3层:
- 应用层
包括各种不同的业务和应用 - 控制层
主要负责处理数据平面资源的编排,维护网络拓扑、状态信息 -
基础设施层
负责基于流表的数据处理、转发和状态收集
其基本架构图如下所示
- Open vSwitch
- 定义
Open vSwitch,简称OVS,是一个虚拟交换软件,主要用于虚拟化平台,为虚拟机提供二层交换功能。支持Xen/XenServer,KVM和VirtualBox多种虚拟化技术
支持openflow协议,可以使用任何支持openflow协议的控制器对OVS进行远程管理控制 - 相关概念
Bridge:Bridge代表一个以太网交换机(Switch),一个主机中可以创建一个或者多个Bridge设备
Port:端口和物理交换机的端口概念类似,每个Port都隶属于一个Bridge
Interface:连接到Port的网络接口设备
Controller:OpenFlow控制器
datapath:负责执行数据交换,也就是把从接收端口收到的数据包在流表中进行匹配,并且执行匹配到的动作
Flow table:每一个datapath都和一个flow table关联,当datapath接收到数据以后,OVS会在flow table中查找可以匹配的flow,执行对应的操作,诸如转发数据到另外的端口
ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-based switching
ovsdb-server:轻量级的数据库服务,主要保存了整个OVS的配置信息,包括接口、交换内容,VLAN等等。ovs-vswitchd会根据数据库中的配置信息工作 -
架构介绍
OVS的整体框架如下图所示
主要包括外部控制器(Off-box)、用户态部分(User)和内核态部分(Kernel)三大模块。
- 常用组件及操作
ovs-dpctl:命令行工具,用来配置交换机内核模块,可以控制转发规则
# ovs-dpctl dump-flows br0 #查看指定bridge上面的datapath信息
ovs-vsctl:主要获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库
# ovs-vsctl add-br br0 #添加网桥
# ovs-vsctl list-br #列出所有网桥
# ovs-vsctl set-controller ovs-switch tcp:9.181.137.182:6633 #指定controller控制器
ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容
ovs-ofctl add-flow ovs-switch "table=0 dl_src=01:00:00:00:00:00/01:00:00:00:00:00,actions-drop" #屏蔽所有进入OVS的以太网广播数据包