- 软件定义网络部分
启动OpenDayLight的karaf程序,并安装如下组件:
feature:install odl-restconf
feature:install odl-l2switch-switch-ui
feature:install odl-mdsal-apidocs
feature:install odl-dluxapps-applications
1、使用Mininet和OpenVswitch构建拓扑,连接ODL的6653端口,采用OVS交换机,使用OpenFlow13协议连接控制器,创建如下拓扑结构:
拓扑结构图
2、在浏览器上可以访问ODL管理页面查看网元拓扑结构。
3、通过OVS手动将eth1网卡添加到s2交换机中,给eth0接口添加一个10.0.0.254/8的ip地址作为 H1、H2、H3、H4的网关,开启系统的路由转发功能。
4、在s2交换机通过OVS手工下发流表,让odl虚拟机能够访问H1、H2、H3、H4。
5、H1启动HTTP-Server功能,WEB端口为8000,在mn命令启动目录创建一个index.html,文件内容为“SDN test page”,windows客户端作为HTTP-Client,获取H1的index.html网页内容。
配置步骤:
一、安装mininet和OVS
1、将C模块额外软件包上传
安装mininet所需依赖环境和mininet
root@Server03:~/packs# apt install iperf telnet cgroup-bin cgroup-tools mininet -y
测试OVS和mininet是否安装成功
二、安装ODL控制器
1、 安装jdk环境
root@Server03:~# sudo apt-get install openjdk-8-jdk
2、修改环境变量
root@Server03:~# vi /etc/profile
在最后一行添加
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
3、获取环境变量,使其生效
root@Server03:~# source /etc/profile
root@Server03:~# echo ${JAVA_HOME}
4、 将OpenDaylight-Carbon上传到/home目录下
root@Server03:~# cd /home/
root@Server03:/home# unzip distribution-karaf-0.6.0-Carbon.zip
root@Server03:/home# cd distribution-karaf-0.6.0-Carbon/
root@Server03:/home/distribution-karaf-0.6.0-Carbon/bin# sudo ./karaf
5、执行相关命令
feature:install odl-restconf
feature:install odl-l2switch-switch-ui
feature:install odl-mdsal-apidocs
feature:install odl-dluxapps-applications
6、在网页通过http://ip:8181/index.html访问(用户名/密码:admin)
三、mininet拓扑创建
虚拟机先添加两块网卡,模式必须一样
创建自定义拓扑文件
root@Server03:/usr/lib/python2.7/dist-packages/mininet/custom# vi my.py
from mininet.topo import Topo
class MyTopo(Topo):
def __init__(self): # initilaize topology Topo.__init__(self) # add hosts and switches H1 = self.addHost('h1') H2 = self.addHost('h2') H3 = self.addHost('h3') H4 = self.addHost('h4')
S1 = self.addSwitch('s1') S2 = self.addSwitch('s2') # add links self.addLink( S1,H1 ) self.addLink( S1,H2 ) self.addLink( S1,H3 ) self.addLink( S2,H4 ) self.addLink( S1,S2 )
topos = {'mytopo': (lambda: MyTopo())}
执行自定义拓扑
root@Server03:/usr/lib/python2.7/dist-packages/mininet/custom# mn --controller=remote,ip=192.168.10.3,port=6653 --switch=ovs,protocols=OpenFlow13 --custom=my.py --topo=mytopo
将新添加的网卡(ens36)添加到s2 中
ovs-vsctl add-port s2 ens36
查看s2的端口信息
root@Server03:~# ovs-vsctl list-ports s2
给ens33网卡配置第二个地址,激活ens36网卡
root@Server03:~# ip addr add 10.0.0.254/8 dev ens33
root@Server03:~# ip link set dev ens36 up
开启路由转发功能
root@Server03:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@Server03:~# cat /proc/sys/net/ipv4/ip_forward
查看ens36所在交换机s2上的端口,下发流表实现互通
root@Server03:~# ovs-ofctl dump-ports s2 -O openflow13
添加流表
root@Server03:~# ovs-ofctl add-flow s2 priority=5,in_port=ens36,actions=output:s2-eth1,s2-eth2 -O openflow13
root@Server03:~# ovs-ofctl add-flow s2 priority=5,in_port=s2-eth1,actions=output:ens36,s2-eth2 -O openflow13
root@Server03:~# ovs-ofctl add-flow s2 priority=5,in_port=s2-eth2,actions=output:ens36,s2-eth1 -O openflow13
查看添加好的流表
ovs-ofctl dump-flows s2 -O openflow13
h1启动http服务
mininet> h1 python -m SimpleHTTPServer 8000 &
创建index.html
echo "SDN test page" > /usr/lib/python2.7/dist-packages/mininet/custom/index.html
设置H1的默认网关
h1 ip route add default via 10.0.0.254
本地访问测试网页
Windows客户端访问测试网页
添加路由
访问测试