SDN Experiment4

本文档详述了一次SDN实验,涉及ARPAnet网络管理员如何避免路由环路问题。实验中,通过修改VeriFlow代码实现了路径监控,输出影响的EC数量,记录环路路径,并打印相关EC信息。补丁的目的是通过考虑in_port来正确划分等价类,防止重叠回路导致错误的流量分析。
摘要由CSDN通过智能技术生成

SDN Experiment 4


实验内容


题⽬

假如你是生活在1972年维护ARPAnet的网络管理员,在前面的实验中你学会了如何建立最短路径,下发
了一条SDC到MIT跳数最少的路径(图中绿色的路径)。你的同事Bob某天接到了一个新的需求,要求
UTAH到ILLINOIS之间的所有流量必须经过部署于TINKER的流量分析器以进行进一步研究,粗心大意的
Bob没有检查当前的网络状态就很快下发了一条新的路径(图中红色的路径)。聪明又机智的你很快意
识到Bob下发的流表很可能造成转发的环路。

在这里插入图片描述

实验过程


0. 从github下载VeriFlow并打上实验补丁

遇到的问题:
在这里插入图片描述
查找资料:
使用 Git 同步时出现gnutls_handshake() failed: Error in the pull function

git clone https://github.com/samueljero/BEADS.git
改为:
git clone git://github.com/samueljero/BEADS.git

EC:每个EC是一组在整个网络中经历相同转发动作的数据包

切换到你的包文件存放目录下

    cd /usr/src

  下载git安装包

    sudo wget https://www.kernel.org/pub/software/scm/git/git-2.30.0.tar.gz

  解压git安装包

    sudo tar -zxvf git-2.30.0.tar.gz

    cd git-2.30.0

  配置git安装路径

    sudo ./configure prefix=/usr/local/git/

  编译并且安装

    make && make install

实验内容

  1. 输出每次影响EC的数量
  2. 打印出环路路径的信息
  3. 进一步打印出环路对应的EC的相关信息
  4. 分析原始代码与补丁代码的区别,思考为何需要添加补丁
一、输出每次影响EC的数量
根据指导书的提示,EC数量在verifyRule函数中有定义。
找到VeriFlow.cpp第1019行,取消1019和1020行注释,并同时将1020行的输出拷贝到fp上。

在这里插入图片描述
重新编译VeriFlow,并按原本的要求运行对应程序。

打开log_file.txt并查看日志。

可以看出,稳定后拓扑的ecCount为3.

在这里插入图片描述

二、打印出环路路径的信息
根据指导书的提示,在查找环路时将每次的currentLocation保存起来即可,考虑到该函数是递归的,可以将数据保存至递归入口处的数据结构中,这里选择了字符串数组。
首先将VeriFlow.h中111行的traverseForwardingGraph定义做修改,添加一个保存环路路径的字符串数组参数。

在这里插入图片描述在这里插入图片描述
在VeriFlow.cpp中1050行,遍历图的位置,预分配一个字符串数组,并作为参数传入。

在这里插入图片描述
分别在1115行和1128行加入打印环路和记录路径的代码。
在这里插入图片描述
在这里插入图片描述
其中,printLoop和arrayIn的定义如下:
在这里插入图片描述
添加后输出的环路如下:

在这里插入图片描述

三、进一步打印出环路对应的EC的相关信息

根据指导书的提示,修改PacketClass的显示即可。
首先找到traverseForwardingGraph中PacketClass的输出行,可以看出是通过调用toString方法来转为字符串的。

找到对应的代码,在EquivalenceClass.cpp的110行,将其修改为简化形式,如下:
在这里插入图片描述

重新编译,运行,结果如下:

在这里插入图片描述

四、分析原始代码与补丁代码的区别,思考为何需要添加补丁

在这里插入图片描述
原始代码和补丁的主要区别在于原始代码没有区分in_port,这样对于重叠的回路,会被认为是相同的数据通路,显然这样的方式划分的等价类和我们的目标是不一致的,因此需要添加in_port来保证正确地划分等价类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李汪才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值