实验压缩包获取:
链接:https://pan.baidu.com/s/1L0uiuHme9j44mnr8xPgyMA
提取码:lyxi
解压opendayligh软件包,运行启动:
root@Ispsrv:~# ls
111.txt distribution-karaf-0.6.0-Carbon.zip mininet_2.2.2-4_amd64.deb
root@Ispsrv:~# unzip -o distribution-karaf-0.6.0-Carbon.zip -d /root
Archive: distribution-karaf-0.6.0-Carbon.zip
creating: /root/distribution-karaf-0.6.0-Carbon/
creating: /root/distribution-karaf-0.6.0-Carbon/configuration/
creating: /root/distribution-karaf-0.6.0-Carbon/data/
creating: /root/distribution-karaf-0.6.0-Carbon/data/tmp/
creating: /root/distribution-karaf-0.6.0-Carbon/deploy/
creating: /root/distribution-karaf-0.6.0-Carbon/etc/
creating: /root/distribution-karaf-0.6.0-Carbon/lib/
creating: /root/distribution-karaf-0.6.0-Carbon/lib/bin/
creating: /root/distribution-karaf-0.6.0-Carbon/lib/endorsed/
creating: /root/distribution-karaf-0.6.0-Carbon/lib/ext/
creating: /root/distribution-karaf-0.6.0-Carbon/system/
creating: /root/distribution-karaf-0.6.0-Carbon/system/biz/
.........................
.........................
.........................
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/stop
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/client.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/instance.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/karaf.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/setenv.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/shell.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/start.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/status.bat
inflating: /root/distribution-karaf-0.6.0-Carbon/bin/stop.bat
配置java环境变量:
root@Ispsrv:~# apt install openjdk-8-jdk -y
查看java环境变量的安装包:
root@Ispsrv:~# cd /usr/lib/jvm
root@Ispsrv:/usr/lib/jvm# ls -l
总用量 0
lrwxrwxrwx 1 root root 20 3月 19 2019 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64
drwxr-xr-x 7 root root 144 7月 10 13:07 java-8-openjdk-amd64
root@Ispsrv:/usr/lib/jvm#
写入到开机加载文件:
root@Ispsrv:/usr/lib/jvm# echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64' >> /etc/profile
检查一下写入情况:
root@Ispsrv:/usr/lib/jvm# tail -f /etc/profile
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
tty | egrep -q tty[1-6] && export LC_ALL=C
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
^C 键盘CTRL+C退出
加载环境变量:
root@Ispsrv:/usr/lib/jvm# source /etc/profile
root@Ispsrv:/usr/lib/jvm#
执行启动:
root@Ispsrv:~# cd distribution-karaf-0.6.0-Carbon/bin/
root@Ispsrv:~/distribution-karaf-0.6.0-Carbon/bin# ./karaf
安装组件:
feature:install odl-restconf
feature:install odl-l2switch-switch-ui
feature:install odl-mdsal-apidocs
feature:install odl-dluxapps-applications
# 进行执行
opendaylight-user@root>feature:install odl-restconf
opendaylight-user@root>feature:install odl-l2switch-switch-ui
opendaylight-user@root>feature:install odl-mdsal-apidocs
opendaylight-user@root>feature:install odl-dluxapps-applications
本机IP进行浏览器访问:
http://81.6.63.100:8181/index.html
可以看到现在无拓扑图:
安装mininet软件包:
root@Ispsrv:~# apt --fix-broken install -y
root@Ispsrv:~# sudo apt --fix-broken install
root@Ispsrv:~# dpkg -i mininet_2.2.2-4_amd64.deb
(正在读取数据库 ... 系统当前共安装有 92616 个文件和目录。)
准备解压 mininet_2.2.2-4_amd64.deb ...
正在解压 mininet (2.2.2-4) 并覆盖 (2.2.2-4) ...
正在设置 mininet (2.2.2-4) ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
安装ovs软件平台:
root@Ispsrv:~# apt install openvswitch-switch -y
构建拓扑:
mn --controller=remote,ip=81.6.63.100,port=6653 --topo=single,3 --switch=ovs,protocols=OpenFlow10
--controller=CONTROLLER:指定远程控制器
remote:远程主机
ip:远程地址
port:表示端口
--topo=TOPO:指定拓扑类型
single,m:创建拓扑为星型拓扑,m表示m个主机
--switch=SWITCH:指定交换机类型
ovs:使用交换机的类型
执行结果:
root@Ispsrv:~# mn --controller=remote,ip=81.6.63.100,port=6653 --topo=single,3 --switch=ovs,protocols=OpenFlow10
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1) (h3, s1)
*** Configuring hosts
h1 h2 h3
*** Starting controller
c0
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet>
查看拓扑图:
测试网络是否互通:
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 h3
h2 -> h1 h3
h3 -> h1 h2
*** Results: 0% dropped (6/6 received)
mininet>
进行手动下发流表:
mininet> sh ovs-ofctl add-flow s1 in_port=2,actions=drop
mininet> pingall
*** Ping: testing ping reachability
h1 -> X h3
h2 -> X X
h3 -> h1 X
*** Results: 66% dropped (2/6 received)
mininet>
注:####出现66%才表示成功####
查看端口(若出现三个表示成功)
mininet> sh netstat -an | grep 6653
tcp 0 0 81.6.63.100:58912 81.6.63.100:6653 ESTABLISHED
tcp6 0 0 :::6653 :::* LISTEN
tcp6 0 0 81.6.63.100:6653 81.6.63.100:58912 ESTABLISHED
mininet>
查看交换机的流表:
mininet> sh ovs-ofctl dump-flows s1
cookie=0x2b00000000000000, duration=411.116s, table=0, n_packets=15, n_bytes=1022, priority=2,in_port="s1-eth3" actions=output:"s1-eth1",output:"s1-eth2",CONTROLLER:65535
cookie=0x2b00000000000001, duration=411.114s, table=0, n_packets=12, n_bytes=728, priority=2,in_port="s1-eth1" actions=output:"s1-eth3",output:"s1-eth2",CONTROLLER:65535
cookie=0x2b00000000000002, duration=411.111s, table=0, n_packets=11, n_bytes=826, priority=2,in_port="s1-eth2" actions=output:"s1-eth3",output:"s1-eth1",CONTROLLER:65535
cookie=0x0, duration=191.126s, table=0, n_packets=35, n_bytes=1722, in_port="s1-eth2" actions=drop
cookie=0x2b00000000000000, duration=412.993s, table=0, n_packets=0, n_bytes=0, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x2a00000000000000, duration=295.955s, table=0, n_packets=8, n_bytes=560, idle_timeout=600, hard_timeout=300, priority=10,dl_src=ae:f7:7a:66:69:42,dl_dst=a2:8e:a4:d6:60:0f actions=output:"s1-eth2"
cookie=0x2a00000000000001, duration=295.955s, table=0, n_packets=1, n_bytes=42, idle_timeout=600, hard_timeout=300, priority=10,dl_src=a2:8e:a4:d6:60:0f,dl_dst=ae:f7:7a:66:69:42 actions=output:"s1-eth1"
cookie=0x2a00000000000002, duration=295.940s, table=0, n_packets=9, n_bytes=602, idle_timeout=600, hard_timeout=300, priority=10,dl_src=ae:f7:7a:66:69:42,dl_dst=3e:02:6b:aa:2d:2a actions=output:"s1-eth3"
cookie=0x2a00000000000003, duration=295.939s, table=0, n_packets=9, n_bytes=602, idle_timeout=600, hard_timeout=300, priority=10,dl_src=3e:02:6b:aa:2d:2a,dl_dst=ae:f7:7a:66:69:42 actions=output:"s1-eth1"
cookie=0x2a00000000000004, duration=295.932s, table=0, n_packets=1, n_bytes=42, idle_timeout=600, hard_timeout=300, priority=10,dl_src=a2:8e:a4:d6:60:0f,dl_dst=3e:02:6b:aa:2d:2a actions=output:"s1-eth3"
cookie=0x2a00000000000005, duration=295.927s, table=0, n_packets=5, n_bytes=266, idle_timeout=600, hard_timeout=300, priority=10,dl_src=3e:02:6b:aa:2d:2a,dl_dst=a2:8e:a4:d6:60:0f actions=output:"s1-eth2"
cookie=0x2b00000000000000, duration=412.993s, table=0, n_packets=3, n_bytes=270, priority=0 actions=drop
mininet>
查看交换机的流表(有dorp)
mininet> sh ovs-ofctl dump-flows s1 | grep "in_port=2"
cookie=0x2b00000000000002, duration=532.888s, table=0, n_packets=11, n_bytes=826, idle_age=417, priority=2,in_port=2 actions=output:3,output:1,CONTROLLER:65535
cookie=0x0, duration=312.903s, table=0, n_packets=36, n_bytes=1792, idle_age=55, in_port=2 actions=drop
mininet>
使用iperf工具测试h1和h3的带宽:
mininet> iperf h1 h3
*** Iperf: testing TCP bandwidth between h1 and h3
*** Results: ['754 Mbits/sec', '755 Mbits/sec']
mininet>
h1启动HTTP—Server功能:
mininet> h1 python -m SimpleHTTPServer 8080 &
查看h1的地址:
mininet> h1 ip add
Serving HTTP on 0.0.0.0 port 8080 ...
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: h1-eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ae:f7:7a:66:69:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.0.0.1/8 brd 10.255.255.255 scope global h1-eth0
valid_lft forever preferred_lft forever
inet6 fe80::acf7:7aff:fe66:6942/64 scope link
valid_lft forever preferred_lft forever
mininet>
查看端口:
mininet> sh ss -lntp | grep 8080
LISTEN 0 50 *:8080 *:* users:(("java",pid=4012,fd=353))
mininet>
安装wget:
root@Ispsrv:~# apt install wget -y
获取h1的html网页配置:
mininet> h3 wget -O h1 http://10.0.0.1:8080
--2023-07-10 13:45:09-- http://10.0.0.1:8080/
正在连接 10.0.0.1:8080... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:826 [text/html]
正在保存至: “10.0.0.1”
10.0.0.1 100%[===================>] 826 --.-KB/s 用时 0s
2023-07-10 13:45:09 (251 MB/s) - 已保存 “10.0.0.1” [826/826])
mininet>
安装curl:
root@Ispsrv:~# apt install curl -y
使用h3访问h1的网页:
mininet> h3 curl 10.0.0.1:8080
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
<title>Directory listing for /</title>
<body>
<h2>Directory listing for /</h2>
<hr>
<ul>
<li><a href=".bash_history">.bash_history</a>
<li><a href=".bashrc">.bashrc</a>
<li><a href=".cache/">.cache/</a>
<li><a href=".gnupg/">.gnupg/</a>
<li><a href=".karaf/">.karaf/</a>
<li><a href=".profile">.profile</a>
<li><a href=".viminfo">.viminfo</a>
<li><a href=".Xauthority">.Xauthority</a>
<li><a href="10.0.0.1">10.0.0.1</a>
<li><a href="111.txt">111.txt</a>
<li><a href="distribution-karaf-0.6.0-Carbon/">distribution-karaf-0.6.0-Carbon/</a>
<li><a href="distribution-karaf-0.6.0-Carbon.zip">distribution-karaf-0.6.0-Carbon.zip</a>
<li><a href="mininet_2.2.2-4_amd64.deb">mininet_2.2.2-4_amd64.deb</a>
<li><a href="nohup.out">nohup.out</a>
</ul>
<hr>
</body>
</html>
mininet>
测试访问:
mininet> h3 curl -I 10.0.0.1:8080
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.16
Date: Mon, 10 Jul 2023 05:47:24 GMT
Content-type: text/html; charset=UTF-8
Content-Length: 826
mininet>
杀死h1的网页python程序:
mininet> h1 kill %python
10.0.0.3 - - [10/Jul/2023 13:45:09] "GET / HTTP/1.1" 200 -
10.0.0.3 - - [10/Jul/2023 13:46:56] "GET / HTTP/1.1" 200 -
10.0.0.3 - - [10/Jul/2023 13:47:24] "HEAD / HTTP/1.1" 200 -
mininet>