前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >learning :network simulator plugin(2)

learning :network simulator plugin(2)

作者头像
dpdk-vpp源码解读
发布2023-06-23 10:39:38
1420
发布2023-06-23 10:39:38
举报
文章被收录于专栏:DPDK VPP源码分析

本章主要介绍一下nsim node节点的处理逻辑。

先带着几个问题来学习nsim插件:带宽是如何使用的?延迟是怎么实现的?保序是如何处理的?

带宽是如何使用的?nsim配置时,会将带宽转化为每个worker所存储的最大缓存区的存储报文的个数,超过之后就会丢弃。

下面是nsim配置延迟25ms,带宽是10mbps,报文长度1500字节。先计算每s字节长度:0.025 * 10*1000*1000/8 = 32000;每个报文长度时1500字节,32000/1500 = 21个报文。

代码语言:javascript
复制
vpp# show nsim
configuration
 delay: 25.0 ms
 drop fraction: .50000
 reorder fraction: .50000
 packet size: 1500
 worker wheel size: 21
 throughput: 10.0 mbps

output feature arcs to:
 GigabitEthernet2/6/0 1

上面是只有一个worker核或者只有main核的结果。如果有多个worker核,则worker wheel size还需要除以worker核的个数。如果有2个worker,只有一条流的话,这个带宽就很不准确了。目前为了避免加锁,worker wheel 使用的缓存区是基于worker的。

延迟是怎么实现的?我们以上一节的流程图来说明一下,是在nsim-output-feature节点中,根据配置参数对报文进行处理,将需要延迟的报文记录需要延迟的时间。等待nsim-wheel input节点,来判断时间到时,从wheel_by_thread【1】线程对应的缓存队列里将报文取出,根据nsim_wheel_entry_t结构中记录的信息将报文送到接口tx节点。

保序处理就比较简单了?就是把需要乱序的报文在nsim-output节点直接发送出去,不需要经过网络模拟器调度。如下图所示我们发现有ping回应报文未进行延迟处理。可能就是reorder导致的。

针对报序功能我也是没有完全理解作者的设计意图。可能就是不需要进行延迟处理吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DPDK VPP源码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档