自学习交换机
交换机的自学习在传统网络中是一项非常重要的数据链路层功能。该功能确保转发表能够动态变化,以适应不同的流、实现相应的转发目标。
SDN中交换机的自学习与TCP/IP协议的第二层交换机工作模式类似,总的来说,我们需要对经过交换机的流安装相应的流表,达到转发的目标,主要步骤有以下几个:
1、交换机收到数据包,此时没有安装相应规则,故需要产生packet_in消息给控制器;
2、控制器对数据包进行解析,并指示交换机如何处理这个数据包(在未安装规则的情况下,交换机解析数据包的源端口,并将对该数据包进行泛洪,已确定究竟哪个端口能够到达目的MAC);
3、当数据包被目的MAC主机接收之后,返回应答消息,再次经过交换机的时候,由于源端口变为了第(1)步中的目的端口,目的端口变成了第(1)步中的源端口(即反方向发送应答数据包)所以此时交换机仍然不知道怎么做,上报控制器确定目的端口和源端口;
此时控制器发现该应答的源端口即为第1步中的目的端口,就知道了这两个端口之间的对应关系,于是下发流表。
代码实现
from ryu.base import app_manager
from ryu.ofproto i