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
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