网络拓扑
负载均衡程序
from mininet.topo import Topo
class MyTopo( Topo ):
def __init__( self ):
# initilaize topology
Topo.__init__( self )
# add hosts and switches
host1 = self.addHost( 'h1' )
host2 = self.addHost( 'h2' )
host3 = self.addHost( 'h3' )
host4 = self.addHost( 'h4' )
switch1 = self.addSwitch( 's1' )
switch2 = self.addSwitch( 's2' )
switch3 = self.addSwitch( 's3' )
switch4 = self.addSwitch( 's4' )
# add links
self.addLink(host1,switch1)
self.addLink(switch1,switch2)
self.addLink(switch1,switch3)
self.addLink(switch1,switch4)
self.addLink(switch2,switch4)
self.addLink(switch3,switch4)
self.addLink(switch4,host2)
self.addLink(switch4,host3)
self.addLink(switch4,host4)
topos = { 'mytopo': ( lambda: MyTopo() ) }
下发流表地址: s1flowmonitor
实验步骤:
1、我们先建立拓扑。
2、对s1、s2、s3、s4进行下发流表和组表
3、对s1循环改变三个端口的走向的优先级,然后进行h1 ping h3进行抓包观察。
注意点:对s2 s3 s4 下发流表注意要双向下发,因为h1与h2 h3 h4 进行交互时,h2 h3 h4 会对h1 进行响应,假如没有来回的话,h1就接收不到h2 h3 h4发送的数据包了。
演示内容
1.目的
服务器h2,h3,h4上各自有不同的服务,h1是客户端。实现一个负载均衡的北向程序,当h2,h3,h4向h1传输数据时,北向应用根据链路的使用状况动态的调整路由规则。
例如:s1-s4链路带宽充足情况下应默认s4-s1的传输路径,当剩余带宽不足的情况下应动态调整路由,使链路负载达到平衡。
2.主要思路
a.通过控制s1到s2/s3/s4的优先级,在不同时间片,优先级不同。
b.优先级通过组表实现,优先级有以下三种 s2>s3=s4 / s3>s4=s2 / s4>s2=s3
分工
组里成员一起讨论一起完成(都是新手,共同进步)
1.场景思路设计及方案选定、讲解
2.Python程序代码的编写
3.视频录制
课程总结
1、了解了什么是SDN
--软件定义网络(Software Defined Network, SDN ),是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
2、学习使用mininet
mininet安装及其使用:http://www.sdnlab.com/15138.html
3、学习了几种常用OVS命令对流表进行操作、
下发流表
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=2,actions=pop_vlan,output:3
查看流表:
sudo ovs-ofctl -O OpenFlow13 dump-flows s1
sudo ovs-ofctl -O OpenFlow13 dump-flows s2
4、wireshark抓包
开启wireshark
sudo wireshark
wireshark观察端口是否有数据包经过
5、postman的使用
6、利用可视化界面、python建立拓扑
可视化界面建立拓扑相对比较简单
前面的代码就是用python建立网络拓扑的
下面是用python建立拓扑,然后进行链接odl代码
sudo mn --custom topo.py --topo mytopo --controller=remote,ip=控制器IP,port=6633
7、了解了几种SDN控制器,并初步学习使用 Floodlight 控制器和 OpenDayLight 控制器
http://www.cnblogs.com/suefen/p/8046283.html
8、初步学习了解P4
9、感想
自己在这门课学到的还是蛮多的,至少见到了sdn的强大,毕竟是一种新型网络,希望有机会多去接触这方面的知识