Openflow最基础

涉及到openstack还是网络工程师,都要理解什么是交换机,openflow也是如此。

OpenFlow的设计之出就是将网络设备的控制功能与转发功能进行分开,从而将控制功能全部放到远程的控制器上,而OpenFlow交换机只负责在本地做简单高速的数据转发,交换机的流量转发就是依据流表。

一.OpenFlow交换机由 安全通道、流表、OpenFlow协议 三部分组成。

流表:

在传统网络设备中,交换机和路由器的数据转发是依赖二层MAC地址转发表或者三层IP地址路由表,而OpenFlow交换机中使用的流表也是如此,只不过它的表项中整合了网络中各个层次的网络配置信息,从而在进行数据转发时可以使用更丰富的规则。流表中每个表项都包含三个域:包头域(header field),计数器(counters),行动(actions)。

包头域:包括12 个域,包括:进入接口,Ethernet 源地址、目标地址、类型,vlan id,vlan 优先级,IP 源地址、目标地址、协议、IP ToS 位,TCP/UDP 目标端口、源端口。每一个域包括一个确定值或者所有值(any),更准确的匹配可以通过掩码实现。

详细含义不做解释了。

计数器:OpenFlow流表的计数器可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息。例如:针对每张流表,统计当前活动的表项数、数据包查询次数、数据包匹配次数等;针对每个数据流,统计接收到的数据包数、字节数、数据流持续时间等;针对每个设备端口,除统计接收到的数据包数、发送数据包数、接收字节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计;针对每个队列,统计发送的数据包数和字节数,还有发送时的溢出(Overrun)错误次数等。

行动:每个表项对应到0 个或者多个行动,如果没有转发行动,则默认丢弃。多个行动的执行需要依照优先级顺序依次进行。但对包的发送不保证顺序。另外交换机可以对不支持的行动返回错误(unspported flow error)。行动可以分为两种类型:必备行动(Required Actions)和可选行动(Optional Actions),必备行动是默认支持的,交换机需要通知控制器它支持的可选行动。OpenFlow流表的动作用于指示交换机在收到匹配的数据包后应该如何对其进行处理。与传统交换机转发表只需要指明数据包的转发出端口不同,OpenFlow交换机因为缺少控制平面的能力,所以对匹配数据包的处理不仅仅是简单的转发操作,而需要用动作来详细说明交换机将要对数据包所做的处理。

必备行动-转发(Forward)
 ALL 转发到所有出口(不包括入口)
 CONTROLLER 封装并转发给控制器
 LOCAL 转发给本地网络栈
 TABLE 对要发出的包执行流表中的行动
 IN_PORT 从入口发出
必备行动-丢弃(Drop)
没有明确指明处理行动的表项,所匹配的所有网包默认丢弃。

可选行动-转发
 NORMAL 按照传统交换机的2 层或3 层进行转发处理。
 FLOOD 通过最小生成树从出口泛洪发出,注意不包括入口。
可选行动-入队(Enqueue)
将包转发到绑定到某个端口的队列中。
可选行动-修改域(Modify-field)

 

你可能感兴趣的:(Openflow最基础)