Mininet是一个有用的网络仿真/模拟平台,对于进行SDN测试和应用开发非常有帮助。使用Mininet可以创建不同类型的网络拓扑结构。本文介绍三种用于SDN测试时比较流行的拓扑配置。
1.单交换机(Single switch)
下面的命令创建具有1个交换机,交换机上连接3台主机的网络拓扑结构。每个主机被分配静态IP地址和MAC地址。
$ sudo mn --arp --topo single,3 --mac --switch ovsk --controller remote
上面的命令中有几个重要的参数需要注意:
- -mac:自动设置MAC地址,MAC地址与IP地址的最后一个字节相同
- -arp:为每个主机设置静态ARP表,例如:主机1中有主机2和主机3的IP地址和MAC地址ARP表项,主机2和主机3依次类推。
- -switch:使用OVS的核心模式
- –controller:使用远程控制器,可以指定远程控制器的IP地址和端口号,如果不指定则默认为127.0.0.1和6633
创建完拓扑后即可使用ping命令进行测试:h1 ping h2
(注意:如果没有指定控制器的话,是ping不通的)
单个交换机网络拓扑
2.两个线性连接的交换机(Two linear swtiches)
下面的命令创建具有2个交换机,两个交换机下面个连一个主机,交换机之间再互连起来。
$ sudo mn --topo linear --switch ovsk --controller remote
mininet_single_switch1
两个交换机线性拓扑
3.负载均衡器器(Load-balancer)
下面的命令创建的拓扑结构:1个交换机,交换机上连接3个服务器(server)和1个客户端(client)。控制器充当负载均衡器,控制客户端先服务器请求时,由控制器控制客户端真正访问的哪一个服务器。但是,有一些额外的步骤需要注意。
$ sudo mn --arp --topo single,4 --mac --switch ovsk --controller remote
- 虚拟IP/MAC(Virtual IP/MAC): 为负载均衡器选择一个virtual IP (VIP) 和 MAC 地址。这个VIP是客户端需要发起HTTP请求的目的IP地址。控制向交换机下发规则,去重写客户端的目的IP(即VIP),以指定具体访问哪一个网络服务器。为了达到这个目的,需要在客户端主机上为VIP设置一条ARP表项。如果‘h1′ 充当客户端,10.0.0.5是VIP,下面的命令用于在h1上添加静态ARP表项:
mininet> h1 arp -s 10.0.0.5 00:00:00:00:00:05
- 服务器的配置: -arp参数非常重要,用于为每个主机设置静态ARP表项。除此之外,还需要在mininet中运行下面的命令(启动HTTPServer):
mininet> h2 python -m CGIHTTPServer &
mininet> h3 python -m CGIHTTPServer &
mininet> h4 python -m CGIHTTPServer &
- Warm-up controller learning: After the hosts are up, it is important to make the controller learn the location of each host. You can do this through a pingall command in mininet:
mininet> pingall
- 客户端发起HTTP请求: In our custom VM, we have CGI script configured to report back which server is handling a particular client request. Thus, when a client performs the following command, you will receive the IP address of the handling server.
mininet> h1 curl http://10.0.0.5:8000/cgi-bin/serverip.cgi
mininet_load_balancer1负载均衡器网络拓扑
备注:文章转自sdnhub
网友评论