广播风暴对比实验部署

编者按:环路广播风暴,如果有环路,数据帧将会在环路中来回传递,大量增生数据帧,形成广播风暴。在SDN中部分控制器可以抑制环路广播风暴的产生,如Floodlight,而像POX控制器,就不能很好的解决广播风暴的问题。

接下来将对Floodlight和POX控制器进行广播风暴实验的对比。

物理连接上OF1、OF2、OF3形成环路,使用Flowvisor(192.168.20.6:6634)隔离成两个虚网。VM1和VM3在一个虚网中,由POX(192.168.20.6:6635)控制,VM2和VM3在另一个虚网中,由Floodlight(192.168.20.6:6636)控制。

POX安装与配置

安装:

git clone http://github.com/noxrepo/pox

启动:

./pox.py forwarding.l2_learning openflow.of_01 --port=6635

Floodlight安装与安装

安装:

apt-get install build-essential default-jdk ant python-dev

git clone git://github.com/floodlight/floodlight.git

ant;

端口配置:

vi ./src/main/resources/floodlightdefault.properties

启动:

nohup java -jar target/floodlight.jar > /dev/null &

Flowvisor安装与配置

安装:

sudo apt-get install ant

sudo apt-get install openjdk-6-jdk

wget https://github.com/OPENNETWORKINGLAB/flowvisor/archive/1.2-MAINT.zip

make && make install

端口配置

vi /etc/flowvisor/config.json(目前使用监听端口6634)

普通用户下启动:

nohup  flowvisor /etc/flowvisor/config.json >/dev/null &

OvS安装与配置

OvS在之前已经写过,详情可查看《Open vSwitch2.3.0版本安装部署及基本操作》。

创建虚网

创建两个slice,分别指定到POX和Floodlight上:

fvctl -p 8181 add-slice s1 tcp:127.0.0.1:6635 [email protected]

fvctl -p 8181 add-slice s2 tcp:127.0.0.1:6636 [email protected]

修改OvS的dpid:

192.168.20.3:ovs-vsctl set bridge br0 other_config:datapath-id=1000000000000001

192.168.20.4:ovs-vsctl set bridge br0 other_config:datapath-id=1000000000000002

192.168.20.5:ovs-vsctl set bridge br0 other_config:datapath-id=1000000000000003

[email protected]:~# ovs-vsctl list bridge br0

_uuid               : 9a7f1e47-b5f1-410f-9a63-0393acf1a651

controller          : [1ab5ceec-3965-47c4-89ab-1f1f408470bb]

datapath_id         : "1000000000000001"

查看端口号:

[email protected]:~# ovs-ofctl show br0

OFPT_FEATURES_REPLY (xid=0x2): dpid:1000000000000001

n_tables:254, n_buffers:256

capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP

actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE

1(vnet0): addr:fe:54:00:d4:fa:b1

config:     0

state:      0

current:    10MB-FD COPPER

speed: 10 Mbps now, 0 Mbps max

2(eth1): addr:74:86:7a:d7:65:65

config:     0

state:      0

current:    100MB-FD COPPER AUTO_NEG

advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG AUTO_PAUSE

supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG

speed: 100 Mbps now, 1000 Mbps max

3(eth2): addr:74:86:7a:d7:65:66

config:     0

state:      0

current:    1GB-FD COPPER AUTO_NEG

advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG AUTO_PAUSE

supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG

speed: 1000 Mbps now, 1000 Mbps max

LOCAL(br0): addr:74:86:7a:d7:65:65

config:     0

state:      0

speed: 0 Mbps now, 0 Mbps max

OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

虚网隔离创建

执行以下脚本,创建flowspace:

DP1=1000000000000001

DP2=1000000000000002

DP3=1000000000000003

#s1-dpid1

fvctl -p 8181 add-flowspace -f 1 space1 $DP1 1 in_port=1,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP1 1 in_port=1,nw_src=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP1 1 in_port=2,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP1 1 in_port=2,nw_src=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP1 1 in_port=3,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP1 1 in_port=3,nw_src=10.0.0.1 s1=7

#s1-dpid2

fvctl -p 8181 add-flowspace -f 1 space1 $DP2 1 in_port=2,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP2 1 in_port=2,nw_src=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP2 1 in_port=3,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP2 1 in_port=3,nw_src=10.0.0.1 s1=7

#s1-dpid3

fvctl -p 8181 add-flowspace -f 1 space1 $DP3 1 in_port=1,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP3 1 in_port=1,nw_src=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP3 1 in_port=2,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP3 1 in_port=2,nw_src=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP3 1 in_port=3,nw_dst=10.0.0.1 s1=7

fvctl -p 8181 add-flowspace -f 1 space1 $DP3 1 in_port=3,nw_src=10.0.0.1 s1=7

#s2-dpid1

fvctl -p 8181 add-flowspace -f 2 space1 $DP1 1 in_port=2,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP1 1 in_port=2,nw_src=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP1 1 in_port=3,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP1 1 in_port=3,nw_src=10.0.0.2 s2=7

#s2-dpid2

