ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:101.23KB ,
资源ID:9252545      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9252545.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Openflow-VSwitch使用详述.docx)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Openflow-VSwitch使用详述.docx

1、  OpenvSwitch用例2 分类: OpenStack2014-03-03 17:18 936人阅读 评论(0) 收藏 举报 1 ovs-vsctl使用: 添加名为br0的网桥 ovs-vsctl add-br br0 删除名为br0的网桥 ovs-vsctl del-br br0 列出所有网桥 ovs-vsctl list-br 判断网桥br0是否存在 ovs-vsctl br-exists br0 列出挂接到网桥br0上的所有网络接口 ovs-vsctl list-ports br0 将网络接口eth0挂接到网桥br0上 ovs-vsctl add-po

2、rt br0 eth0 删除网桥br0上挂接的eth0网络接口 ovs-vsctl del-port br0 eth0 列出已挂接eth0网络接口的网桥 ovs-vsctl port-to-br eth0   2 流规则: 每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分: 基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该

3、流规则永不过期,idle_timeout将不包含于ovs-ofctl dump-flows brname的输出中。 条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitc

4、hd 中的流规则将全部丢失,网络无法连接。其中dl是datalink的缩写,nw是network的缩写,tp是transport的缩写。 动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。 实例: 1.    查看虚拟交换机ovsbr0的信息: $ovs-ofctl  show ovsbr0 2.    查看ovsbr0上各交换机端口的状态 $ovs-ofctl  dump-ports ovsbr0 3.    查看o

5、vsbr0上的所有流规则 $ovs-ofctl  dump-flows ovsbr0 4.    丢弃从2号端口发来的所有数据包 $ovs-ofctl  add-flow ovsbr0 idle_timeout=0,in_port=2,actions=drop 注意:此处的in_port是指虚拟网卡(vif,tap)的号码,并非传输层的端口号(如www:80,ftp:21,22等),通过ovs-ofctl  show ovsbr0可查得端口号,传输层的端口号有tp_src/tp_dst指定。 5.    删除条件字段中包含in_port=2的所有流规则 $ovs-ofctl  d

6、el-flows ovsbr0 in_port=2 6.    丢弃所有收到的数据包 $ovs-ofctl  add-flow ovsbr0 dl_type=*,nw_src=ANY,action=drop 注意: (1)流规则中可包含通配符和简写形式,任何字段都可等于*或ANY,  (2)简写形式为将字段组简写为协议名,目前支持的简写有ip,arp,icmp,tcp,udp,与流规则条件字段的对应关系如下: dl_type=0×0800 <=> ip dl_type=0×0806 <=> arp dl_type=0×0800,nw_proto=1 <=> icmp dl_t

7、ype=0×0800,nw_proto=6 <=> tcp dl_type=0×0800,nw_proto=17 <=> udp (1.1.0 即以后版本支持) dl_type=0x86dd. <=> ipv6 dl_type=0x86dd,nw_proto=6. <=> tcp6 dl_type=0x86dd,nw_proto=17. <=> udp6 dl_type=0x86dd,nw_proto=58. <=> icmp6   3 测试VALN: 参考文章: http://openvswitch.org/support/config-cookbooks/vlan-co

8、nfiguration-cookbook/ 配置实例1: 在两台xen+openvswitch的服务器上172.16.19.206和172.16.19.208,启动四个虚拟机(206:VM3, VM4; 208:VM1, VM2 ),结构图如下所示: 配置如下: 1.在206上: Ifconfig eth1 172.16.19.206/16 up (1)创建网桥: Ovs-vsctl add-br ovsbr0 #注意创建网桥之后,会在网桥上创建同名的端口ovsbr0,类型为internal,用于给网桥配置IP方便管理等。 (2)让网桥ovsbr接管eth0: Ovs

9、vsctl add-port ovsbr0 eth0 (3)配置网桥的IP: Ifconfig eth0 0.0.0.0 Ifconfig ovsbr0 172.16.19.230/16 up (4)创建虚拟机: Virsh create VM1.xml Virsh create VM2.xml (5)查看网桥: Ovs-vsctl show ovsbr0 会发现ovsbr0下面会有6个端口ovsbr0,eth0,tap1.0,tap2.0,vif1.0,vif2.0。(关于tap和vif参见其他内容,在本服务器上起作用的是tap,具体哪个起作用还需要测试) 2. 在2

10、08上,配置类似: 3.配置VLAN (1)VM1, VM2属于VLAN1 Ovs-vsctl set port tap1.0 tag=1 Ovs-vsctl set port tap2.0 tag=1 之VM1和VM2之间可以互ping,   (2)VM1属于VLAN1, VM2属于VLAN1 Ovs-vsctl set port tap1.0 tag=1 Ovs-vsctl set port tap2.0 tag=2 之VM1和VM2之间无法互ping,   (3)VM1, VM2, VM3,VM4属于VLAN1 208上: Ovs-vsctl set

