| 
 
 一、Mininet安装  
apt-get -y install git 
git clone http://github.com/mininet/mininet.git 
cd mininet/util/ 
#查看所有的命令选项  
./install.sh -h 
Detected Linux distribution: Ubuntu 21.04 hirsute amd64  sys.version_info(major=3, minor=9, micro=4, releaselevel=‘final’, serial=0)  Detected Python (python3) version 3  
Usage: install.sh [-abcdfhikmnprtvVwxy03]  
This install script attempts to install useful packages  for Mininet. It should (hopefully) work on Ubuntu 11.10+  If you run into trouble, try  installing one thing at a time, and looking at the  specific installation function in this script.  
options:  -a: (default) install (A)ll packages - good luck!  -b: install controller (B)enchmark (oflops)  -c: ?lean up after kernel install  -d: (D)elete some sensitive files from a VM image  -e: install Mininet documentation/LaT(e)X dependencies  -f: install Open(F)low  -h: print this (H)elp message  -i: install (I)ndigo Virtual Switch  -k: install new (K)ernel  -m: install Open vSwitch kernel (M)odule from source dir  -n: install Mini(N)et dependencies + core files  -p: install §OX OpenFlow Controller  -r: remove existing Open vSwitch packages  -s  
 : place dependency (S)ource/build trees in 
 
    -t: complete o(T)her Mininet VM setup tasks
    -v: install Open (V)switch
    -V : install a particular version of Open (V)switch on Ubuntu
    -w: install OpenFlow (W)ireshark dissector
    -y: install R(y)u Controller
    -x: install NO(X) Classic OpenFlow controller
    -0: (default) -0[fx] installs OpenFlow 1.0 versions
    -3: -3[fx] installs OpenFlow 1.3 versions
    #完整安装(默认安装在home目录,安装到其他目录可用-s参数指定)
    root@mumi-virtual-machine:~/mininet/util# ./install.sh -a
    #安装完成以后,执行命令测试Mininet的基本功能并查看版本。
 
 
#5.1.4  #添加Python2环境  
apt-get -y install python2 
#设置替代方案  root@mumi-virtual-machine:~ # update-alternatives --install /usr/bin/python python /usr/bin/python2 1  root@mumi-virtual-machine:~ # update-alternatives --install /usr/bin/python python /usr/bin/python3 2  #选择可选pytho版本  root@mumi-virtual-machine:~ # update-alternatives --config python  
#命令使用  二、ovs安装  
5.2.4示例  1.创建OVS交换机  
2.添加端口  命令格式:ovs-vsctl <交换机名称> <端口名称>  
ovs-vsctl add-port s1 p1 
ovs-vsctl set Interface p1 type=internal 
ovs-vsctl set Interface p1 ofport_request=10 
ovs-vsctl add-port s1 p2 
ovs-vsctl set Interface p2 ofport_request=11 
ovs-vsctl set Interface p2 type=internal 
ovs-vsctl add-port s2 p3 
ovs-vsctl set Interface p3 ofport_request=1 
ovs-vsctl set Interface p3 type=internal 
ethtool -i p3 # ethtool -i p3 
ovs-vsctl add-port s2 p4 
ovs-vsctl set Interface p4 ofport_request=2 
ovs-vsctl set Interface p4 type=internal 
3.查看端口详情  命令:# ovs-ofctl show s1  
命令:# ovs-ofctl show s2  
4.创建h1和h2两个虚拟主机,设置IP分别为192.168.100.10和192.168.100.11,并接入OVS示例。  命令:  
ip netns add h1 
ip link set p1 netns h1 
ip netns exec h1 ip addr add 192.168.10.10/24 dev p1 
ip netns exec h1 ifconfig p1 promisc up 
ip netns add h2 
ip link set p4 netns h2 
ip netns exec h2 ip addr add 192.168.10.11/24 dev p4 
ip netns exec h2 ifconfig p4 promisc up 
ovs-vsctl set interface p2 type=patch 
ovs-vsctl set interface p3 type=patch 
5.创建p2到p3的内部链路,并向交换机添加对应的流表项。  
命令:  
ovs-vsctl set interface p2 options:peer=p3 
ovs-vsctl set interface p3 options:peer=p2 
ovs-ofctl add-flow s1 “in_port=10, actions=output:11” 
ovs-ofctl add-flow s1 “in_port=11, actions=output:10” 
ovs-ofctl add-flow s2 “in_port=2, actions=output:1” 
ovs-ofctl add-flow s2 “in_port=1, actions=output:2” 
6.创建完成,在Network Namespce h1环境检查结果:running。  
Qos配置  1.在交换机s1的端口1上创建qos策略newqqos,并在策略中创建类型为linux-htb的队列q0和q1,两者最大带宽分别为10G和5G.  命令:  
ovs-vsctl – set port s1-eth1 qos=@newqos – --id=@newqos create qos type=linux-htb queues=0=@q0,1=@q1 \ 
 
 – --id=@q0 create queue other-config:max-rate=10000000   – --id=@q1 create queue other-config:max-rate=5000000  
  
2.S1上添加流表,使OVS能正确转发数据,实现和h1和h2通信。  
ovs-ofctl add-flow s1 “in_port=2, actions=output:1” 
测试截图:  
3.修改流表项,将h2发往h1的数据导入队列0,队列0的最大限速为10Gbit/s。  
ovs-ofctl add-flow s1 “in_port=2, actions=enqueue:1:0” 
测试截图:  
4.再次修改流表项,将数据导入到队列1中,此时最大限速5Gbit/s。  
ovs-ofctl add-flow s1 “in_port=2, actions=enqueue:1:1” 
测试截图:  
实验完成!  三、Ryu  #官方参考地址:  https://github.com/faucetsdn/ryu  https://ryu-sdn.org/  #安装步骤(任选其一)  1.源码安装方式  git clone https://github.com/faucetsdn/ryu.git  cd ryu; pip install .  
Optional Requirements 
root@mumi-virtual-machine:~/ryu# pip install -r tools/optional-requires  安装完成如图所示:  
root@mumi-virtual-machine:~/ryu# python setup.py install  
2.快速安装  root@mumi-virtual-machine:~# pip install ryu  5.3.4实验一:  开发二层MAC自学习交换应用和基于端口及流表项统计信息的流量监控应用。  源码及解读:  #进入ryu顶级目录重新编译安装  root@mumi-virtual-machine:~# cd ryu/  root@mumi-virtual-machine:~/ryu# python setup.py install  #启动ryu控制器并加载新写的应用  截图:(同时开启两个终端验证)  第一个终端:(创建拓扑后发现会不断下发流表)  
第二个终端:  创建树形拓扑,执行pingall验证所有主机间通信并查看结果。  
命令:# mn --topo=tree,depth=2,fanout=2 --controller=remote –mac  参数depth为2和fanout为2表示交换机深度即层数为2,每个交换机下挂2个设备。  查看链接信息  
查看节点信息:  
查看链路健壮性信息:  
拓展1:使用线性拓扑验证。  
拓展2:使用单一拓扑验证(发现流表下发速度明显变缓)  
实验二—流量监控应用  源码及解读  截图(同时开启两个终端验证)  第一个终端:树型拓扑  
第二个终端:(查看到了周期的流量统计信息) 
                
                
                
        
    
 
 |