首页 > 编程知识 正文

MPP协议,MPC协议

时间:2023-05-05 06:12:30 阅读:276242 作者:3574

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

[4]tcpprobe, observe the TCP flow with kprobes

http://perthcharles.github.io/2014/12/19/tcp-probe-intro/

 

[5]PROPORTIONAL RATE REDUCTION FOR TCP

https://reproducingnetworkresearch.wordpress.com/2013/03/14/cs24413-proportional-rate-reduction-for-tcp/

 

首先检查内核有没有开启MPTCP协议

sudo sysctl -a | grep mptcp

如下成功:

 

确认MPTCP内核版本号:

dmesg | grep MPTCP

部署不成功的话,什么都不显示;成功的话,参考示例:

 

设置系统控制变量(sysctl):

sysctl -w net.mptcp.[name of the wariable]=[value]

执行上述命令设置系统控制变量(sysctl),括号里分别用变量名称和变量值替换,具体如下:

net.mptcp.mptcp_enabled:该变量控制MPTCP开关,实现MPTCP与传统TCP之间的切换。变量值为0或1(默认为1)。net.mptcp.mptcp_checksum:该变量控制MPTCP传输层中数据序列号校验和(DSS-checksum)的开关,DSS-checksum主要和传输的可靠性相关,只要通信对端中有一端开启,就会执行。变量值为0或1(默认为1)。net.mptcp.mptcp_syn_retries:设置SYN的重传次数。SYN里包含了MP_CAPABLE-option字段,通过该控制变量,SYN将不会包含MP_CAPABLE-option字段,这是为了处理会丢弃含有未知TCP选项的SYN的网络中间件。变量默认值为3。net.mptcp.mptcp_debug:调试MPTCP,控制是否打印debug报告文件。net.mptcp.mptcp_path_manager:MPTCP路径管理,有四个不同的配置值,分别是 default/fullmesh/ndiffports/binder。default/ndiffports/fullmesh分别选择单路、多路或者全路进行传输。其中单路是指跟传统TCP状态一样还是用单一的TCP子流进行传输,多路是当前所有TCP子流中用户选择x条子流数进行传输,全路是指将当前所有可用的TCP子流应用到网络传输中。而binder参考文献 Binder: a system to aggregate multiple internet gateways in community networks。https://dl.acm.org/citation.cfm?id=2502894net.mptcp.mptcp_scheduler:MPTCP子流调度策略,有default/roundrobin两个选项。default优先选择RTT较低的子流直到拥塞窗口满,roundrobin(RR)采用轮询策略。

1. 例如临时关闭mptcp:

 

2.例如切换调度器为roundrobin

 

拥塞策略的配置方式为:

sysctl net.ipv4.tcp_congestion_control=lia/olia/wVegas/balia

 

上述的系统控制变量都是以配置文件的形式存在的,也可以以管理员权限直接修改配置文件中的参数,配置文件的目录为:

/proc/sys/net/mptcp

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。