OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告...

23
Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球 SDN 测试认证中心 SDNCTC 2016 10 14 www.sdnctc.com

Transcript of OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告...

Page 1: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow性能测试报告

OPEN VSWITCH

OPENFLOW 性能测试报告

全球 SDN 测试认证中心 SDNCTC

2016 年 10 月 14 日

w w w . s d n c t c . c o m

Page 2: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow性能测试报告

www.sdnctc.com

目 录

一、引言 ................................................................................................................................................................. 1

二、测试环境配置 ................................................................................................................................................. 1

2.1 待测设备 ................................................................................................................................................. 1

2.2 测试工具 ................................................................................................................................................. 1

2.3 测试拓扑 ................................................................................................................................................. 2

三、测试建议 ......................................................................................................................................................... 2

3.1 隔离建议 ................................................................................................................................................. 2

3.2 连接建议 ................................................................................................................................................. 2

3.3 重复建议 ................................................................................................................................................. 3

四、性能测试例 ..................................................................................................................................................... 3

4.1 PACKET IN 性能 ..................................................................................................................................... 3

4.1.1 TABLE-MISS 表项的 PACKET IN 性能 .................................................................................... 3

4.1.2 非 TABLE-MISS 表项的 PACKET_IN 性能 ............................................................................. 5

4.2 流表性能 ................................................................................................................................................. 6

4.2.1 流表查询时间 .............................................................................................................................. 6

4.2.2 流表安装时间 .............................................................................................................................. 7

4.2.3 流表删除时间 ............................................................................................................................ 10

4.2.4 流表修改时间 ............................................................................................................................ 11

4.2.5 流表容量 .................................................................................................................................... 13

4.3 PACKET OUT 性能 .............................................................................................................................. 14

Page 3: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告

www.sdnctc.com

4.3.1 PACKET OUT 消息吞吐/时延 .................................................................................................. 14

4.4 交换机统计性能测试 ........................................................................................................................... 15

4.4.1 流统计性能 ................................................................................................................................ 15

4.4.2 端口统计性能 ............................................................................................................................ 16

4.5 交换机定时性能测试 ........................................................................................................................... 18

4.5.1 HARD 定时误差 ......................................................................................................................... 18

4.5.2 IDLE 定时误差 ........................................................................................................................... 19

Page 4: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow性能测试报告 1

www.sdnctc.com

一、引言

目前,交换机厂商已经陆续推出了多款 OpenFlow 交换机,并且已经通过了 OpenFlow 1.3 的一致性认证。

但是对于网络用户来说,交换机设备性能是否达到相关要求,这些仍然是未知的。

为此,全球 SDN 测试认证中心开发了交换机性能测试工具 OFsuite_Performance(switch)。

本文档以开源交换机 Open vSwitch 作为待测交换机,使用 OFsuite_Performance(switch)执行性能测试,汇

总测试结果得出性能测试报告。报告中也以具体测试例的形式介绍了一些 OpenFlow 交换机性能测试的方法

和步骤。

二、测试环境配置

2.1 待测设备

待测交换机为 Open vSwitch v2.5.0,运行于 Linux 服务器上,服务器配置如下:

服务器型号: Dell PowerEdge R720

处理器: Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz 4 核

内存: 16GB 1600MHz

操作系统: Ubuntu server 14.04.1 LTS 64 位

控制通道网卡: 1Gbps × 1

数据通道网卡: 1Gbps × 4

2.2 测试工具

测试工具为 OFsuite_Performance(switch),运行于 Linux 服务器上,服务器配置如下:

处理器: Intel(R) Xeon(R) E3-1230 @ 3.20GHz 4 核

内存: 8GB 1333MHz

操作系统: Ubuntu server 12.04 LTS 64 位

Page 5: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 2

控制通道网卡: 1Gbps × 1

数据通道网卡: 1Gbps × 4

2.3 测试拓扑

待测设备与测试工具通过一个控制通道和四个数据通道相互连接。OpenFlow 消息通过控制通道传输,模拟

的网络流量通过数据通道传输。

三、测试建议

3.1 隔离建议

建议性能测试中所有的测试例在隔离的实验室环境中进行测试以保证测试结果的准确性;

在实验室中进行测试时,建议阻止任何与测试无关的网络流量进入测试环境。

3.2 连接建议

建议待测设备直接连接到测试工具以避免其他中间设备带来的时延;

建议对 Linux 服务器的 TCP 协议栈进行调优。

