专栏首页蜉蝣禅修之道fs学习笔记(一)

fs学习笔记(一)

fs是一个网络仿真工具,由Joel Sommers用Python编写的,它与传统的仿真工具不同,例如ns-2,传统的仿真工具是基于包层次的,而fs是基于流层次的,听说效率更高。

po主是第一次接触该工具,一些配置还不太清楚,都是根据关于fs的infocom论文来理解的,网上资源太少了。下面通过一个例子讲述一下fs配置文件的属性。

graph test {
    // 3 nodes: a, b, and c
    flowexport=text

    a [ 
        autoack="False"
        ipdests="10.1.0.0/16 10.10.0.0/16 10.128.0.0/9"
        traffic="m1"

        // basic harpoon setup 
        // build up and withdrawal of harpoon sources; 10 sources for duration
        // of 60 sec, followed by 20 sources for 60 sec, etc.
        //  m1="modulator start=0.0 generator=s1 profile=((60,),(10,20,30,30,20,10))"

        m1="modulator start=0.0 generator=s1 profile=((3600,),(1,))"
        s1="harpoon ipsrc=10.1.0.0/16 ipdst=10.3.1.0/24 flowsize=pareto(10000,1.2) flowstart=exponential(100.0) ipproto=randomchoice(6) sport=randomchoice(22,80,443) dport=randomunifint(1025,65535) lossrate=randomchoice(0.001)"
    ];

    b [ 
        autoack="False"
        ipdests="10.2.0.0/16" 
    ];

    c [ 
        autoack="False"
        ipdests="10.3.0.0/16 10.4.0.0/16 10.0.0.0/8" 
    ];

    // links 
    a -- b [weight=10, capacity=100000000, delay=0.043];
    b -- c [weight=10, capacity=100000000, delay=0.031];
    a -- c [weight=30, capacity=100000000, delay=0.123];
}

fs的配置文件可以是dot或者是json格式的,以上的是dot格式。配置文件中,首先定义了拓扑图的名字,然后用大括号包围拓扑图的详细信息。然后拓扑嘛,只有两个元素,节点和链路。

例子中节点数量是3个,a,b,c,每个节点都有可到达的ip以及是否自动ack,其中a节点是网络流量的发起者,因此a节点需要定义流量模块,其流量模块为m1,start属性表示什么时候开始发起流量,profile属性由两个列表组成,都是Python的tuple元组,第一个列表表示流量发起周期,第二个列表表示有几个流同时从源节点处被激活,逗号结尾表示循环。generator属性表示流量的发生器。例子中引用s1,每个发生器都有一个类型,例如s1的类型是harpoon,然后还有源节点和目的节点,注意这两个属性可以是单个元素,也可以是元组,flowsize属性表示流的大小,这里使用服从帕累托分布的随机变量;flowstart属性表示流开始的时间间隔,sport和dport代表源端口和目的端口,lossrate代表流的丢包率。

例子中一共有三条link,a到b,b到c,a到c,其中每条link中weight属性代表dijkstra算法中的边的权重,capacity代表链路带宽,delay代表链路延迟。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ubuntu13.10安装broadcom无线网卡驱动

    forrestlin
  • LeetCode之Generate Parentheses(C++)

    forrestlin
  • 自定义对话框绑定控件

    forrestlin
  • Spring面试题

    原文在 https://www.zhihu.com/question/39814046

    DH镔
  • Git 项目推荐 | 基于 C# 的极速 WEB + ORM 框架

    NFine 是基于 C# 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展,让Web开发更迅速、简单...

    码云Gitee
  • 第2期:垃圾流量的识别 PPT

    GA小站
  • Mac / Windows 下安装 RabbitMQ

    AMQP(Advanced Message Queuing Protocol,高级消息队列协议)

    南风
  • Windows使用scoop包管理器安装RabbitMQ

    在Windows上使用Scoop包管理器在命令行下安装RabbitMQ。这使得它很容易安装且易于升级或卸载。

    用户4464623
  • 你还不知道??GitHub发布了APP版!!

    11 月 13 日,GitHub Universe 2019 开发者大会上,公布了大量新功能,包括发布 GitHub 移动版、GitHub Actions 和 ...

    乱敲代码
  • 从经济学角度来看RPA虚拟机器人降本增效的边际效应

    南京大学MBA,微软MCT认证讲师,曾任职大学计算机讲师,国内较早网络及云安全从业者,艺赛旗创始高管之一,现任上海艺赛旗软件股份有限公司高级副总裁,主要负责艺赛...

    艺赛旗RPA

扫码关注云+社区

领取腾讯云代金券