输入命令
sudo mn --custom topo.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow13
输入命令
sudo python sdn.py
服务器h2 h3上各自有不同的服务,h1是客户端。实现一个负载均衡的北向程序,当h2和h3向h1传输数据时,北向应用根据链路的使用状况动态的调整路由规则。
例如:当h2向h1使用s1-s2链路达到满负荷状态下,h3向h1的传输路径应该动态的调整为s3所在路径,而当h2停止向h1传输数据时,h3应调整回s1-s2路径。
- 吴君毅(031502629)
身为队长,主要负责分工和监督队内工作,对每个流程都有参与其中,包括流程设计,负载均衡脚本的编写等。 - 吕宇鹏(031502425)
负责实验项目环境的搭建,例如pip,httplib2等工具;查找负载均衡的流量监控模块以及python相关的调试,并编写建立拓补的脚本。(队长的好助理) - 吴松青(031502630)
负责制作项目视频并辅助设计流程 - 郑珍发(031502641)
负责设计各个路由器的流表 - 张建桩(031502638)
协助设计各个路由器的流表
场景的要求是实现h2到h3的负载均衡,由于能力有限,给一台路由器所下发的流表只能实现根据IP地址匹配后从一个口输出,所以并不能实现一台主机上发出的数据包可以分流到一台路由器的两个端口同时出去,所以只能退一步,实现不完全的负载均衡。
因为上述原因,因为一个主机发出的包只能走一个端口,经我们小组研究决定,让h2发给h1的数据包固定走s2->s1的路径,而h3发到h1的数据包则根据s2的1端口(即输出端口s2直连s1的那条)的流量绑定该端口是否空闲,如果空闲,则和h2的包走一条路,即s2的1端口出;如果不空闲,则和h2的包分开走,从s2的2端口出。总体思想就是这样。