Page 6: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 3

3.3 重复建议

所有性能测试例建议单独执行至少 10次测试以消除性能不稳定带来的负面影响从而保证统计结果的可信度。

四、性能测试例

4.1 PACKET IN 性能

4.1.1 TABLE-MISS 表项的 PACKET IN 性能

测试目的

OpenFlow 1.3 中新增了 TABLE-MISS 表项,通过 TABLE-MISS,当交换机收到没有匹配流表的网络包

时,会向控制器发送 PACKET_IN 消息。本测试例测试交换机收到未匹配的包时,上报 PACKET_IN 所

花费的时间。

测量方法

Test Tool DUT

Tt

Tr

Tr-Tt

如上图所示,测试时首先删除交换机的所有流表,确认删除成功后再下发一条 TABLE-MISS 表项,待下

Page 7: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 4

发成功并且该条流表生效后,在数据通道发送一个包到交换机。记此时间为 Tt,待交换机上报

PACKET_IN 时,记此时间为 Tr,则测试结果为 Tresult=Tr - Tt。

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 待测交换机上送 PACKET_IN 消息不使用 buffer 进行缓存

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除交换机中的所有流表

3. 下发 TABLE-MISS 流表项,匹配项为通配,动作为转发给控制器

4. 等待足够长的时间(例如 5 秒),以使该条流表生效

5. 在数据通道发送一个包到待测交换机,记录此时间为 Tt

6. 当测试工具收到 PACKET_IN 消息时,记录此时间为 Tr

7. 测试结果即为 Tresult=Tr – Tt

8. 改变数据通道封包的类型和长度重复进行测试

测试结果

上图测试结果是数据通道封包类型为 ARP、长度为 60 字节时,OVS 上报 PACKET_IN 所用的时间。在

1 2 3 4 5 6 7 8 9 10

时间 0.3791 0.2892 0.3731 0.3729 0.2921 0.4339 0.304 0.3731 0.339 0.402

0

0.1

0.2

0.3

0.4

0.5

时间

(ms)

测试次序

PACKET_IN上送时间(TABLE-MISS)

Page 8: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 5

TABLE-MISS 表项下,OVS 上报 PACKET_IN 时间平均值为 0.356 毫秒。

4.1.2 非 TABLE-MISS 表项的 PACKET_IN 性能

测试目的

在普通的流表中,通过设置动作为转发到控制器,交换机会将匹配到的数据包封装成 PACKET_IN 上送

给控制器。本测试例测试交换机收到匹配的包时,上报 PACKET_IN 花费的时间。

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 待测交换机上送 PACKET_IN 消息不使用 buffer 缓冲

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除交换机中的所有流表

3. 下发一条流表,流表匹配一个入端口,动作为转发到控制器

4. 等待足够长的时间(例如 5 秒),以使流表生效

5. 从数据通道发送一个包到待测交换机,记录此时间为 Tt

6. 记录收到待测交换机发送 PACKET_IN 的时间为 Tr

7. 测试结果即为 Tresult = Tr – Tt

8. 改变数据通道封包的类型和长度重复进行测试

测试结果

Page 9: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 6

上图测试结果是数据通道封包类型为 ARP、长度为 60 字节时,OVS 上报 PACKET_IN 所用的时间。普

通流表项的 PACKET_IN 上送时间与 TABLE-MISS 表项相差不多,平均值为 0.339 毫秒。

4.2 流表性能

4.2.1 流表查询时间

测试目的

测试待测交换机查询一条流表的时间。

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 待测交换机最大流表项数量为已知

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机的所有流表

3. 向待测交换机添加一条流表,动作为转发到某一个端口

4. 等待足够长的时间(例如 5 秒),以使该流表项生效

1 2 3 4 5 6 7 8 9 10

时间 0.36192 0.319 0.38004 0.34905 0.34595 0.28205 0.34809 0.28706 0.36407 0.35286

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

时间

(ms)

测试次序

PACKET_IN上送时间

Page 10: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 7

5. 从数据通道发送一个 TCP 包,记录此时间为 Tt

6. 记录该 TCP 包从相应端口被转发出来的时间为 Tr

7. 测试结果即为 Tresult = Tr – Tt

8. 改变安装流表项的数量(不多于已知的最大流表项数量)重复进行测试

测试结果

流表查询时间性能对于 OpenFlow 交换机来说是一个很重要的衡量指标。从上图测试结果中可以看到,

