您的位置 首页 主动

具体图解在NetFPGA上创立一个OpenFlow Switch的网络

详细图解在NetFPGA上创建一个OpenFlow Switch的网络-Author: KiKiCompany:Digilent ChinaEmail : Date: 2012.02.14 目的 如

Author: KiKiCompany:Digilent ChinaEmail : Date: 2012.02.14目的如 图所示,咱们会创立一个根据OpenFlow Switch的网络。一台装有NetFPGA的主机完结OpenFlow Switch的功用,图中的PC0;PC1和PC2作为客户端,跟OpenFlow Switch相连,衔接NetFPGA的nf2c0和nf2c1端口;而PC3则是完结OpenFlow Switch Controller的功用,在另一链路上运用OpenFlow Protocol,与OpenFlow Switch进行通讯,对Switch的Flow Table进行操控。[[wysiwyg_imageupload:372:]]软硬件环境描绘硬件:PC0:32bit处理器,2G内存。装置有NetFPGA,双网口的千兆网卡(可选)注:假如带有双网口的千兆网卡,可省去一台主机作为客户端。PC1/PC2:装有千兆网卡。PC3:一台实体机或许虚拟机均可,装置reference Controller,或许NOX等其他的OpenFlow Switch Controller。当然该PC3必需求跟PC0能够进行网络通讯。软件:PC0: CentOS5.6 i386,NetFPGA Package2.2.2, OpenFlow Switch Package1.0.0.4,Wireshark,ISE10.1注:假如想从头生成装备FPGA bit文件的话,需求装置Xilinx ISE10.X/9.x。PC1/PC2:最简略发包便是ping,杂乱一点的发包东西,在Windows下引荐 Packet Builder,在Linux下引荐sendip。PC3:自己运用虚拟机建立的PC3,运用OpenFlow官网上引荐的VirtualBox 镜像。装置CentOS 5.6这儿不细说,仅仅主张封闭SElinux和防火墙,需求下载linux kernel source code装置Xilinx ISE10.1(可选)假如想从头生成FPGA装备文件的话,需求装置此软件。装置进程省掉。设置ISE的环境变量$ echo source /opt/Xilinx/10.1/ISE/setTIngs32.sh >>/dev/null >> ~/.bashrc$ source ~/.bashrc注:NetFPGA运用的是Virtex-II Pro VP50 FPGA芯片,版别高于10.1的ISE东西不再支撑此类芯片。装置NetFPGA Package和Openflow Switch Package$sudo rpm -Uhv
$sudo yum install netfgpa-base-2.2.0-full netfpga-openflow_switch

======================================================================Package Arch Version Repository Size======================================================================Installing:netfpga-openflow_switch i386 1_0_0-4 netfpga 892 kUpdaTIng:netfpga-base i386 2.2.0-full netfpga 4.9 MUpdaTIng for dependencies:netfpga-gui i386 2.2.0-full netfpga 81 knetfpga-kernel i386 2.2.0-full netfpga 47 knetfpga-uTIls i386 2.2.0-full netfpga 369 k经过YUM装置netfpga和netfpga openflow switch,最大的优点是它帮你主动处理了各种装置包的依靠联系,在装置的时分会主动下载装置那些依靠包,大大减少了装置的进程。在装置进程中,还有提 示短少相似于perl-Net-RawIP等包的话,需求用YUM装置。可是当时版别的OpenFlow Switch1.0.0-4是根据NetFPGA Package 2.2.0,默许的装置途径是/usr/local/netfpga/。在本次试验中,咱们运用的是现已编译好的bit文件。注:所以假如需求从头编译FPGA装备文件的话,有必要手动下载NetFPGA Package 2.2.0和NetFPGA OpenFlow Switch Package1.0.0-4,下载地址如下:://netfpga.org/beta/distributions/netfpga_openflow_switch_1_0_0-4.tar.gz将两个文件夹解压缩之后会发现,具有相似的目录,将netfpga_openflow_switch下的内容依照目录结构与Netfpga_full文件夹进行交融。$mv netfpga ~/ #将交融的netfpga目录放到用户目录下留意:yum装置openflow switch package仅仅将Verilog代码和bit文件等内容放到了netfpga的目录下,而相关的openflow switch软件的指令还需求手动装置,进程如下:
$git clone git://openflow.org/openflow.git
$cd openflow
$git checkout -b 1.0.0-netfpga origin/devel/tyabe/1.0.0-netfpga
$./boot.sh
$cd openflow
$./configure –enable-hw-lib=nf2
$make
$sudo make install

