在内核中启用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. GIS数据获取:气象数据免费下载网站

      本文对目前主要的气象数据获取网站加以整理与介绍.   本文为"GIS数据获取整理"专栏中第二篇独立博客,因此本文全部标题均由"2"开头.本文对目前主要的气象 ...

  2. ServiceMesh、SideCar和Istio

    Service Mesh简介 Service Mesh直译过来就是服务网格,而他的架构就是一个个微服务组成的网络. Sidecar简介 Service Mesh中的节点就是Sidecar节点. sid ...

  3. Kubernetes(K8s)最新版搭建

    Kubernetes简单介绍 Kubernetes意为舵手,简称K8s. 前身是Google的Borg.所以一开源就吸引了一大批注意力. 因为谷歌,所以墙.在国内搭建K8s非常头疼. 下面我就来介绍一 ...

  4. Linux开机启动三种方式

    有的时候,我们开机启动一些命令或者是一段脚本,又或者是开机启动自定义的服务. 下面归纳了2种实现的方式. 方式1-开机启动命令 vim /etc/rc.local #添加你想执行的命令 chmod + ...

  5. 基于LoRA的RLHF

    参考Github 开源模型LLM-Tuning 一.简介 (1)RLHF (基于人类反馈的强化学习) 分为三步: SFT (Supervised Fine-Tuning): 有监督的微调,使用正常的 ...

  6. 推荐一款基于业务行为驱动开发(BDD)测试框架:Cucumber!

    大家好,我是狂师. 今天给大家介绍一款行为驱动开发测试框架:Cucumber. 1.介绍 Cucumber是一个行为驱动开发(BDD)工具,它结合了文本描述和自动化测试脚本.它使用一种名为Gherki ...

  7. Linux C 读写超过2G的大文件 注意事项

    背景 在项目中做大文件的增量读写,遇到了问题: fopen : Value too large for defined data type. 习惯性地根据这个提示查阅的有关资料显示: 1)工具链太老了 ...

  8. 【Python】python笔记:时间模块/时间函数

    1.Python时间模块 import time import datetime # 一: time模块 ############## # 1.时间戳 print (time.time()) # 16 ...

  9. django.db.utils.InternalError: (1050, "Table 'app01_book_author' already exists")

    Django项目在执行 python manage.py migrate进行表迁移时报错 错误截图: 解决方法执行: 问题解决!!!

  10. Java BigDecimal 算术运算

    算术运算 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal(" ...