OVS 在 1000 条流表中精确查询一条表项的时间在 0.4 毫秒以内。同时也可以看到,随着流表项数量的

增加,OVS 精确查询其中一条流表的时间并没有明显增长。

4.2.2 流表安装时间

测试目的

测试待测交换机安装一条流表并使之生效的时间

1 2 3 4 5 6 7 8 9 10

1 flow 0.35691 0.31304 0.278 0.35405 0.29492 0.27299 0.34094 0.33212 0.27299 0.34308

100 flows 0.38385 0.38886 0.32997 0.30494 0.40507 0.37694 0.36693 0.29302 0.30398 0.25511

500 flows 0.34308 0.3171 0.39601 0.30708 0.39697 0.28586 0.36693 0.39506 0.27204 0.39792

1000 flows 0.3891 0.31686 0.29612 0.39315 0.2749 0.29182 0.37313 0.31304 0.28896 0.37384

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

时间

(ms)

测试次序

流表查询时间

Page 11: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 8

测量方法

Test Tool DUT Port 1 Port 2

.

.

.

.

Tr-Tt

Tt

Tr

.

.

.

.

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 待测交换机最大流表项数量为已知

3. 待测交换机支持 PUSH_VLAN 和 SET_FIELD 动作

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

3. 持续发送 TCP 流量到待测交换机的一个入端口(例如图中的端口 1),此时没有流量被转发出去

4. 向 table 0 添加一条流表,该流表能够匹配到步骤三中发送的 TCP 流量,动作为 PUSH_VLAN,

SET_FIELD 并 OUTPUT 到一个出端口(图中端口 2),记录下发此流表的时间为 Tt

5. 流表生效后会有流量从出端口被转发出去,记录第一个被转发出去的包的时间的 Tr

Page 12: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 9

6. 测试结果为 Tresult = Tr – Tt

7. 以不同的吞吐量下发多条不同的流表重复进行测试,在数据通道也发送不同的数据流以匹配所有下

发的流表,测试每一条流表的安装时间

注意

下发流表种类很多吞吐很大时,数据通道也要发送相应的数据流,此时数据通道发送流量的速率可能引

起测试误差。

测试结果

流表安装时间是从测试工具下发流表开始,直到流表生效,数据包根据流表被转发到相应端口为止的时

间,其中包括了流表的查询过程。本测试例中,测试了下发 1000 条流表时,每条流表的安装时间,并

计算出流表安装时间的最小值、中位值、平均值和最大值,如上图所示。与 4.2.1 的流表查询时间测试

结果相对比,平均流表安装时间明显长于流表查询时间。

1 2 3 4 5 6 7 8 9 10

min 0.29397 0.299931 0.305891 0.282049 0.371933 0.329971 0.306129 0.343084 0.326872 0.28801

median 1.551867 1.497984 1.630068 1.116991 1.211166 1.317978 2.584934 1.247883 1.428127 1.476049

mean 3.265059 1.827031 3.624656 1.565655 2.677705 1.693084 3.35731 3.296013 5.248318 1.887048

max 15.3501 7.110119 19.56987 8.945942 14.85801 9.259939 9.47094 23.86904 23.33188 9.284019

0

5

10

15

20

25

30

时间

(ms)

测试次序

流表安装时间

Page 13: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 10

4.2.3 流表删除时间

测试目的

测试待测交换机删除一条流表的时间

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 待测交换机的最大流表项数量为已知

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

3. 向 table 0 添加一条流表,动作为 OUTPUT 到某一个端口

4. 在数据通道持续发送能够匹配到步骤 3 的流表的数据流到某一个端口

5. 等待足够长的时间(例如 3 秒)直到有数据包被转发出去

6. 发送删除流表消息,记录此时间为 Tt

7. 等待一段时间直到没有数据包再被转发出去,记录最后一个被转发的数据包的时间为 Tr

8. 测试结果为 Tresult = Tr – Tt

9. 向待测交换机下发 100 条或者 1000 条或者已知的最大流表项数量的流表反复进行测试

测试结果

Page 14: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 11

流表删除时间测试的是从下发删除流表消息开始,到数据包不再被转发而止的时间。本测试例中,我们

测试了删除 1000 条流表时每条流表的删除时间,计算了其中的最小值、中位值、平均值和最大值,测

试结果如上图所示。从上图中可以看到,OVS 删除每条流表的时间为 3 秒左右。

4.2.4 流表修改时间

测试目的

测试待测交换机修改一条流表的时间

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 待测交换机的最大流表项数量为已知

