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地址)。