11、 port tap1.0 tag=1 Ovs-vsctl set port tap1.0 tag=1 206上: Ovs-vsctl set port tap3.0 tag=1 Ovs-vsctl set port tap4.0 tag=1 之VM1, VM2, VM3,VM4之间可以互ping,   (4)VM1, VM3,属于VLAN1, VM2,VM4属于VLAN2 208上: Ovs-vsctl set port tap1.0 tag=1 Ovs-vsctl set port tap2.0 tag=2 206上: Ovs-vsctl set por

12、t tap3.0 tag=1 Ovs-vsctl set port tap4.0 tag=2 在我的试验中,VM1, VM2, VM3,VM4之间无法互ping,而理论上应该是VM1和VM3可以互ping,VM2和VM4之间可以互ping。目前还不知道什么原因造成的。待续。。。         3.4 Sflow: 1.下面先来关注几个问题: (1) Sflow是什么呢? 与sflow相应的有一个Netflow。 sFlow和Netflow聽起來很相似,但在骨子裡卻不一樣。Netflow會針對所有流經的網路封包去取得其特徵,包含Source IP address、De

13、stination IP address、Source port for UDP or TCP, 0 for other protocols、Destination port for UDP or TCP, type and code for ICMP, or 0 for other protocols、IP protocol、Ingress interface (SNMP ifIndex)、IP Type of Service這些資訊。  由於Netflow會對所有流經的封包進行處理,若網路流量極大時,Netflow所提供的資料量亦會隨之增加,若資料量太大,後端分析引擎可能會不堪負荷,

14、進而影響資料判讀時的正確性。  sFlow的作法和Netflow不同,sFlow以取樣的方式取出資料的摘要,使用者可以自訂其取樣大小及取樣週期,即使流經大量網路流量,但sFlow經取樣後的資料相對於Netflow而言會大量的減少,如此一來就可以兼顧資料正確性並確保後端分析引擎處理能力。  在實務上,sFlow較常運用於高速網路的環境,也是因為其具有此特性的關係。sFlow提供的資料格式在之後實作的階段會加以展示,在此不多作說明。  在實作時,會遭遇到許多的困難,這是因為sFlow僅在部分設備上提供,也不像Netflow,在Linux中可使用nfdump套件來產生符合其格式的流量。  (

15、2)  是不是open vswitch支持了sflow就不支持了netflow?不是,在其官方的介绍里(上文的官方图片),可以看到也是支持netflow的。目前我的做法是,使用sflowtool将sflow转换为netflow。 2.配置实例: 目标: 流量导出,并可以使用snort,tcpdump对流量进行监控和分析。 配置图如下所示: 在208服务器上安装xen和openvswitch,并启动两个虚拟机VM1,VM2。不在赘述。 (1)   配置sflow流量导出 #!/bin/sh COLLECTOR_IP=172.16.18.18 COLLECTOR_PORT=

16、6343 AGENT_IP=eth1 HEADER_BYTES=128 SAMPLING_N=2 POLLING_SECS=1 ovs-vsctl – –id=@sflow create sflow agent=${AGENT_IP} target=\”${COLLECTOR_IP}:${COLLECTOR_PORT}\” header=${HEADER_BYTES} sampling=${SAMPLING_N} polling=${POLLING_SECS} — set bridge ovsbr0 sflow=@sflow 这是配置sflow的一个脚本,现在解释其中的意思

17、 COLLECTOR_IP是指进行流量监控的机器,本次实例中是指172.16.18.18 COLLECTOR_PORT=6343 是指把流量发到COLLECTOR_IP的6343端口 AGENT_IP=eth1是指把流量从本地的eth1端口发出去 并指定每1秒poolling一次,每次的取样频率为64(即,每隔64个Packet取样一次)。 (2)   转换sflow 现在让VM1(ip:x.x.x241) ping VM2(ip: x.x.x242) 执行上面那个脚本,在18.18机器上用snort会看到206发到18.18的包,而不会看到241和242之间通信的数据包。因

18、为241和242通信的数据被sflow封装起来之后再发给18.18.如果想看到这个数据,需要将sflow转换为snort和tcpdump的格式,具体命令如下: $sflowtool –p 6343 –t | snort –r – 或者 $sflowtool –p 6343 –t | tcpdump –X –r - (3)   sflowtool的使用: -f可以转发到另一台机器上 $sflowtool  –p 6343 –t –f x.x.x.x/6343 -c可以将sflow转换为netflow 其他的使用信息,参见 man sflowtool   3.5 Ovs接