首要装置了ofdatapath,ofprotocol等指令。

设置环境变量$cat /usr/local/netfpga/bashrc_addon >> ~/.bashrc #将NetFPGA编译用到的环境变量增加到当时用户中去$source ~/.bashrc$sudo /usr/local/netfpga/lib/scripts/grub_update/grub_update.sh #更新Grub$cd /usr/local/netfpga/lib/C/kernel/$make install$lsmod |grep nf2 #检查是否装置了netfpga 内核模块假如没有找到NetFPGA的内核模块$sudo /sbin/modprobe nf2.ko #装置内核模块重启机器。$/sbin/ifconfig #检查NetFPGA 4个端口的信息,以承认NetFPGA package装置成功。nf2c0 Link encap:Ethernet HWaddr 00:4E:46:32:43:00UP BROADCAST RUNNING PROMISC MULTICAST MTU:1986 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)Interrupt:177nf2c1 Link encap:Ethernet HWaddr 00:4E:46:32:43:01UP BROADCAST RUNNING PROMISC MULTICAST MTU:1986 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)Interrupt:177nf2c2 Link encap:Ethernet HWaddr 00:4E:46:32:43:02UP BROADCAST PROMISC MULTICAST MTU:1986 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)Interrupt:177nf2c3 Link encap:Ethernet HWaddr 00:4E:46:32:43:03UP BROADCAST PROMISC MULTICAST MTU:1986 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)Interrupt:177编译生成bit文件(可选)编译OpenFlow Switch bit文件其实很简略。$ cd ~/netfpga/projects/openflow_switch/synth$make最终会在该目录下生成nf2_top_par.bit建立测验环境依照之前图中所示网络环境,进行建立。1. 设置PC1的千兆网卡,与NetFPGA nf2c0相连,并装备IP地址为10.0.0.2/242. 设置PC2的千兆网卡,与NetFPGA nf2c1相连,并装备IP地址为10.0.0.3/243. PC3是一台虚拟机,需求与PC0进行网络通讯。咱们运用VirtualBox 镜像,下载地址:运转OpenFlow Switch进入PC0$sudo /usr/local/sbin/cpci_reprogram.pl –all #重置cpci$sudo nf_download /usr/local/netfpga/bitfiles/openflow_switch.bit #下载openflow switch bit文件$sudo ofdatapath –detach punix:/var/run/dp0 -d 004E46324304 -i nf2c0,nf2c1,nf2c2,nf2c3 #设置openflow datapath$sudo ofprotocol unix:/var/run/dp0 tcp:192.168.10.106:6633 #与长途的controller进行通讯$sudo dpctl dump-flows unix:/var/run/dp0 #显现Openflow Switch的flow table信息$sudo dpctl add-flow unix:/var/run/dp0 in_port=1,actions=output:2 #增加flow,端口1进来的数据发往端口2$sudo dpctl add-flow unix:/var/run/dp0 in_port=2,actions=output:1 #增加flow,端口2进来的数据发往端口1注:由于运用的reference controller, OpenFlow Switch中的flow-table是空的,能够在本地经过dpctl指令进行手动增加规矩。默许每个flow的生命周期是60s,假如该端口没有任何数据超越60s,该端口的规矩会清空,发送/承受的数据回发给controller处理,直到有新的规矩写入,从头开端新的生命周期。进入PC3,运转虚拟机镜像,进入Ubuntu11.1体系$sudo dhclinet eth2 #虚拟机主动获取IP地址$controller ptcp:6633 #翻开OpenFlow switch controller,开端监听6633端口信息。进入PC2$ping 10.0.0.3进入PC1,由于PC2装了CentOS$ssh netfpga@10.0.0.3 #PC1(10.0.0.2)经过SSH进行衔接PC2(10.0.0.3)假如有爱好检查一下OpenFlow Switch 与长途Controller,怎么通讯的,即OpenFlow protocol。需求装置wireshark抓包东西,主张对照OpenFlow switch specification进行学习。扩展假如没有NetFPGA做OpenFlow Switch,可是又想先常常鲜,怎么办?你能够测验运用OpenFlow VSwitch,经过虚拟化来完结OpenFlow Switch。是不是上面的一个OpenFlow 网络环境能够由虚拟机来建立完结?的确有的,仅能试玩!详细能够见参考资料中的OpenFlow Tutorial后话之前做的还仅仅个开端,路漫漫其修远兮!参考资料1. www.openflow.org3. Create OpenFlow network with multiple PCs/NetFPGAs4. OpenFlow Tutorial5.OpenFlow Switch Specification

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/179605.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部