SDN理解:host之间的通信过程

学习参考资料:

http://www.cnblogs.com/chenting1900/p/4149713.html

假设host1  ping  host2,拓扑为:host1—switch1—switch2—host2。


(1)host1要给host2发送ICMP报文,首先需要向switch1发送ARP查询host2的MAC地址。

(2)switch1对数据包进行处理,首先查找流表,有以下两种情况(如下图所示):

①找到了与数据包包头相匹配的条目,则按照流表所指示的action列表处理数据包;

在流表中没有匹配条目,则交换机将该数据包封装在PACKET-IN消息中发送给控制器处理。

SDN理解:host之间的通信过程

(3)若为(2)②中所述情况,则控制器学习host1的地址,并将host1的ARP查询报文发送给所有的边缘Switch,边缘Switch对边缘链路转发host1的ARP查询,此时host2收到ARP查询后,也会回复ARP应答,同样的switch将ARP应答发送给控制器,控制器学习host2的MAC地址。

(4)控制器依次通知最短路径中的交换机安装转发表项,交换机安装好表项后,ICMP报文即可通过各交换机按照转发表进行转发。

这一过程可以在实践中通过wireshark抓包以及流表查询得到验证。

关于OpenFlow报文的分析以及流表项的解释会在后续文章中更新。