mptcp on mininet

article/2025/9/19 21:42:30

 这篇文章主要记录mptcp在mininet上的仿真实验。mininet中的网络实验,数据包走的是内核协议栈。这样得出的结果,好处就是实际网络协议栈的性能。缺点就是,要验证新的想法,需要修改内核协议栈。而且关于内核中的数据,比如tcp的拥塞窗口数据,可以参考[4,5],能否用在mptcp上就不知道了。
 步骤:

1安装mptcp协议栈,参考[1]
2安装mininet。
3运行柯志亨老师的拓补脚本[2],mptcp-simple1-test-yes.py,启动iperf软件,可以测量节点间的带宽。
4在运行iperf的时候,采用xterm启动了两个控制台,xterm h1 h2。但是要抓包,需要另启动一个h1的控制台。
5在xterm h1 启动后,在控制台输入抓包包命令:tcpdump -XX -n -i h1-eth0 -w /yourpath/mptcp.pcap

 下面是我在wireshark中打开的mptcp.pcap的截图,可以看到,网络层使用的协议栈是mptcp,这对于上层应用是透明的。
 关于mptcp的研究,目前处于停滞阶段,现在起步,别说肉了,连汤都喝不到了。能发文章的点,早就被聪明人发完了。盛宴已过,入行需谨慎。打算选题mptcp的同学可以到知网上去看看在这个方向下毕业的博士,发了几篇文章,什么层次的文章,花了几年毕业的。这是我入门时候写记录,现在回顾(2020.11.18),我也没发出什么关于mptcp的论文,这个论断依然成立。遇见什么问题,就不要私信或者QQ问我了!

my self builf topology

The mininet topology python scripts that I use during the experiment have uploaded to[3]. Here I will show two disjoint paths.
multihomed-4h.py

#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.cli import CLI
from mininet.link import TCLink
import time
##https://serverfault.com/questions/417885/configure-gateway-for-two-nics-through-static-routeing
#    ____h2____
#   /          \
# h1           h3
#   \___h4_____/
#
max_queue_size = 100  
net = Mininet( cleanup=True )
h1 = net.addHost('h1',ip='10.0.1.1')
h2 = net.addHost('h2',ip='10.0.1.2')
h3 = net.addHost('h3',ip='10.0.2.2')
h4 = net.addHost('h4',ip='10.0.3.2')
c0 = net.addController( 'c0' )
net.addLink(h1,h2,intfName1='h1-eth0',intfName2='h2-eth0', cls=TCLink , bw=2, delay='10ms', max_queue_size=max_queue_size)
net.addLink(h2,h3,intfName1='h2-eth1',intfName2='h3-eth0', cls=TCLink , bw=2, delay='10ms', max_queue_size=max_queue_size)
net.addLink(h1,h4,intfName1='h1-eth1',intfName2='h4-eth0', cls=TCLink , bw=2, delay='30ms', max_queue_size=max_queue_size)
net.addLink(h4,h3,intfName1='h4-eth1',intfName2='h3-eth1', cls=TCLink , bw=2, delay='30ms', max_queue_size=max_queue_size)
net.build()
h1.setIP('10.0.1.1', intf='h1-eth0')
h1.cmd("ifconfig h1-eth0 10.0.1.1 netmask 255.255.255.0")h1.setIP('10.0.3.1', intf='h1-eth1')
h1.cmd("ifconfig h1-eth1 10.0.3.1 netmask 255.255.255.0")h1.cmd("ip route flush all proto static scope global")
h1.cmd("ip route add 10.0.1.1/24 dev h1-eth0 table 5000")
h1.cmd("ip route add default via 10.0.1.2 dev h1-eth0 table 5000")h1.cmd("ip route add 10.0.3.1/24 dev h1-eth1 table 5001")
h1.cmd("ip route add default via 10.0.3.2 dev h1-eth1 table 5001")
h1.cmd("ip rule add from 10.0.1.1 table 5000")
h1.cmd("ip rule add from 10.0.3.1 table 5001")
h1.cmd("route add default gw 10.0.1.2  dev h1-eth0")h2.setIP('10.0.1.2', intf='h2-eth0')
h2.setIP('10.0.2.1', intf='h2-eth1')
h2.cmd("ifconfig h2-eth0 10.0.1.2/24")
h2.cmd("ifconfig h2-eth1 10.0.2.1/24")
h2.cmd("ip route add 10.0.2.0/24 via 10.0.2.2")
h2.cmd("ip route add 10.0.1.0/24 via 10.0.1.1")
h2.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")h4.setIP('10.0.3.2', intf='h4-eth0')
h4.setIP('10.0.4.1', intf='h4-eth1')
h4.cmd("ifconfig h4-eth0 10.0.3.2/24")
h4.cmd("ifconfig h4-eth1 10.0.4.1/24")
h4.cmd("ip route add 10.0.4.0  dev h4-eth1") #via 10.0.4.2
h4.cmd("ip route add 10.0.3.0 via 10.0.3.1")h4.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")h3.setIP('10.0.2.2', intf='h3-eth0')
h3.cmd("ifconfig h3-eth0 10.0.2.2 netmask 255.255.255.0")
h3.setIP('10.0.4.2', intf='h3-eth1')
h3.cmd("ifconfig h3-eth1 10.0.4.2 netmask 255.255.255.0")h3.cmd("ip route flush all proto static scope global")
h3.cmd("ip route add 10.0.2.2/24 dev h3-eth0 table 5000")
h3.cmd("ip route add default via 10.0.2.1 dev h3-eth0 table 5000")h3.cmd("ip route add 10.0.4.2/24 dev h3-eth1 table 5001")
h3.cmd("ip route add default via 10.0.4.1 dev h3-eth1 table 5001")
h3.cmd("ip rule add from 10.0.2.2 table 5000")
h3.cmd("ip rule add from 10.0.4.2 table 5001")net.start()
time.sleep(1)
CLI(net)
net.stop()