3. 待测交换机支持 PUSH_VLAN 和 SET_FIELD 动作

测试步骤

1. 设置待测交换机连接到测试工具

1 2 3 4 5 6 7 8 9 10

min 2979.59 2956.53 2960.85 2955.65 2958.42 2964.43 2980 2965.44 2954.02 2959.78

median 3105.91 3129.15 3131.45 3123.94 3125.68 3134.42 3104.45 3134.97 3125.91 3135.43

mean 3126.61 3124.38 3125.7 3121.3 3121.65 3123.99 3124.52 3121.63 3124.64 3130

max 3286.15 3254.43 3260.97 3234.48 3245.43 3253.42 3273.07 3256.85 3245.81 3260.47

2700

2800

2900

3000

3100

3200

3300

3400

时间

(ms)

测试次序

流表删除时间

Page 15: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 12

2. 删除待测交换机上的所有流表

3. 添加一条流表,流表动作为 OUTPUT 到某一个端口

4. 在数据通道持续发送能够匹配到步骤 3 下发的流表的数据流量

5. 等待足够长的时间(例如 3 秒)直到数据包被转发到相应端口

6. 发送修改流表的消息,将数据包转发到另一个端口,记录下发修改流表消息的时间为 Tt

7. 待数据包被转发到相应端口后,记录第一个包转发出去的时间为 Tr

8. 测试结果为 Tresult = Tr – Tt

9. 在已安装 100 条流表或者 1000 条流表或已知的最大流表项数量下重复进行测试,得到不同情况下

每条流表修改的时间

测试结果

同流表安装时间,流表修改时间测试的是从下发流表开始,到流表生效有数据包被转发到相应端口为止

的时间,其中也是包含了流表查询时间。本测试例测试了修改 1000 条流表时,每条流表修改生效的时

1 2 3 4 5 6 7 8 9 10

min 0.408888 0.455141 0.503063 0.488043 0.308037 0.469923 0.401974 0.396967 0.322819 0.997066

median 61.3029 57.92403 42.54389 78.60613 45.75801 70.68777 70.38689 75.38605 37.11391 72.06893

mean 64.6109 60.10194 48.9848 83.44618 46.11325 73.79901 74.93201 72.42798 40.39447 79.10849

max 156.8229 127.0661 113.2028 181.9091 86.133 153.2881 153.1379 148.7758 86.90405 162.8878

0

20

40

60

80

100

120

140

160

180

200

时间

(ms)

测试次序

流表修改时间

Page 16: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 13

间,并计算出了流表修改时间的最小值、中位值、平均值和最大值。从上图测试结果中可以看到,OVS

修改 1000 条流表的时间明显大于流表查询和流表安装时间。

4.2.5 流表容量

测试目的

测试待测交换机指定流表的流表项容量

测试前提条件

待测交换机兼容 OpenFlow 1.3 协议

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

3. 发送OFPMP_TABLE_FEATURES类型的MULTIPART_REQUEST消息以得到指定流表的最大流

表项数量,记为 Fmax

4. 向待测交换机添加 Fmax 条流表,流表项具有不同的优先级和匹配项

5. 继续向待测交换机添加流表,等待待测交换机发送错误消息,错误类型为

OFPET_FLOW_MOD_FAILED,错误码为 OFPFMFC_TABLE_FULL

6. 记录收到错误消息前发送的流表项数量即为测试结果

测试结果

通过 OFPMP_TABLE_FEATURES 得到 OVS 每个表最大流表项数量为 1000000 条。下发 1000000 条

流表后,继续下发流表,直到下发了 2000000 条流表,OVS 依然没有返回任何错误,考虑到 OVS 使用

链表存储流表项,可能在耗尽内存资源之前可以无限制的增加流表项数量,故本测试例没有得到有效测

试结果。

Page 17: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 14

4.3 PACKET OUT 性能

4.3.1 PACKET OUT 消息吞吐/时延

测试目的

测试待测交换机处理 PACKET_OUT 消息的吞吐和时延

测试前提条件

1. 待测交换机兼容 OpenFlow 1.3 协议

2. 设置交换机上报 PACKET_IN 消息不使用 buffer 缓存

测试步骤

1. 设置待测交换机连接到测试工具

2. 发送PACKET_OUT 消息,其中 data字段包含一定长度的数据包,动作为OUTPUT到某一个端口,

记录此时间为 Tt

