OpenFlow协议涉及两个网络元素:OpenFlow Controller(控制器)和OpenFlow Switch(交换机)。OpenFlow协议有一部分运行在Controller上,另一部分运行在Switch上。这个协议具体定义了交换机转发面的功能部件,Controller如何来控制Switch以及Switch如何来反馈Controller的一系列过程,以及两者之间通信的消息类型和消息格式,同时还有一系列的标准术语。
OpenFlow交换机转发面内部(即交换芯片)可以认为在逻辑上由两部分组成:端口(Port)和流表(Flow Table)。跟Controller通信的通道(Controller Channel)可以认为是一个特殊的Port。一个交换机可以有很多种端口,也可以有很多级流表。
流(Flow):所谓的流,就是指在一段时间内,经过同一个网络的一系列具有相同属性的顺序发送的报文集合。流是可以被老化的,所以哪怕是具有相同属性的报文,如果隔了足够长的时间又去发(假设这个时间已经超过了流的老化时间,那么对于交换机来说,这已经是一条新的流了。这就是为什么要在流的定义中加上“一段时间内”这个定语。
流表(Flow Table):流表就是芯片中一张张的转发表,每张流表都由很多条流表项(Flow Entry)组成,比如一张流表有16K,就是说这张流表有16K条流表项。
流表项(Flow Entry):流表项是流表的最