天天看点

SDN控制器与交换机如何建立连接

交换机与控制器如何建立连接,这个问题在一些资料上有过说明,但没有具体细节。这个也让我困惑了几天,今天通过实验验证一番。

一、实验环境搭建如下:     1. 两台局域网中相连的电脑:A和B (我的环境,两台电脑在192.168.4.*网络中)     2. A电脑装好从官网下载的Ubantu虚拟系统,内含 mininet,wireshark             启动虚拟机后,查看eth0的ip地址为192.168.4.105;     2. B电脑装好同样上一份虚拟机,再从git上克隆了POX控制器              启动虚拟机后,查看eth0的ip地址为192.168.4.70;     3. putty、xming等来连接两个虚拟机,提供图形界面

二、实验过程:     1. 首先启动两台虚拟机,并且分别打开wireshark,命令为sudo wirshark

    2. 在wireshark中写入过滤规则             A电脑(192.168.4.105):ip.addr == 192.168.4.70 && tcp.port = 6633             B电脑(192.168.4.70):ip.addr == 192.168.4.105 && tcp.port = 6633     3. 启动wireshark分别监视端口eth0 启动控制器     1. 启动B电脑的pox控制器:         (1)cd pox         (2)./pox.py openflow.of_01 -address=192.168.4.70 -port=6633 pox.forwarding.l2_pairs py     2. 这时候控制器pox进入等待状态,显示为:POX> 控制器端观查     1. wireshark没有任何数据输出 关闭控制器     1. 在pox> 输入结束字符 Ctrl +D

启动mininet     1. 启动mininet建立虚拟的拓扑:         (1)sudo mn --controller=remote,ip=192.168.4.70,port=6633     2. 网络建立成功后,mininet进入等待状态,显示为:mininet>     3. 这样建立了一个只有一个交换机,两主机的拓扑,指定控制器在192.168.4.70:6633 mininet端观查     1. 此时wireshark有数据出现

    2.从数据中可以看出,switch在不停地向控制器(192.168.4.70:6633)发送连接请求【SYN】,但是由于对端的控制器关闭,连接无法建立【RST ,ACK】。而且每次连接请求都都会使用新的端口号 关闭mininet     1.此时在mininet>输入exit或quit

以上两个实验只是证明是switch在向指定的控制器发送连接请求 接下来的实验来说明控制器与交换机通信的过程 启动控制器端wireshark 启动mininet端wireshark 启动控制器 启动mininet 经过以上四步,可以看到A和B上的wireshark都开始显示数据: 从mininet上可以得到如下数据:

SDN控制器与交换机如何建立连接

  实验结论     1. 先看灰色头的几行,可以看到交换机用53967端口连通了控制器后,交换机要求关闭连接,并且控制器端给交换机发送了OFP的hello消息     2. 再看接下来的灰色几行,可以看到交换机用53968端口又和控制器端连接,连通后,交换机就用这个端口向控制器发送了OFP的hello消息     3. 从此以后交换机的通信都一直使用端口53968,这样连接建立成功。     4.以后就进行OFP的echo-request/reply消息