searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OVS和Openflow学习

2023-09-27 08:23:41
74
0

Openflow

OpenFlow是一种用于软件定义网络(SDN)的开放通信协议,旨在通过将网络的控制平面与数据平面分离,实现网络的灵活性和可编程性。OpenFlow协议允许SDN控制器直接与网络设备(如交换机和路由器)通信,并通过发送特定的控制消息来配置和管理网络流量转发规则。

在传统网络中,网络设备的控制平面和数据平面是紧密耦合的,交换机和路由器内部自行决定如何转发流量。而在SDN中,控制器可以通过OpenFlow协议向网络设备下发流表规则,指示网络设备如何处理数据包,从而实现更灵活和动态的网络配置。

流表规则就类似于传统交换机的MAC地址表,但具有更高级的功能和灵活性,区别如下:

  1. 灵活性:流表规则比MAC地址表更加灵活和可编程。传统交换机的MAC地址表仅根据数据包的源MAC地址来学习转发端口,而流表规则可以根据更多的匹配条件来决定如何处理数据包,例如源IP地址、目的IP地址、协议类型、VLAN标记等。
  2. 中央控制:流表规则是由SDN控制器中央控制的,而传统交换机的MAC地址表是由交换机本身动态学习的。SDN控制器可以根据网络需求动态地配置流表规则,实现对网络流量的灵活控制。
  3. 数据平面与控制平面分离:在SDN中,控制器和交换机之间通过OpenFlow协议通信,实现数据平面和控制平面的分离。这使得网络管理更加灵活和可编程。而传统交换机的MAC地址表在数据平面内部实现,并与控制平面紧密耦合。

OVS

虚拟交换机要做到的事情:传递虚拟机之间的流量,以及实现虚拟机和外界网络的通信

OVS(Open vSwitch)是一个开源的、多层次的虚拟交换机,它可以在不同的虚拟化平台中使用,例如KVM、Xen、VMware和Docker等。

OVS流表

下图是一个进入OVS的数据包(Packet)被流表处理的过程。OVS中可以有一个或者多个流表(flow table),每个流表包括多条流表项(Flow entry),每条流表项主要包含多个匹配字段(match fields)、匹配成功后要执行的指令集(action set)和统计信息。

满足前面条件的去actions,某些表约定俗成干一些特定的事情

对于没有满足任何条件的数据包,通常会采取默认操作,这可以在流表中定义。例如,您可以设置一个默认规则,用于捕获未匹配到任何其他规则的数据包,并根据需要执行特定的操作,如丢弃、记录或转发到特定端口。

 

控制器和OVS使用OpenFlow协议进行通信

  1. 控制器与OVS建立连接:控制器与OVS交换机建立TCP连接,使用OpenFlow协议进行通信。
  2. 控制器下发流表规则:控制器向OVS下发流表规则,每条规则包含匹配条件和动作。
  3. 数据包匹配和处理:当数据包到达OVS时,OVS会根据流表规则逐一匹配数据包。它将数据包的头部字段与流表中的匹配条件进行比较,找到与数据包匹配的第一条规则。
  4. 执行动作:一旦找到匹配的规则,OVS会根据规则定义的动作来处理数据包。动作可能包括转发数据包到指定端口、丢弃数据包、修改数据包的字段等。
  5. 数据包转发:根据执行的动作,OVS将数据包转发到相应的目的地,实现网络通信和数据包的传输。
  6. 控制器维护流表:控制器可以动态地更新和维护流表规则,根据网络流量和策略需求调整规则,从而实现网络的灵活和优化。

 

OVS和Openflow的具体关系

OpenFlow是一个开放的通信协议规范,定义了控制器和交换机之间信息交互的格式与内容。

而OVS(Open vSwitch)是一种虚拟交换机软件,它实现了OpenFlow协议的相关功能,可以工作于OpenFlow环境中。

具体来说:

  • OpenFlow协议规定了控制器下发流表的方式、交换机请求指令的方式等。
  • OVS根据这一协议规范,实现了交换机端对应用流表进行数据面转发的功能。
  • OVS也实现了接收控制器指令,上报请求等控制面功能。
  • 通过支持OpenFlow协议,OVS可以集成到一个SDN环境中,由控制器集中进行流量管理。

所以,OpenFlow是一套协议和机制规范,OVS则是一种具体实现这套规范的软件交换机。两者关系是:

OpenFlow : 协议规范 :: OVS : 具体实现

OpenFlow是开源的用于管理交换机流表的协议,OpenFlow在OVS中的地位可以参考上面架构图,它是Controller和ovs-vswitched间的通信协议。需要注意的是,OpenFlow是一个独立的完整的流表协议,不依赖于OVS,OVS只是支持OpenFlow协议,有了支持,我们可以使用OpenFlow控制器来管理OVS中的流表,OpenFlow不仅仅支持虚拟交换机,某些硬件交换机也支持OpenFlow协议

