负载均衡程序github连接python
该拓扑是数据中心拓扑的一部分,其中h1是数据中心外的一台客户机,h2-h5是数据中心内的服务器,请根据该拓扑实现一个负载均衡的北向程序,实现h1访问数据中心中四台服务器时能根据链路情况动态改变路径。git
首先设置一个阈值,而且预先记录全部能够走的路径,每隔一段时间就计算每一个底层交换机的每秒的处理速率(数据包/秒),若是速率超过了阈值就全部通过这个交换机的路径就不走了,实现负载均衡。每次都去监听,若是发现超过阈值就不走了,变动路径,实时变动。github
-启动mininet拓扑
-设置流量初始默认转发路径
-启动控制器,设置阈值及查询时间间隔
-令主机h1发送高速率流量,观察可知交换机过载,动态变动转发路径
-令主机h1发送低速率流量,观察可知交换机不过载,路径不变动
-启动端口嗅探器,验证转发路径变动;服务器端口数据变化,代表控制器实时变动路径编程
成员 | 分工 |
---|---|
陈翔 | P4程序实现 |
张昭锡 | 交换机控制规则的编写 |
钟梦真 | Demo环境搭建 |
孙浩楷 | 控制器编写 |
胡武成 | 文档与视频制做 |
主要是负责Demo环境的搭建,安装步骤以下:ubuntu
安装deps(安装依赖):vim
#!/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:bash
#!/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
(注:详细的知识点都在博客里,不一一展开)
一、了解SDN。SDN就是将可编程的决策平面(即控制层)从数据平面分离,使控制平面逻辑中心化与自动化。SDN相关的组织ONF等,SDN的将来工做和应用领域,协议:Openflow和SDN架构等有关的一些基础知识了解(详细知识在博客中)。
二、安装mininet。用python、可视化、字符命令等来建立拓扑,pingall,net等查看拓扑。安装flowflood控制器而且利用floodlight查看拓扑图,用字符界面下发、查看流表,验证openflow的超时机制等。
三、利用OVS命令下发流表,查看流表,实现VLAN功能。学习ODL控制器的下发流表,查看流表等。并利用ODL流表、组表实现负载均衡。抓包分析。
四、学习P4语言和负载均衡,小组一块儿讨论合做最终实现了负载均衡的。
一、负载均衡是个大头,小组一块儿分工找资料,而后找论文、资料,也大概对负载均衡有个大概的了解和理解。而后一块儿作小组的结队做业,实现负载均衡程序。 二、在学的过程也碰到过蛮多问题的,好比中途虚拟机出问题,重现所有安装过,wireshark抓包失败(问过学长至今还没弄明白为啥),每次实验都会遇到不一样的问题,由于平台或者机子或者别的各类问题,可是在学长们帮助下大部分都被解决了,每次作完实验后我都会在博客上记录本身犯的错误这样仍是挺好的。 三、整个的学习过程,以为时间太过仓促。大三课程比较多,并且下半学期也是比较多事情,因此真正花在SDN上的时间仍是颇有限。因此不少都是比较囫囵吞枣,不少时候缺乏思考和深刻。并且对于SDN的理论知识也是比较缺少的。