負載均衡程序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的理論知識也是比較缺少的。