zoukankan      html  css  js  c++  java
  • 实验 3:Mininet 实验——测量路径的损耗率

    实验 3:Mininet 实验——测量路径的损耗率

    一、实验目的

    在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设
    定;初步了解 Mininet 安装时自带的 POX 控制器脚本编写,测试路径损耗率。

    二、实验任务


    h0 向 h1 发送数据包,由于在 Mininet 脚本中设置了连接损耗率,在传输过程中
    会丢失一些包,本次实验的目的是展示如何通过控制器计算路径损耗速率(h0
    s0-s1-h1)。这里假设控制器预先知道网络拓扑。控制器将向 s0 和 s1 发送
    flow_stats_request,当控制器接收到来自 s0 的 response 时,将特定流的数据包
    数保存在 input_pkts 中,当控制器接收到来自 s1 的 response 时,将接收到特定
    流的数据包数保存在 output_pkts 中,差值就是丢失的数据包数量。
    基于上述拓扑,编写 Mininet 脚本,设置特定的交换机间的路径损耗速率,然后
    编写 POX 控制器脚本,实现对路径的损耗率的测量

    三、实验步骤

    1. 实验环境

    安装了 Ubuntu 16.04.7 LTS 的虚拟机

    2. 实验过程

    SDNLAB 实验参考资料:https://www.sdnlab.com/15100.html

    (1)新建并编辑 pox 脚本 flowstat.py:

    sudo touch flowstat.py
    

    在 pox 安装目录下(Mininet 完整安装包含了 pox)执行以下命令运行 pox 脚本

    $ ./pox.py flowstat 
    

    现在一起看下 flowstat.py 的关键代码:
    第 7 行开始,让 h0 ping h1,监测 s0 和 s1 之间的链路。
    ⚫ 如果匹配到以太网类型的包头(0x0800),并且数据包的目的 IP 地址是
    192.168.123.2(对照后面 Mininet 的脚本发现是 h1), 并且连接到控制器的数
    据平面设备 id 是 s0(h0 ping h1,链路 s0-s1 上数据包是从 s0 流向 s1,s0 为
    源,s1 为目的地), 执行 input_pkts = f.packet_count,把数据包数量存入
    input_pkts;
    ⚫ 同理,如果连接到控制器的数据平面设备 id 是 s1,执行 output_pkts =
    f.packet_count,把数据包数量存入 output_pkts。
    ⚫ 最后求 input_pkts 和 output_pkts 的差值。一般情况下差值为正,说明链路上
    数据包有损耗。

    (2)编辑 Mininet 脚本 mymininet3.py

    参照拓扑图,新建并编辑 Mininet 脚本 mymininet3.py,控制器因为安装在本机,
    所以需修改参考资料代码中的控制器地址为 127.0.0.1:6633。

    设置 s0 和 s1 之间链路的丢包率为 0


    Ping 默认是每 1 秒钟测一次,ping 的结果会显示一个丢包率,这里的丢包率是根
    据 ping 不通的次数占总次数的百分比计算得到的。上图中由于一共 ping 了 20
    次,每次都能通,所以丢包率是 0。

    如果修改代码中 s0 和 s1 之间链路的丢包率为 10。

    修改延时后测试

    20 秒时间的 ping 过程中有 icmp_seq 为1/2/5/14/17 共 6 次 ping 不通,所以丢包率计算为 20%。

  • 相关阅读:
    codeforces C. Fixing Typos 解题报告
    codeforces B. The Fibonacci Segment 解题报告
    codeforces B. Color the Fence 解题报告
    codeforces B. Petya and Staircases 解题报告
    codeforces A. Sereja and Bottles 解题报告
    codeforces B. Levko and Permutation 解题报告
    codeforces B.Fence 解题报告
    tmp
    API 设计 POSIX File API
    分布式跟踪的一个流行标准是OpenTracing API,该标准的一个流行实现是Jaeger项目。
  • 原文地址:https://www.cnblogs.com/Yamyyy/p/13681914.html
Copyright © 2011-2022 走看看