openflow最新版本是多少(什么是软件定义网络和OpenFlow的基本概念)
openflow最新版本是多少(什么是软件定义网络和OpenFlow的基本概念)SDN是软件定义网络。下面介绍几个SDN中的名词 三、集中控制:这一点不用多说,交换机集中到控制器上管理。 四、网络自动化和虚拟化:这一点在大型数据中心体现的比较明显。传统网络中如果突然加入一台主机或者拓扑结构发生变化,就需要做大量的工作来对网络进行调整,而在SDN中,控制器掌握着网络的结构,就算发生变化,控制器也能通过相应的应用来进行自动化的调整。 五、开放性:SDN的OpenFlow协议是通过流表(相当于转发表)来控制转发或者其他动作的,又提倡流表中的所有字段都是可以修改的,一切都是可编程的,这也是开放性的体现。
SDN是一种新型网络架构,是网络虚拟化的一种实现方式。其中OpenFlow协议是软件定义网络的实现之一,也是利用率最高的之一。其核心技术是通过OpenFlow协议将网络设备(可以理解成是传统网络中的二层三层网络设备,如交换机、路由器)中的控制面与数据面分离开来,使控制平面独立出来,形成SDN中的控制器,开发人员在此之上编写软件应用,从而实现了网络流量和各类业务的灵活控制,使网络作为管道变得更加智能。
近年来SDN作为一个新兴起的热门技术,是伴随着云计算、网络虚拟化等技术而发展的。SDN的五个特征是:平面分离、设备简化、集中控制、网络自动化和虚拟化、开放性。接下来我们分别讲一下这五个特征。
一、平面分离:在传统的网络设备中,拿交换机来举例。每个交换机内部都有着控制平面、数据平面和转发平面,而控制平面是负责控制负责执行各种协议,如路由选择协议等等,还维护各类转发表,数据进来之后,控制平面对其按照各种协议进行处理,然后交由转发平面进行转发。这样每个交换机都有自己的控制平面,都只控制自己的一亩三分地,而且很多东西都是写死在里面的,由各大厂商垄断,这样造成了交换机成本偏高,而且各个厂商的设备不兼容。而在SDN中,控制平面独立出来,也就形成了SDN中非常重要的元素之一:控制器。一个控制器可以控制多个交换机,当然控制器也可以有多个,这样一个出现故障后,其他的还能代替其工作。转发工作交由二三层设备进行,而控制功能则由软件提供。控制器通过OpenFlow协议与网络设备(交换机、路由器等)进行通信,相当于在网络设备之上建立了一个操作系统,我们在上面编写程序,控制网络。我认为这也是为什么叫软件定义网络的原因吧
二、设备简化:控制器独立出来就意味着交换机中可以不用存在控制平面(当然,目前为止只支持OpenFlow的交换机还很少,所以现在的交换机还是存在控制平面的),而且一个控制器可以管理多个交换机,这样设备得到了简化。
三、集中控制:这一点不用多说,交换机集中到控制器上管理。
四、网络自动化和虚拟化:这一点在大型数据中心体现的比较明显。传统网络中如果突然加入一台主机或者拓扑结构发生变化,就需要做大量的工作来对网络进行调整,而在SDN中,控制器掌握着网络的结构,就算发生变化,控制器也能通过相应的应用来进行自动化的调整。
五、开放性:SDN的OpenFlow协议是通过流表(相当于转发表)来控制转发或者其他动作的,又提倡流表中的所有字段都是可以修改的,一切都是可编程的,这也是开放性的体现。
下面介绍几个SDN中的名词
SDN是软件定义网络。
OpenFlow是SDN的一个实现,是协议。
OpenFlow Switch 是支持Open Flow协议的交换机。
工作原理:
OpenFlow交换机内有一个FlowTable,交换机按照流表转发数据,流表由控制器生成和维护。内有数据包匹配特征和数据包处理方法。
流表数据包匹配特征的构成:
1.进入交换机的端口(Ingress Port)
2.源MAC地址(Ether Source)、目的MAC地址(Ether dst)、以太网类型(Ether Type)、VLAN标签(VLAN id)、VLAN优先级(VLAN priority)
3.源IP(IP src)、目的IP(IP dst)、IP协议字段(IP Proto)、IP服务类型(IP Tosbits)
4.TCP/UDP源端口号(TCP/UDP src port)、TCP/UDP目的端口号(TCP/UDP dst port)
数据包处理方法:
转发、修改包头。处理称为Action
OpenFlow协议的消息类型:
1.控制器to交换机(Controller to Switch 由控制器发出)
1)Features:获取交换机特征
2)Configuration:配置交换机
3)Modify-State:修改交换机状态(修改流表)
4)Read-Stats:读取交换机状态
5)Send-Packet:发送数据包
6)Barrier:阻塞消息
2.异步消息(Asynchronous 由交换机发出)
1)Packet-in:收到数据包后告知控制器、
2)Flow-Removed:告知控制器交换机流表被删除
3)Port-Status:告知控制器交换机端口状态更新
4)Error:告知控制器交换机发生错误
3.对称消息(Symmetric 控制器或交换机发出)
1)Hello:建立OpenFlow连接
2)Echo:确认交换机与控制器之间的连接状态
3)Vendor:厂商自定义的消息
OpenFlow协议数据包包括包头Header和消息Message:Header(协议版本、数据包长度等)、Message(具体的数据包内容)
OpenFlow通信过程:
1)控制器与交换机三次握手建立socket连接;然后控制器与交换机互发OFPT_Hello消息(只有Header,version为发送方支持的协议的最高版本,双方选择最低的版本的协议作为通信协议,若一方不支持OpenFlow协议则发送OFPT_ERROR<TYPE:OFTP_HELLO_FAILED CODE=0>消息后断开连接,否则建立连接成功)
2)获取交换机Features。建立连接后控制器获取交换机特性信息(交换机ID<DPID>、交换机缓冲区数量、交换机端口及端口属性)。控制器发送Features Request消息(只包含Header),交换机收到消息后,返回Features Reply消息(包含Header和Message)
Features Message结构:
datapath_id为交换机独一无二的ID号
n_buffers为交换机可以同时缓存的最大数据包个数
n_tables为交换机的流表数量
Capabilities表示交换机支持的特殊功能
Actions表示交换机支持的动作(见ofp_action_type)
ofp_phy_ports为交换机的物理端口描述列表
port_no为物理端口的编号
hw_addr为端口的MAC地址
name为端口的名称
config为端口的配置
State为端口状态
curr advertised supported peer为端口物理属性
3)PACKET_in 事件(交换机接收数据包),控制器获取交换机特性后,向交换机发送数据包,交换机收到数据包后开始处理。若收到的数据包没有匹配流表则交换机将其封装在packet_in中发送给控制器。触发此事件的原因有:一、收到数据包若流表中有与数据包包头相匹配的则按所指示的action处理数据包,否则封装在Packet_in消息中发回控制器处理,此时数据包还缓存在交换机中;二、流表中包含转发给控制器的动作(Output=Controller),此时不会缓存。Packet_in消息格式(uffer_id为packet‐in事件所携带的数据包在交换机中的缓存区ID、total_len为data段的长度、 in_port数据包进入交换机的入接口号、Reason为packet‐in事件产生的原因)packet_in事件后一般会触发两种事件(packet_out、flow_mod)若为广播包,则包装为packet_out包,让交换机flood(发送给除接收口以外的所有端口)
4)OFPT_PACKET_OUT:
不是所有的数据包都要向交换机中添加一条流表项来匹配处理,有数量很少数据包(如ARP、IGMP等),为了节省系统开销,控制器可以使用PacketOut消息,让交换机做相应处理。
5)OFPT_FLOW_MOD:流表中无匹配项时,触发packet_in事件,控制器收到此消息后发送flow_mod消息向交换机添加一个流表项,将flow_mod消息中的buffer_id字段设为packet_in中的buffer_id,向交换机流表内写入与此数据包有关的流表项并指定action处理。
OFPT_FLOW_MOD= header(type:类型、length:整个数据包长度、xid:数据包编号) match flow_mod(添加、删除、修改交换机的流表信息) action[]
6)OFPT_ECHO:没有数据包交换时,控制器定期发送OFPT_ECHO_REQUEST消息,交换机回复OFPT_ECHO_REPLY,确保通信顺畅。
有感兴趣的同学可以看一下《深度解析SDN——利益、战略、技术、实践》这本书,浅显易懂。
私信可获取资源