期末作业验收
1、负载均衡程序
2、演示视频
3、程序分工
负载均衡场景三:
内容:
该拓扑是数据中心拓扑的一部分,其中h1是数据中心外的一台客户机,h2-h5是数据中心内的服务器,请根据该拓扑实现一个负载均衡的北向程序,实现h1访问数据中心中四台服务器时能根据链路状况动态改变路径。
构思和设计
首先设置一个阈值,并且预先记录所有可以走的路径,每隔一段时间就计算每个底层交换机的每秒的处理速率(数据包/秒),如果速率超过了阈值就所有经过这个交换机的路径就不走了,实现负载均衡。每次都去监听,如果发现超过阈值就不走了,变更路径,实时变更。
实践步骤描述
-启动mininet拓扑
-设置流量初始默认转发路径
-启动控制器,设置阈值及查询时间间隔
-令主机h1发送高速率流量,观察可知交换机过载,动态变更转发路径
-令主机h1发送低速率流量,观察可知交换机不过载,路径不变更
-启动端口嗅探器,验证转发路径变更;服务器端口数据变化,表明控制器实时变更路径
组内分工:
成员 | 分工 |
---|---|
陈翔 | P4程序实现 |
张昭锡 | 交换机控制规则的编写 |
钟梦真 | Demo环境搭建 |
孙浩楷 | 控制器编写 |
胡武成 | 文档与视频制作 |
参与情况:
主要是负责Demo环境的搭建,安装步骤如下:
安装deps(安装依赖):
#!/usr/bin/env bash
# Fail on error
set -e
sudo apt-get update
# Install vim and git
sudo apt-get install vim git
# Install mininet from source codes
git clone https://github.com/mininet/mininet.git
cd mininet/
sudo ./util/install.sh -a
安装bmv2:
#!/usr/bin/env bash
# Fail on error
set -e
sudo git clone https://github.com/p4lang/behavioral-model.git
sudo mv behavioral-model bmv2
cd bmv2
sudo ./install_deps.sh
sudo ./autogen.sh && ./configure --disable-logging-macros --disable-elogger && make && sudo make install
安装p4c-bm
#!/usr/bin/env bash
# Fail on error
set -e
sudo apt-get install python-pip
git clone https://github.com/p4lang/p4c-bm.git
cd p4c-bm
sudo pip install -r requirements.txt && sudo pip install -r requirements_v1_1.txt
sudo python setup.py install
安装p4c
#!/usr/bin/env bash
# Fail on error
set -e
# Ubuntu 16.04 Requirements
sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev libboost-graph-dev pkg-config python python-scapy python-ipaddr tcpdump cmake
sudo apt-get install -y doxygen graphviz texlive-full
# Install Protobuf
sudo apt-get install autoconf automake libtool curl make g++ unzip
git clone https://github.com/google/protobuf.git
cd protobuf
sudo ./autogen.sh && sudo ./configure && make && make check
sudo make install && sudo ldconfig
cd ..
# Install gcc/g++ 4.9
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get install g++-4.9
ln -s /usr/bin/g++-4.9 /usr/bin/g++ -f
ln -s /usr/bin/gcc-4.9 /usr/bin/gcc -f
# Install cmake 3.2
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:george-edison55/cmake-3.x
sudo apt-get update
sudo apt-get install cmake
# Install P4C
git clone --recursive https://github.com/p4lang/p4c.git
cd p4c
mkdir build
cd build
cmake ..
make -j4 && make -j4 check
sudo make install
课程总结
回顾学习过程
(注:详细的知识点都在博客里,不一一展开)
1、了解SDN。SDN就是将可编程的决策平面(即控制层)从数据平面分离,使控制平面逻辑中心化与自动化。SDN相关的组织ONF等,SDN的未来工作和应用领域,协议:Openflow和SDN架构等有关的一些基础知识了解(详细知识在博客中)。
2、安装mininet。用python、可视化、字符命令等来创建拓扑,pingall,net等查看拓扑。安装flowflood控制器并且利用floodlight查看拓扑图,用字符界面下发、查看流表,验证openflow的超时机制等。
3、利用OVS命令下发流表,查看流表,实现VLAN功能。学习ODL控制器的下发流表,查看流表等。并利用ODL流表、组表实现负载均衡。抓包分析。
4、学习P4语言和负载均衡,小组一起讨论合作最终实现了负载均衡的。
课程心得
1、负载均衡是个大头,小组一起分工找资料,然后找论文、资料,也大概对负载均衡有个大概的了解和理解。然后一起做小组的结队作业,实现负载均衡程序。
2、在学的过程也碰到过蛮多问题的,比如中途虚拟机出问题,重现全部安装过,wireshark抓包失败(问过学长至今还没弄明白为啥),每次实验都会遇到不同的问题,因为平台或者机子或者别的各种问题,但是在学长们帮助下大部分都被解决了,每次做完实验后我都会在博客上记录自己犯的错误这样还是挺好的。
3、整个的学习过程,觉得时间太过仓促。大三课程比较多,而且下半学期也是比较多事情,所以真正花在SDN上的时间还是很有限。所以很多都是比较囫囵吞枣,很多时候缺少思考和深入。而且对于SDN的理论知识也是比较缺乏的。