The tips to run this script:

1 python  multihomed-4h.py
2 xterm h1 h3
3 xrerm h1 h2

这里写图片描述

 And the packets captured results:
这里写图片描述

[1]mptcp install
[2]mptcp-topology
[3]mininet-topology
[4]tcpprobe, observe the TCP flow with kprobes
[5]PROPORTIONAL RATE REDUCTION FOR TCP


http://chatgpt.dhexx.cn/article/L4Gabrvb.shtml

相关文章

mininet操作

mn:启动mininet sudo mn -- topo single , 3 -- mac -- switch ovsk -- controller remote (1)--topo:指定openflow网络拓扑,四种类型的openflow网络拓扑:tree,single,linear,minimal ①缺省情…

mininet 主机双网关拓扑设计

这次的拓扑是一个主机拥有两个接口,两个接口分别有不同的网关,拓扑图如下,拓扑可以通过前两篇中提到的miniedit.py去生成: 主要配置指令如下: 截得不全直接看代码吧 #!/usr/bin/pythonfrom mininet.net import Minine…

Mininet笔记-基本命令

命令详解 拓扑构建命令 –topo  单一(single)拓扑,永远只有一个交换机,主机(host)可以有N个  线形(linear)拓扑,可以有多个交换机和主机,每个交换机只连接…

mininet基本操作

mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具,可以创建一个包含主机,交换机,控制器和链路的虚拟网络,其交换机支持OpenFlow,具备高度灵活的自定义软件定义网络。 在ubuntu系统中安…

mininet编程

代码 区分constructor and object #!/usr/bin/python from mininet.topo import Topo from mininet.net import Mininet from mininet.util import dumpNodeConnections from mininet.log import …

mininet实验部分总结

一、Mininet简介 Mininet是一个可以在有限资源的普通电脑上快速建立大规模SDN原型系统的网络仿真工具。该系统由虚拟的终端节点(End-Host)、OpenFlow交换机、控制器(也支持远程控制器)组成,这使得它可以模拟真实网络&…

Mininet应用实践

安装: 参考 : https://www.cnblogs.com/cotyb/p/5042072.html https://blog.csdn.net/Mr_Wanderer/article/details/107028267 https://blog.csdn.net/qq_19696893/article/details/123747960 开启ovsdb-server配置数据库:有两种方式&#x…

【学习笔记】Mininet 入门

【学习笔记】Mininet入门实战 课程介绍 Mininet是由一些虚拟的终端节点、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。 Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作&…

