Ryu学习之最简单的流程

在交换机中,会有两种表,一种是MAC address table,一种是flow table。
对于交换机,都会有下面三个简单的功能:
    1)学习连接到一个端口的host的MAC address并且把它保存在MAC address table中。
    2)当收到的数据包的地址在MAC address table中存在的时候,则直接转发到相应的端口
    3)如果收到的数据包的目标的是没有学过的host,则进行泛洪。
在 Openflow交换机中,首先,我们需要通过Packet-In来学习MAC地址,这个mac地址是发送方的地址,学习完之后,会去转发这个数据包,这时候,存在两种情况,第一种,如果目的地址已经存在在MAC address table中,则直接发送到相应的端口,如果不存在,则要泛洪进行寻找。
下面,就通过一个具体的例子来看看具体的实现过程。
1)在刚开始的时候,MAC address table和flow table都是空的,而且hostA连接到1端口,hostC连接到3端口,hostB连接到4端口。

Ryu学习之最简单的流程_第1张图片
2)当一个数据包从hostA到hostB时,一个Packet-In消息发送给了控制器并且hostA的MAC地址已经学到了,因为发往hostB的端口并不知道,因此,包将被泛洪到hostB和hostC。
Ryu学习之最简单的流程_第2张图片
3)当hostB收到泛洪来的消息后,则给hostA一个应答,这时候,hostB的MAC地址也学好了并且添加到MAC address table中,而且在流表中也有了一条流表项,表示当从4端口进来,要发送到hostA时,则要转发到端口1.
Ryu学习之最简单的流程_第3张图片
4)当hostA再次向hostB发送消息时,则另一条流表项也添加进来了。
Ryu学习之最简单的流程_第4张图片

你可能感兴趣的:(Ryu学习之最简单的流程)