19、入物理机器 目的:是open vswitch不仅可以控制虚拟机(VM1, VM2),也可以控制物理机器(PY1) 配置图如下: 具体配置如下: (1)   由网桥ovsbr0接管eth0和eth2。 Ovs-vsctl add-port ovsbr0 eth0 Ovs-vsctl add-port ovsbr0 eth2 (2)   Eth0接外网,eth1接hub (3)   在208上启动两个虚拟机VM1,VM2。并配置IPx.x.x.241, x.x.x.242 (4)   配置物理机PY1的IP为, x.x.x.250 (5)   现在已经联通了,

20、下面测试一下,可以有250 ping 241, 启动sflow便可观测到相应的信息。   4. 遇到的问题 4.1找不到opevswitch_mod.ko和 brcompatd.ko内核模块怎么办? 编译安装和apt安装都需要编译内核模块,而编译内核模块需要安装linux-header,即需要 /lib/modules/`uname -r`/build,下的内容。请确保系统已安装linux-header。 4.2 Xen无法创建虚拟机? 查看xen日志文件,并判断错误原因 $tail –n 100 /var/log/xen/qemu-dm-XXX.log (1)   如果

21、出现以下错误: $tail -n 100 /var/log/xen/qemu-dm-u3.log domid: 44 -c config qemu network with xen bridge for tap44.0 ovsbr0 can’t add tap44.0 to bridge ovsbr0: Operation not supported /etc/xen/scripts/qemu-ifup: could not launch network script Could not initialize device ‘tap’ 需要加载open vswitch

22、的bridge的兼容模块brcompatd.ko,即 $insmod /path/to/brcompatd.ko (2)一切都配置妥当的时候,我还遇到个错误,导致虚拟机无法正常启动,是因为xml配置文件中部分写在了的前面,改过来之后就好了。 4.3   关于兼容模块brcompatd.ko 看看官方给出的解释:http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.bridge;hb=HEAD   This file documents how

23、 Open vSwitch may be used as a drop-in replacement for a Linux kernel bridge in an environment that includes elements that are tightly tied to the Linux bridge tools (e.g. "brctl") and architecture.  We recommend directly using the management tools provided with Open vSwitch rather than these c

24、ompatibility hooks for environments that are not tightly tied to the Linux bridging tools; they are more efficient and better reflect the actual operation and status.。。。。 大致意思是有很多工具,软件等等和Linux kernel bridge的关联比较紧密,比如我们使用的xen-4.1。上一小节提到xen无法创建,错误里面有句话是” /etc/xen/scripts/qemu-ifup: could not launch

25、 network script”,而查看这个脚本,里面的内容是: #!bin/sh Echo –c `config qemu network with xen bridge for` Echo $* Ifconfig $1 0.0.0.0 up Brctl addif $2 $1 此处便发现这个脚本使用Brctl,而其依赖于linux bridge。 4.4   tap和vif的区别 PV虚机只有一个vifX.N,而HVM虚机不安装PV Driver的时候会有两个网络接口vifX.N和tapX.N,而且实际上使用的是tapX.N。HVM虚机安装PV Driver并重

26、启后,tapX.N会消失,使用vifX.N(若不重启还是使用tapX.N)   tap interfaces -> qemu-emulated NICs (realtek model by default), used  when no PV drivers installed (using OS’ own driver for that model)  vif interfaces (the one that you can rename) -> xen network frontend  NICs, used when you have PV drivers installed

27、 (like GPLPV,  http://meadowcourt.org/downloads/)    the vif is a virtual interface that works with pv drivers in domU.  The tap is a Qemu interface that is used with HVMs that don’t have pv drivers.  So, if you start a HVM domU, you’ll  have the vif that Xen creates and the tap that Qemu cr

28、eates, if pv drivers are available, then once they are loaded Domu uses them and the tap goes away, but if not then both remain, but only the tap interface is being used.  Obviously, if you need more detailed explaination, then I’m of no further use.:)    4.5   深入认识tap和tun 官方FAQ:  TUN时点对点的设备

29、tap表示以太网设备的,做为虚拟网卡驱动,Tun/tap驱动程序的数据接收和发送并不直接和真实网卡打交道,而是通 过用户态来转交。在linux下,要实现核心态和用户态数据的交互,有多种方式:可以通用socket创建特殊套接字,利用套接字实现数据交 互;通过proc文件系统创建文件来进行数据交互;还可以使用设备文件的方式,访问设备文件会调用设备驱动相应的例程,设备驱动本身就 是核心态和用户态的一个接口,Tun/tap驱动就是利用设备文件实现用户态和核心态的数据交互。 当没有内核模块支持的时候,Open vSwitch完全运行于用户态,ovs的数据通路有tun来实现。 参见4.6,当没有

