OpenFlow即
Ethane项目:OpenFlow的前身(集中式,主动式,基于Flow的控制)
OpenFlow定义了开放的南向接口、通用转发抽象模型、网络x86指令集。
传统网络数据平面:
固定的模块,不可改变
通用转发抽象模型:
以流表的形式传输,把所有的转发数据抽象成通用的形式。
OpenFlow通用抽象
术语:
Match是指匹配域,类似于传统网络中的MAC地址,IP地址,端口号的作用。
OpenFlowSwitch定义了通用转发抽象模型:
早期的版本 1.5后的版本
FlowTable处理流程一览:
多级流表处理:
FlowTable流表子模型:
FlowEntry流表项:
匹配域中的内容:
OXM是它的类型分为0和1;0是标准类型,1是下面的格式。
OXM的TLV匹配域描述(type、length、value):
OXM TLV的基本结构 :
掩码标志相当于ip地址的掩码;载荷长度定义了TLV这四个头的长度。
OXM实例-无掩码目的以太网地址:
14=4+4+4+2 填充字节不算
带掩码
Instructions流表项指令:
Actions包处理动作:
ActionsSet包处理动作集合:
执行顺序默认从上到下,也可自定义顺序
TableMiss专用指令:
假如一个新的数据包出现,上面所有的流选项都没有匹配到,那么就和TableMiss匹配,否则该数据包会被丢弃。
该选项可以匹配任意的数据包,并且它的优先级为0
流表项计数器与失效时间:
FlowTable详细处理流程:
Metadata一开始在流表0时为空;数据包若匹配后直接执行则ActionsSet{}无特定操作
OpenFlow SwitchV1.5:
GroupTable组表:向一组端口做特定的一组操作
GroupEntry组表项:
组表箱类型:
MeterTable计量表:
MeterEntry计量表项:
计量带--制定这条计量表项该如何处理这个数据包
MeterBands计量带:
Ports端口抽象子模型:
Counters计时器子模型:
OpenFlow通用转发抽象模型:
OpenFlow协议
OpenFlow消息:
异步即交换机主动发送给控制器;
对称即交换机与控制器互相发送消息;
CtoS消息:
异步消息:
对称消息:
OpenFlow消息格式:
xid定义消息传输的唯一ID
Hello消息:
Switch features消息:
Switch消息:
FlowEntryMod消息
GroupEntryMod消息:
Multipart消息:
Packet-out消息:
用于控制器往交换机发送一个数据包。控制器定义了一个数据包之后通过Packet-out方式把这个数据包发送给交换机,让交换机做一定的处理。
Packet-in消息:
使得OpenFlow交换机可以把数据包发送给控制器
FlowRemoved消息:
失效时间到时交换机会把某条流表项删除
OF通道建立与维护:
控制器角色通知:
控制器1是默认的主控制器,其他两个控制器作为备份控制器。
流表项下发:
状态查询和收集:
OpenFlow相关的协议:
OF-Config:OpenFlow交换机配置协议
OVS-DB:针对OVS的数据库管理协议
OpFlex:思科私有的协议,控制控制器与数据平面设备之间的数据传输
NETCONF:网络的配置协议