fvctl -p 8181 add-flowspace -f 2 space1 $DP2 1 in_port=1,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP2 1 in_port=1,nw_src=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP2 1 in_port=2,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP2 1 in_port=2,nw_src=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP2 1 in_port=3,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP2 1 in_port=3,nw_src=10.0.0.2 s2=7

#s2-dpid3

fvctl -p 8181 add-flowspace -f 2 space1 $DP3 1 in_port=1,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP3 1 in_port=1,nw_src=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP3 1 in_port=2,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP3 1 in_port=2,nw_src=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP3 1 in_port=3,nw_dst=10.0.0.2 s2=7

fvctl -p 8181 add-flowspace -f 2 space1 $DP3 1 in_port=3,nw_src=10.0.0.2 s2=7

设置队列

OvS1设置队列,流量隔离

执行以下脚本设置队列:

#!/bin/bash

#clear config

ovs-vsctl del-br br0

ovs-vsctl -- --all destroy qos

ovs-vsctl -- --all destroy queue

ovs-vsctl add-br br0 -- set bridge br0 other_config:datapath-id=1000000000000001

ovs-vsctl set-controller br0 tcp:192.168.20.6:6634

ovs-vsctl set bridge br0 fail_mode=secure

virsh destroy vm3 //vm3为VM名称

sleep 5

virsh start vm3

sleep 5

ovs-vsctl add-port br0 eth1

ovs-vsctl add-port br0 eth2

#qos

ovs-vsctl set port eth1 [email protected] -- [email protected] create qos type=linux-htb\

[email protected],[email protected] other_config:max-rate=`ovs-vsctl get interface eth1 link-speed`\

-- [email protected] create queue other_config:min-rate=10000000\

-- [email protected] create queue other_config:min-rate=10000000

ovs-vsctl set port eth2 [email protected] -- [email protected] create qos type=linux-htb\

[email protected],[email protected] other_config:max-rate=`ovs-vsctl get interface eth2 link-speed`\

-- [email protected] create queue other_config:min-rate=10000000\

-- [email protected] create queue other_config:min-rate=10000000

OvS2设置队列,流量隔离

执行以下脚本设置队列:

#!/bin/bash

#clear config

ovs-vsctl del-br br0

ovs-vsctl -- --all destroy qos

ovs-vsctl -- --all destroy queue

ovs-vsctl add-br br0 -- set bridge br0 other_config:datapath-id=1000000000000002

ovs-vsctl set-controller br0 tcp:192.168.20.6:6634

ovs-vsctl set bridge br0 fail_mode=secure

virsh destroy vm4

sleep 5

virsh start vm4

sleep 5

ovs-vsctl add-port br0 eth1

ovs-vsctl add-port br0 eth2

#qos

ovs-vsctl set port eth1 [email protected] -- [email protected] create qos type=linux-htb\

[email protected],[email protected] other_config:max-rate=`ovs-vsctl get interface eth1 link-speed`\

-- [email protected] create queue other_config:min-rate=10000000\

-- [email protected] create queue other_config:min-rate=10000000

ovs-vsctl set port eth2 [email protected] -- [email protected] create qos type=linux-htb\

[email protected],[email protected] other_config:max-rate=`ovs-vsctl get interface eth2 link-speed`\

-- [email protected] create queue other_config:min-rate=10000000\

-- [email protected] create queue other_config:min-rate=10000000

OvS3设置队列,流量隔离

执行以下脚本设置队列:

#!/bin/bash

#clear config

ovs-vsctl del-br br0

ovs-vsctl -- --all destroy qos

ovs-vsctl -- --all destroy queue

ovs-vsctl add-br br0 -- set bridge br0 other_config:datapath-id=1000000000000003

ovs-vsctl set-controller br0 tcp:192.168.20.6:6634

ovs-vsctl set bridge br0 fail_mode=secure

virsh destroy vm5

sleep 5

virsh start vm5

sleep 5

ovs-vsctl add-port br0 eth1

ovs-vsctl add-port br0 eth2

#qos

ovs-vsctl set port eth1 [email protected] -- [email protected] create qos type=linux-htb\

[email protected],[email protected] other_config:max-rate=`ovs-vsctl get interface eth1 link-speed`\

-- [email protected] create queue other_config:min-rate=10000000\

-- [email protected] create queue other_config:min-rate=10000000

ovs-vsctl set port eth2 [email protected] -- [email protected] create qos type=linux-htb\

[email protected],[email protected] other_config:max-rate=`ovs-vsctl get interface eth2 link-speed`\

-- [email protected] create queue other_config:min-rate=10000000\

-- [email protected] create queue other_config:min-rate=10000000

实验结果

VM1与VM3形成广播风暴;

VM2与VM3可以ping通,Floodlight的最小生成树协议成功抑制了广播风暴;

VM1与VM2 由于在不同的flowspace中ping不通。

本文转载自SDNLAB,更多SDN相关技术文章请关注SDNLAB

时间: 2024-11-06 23:39:55

广播风暴对比实验部署的相关文章

【基础】ARP协议-交换机工作原理-及广播风暴问题分析

