一、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:使用单一拓扑验证(发现流表下发速度明显变缓)
实验二—流量监控应用 源码及解读 截图(同时开启两个终端验证) 第一个终端:树型拓扑
第二个终端:(查看到了周期的流量统计信息)
|