3. 在相应端口收到步骤 2 中 data 字段的包后,记录此时间为 Tr

4. 测试结果为 Tresult = Tr – Tt

5. 在 PACKET_OUT 消息的 data 字段中添加不同长度的数据包,并发送不同数量的 PACKET_OUT

消息反复进行测试

测试结果

Page 18: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 15

PACKET_OUT 性能测试的是从测试工具下发 PACKET_OUT 开始,到数据包被转发到相应端口为止的

时间。从上图测试结果中可以看到,OVS 执行 1000 条 PACKET_OUT 动作的时间在 0.35 毫秒以内。

此外,随着 PACKET_OUT 数量的增加,OVS 处理 PACKET_OUT 的时间并没有明显增加。

4.4 交换机统计性能测试

4.4.1 流统计性能

测试目的

测试待测交换机更新流统计的时间

测试前提条件

待测交换机兼容 OpenFlow 1.3 协议

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

1 2 3 4 5 6 7 8 9 10

1 packet_out 0.236988 0.267982 0.256062 0.26083 0.227928 0.226021 0.225067 0.221968 0.257969 0.261784

100 packet_out 0.288963 0.310898 0.247955 0.267982 0.252008 0.31209 0.276089 0.250101 0.253916 0.251055

500 packet_out 0.256062 0.272989 0.20504 0.239849 0.30899 0.254869 0.328064 0.274181 0.252008 0.341892

1000 packet_out 0.244141 0.225067 0.191927 0.268936 0.241041 0.221968 0.215054 0.256062 0.319004 0.211

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

时间

(ms)

测试次序

PACKET_OUT时延

Page 19: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 16

3. 向 table0 添加一条流表,动作为转发到某一个端口

4. 持续发送 OFPMP_FLOW 类型的 OFPT_MULTIPART_REQUEST 消息,请求步骤 3 下发的流表的

统计信息

5. 在数据通道发送一个能够匹配步骤 3 流表的数据包,记录此时间为 Tt

6. 根据 OFPT_MULTIPART_REPLY 消息判断流统计是否更新,记录更新的时间为 Tr

7. 测试结果为 Tresult = Tr – Tt

8. 反复测试不同流的更新时间

测试结果

从上图测试结果可以看到,OVS 更新流统计信息的时间随着流数量的增加而明显增长。

4.4.2 端口统计性能

测试目的

测试端口统计信息更新时间

1 2 3 4 5 6 7 8 9 10

1 flow 0.267982 0.28491 0.31805 0.277996 0.530958 0.365973 0.531912 0.262022 0.30899 0.524044

100 flows 17.296076 16.093016 28.532982 22.540092 37.953854 42.269945 46.901941 14.471054 47.857046 36.480904

500 flows 207.28707 205.59692 228.23405 203.28903 207.33309 253.31807 213.45592 224.62797 200.248 200.44804

1000 flows 543.60604 512.47811 497.30802 511.29603 560.88805 593.2169 503.55101 589.44678 490.88407 509.99308

0

100

200

300

400

500

600

700

时间

(ms)

测试次序

流统计时间

Page 20: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 17

测试前提条件

待测交换机兼容 OpenFlow 1.3 协议

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

3. 发送 OFPMP_PORT_STATS 类型的 OFPT_MULTIPART_REQUEST 消息,请求当前端口的统计

信息,记录下 rx_packets 和 rx_bytes

4. 持续发送步骤 3 的 OFPT_MULTIPART_REQUEST 请求

5. 在数据通道发送一个数据包到相应端口,记录此时间为 Tt

6. 根据 OFPT_MULTIPART_REPLY 消息判断端口统计信息更新情况,记录更新的时间为 Tr

7. 测试结果为 Tresult = Tr – Tt

8. 重复测试发送不同类型和不同数量的数据包时端口统计信息的更新时间

测试结果

从上图测试结果中可以看到,随着数据通道发送的数据包数量的增加,OVS 更新端口统计信息的时间也

在增长。

1 2 3 4 5 6 7 8 9 10

1 packet 0.50283 0.52214 0.65017 0.42105 0.83685 0.62203 0.58889 0.41103 0.23103 0.60797

100 packets 0.93699 0.61393 1.01304 0.80299 0.61488 0.58508 0.40603 0.71812 0.80514 0.78011

500 packets 1.55997 2.82693 3.02792 2.98882 1.87707 2.99001 1.86515 1.85704 1.88613 2.913