一.实验拓扑: 使用华为ENSP模拟器(版本V100R002C00 1.2.00.350) 二.实验需求: 1.   了解ARP协议及其作用 2.  掌握交换机的工作原理 3.   解决以太网广播风暴问题 三.实验步骤: 1.  iP规划: c1:192.168.1.10 c2:192.168.1.20 c3:192.168.2.30 R1:g0/0/1192.168.1.1  g0/0/2 192.168.2.1 2.       ARP协议作用: 1)  概念:ARP(全称Address R

概念理解-广播域和冲突域,广播风暴,OSI

冲突域:同一时间内只能有一台设备发送信息的范围.交换机能缩小冲突域的范围,交换接的每一个端口就是一个冲突域. 广播域:如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域. 广播风暴:当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了"广播风暴". OSI7层协议: 是实际应用程序之间的接口. 该层是一个转换器,提供编码和转换功能.诸如数据压缩.解压缩.加密和解密等任务都与表示层有关. 负责在表示层实体之间建立.管理和终止

Spark 与 Hadoop 关于 TeraGen/TeraSort 的对比实验(包含源代码)

自从 Hadoop 问世以来,MapReduce 在很长时间内都是排序基准测试的纪录保持者,但这一垄断在最近被基于内存计算的 Spark 打破了.在今年Databricks与AWS一起完成的一个Daytona Gray类别的Sort Benchmark中,Spark 完胜 Hadoop MapReduce:"1/10计算资源,1/3耗时".这是个很有意思的对比实验,因此笔者也在一个小规模集群上做了一个微缩版的类似试验. 1.Hadoop 与 Spark 集群环境完全相同: - Hado

Cisco交换机STP--解决广播风暴

事实上,网络上的设备为了防止单一线路故障导致局部瘫痪,常构设成回路网路,这在物理上为广播风暴提供了条件------------------解决方案 STP协议 在逻辑上形成树形结构(cisco交换机自带此协议) STP:Spanning tree protocal 根网桥---->网桥ID判断,跟端口与指定端口通过以下2,3判断 说明:根网桥只有一个,根端口为除根网桥的网桥 每台一个,指定端口为每个网段一个. STP协议的数据通过BPDU(桥协议单元,默认每2秒一次信息),数据包括 根网桥ID,

局域网出现广播风暴怎么办?如何阻止广播风暴?

局域网网络慢,一般存在如下可能: 内网ARP欺骗攻击. 内网病毒攻击. 交换机.路由器硬件故障. 网线接触不良.网线老化. 广播风暴.网络环路. 以上这些问题,即使是一个有经验的网管,需要组合ping.arp.tracert等多条命令进行测试分析,才可以逐步排查出来.有时还需要用抓包工具来抓包分析.为了简化网管人员的工作,我们的WFilter软件(WSG网关)中,都集成了一个实用性很强的插件"网络健康度检测".以上问题一键就可以检测出来.如下图: 但是,软件的检测只是一个检测和定位手段

011_Python中单线程、多线程和多进程的效率对比实验

Python是运行在解释器中的语言,查找资料知道,python中有一个全局锁(GIL),在使用多进程(Thread)的情况下,不能发挥多核的优势.而使用多进程(Multiprocess),则可以发挥多核的优势真正地提高效率. 对比实验 资料显示,如果多线程的进程是CPU密集型的,那多线程并不能有多少效率上的提升,相反还可能会因为线程的频繁切换,导致效率下降,推荐使用多进程:如果是IO密集型,多线程进程可以利用IO阻塞等待时的空闲时间执行其他线程,提升效率.所以我们根据实验对比不同场景的效率 操作

广播风暴的成因以及解决办法有哪些?

1. 广播风暴的检测和故障解决 首先,广播风暴的产生有两种可能性: 不合理的网络划分.比如很多客户机处于同一个网段内.由于ARP.DHCP都是广播包的形式,那么有时候就会产生广播风暴. 环路.环路时,数据包会不断的重复传输,也一样会产生广播风暴. 这两者中,环路的情况比较恶性,需要网管人员立即进行排除:而网段划分引起的广播风暴比较良性,一般对网络的影响较小. 网络健康度检测插件的工作原理是发送N个广播包,同时进行监听,如果监听到的广播包数量大于N*2个,则会有广播风暴的告警提示.如下 你把鼠标移

寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现。本文记录HAProxy服务热加载后某微服务50%概率失效的问题。设计3组对比实验,验证了陈旧配置的HAProxy在Reload时没有退出进而导致微服务丢失,并给出了解决方案. Keywords:HAProxy热加

寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现.本文记录HAProxy服务热加载后某微服务50%概率失效的问题.设计3组对比实验,验证了陈旧配置的HAProxy在Reload时没有退出进而导致微服务丢失,并给出了解决方案. Keywords:HAProxy热加载.Marathon.端口重用 01 原文地址:https://www.cnblogs.com/yuanj

ActiveMQ的集群方案对比及部署

转载:http://blog.csdn.net/lifetragedy/article/details/51869032 ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: MASTER/SLAVE模式 Cluster模式 Pure Master Slave Pure master slave的工作方式: 当master broker失效的时候.Sl