30、内核支持的时候,如何使用ovs。          为了对tap/tun有更深入的体会,下面将观看tun源代码,并使用tun写个程序。 tun源代码可从此处获得 /* file_operations 结构体,将正常的文件操作对应于tun相应的函数,这样可以像操作文件一样操作tun*/static struct file_operations tun_fops = { owner: THIS_MODULE, llseek: tun_chr_lseek, read: tun_chr_read, write:

31、 tun_chr_write, poll: tun_chr_poll, ioctl: tun_chr_ioctl, open: tun_chr_open, release:tun_chr_close, fasync: tun_chr_fasync }; static struct miscdevice tun_miscdev={ TUN_MINOR, "net/tun", &tun_fops};/*c语言中的 __init 保证该函数

32、只执行一次 */int __init tun_init(void){ printk(KERN_INFO "Universal TUN/TAP device driver %s " "(C)1999-2000 Maxim Krasnyansky\n", TUN_VER); if (misc_register(&tun_miscdev)) { printk(KERN_ERR "tun: Can't register misc device %d\n", TUN_MINOR); return -E

33、IO; } return 0;} void tun_cleanup(void){ misc_deregister(&tun_miscdev); }/*加载tun模块*/module_init(tun_init);module_exit(tun_cleanup);   下面应用一下tun,写个程序体会一下(tun源码中的一个example) #include #include #include #include #include #include

34、 #define max(a,b) ((a)>(b) ? (a):(b)) int main(int argc, char *argv[]){ char buf[1600]; int f1,f2,l,fm; fd_set fds; if(argc < 2) { printf("Usage: bridge tap|tun\n"); exit(1); } sprintf(buf,"/dev/%s%d",argv[1],0); f1 = open(buf, O_RDWR); sprintf(buf,"/dev

35、/%s%d",argv[1],1); f2 = open(buf, O_RDWR); fm = max(f1, f2) + 1; ioctl(f1, TUNSETNOCSUM, 1); ioctl(f2, TUNSETNOCSUM, 1); while(1){ FD_ZERO(&fds); FD_SET(f1, &fds); FD_SET(f2, &fds); select(fm, &fds, NULL, NULL, NULL); if( FD_ISSET(f1, &fds) ) {

36、 l = read(f1,buf,sizeof(buf)); write(f2,buf,l); } if( FD_ISSET(f2, &fds) ) { l = read(f2,buf,sizeof(buf)); write(f1,buf,l); } }}     4.6   当没有内核支持的时候,如何使用ovs? 参考官方文档: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.

37、userspace;hb=HEAD 当没有内核模块支持的时候,ovs可以完全在用户空间运行,当然要损失一部分性能。下面介绍做法。 出了内核模块openvswitch_mod.ko和brcompatd.ko模块的编译和安装省略之外,其他部分正常。      如4.5中提到的用户态和核心态的转换有那么几种方式,ovs的用户态的转换需要内核的tun/tap驱动可以正常使用。查看/sys/class/misc/tun中是否存在,如果没有存在加载相应模块  ”modprobe tun”  tun 设备也必须存在于/dev/net/tun目录下面。如果没有则创建之,创建的方法如下:  mkdir

38、 /dev/netmknod /dev/net/tun c 10 200 为了在用户空间使用ovs,需要创建一个网桥br0,并设置其datapath_type为”netdev”: ovs-vsctl add-br br0ovs-vsctl set bridge br0 datapath_type=netdevovs-vsctl add-port br0 eth0ovs-vsctl add-port br0 eth1ovs-vsctl add-port br0 eth2ovs-vswitchd 将会创建一个和网桥br0同名的 tap设备作为网桥的本地interface。     4.

39、7 什么叫虚拟边缘网络? 一般来说:虚拟边缘网络是指如何对虚拟机的流量进行转发和策略控制。由于虚拟机是共驻于宿主机上,因此有两个选择,一个是在主机侧直接用软件来实现,一个是把它发出去到硬件上做完决策后再发回来。 4.8 关于软交换(待续) 详细中文介绍可以参考这里   关于这方面的内容,open vswitch的官方网站也有两篇论文 http://openvswitch.org/papers/hotnets2009.pdf http://openvswitch.org/papers/dccaves2010.pdf   4.9网络设备虚拟化(待续) Virtio I/O 虚拟化 虚拟 LANs 硬件加速   4.9网桥能有IP么? 可以有,目前我知道的一个作用是便于远程控制。 Ovs-vsctl add-br ovsbr0 或者brctl addbr br0 在创建网桥的时候,还会创建一个同名的端口ovsbr0或者br0,可以在这个上面配置IP。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服