【Mininet】基础篇:Mininet创建简单网络拓扑及简单网络拓扑脚本编写

大家好,我是文思月! 每文一言:不要假装努力,结果不会陪你演戏! 本篇文章: 使用Mininet创建简单的网络拓扑,并创建网络拓扑脚本。 正文如下: 1. 最小网络拓朴 创建最小的网络拓扑…

【Mininet】安装篇:安装Mininet

大家好,我是皮皮猫吖! 每文一言:改变你的生活,现在或者从不 本篇文章: 本文是安装 mininet 的简单过程。 正文如下: 一、Mininet的安装 第一步:安装git apt install git 第二步&#xff…

mininet基础

mininet介绍 一、Mininet是什么 Mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具,可以创建一个包含主机,交换机,控制器和链路的虚拟网络,其交换机支持OpenFlow,具备高度灵活的自定义…

第一讲——mininet的安装和使用

第一讲——mininet的安装和使用 1.调出字符界面。 2.进入root。 3.直接安装git,发现无法安装,原因是没有安装源。 4.更新安装源。 5.再次安装git,发现可以安装。 6.下载mininet。 7.安装mininet。 8.查看mininet安装情况和创建线性网络拓扑。…

距离(distance)算法小结

18种和“距离(distance)”、“相似度(similarity)”相关的量的小结 在计算机人工智能领域,距离(distance)、相似度(similarity)是经常出现的基本概念,它们在自然语言处理、计算机视觉等子领域有重要的应用,而这些概念又大多源于数学领域的度…

概率论 联合分布

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我之前一直专注于单一的随机变量及其概率分布。我们自然的会想将以前的结论推广到多个随机变量。联合分布(joint distribution)描述了多个随机变…

推荐 :联合概率和条件概率的区别和联系

联合概率P(A∩B) 两个事件一起(或依次)发生的概率。 例如:掷硬币的概率是 ⁄₂ 50%,翻转 2 个公平硬币的概率是 ⁄₂ ⁄₂ ⁄₄ 25%(这也可以理解为 50% 的 50%) P(A ∩ B) P(A) ⋅ P(B) 对于 2 个硬币…

【概率论】五分钟搞懂概率论联合密度函数与概率之间的计算

【例题】 设X和Y的联合密度函数为&#xff1a; f ( x , y ) { 2 0 < x < ∞ , 0 < y < ∞ 0 其 他 区 域 f(x,y)\left\{ \begin{array}{rcl} 2 && {0<x<\infty,0<y<\infty}\\ 0 && 其他区域 \end{array} \right. f(x,y){20​​0<…

python3 联合概率,边缘概率,贝叶斯定理(含详细推导)

1、贝叶斯原理 假设有两个随机变量X&#xff1b;Y&#xff08;下方左图&#xff09;&#xff1b; X的取值为 {}&#xff0c;其中 i1,...,M(M个特征&#xff09;&#xff1b; Y的取值为 {}&#xff0c;&#xff0c;其中 j1,...,L&#xff08;L个类&#xff09;&#xff0c;如…

条件概率、联合概率

条件概率的条件已经发生了&#xff0c;而联合概率的两个事件不一定发生。 图中可以看出 等式左边是联合概率&#xff0c;联合概率是指两个事件同时发生的概率&#xff0c;与条件概率不是一回事&#xff0c;条件概率的条件已经发生。 万普尼克理论&#xff1a;

贝叶斯网络的联合概率到底有什么用:贝叶斯理论(4)

上篇博客我们描述了如何计算贝叶斯网络联合概率的方法。这里再举一个例子&#xff1a; 上图这个例子中&#xff0c;事件a导致了b和c的发生。假设a有、、三种状态&#xff0c;b有、两种状态&#xff0c;c有、&#xff0c;a的每个状态的先验概率是&#xff1a; 0.30.50.2 b对a的…

机器学习之条件概率,联合概率,贝叶斯定理详解

文章目录 前言边缘概率联合概率定义分析 条件概率定义问条件概率能举个例子吗问条件概率在图中表示的是哪一块呢&#xff1f;条件概率习题&#xff1a; 全概率定义推导全概率习题 贝叶斯公式定义推导贝叶斯定理习题 结束语 前言 条件概率&#xff0c;边缘概率&#xff0c;联合…