在内核中启用MPTCPv1相关的模块

1. 简介

  • 本文所涉及的均为MPTCPv1版本的MPTCP,采用的内核版本为5.18.19

  • 需要注意的是

    • 虽然MPTCP官方文档中提到在5.6之后的linux内核中均已集成了MPTCP相关源码,但是不同的linux发行版可能并没有启用MPTCP相关的内核模块,需要修改内核配置并重新编译内核
    • 如何确定linux发行版是否启用了MPTCP,请参考前文: 《MPTCP(二):MPTCP版本说明》
    • 实际测试过程中发现:(1)ubuntu22.04中已经集成了MPTCP源码并使能了MPTCP相关的内核模块,不需要修改内核相关配置;(2)然而在树莓派raspberry OS中,虽然已经在内核中集成了MPTCP模块源码,但是并没有启用MPTCP内核模块,实际并没有生效
  • 本文就以树莓派5.18.19内核源码为例说明如何启用MPTCP内核模块,硬件平台为树莓派CM4

2. 获取内核源码

  • 下载地址如下,选择分支rpi-5.18.y

https://github.com/raspberrypi/linux

  • clone源码
    git clone https://github.com/raspberrypi/linux.git --single-branch --branch=rpi-5.18.y

    git clone git@github.com:raspberrypi/linux.git --single-branch --branch=rpi-5.18.y

3. 安装交叉编译工具

  • 不赘述,参考如下链接:

https://blog.csdn.net/FireStarway/article/details/104921147

4. 编译内核

4.1 修改顶层Makefile

  • 修改Makefile,在顶层Makefile中添加如下内容

    ARCH := arm64
    CROSS_COMPILE := aarch64-linux-gnu-
    KBUILD_OUTPUT := ../linux_build

  • 树莓派CM4使用的是博通BCM2711 SoC, 因此使用默认配置文件bcm2711_defconfig

    $ ls arch/arm64/configs/
    bcm2711_defconfig bcmrpi3_defconfig defconfig $ make bcm2711_defconfig

4.2 make menuconfig启用MPTCP内核模块

  • 修改make menuconfig中的如下配置
    -> Networking support
    -> Networking options
    -> The IPv6 protocol (选择编译进内核)
    -> MPTCP: Multipath TCP (选择编译进内核或内核模块均可,编译为内核模块时每次开机都需要先加载相关驱动,较为麻烦)
    -> MPTCP: IPv6... (可选可不选)

4.3 编译

$ make Image modules dtbs -j$(nproc)

MPTCP(三) : 在内核中启用MPTCP相关模块的更多相关文章

  1. linux内核中与进程相关的数据结构(基于linux3.16-rc4)

    1.进程描述符 struct task_struct { volatile long state; ....... struct list_head tasks; ....... struct mm_ ...

  2. 第三十三节,sys解释器相关模块

    首先要引入import sys模块 sys.argv 功能:获取向脚本文件传入的参数,返回的列表,列表里的第一个元素是脚本文件路径和名称,后面的元素是传入的向脚本传入的参数 使用方法:sys.argv ...

  3. 内核开发知识第一讲.内核中的数据类型.重要数据结构.常用内核API函数.

    一丶内核中的数据类型 在内核中.程序的编写不能简单的用基本数据类型了. 因为操作系统不同.很有可能造成数据类型的长度不一.而产生重大问题.所以在内核中. 数据类型都一定重定义了. 数据类型 重定义数据 ...

  4. linux内存(三)内核与用户空间交互

    来自网址http://www.kerneltravel.net/jiaoliu/005.htm 用户程序和内核的信息交换是双向的,也就是说既可以主动从用户空间向内核空间发送信息,也可以从内核空间向用户 ...

  5. Linux内核学习--写一个c程序,并在内核中编译,运行

    20140506 今天开始学习伟大的开源代表作:Linux内核.之前的工作流于几个简单命令的应用,因着对Android操作系统的情愫,“忍不住”跟随陈利君老师的步伐,开启OS内核之旅.学习路径之一是直 ...

  6. ansible的安装及命令相关模块

    ansible 第一步:下载epel源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos- ...

  7. Linux内核中影响tcp三次握手的一些协议配置

    在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统.在 /proc 虚拟文件系统中存在一些可调节的内核参数.这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 ...

  8. TCP/IP协议栈源码图解分析系列10:linux内核协议栈中对于socket相关API的实现

    题记:本系列文章的目的是抛开书本从Linux内核源代码的角度详细分析TCP/IP协议栈内核相关技术 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswang@gmail.com linu ...

  9. (笔记)Linux内核中内存相关的操作函数

    linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) ...

  10. Linux内核中常见内存分配函数(三)

    ioremap void * ioremap (unsigned long offset, unsigned long size) ioremap是一种更直接的内存“分配”方式,使用时直接指定物理起始 ...

随机推荐

  1. 关于 KL 散度和变分推断的 ELBO

    01 KL 散度 Kullback-Leibler (KL) 散度,是一种描述 一个概率分布 \(P\) 相对于另一个概率分布 \(Q\) 的非对称性差异的概念. KL 散度是非负的:当且仅当两个分布 ...

  2. W801单片机入门开发环境设置

    W801单片机入门开发环境设置 开发软件下载 烧录工具和SDK 在 WinnerMicro的网站 https://www.winnermicro.com/html/1/156/158/558.html ...

  3. QuartzNet暂停恢复会执行多次的问题解决

    ' var config = new System.Collections.Specialized.NameValueCollection { { "quartz.jobStore.misf ...

  4. 『vulnhub系列』EVILBOX-ONE

    『vulnhub系列』EVILBOX-ONE 下载地址: https://www.vulnhub.com/entry/evilbox-one,736/ 信息搜集: 使用nmap探测内网存活主机,发现开 ...

  5. 国产RK3568J基于FSPI的ARM+FPGA通信方案分享

    近年来,随着中国新基建.中国制造 2025 规划的持续推进,单 ARM 处理器越来越难胜任工业现场的功能要求,特别是如今能源电力.工业控制.智慧医疗等行业,往往更需要 ARM + FPGA 架构的处理 ...

  6. 使用FastReport报表动态更新人员签名图片

    在一些报表模块中,需要我们根据用户操作的名称,来动态根据人员姓名,更新报表的签名图片,也就是电子手写签名效果,本篇随笔介绍一下使用FastReport报表动态更新人员签名图片. 1.设计FastRep ...

  7. Solo 开发者周刊 (第9期):Dawwin首位人工智能编程师或将改变未来?

    这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 好文推荐 Daw ...

  8. Django配置为连接到Microsoft SQL Server

    可以将Django配置为连接到Microsoft SQL Server 2019.为此,你需要更改数据库设置中的一些配置选项.首先,确保你已经安装了 django 和 pyodbc 这两个库:   p ...

  9. 题解:B3646 数列前缀和 3

    分析 板子题,线段树维护矩阵区间积,除了难写没什么思维难度. 所以直接放代码吧. Code #include<bits/stdc++.h> #define int long long us ...

  10. EasyDesktop 浏览器书签管理从未如此简单

    作为一名软件开发从业人员, 每天80%的时间都在与浏览器打交道, 一半的时间在用浏览器开发调试, 另一半时间则是在互联网上搜寻各种知识和资源. 为此, 我的浏览器书签栏存储和很多非常棒的链接, 多到2 ...