openvswitch与控制器OpenDayLight的交互(1)

1. 1c+1s+1h,c是127.0.0.1                      

  拓扑图

       

网卡:

 只有一个bridge,控制器为本地控制器

 流表:没有流表项

2. 1c+1s+1h,c为本地ODL

拓扑:

 网卡和bridge与1相同。

设置本地ODL为控制器:

 流表:有流表项,第一项表示从s1-eth1进入的包,发送到控制器65535端口,相当于TABLE-MISS表项;第二条的dl_type=0x88cc表示该包为LLDP包,发往控制器用作拓扑发现;第三条表示如果前面的都匹配不上,则丢弃,其优先级为0.

抓包查看连接控制器后的包的内容:

 

 OFPT_FEATURES_REPLY包的部分内容

 

OPPT_MULTI PART_REPLY,type为OFPMP_PORT_DESC返回了交换机的端口信息

OFPT_MULTIPART_REPLY,type为OFPMP_DESC,返回交换机的版本等信息。

3. 1c+1s+2h

拓扑图:

 

网卡:与1个host相比,交换机多了一个网卡

 

设置控制器后,查看流表:

 wireshark抓包发现,与上面一次的抓包有所不同的地方:

1. OVS给ODL发送HELLO包后,ODL也给OVS发送了HELLO包。

2. 控制器先给OVS添加LLDP流表项和DROP流表项,然后发送LLDP包到网络,然后添加流表项上图中的第一条和第二条,其中output到了另一个端口和控制器。

 h1 ping h2,ping后交换机的流表增加了两项,这两条流表项的match域用MAC地址匹配,不涉及IP地址:

 在ODL的web页面查看,ping之前拓扑图只有openflow节点,ping通后有了主机:

 通过抓包,可以发现:

交换机收到主机h1的包后,广播ARP请求,收到主机h2的回复后,将这个包广播出去(MAC地址全ff),发送packet_in消息给控制器(packet_in消息中,src为h1 MAC地址,dst为MAC广播地址);h2收到后,回复ICMP reply包,交换机收到后,转发给h1,并发送packet_in消息给控制器(packet_in消息中src为h2 MAC地址,dst为h1 MAC地址)。

原文地址:https://www.cnblogs.com/LiuQiujie/p/12551205.html