1000 packets 6.62804 5.24807 5.24807 7.03096 6.72197 7.01904 4.65202 5.47886 3.8259 6.03008

012345678

时间

(ms)

测试次序

端口信息统计时间

Page 21: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 18

4.5 交换机定时性能测试

4.5.1 HARD 定时误差

测试目的

测试流表 HARD 定时的准确性

测试前提条件

待测交换机兼容 OpenFlow 1.3 协议

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

3. 向待测交换机添加一条流表,其中 hard 定时时间为 5 秒,动作为 OUTPUT 到一个端口,记录此时

间为 Ts

4. 发送匹配步骤 3 流表的数据流到待测交换机的一个端口,此时该流被转发到相应的出端口,记录转

发出去的最后一个数据包的时间为 Te

5. 测试结果为 Tresult = Te – Ts

6. 计算百分比误差为 E = (Tresult - 5)/5 * 100%

7. 反复测试安装有不同数量的流表时,HARD 定时的准确性

测试结果

Page 22: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 19

本测试例中,HARD 定时测试的是从下发流表开始,到流表超时失效,数据包不再被转发为止的时间,

并由此计算出定时误差。从上图测试结果中可以看到,随着流表数量的增加,其中一条流表定时误差也

在增大。

4.5.2 IDLE 定时误差

测试目的

测试流表 IDLE 定时的准确性

测试前提条件

待测交换机兼容 OpenFlow 1.3 协议

测试步骤

1. 设置待测交换机连接到测试工具

2. 删除待测交换机上的所有流表

1 2 3 4 5 6 7 8 9 10

1 flow 10.14% 10.14% 10.10% 10.12% 10.13% 10.13% 10.18% 10.16% 10.13% 10.14%

100 flows 10.37% 10.43% 10.39% 10.35% 10.40% 10.40% 10.32% 10.34% 10.28% 10.29%

500 flows 10.84% 10.85% 10.91% 10.93% 10.89% 10.98% 10.95% 10.94% 11.05% 10.86%

1000 flows 11.50% 11.57% 11.64% 11.59% 11.67% 11.59% 11.60% 11.57% 11.58% 11.61%

9.00%

9.50%

10.00%

10.50%

11.00%

11.50%

12.00%

百分比误差

测试次序

HARD定时误差

Page 23: OPEN VSWITCH OPENFLOW 性能测试报告 - sdnctc.com · Open vSwitch OpenFlow 性能测试报告 OPEN VSWITCH OPENFLOW 性能测试报告 全球SDN 测试认证中心SDNCTC 2016

Open vSwitch OpenFlow 性能测试报告 20

3. 向待测交换机添加一条流表,其中 IDLE 定时时间为 5 秒,并设置 OFPFF_SEND_FLOW_REM 标

4. 在数据通道发送一个匹配步骤 3 流表的数据包到交换机的一个端口,记录此时间为 Ts

5. 等待待测交换机发送 OFP_FLOW_REMOVED 消息,记录收到此消息的时间为 Te

6. 测试结果为 Tresult = Te – Ts

7. 计算 IDLE 定时的百分比误差为 E = (Tresult - 5)/5 * 100%

8. 反复测试安装不同数量的流表时,IDLE 定时的准确性

测试结果

本测试例中,IDLE 定时测试的是从下发流表开始,到待测交换机上报 OFP_FLOW_REMOVED 消息为

止的时间。从上图测试结果中可以看到,IDLE 定时误差并不会随着流表数量的增加而增大。

注:对比 4.5.1,IDLE 定时误差与 HARD 定时误差测试结果相差较大,我们认为这是由于两个测试例使

用的测试方法在原理上存在本质区别而导致的,直接对比这两个测试结果是没有意义的。

1 2 3 4 5 6 7 8 9 10

1 flow 0.14% 0.14% 0.12% 0.14% 0.14% 0.12% 0.12% 0.10% 0.16% 0.14%

100 flows 0.14% 0.11% 0.12% 0.14% 0.14% 0.16% 0.12% 0.10% 0.12% 0.14%

500 flows 0.14% 0.13% 0.14% 0.14% 0.11% 0.13% 0.17% 0.15% 0.13% 0.13%

1000 flows 0.14% 0.15% 0.13% 0.13% 0.12% 0.15% 0.15% 0.17% 0.14% 0.16%

0.00%

0.02%

0.04%

0.06%

0.08%

0.10%

0.12%

0.14%

0.16%

0.18%

百分比误差

测试次序

IDLE定时误差