-
Contents
1.
2.
3.
4.
Test case
1
:测试
Openflow
交换机的流表容量
...................
..................................................
.......... 1
Test case
2
:测试
Openflow
交换机的流表学习速率
.................
..................................................
.... 5
Test case
3
:测试
Openflow
交换机的吞吐量,时延,抖动和丢包率
......................................... 12
Test case
4
:测试
Openflow
交换机的流表震荡
...................
..................................................
........ 14
1.
Test case 1
:测试
Ope
nflow
交换机的流表容量
?
测试目的:
测试
Openflow
交换机最多能支持的流表数量
?
测试拓扑:
?
预配置
(
请注意,预配置部分是写本文需要,在
OpenvSwitch
上所做的配置。读者在用
OVS
p>
做
实验时候可参考此配置,实际测试则不需要进行此部分
)
?
设置
br1
的
flow table 0
表项容量为
100
Step
1
:在
OVS
的
ovsdb
中,在
Bridge
表中,把
br1
条目的
flow_tables
列中关联
br1
的
flow_table 0,
并且
在
Flow_Table
表中创建一行。
ovs-vsctl set Bridge br1
flow_tables:0=@table0 -- --id=@table0 create
Flow_Table name=table0
查看
p>
Bridge
表和
Flow_Table<
/p>
表:
[root@localhostmrzhao]# ovs-vsctl list
bridge
_uuid
:
c5601237-6574-465b-843f-ac52c61d5bad
Controller
datapath_id
:
[bca3710d-1280-44eb-8436-20bbe5c8161c]
:
datapath_type
:
external_ids
fail_mode
flood_vlans
flow_tables
ipfix
: []
: {}
: []
: []
:
{0=bebe5b02-6216-4a8a-af5d-27f1dde2bf48}
mirrors
: []
name
:
netflow
: []
other_config
: {}
ports
:
[358480c2-0709-476d-8446-3020584454d0,
4f1a7238-d611-4345-8b06-83a62d414952,
5dd30471-07c4-4eac-90a1-0cf7d96e7b07,
a4c3be4c-bda5-4686-af08-4e59d51040bd,
eaf6eb05-0d95-
4775-9abb-1b139469a9b9]
protocols
sflow
:
[]
: []
status
:
{}
stp_enable
: false
[root@localhostmrzhao]# ovs-vsctl list
Flow_table
_uuid
:
bebe5b02-6216-4a8a-af5d-27f1dde2bf48
:
{}
: []
: []
:
external_ids
flow_limit
groups
name
overflow_policy
: []
prefixes
: []
Step
2
:设置
br1
的
table0
的流表大小是
100
条流表项
ovs-vsctl set Flow_Table table0
flow_limit=100
查看流表项设置:
[root@localhostmrzhao]# ovs-vsctl list
Flow_table
_uuid
:
bebe5b02-6216-4a8a-af5d-27f1dde2bf48
:
{}
: 100
: []
:
external_ids
flow_limit
groups
name
overflow_policy
: []
prefixes
: []
?
测试步骤
1.
查看初始流表,显示只有一条流
表
(
对应
LLDP
< br>报文转发控制器的流表
)
:
[root@localhostmrzhao]#
ovs-ofctl dump-flows br1
NXST_FLOW
reply (xid=0x4):
cookie=0x0,
duration=3.937s, table=0, n_packets=0, n_bytes=0,
idle_age=3, dl_type=0x88cc
actions=CONTROLLER:5000
2.
创建
50
条流表
(
初始值,
Initial flow number),
下发。本例中一条流表包含三个匹配字段:
Address
ation
Address
显示成功下发
50
条流表:
流量验证也显示全部转发,没有丢包:
3.
<
/p>
增加
50
条流表,总共
< br>100
条
(step = 50
条流表
)
,下发。显示成功下发
p>
90
条流表:
发送流量也可以看到有
10
%丢包:<
/p>
从
Open
vSwitch
上查看,也可以看到,除了
LLDP
那条
flow table
之外,只
有
90
条流表:
[root@localhostmrzhao]# ovs-ofctl dump-
aggregate br1
NXST_AGGREGATE reply
(xid=0x4): packet_count=26760 byte_count=3318240
flow_count=91
?
测试结果:
指标值:交换机最大支持的流表数量
本例的测试结果为
91
条。
注:
a.
为什么只有
91
条,而不是设置的
10
0
条,需要查看
OVS
文档分析原因。
b.
为了验证这个测试结果的正确性,仪表配置不动,我们把
table0
的流表数限制改为
200
:
ovs-vsctl set
Flow_Table table0 flow_limit=200
然后可以看到,原配置的
100
条流表全部下发:
OVS
上查看,
100
条流表也全部学到。<
/p>
[root@localhostmrzhao]# ovs-
ofctl dump-aggregate br1
NXST_AGGREGATE
reply (xid=0x4): packet_count=26760
byte_count=3318240 flow_count=101
?
测试方法深入讨论
1.
配置单独的
L2
匹配域测试例,单独的
L3
匹配域
测试例。根据交换机的实现方式不同,不
同匹配方式对交换机的性能和流表规格有明显影
响。例如有些交换机会把
L2
匹配放在
L2
内存中,而不是在通常放流表的
TCAM
中,这样测试例如果只测试
L2
匹配则无法验证
TCAM
容量。
2.
配置
12
元组全匹配的测试例。匹配元
组的多少,可能对
Openflow
交换机流表的容量发生
p>
影响。
3.
<
/p>
单个流表和多个流表对性能规格也有明显区别,需验证交换机在单个流表下的容量,多个<
/p>
流表下的流表容量,以及能同时支持多少个表的数量(例如
255
个)。对于多流表的容量,
由
于流表之间并非一一对应的关系,比如逻辑上流表
1
的多个流表
项可以映射到流表
2
的
同一个流表项
。所以多流表下的流表容量,可以考虑和应用场景结合起来,比如用
Openflow<
/p>
来实现
VPN
,可以测试伪线的容量,<
/p>
VPN VRF
的容量等等。
2.
Test case 2
:测试
Ope
nflow
交换机的流表学习速率
?
测试目的:
测试
Openflow
交换机流表的学习速率,即每秒学习多
少条流表
?
测试拓扑:
?
预配置
(
请注意,预配置部分是写本文需要,在
OpenvSwitch
上所做的配置。读者在用
OVS
p>
做
实验时候可参考此配置,实际测试则不需要进行此部分
)
?
在
Test case 1
的基础上,把
br1
的
table0
的容量调整为
1,000,000
条流表
ovs-vsctl set
Flow_Table table0 flow_limit=1000000
<
/p>
测试方法
1
:流量图形采样法
A
.
用
Custom
方式创建流表
B
.
用
flow
方式创建和流表相对应的验证流量
C
.
用
p>
图形结果计算流表学习时间和学习速度
?
测试步骤
1.
用
custom
方式创建
5000
条
flow(
创
建的流表条数必须在
Test Case 1
测试到的最大流
表数
之内
)
。
2.
创建一条验证流,匹配
5000
条
flow
。
验证流量的带宽可设置小于转发吞吐量,避免因为
转发丢包导致的测试结果偏差。
3.
在验证流统计视图上,把
”
Rx Ra
te(fps)
”
统计量加入到图形显示中。
< br>
4.
先发送流量,然后在
Openflow
仿真控制器上把
5000
条流表发送给被测交换机:
5.
观察流量,等待接收流量上升到和发送流量一致。
6.
<
/p>
用标尺测量出从流量开始上升到平稳之间的时间,从标尺中可以看到,流表全部学习到
p>
4.883
秒:
?
测试结果:
本例测试结果:学习
p>
5000
条流表,用了
4.883
秒,平均每秒学习
1024
条流表
测试方法
2
:流量直接验证法
A.
创建
Bound
流量
B.
用
Bound
方式从
Bound
stream
中提取流表
C.
用
Command Sequence
中“
Openflow: Add flows to
switches
”命令,来直接测试结果
?
测试步骤
1.
创建
bound stream
,有<
/p>
5000
个目的
IP
地址,对应
5000
条
Strea
m.
请注意,创建流的时候
需要创建
”
stream only
generator
”