0条评论
0 / 1000
w****n
6文章数
0粉丝数
w****n
6 文章 | 0 粉丝
原创

OVS和Openflow学习

2023-09-27 08:23:41
74
0

Openflow

OpenFlow是一种用于软件定义网络(SDN)的开放通信协议,旨在通过将网络的控制平面与数据平面分离,实现网络的灵活性和可编程性。OpenFlow协议允许SDN控制器直接与网络设备(如交换机和路由器)通信,并通过发送特定的控制消息来配置和管理网络流量转发规则。

在传统网络中,网络设备的控制平面和数据平面是紧密耦合的,交换机和路由器内部自行决定如何转发流量。而在SDN中,控制器可以通过OpenFlow协议向网络设备下发流表规则,指示网络设备如何处理数据包,从而实现更灵活和动态的网络配置。

流表规则就类似于传统交换机的MAC地址表,但具有更高级的功能和灵活性,区别如下:

  1. 灵活性:流表规则比MAC地址表更加灵活和可编程。传统交换机的MAC地址表仅根据数据包的源MAC地址来学习转发端口,而流表规则可以根据更多的匹配条件来决定如何处理数据包,例如源IP地址、目的IP地址、协议类型、VLAN标记等。
  2. 中央控制:流表规则是由SDN控制器中央控制的,而传统交换机的MAC地址表是由交换机本身动态学习的。SDN控制器可以根据网络需求动态地配置流表规则,实现对网络流量的灵活控制。
  3. 数据平面与控制平面分离:在SDN中,控制器和交换机之间通过OpenFlow协议通信,实现数据平面和控制平面的分离。这使得网络管理更加灵活和可编程。而传统交换机的MAC地址表在数据平面内部实现,并与控制平面紧密耦合。

OVS

虚拟交换机要做到的事情:传递虚拟机之间的流量,以及实现虚拟机和外界网络的通信

OVS(Open vSwitch)是一个开源的、多层次的虚拟交换机,它可以在不同的虚拟化平台中使用,例如KVM、Xen、VMware和Docker等。

OVS流表

下图是一个进入OVS的数据包(Packet)被流表处理的过程。OVS中可以有一个或者多个流表(flow table),每个流表包括多条流表项(Flow entry),每条流表项主要包含多个匹配字段(match fields)、匹配成功后要执行的指令集(action set)和统计信息。

满足前面条件的去actions,某些表约定俗成干一些特定的事情

对于没有满足任何条件的数据包,通常会采取默认操作,这可以在流表中定义。例如,您可以设置一个默认规则,用于捕获未匹配到任何其他规则的数据包,并根据需要执行特定的操作,如丢弃、记录或转发到特定端口。

 

控制器和OVS使用OpenFlow协议进行通信

  1. 控制器与OVS建立连接:控制器与OVS交换机建立TCP连接,使用OpenFlow协议进行通信。
  2. 控制器下发流表规则:控制器向OVS下发流表规则,每条规则包含匹配条件和动作。
  3. 数据包匹配和处理:当数据包到达OVS时,OVS会根据流表规则逐一匹配数据包。它将数据包的头部字段与流表中的匹配条件进行比较,找到与数据包匹配的第一条规则。
  4. 执行动作:一旦找到匹配的规则,OVS会根据规则定义的动作来处理数据包。动作可能包括转发数据包到指定端口、丢弃数据包、修改数据包的字段等。
  5. 数据包转发:根据执行的动作,OVS将数据包转发到相应的目的地,实现网络通信和数据包的传输。
  6. 控制器维护流表:控制器可以动态地更新和维护流表规则,根据网络流量和策略需求调整规则,从而实现网络的灵活和优化。

 

OVS和Openflow的具体关系

OpenFlow是一个开放的通信协议规范,定义了控制器和交换机之间信息交互的格式与内容。

而OVS(Open vSwitch)是一种虚拟交换机软件,它实现了OpenFlow协议的相关功能,可以工作于OpenFlow环境中。

具体来说:

  • OpenFlow协议规定了控制器下发流表的方式、交换机请求指令的方式等。
  • OVS根据这一协议规范,实现了交换机端对应用流表进行数据面转发的功能。
  • OVS也实现了接收控制器指令,上报请求等控制面功能。
  • 通过支持OpenFlow协议,OVS可以集成到一个SDN环境中,由控制器集中进行流量管理。

所以,OpenFlow是一套协议和机制规范,OVS则是一种具体实现这套规范的软件交换机。两者关系是:

OpenFlow : 协议规范 :: OVS : 具体实现

OpenFlow是开源的用于管理交换机流表的协议,OpenFlow在OVS中的地位可以参考上面架构图,它是Controller和ovs-vswitched间的通信协议。需要注意的是,OpenFlow是一个独立的完整的流表协议,不依赖于OVS,OVS只是支持OpenFlow协议,有了支持,我们可以使用OpenFlow控制器来管理OVS中的流表,OpenFlow不仅仅支持虚拟交换机,某些硬件交换机也支持OpenFlow协议

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0