← Documents Documentation/networking/mptcp-sysctl.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

MPTCP Sysfs variables

MPTCP address, path manager, scheduler, blackhole와 TCP fallback 동작을 제어하는 namespace별 설정입니다.

Source pathDocumentation/networking/mptcp-sysctl.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

mptcp-sysctl.rst:1-153

대부분 network namespace별 값이며 address advertisement 재전송, path 관리 주체, stale subflow 판정, MPTCP option을 제거한 TCP fallback 시점을 세밀하게 조절합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =====================
4 MPTCP Sysfs variables
5 =====================
6
7 /proc/sys/net/mptcp/* Variables
8 ===============================
9
10 add_addr_timeout - INTEGER (seconds)
11 Set the maximum value of timeout after which an ADD_ADDR control message
12 will be resent to an MPTCP peer that has not acknowledged a previous
13 ADD_ADDR message. A dynamically estimated retransmission timeout based
14 on the estimated connection round-trip-time is used if this value is
15 lower than the maximum one.
16
17 Do not retransmit if set to 0.
18
19 The default value matches TCP_RTO_MAX. This is a per-namespace
20 sysctl.
21
22 Default: 120
23
24 allow_join_initial_addr_port - BOOLEAN
25 Allow peers to send join requests to the IP address and port number used
26 by the initial subflow if the value is 1. This controls a flag that is
27 sent to the peer at connection time, and whether such join requests are
28 accepted or denied.
29
30 Joins to addresses advertised with ADD_ADDR are not affected by this
31 value.
32
33 This is a per-namespace sysctl.
34
35 Default: 1
36
37 available_path_managers - STRING
38 Shows the available path managers choices that are registered. More
39 path managers may be available, but not loaded.
40
41 available_schedulers - STRING
42 Shows the available schedulers choices that are registered. More packet
43 schedulers may be available, but not loaded.
44
45 blackhole_timeout - INTEGER (seconds)
46 Initial time period in second to disable MPTCP on active MPTCP sockets
47 when a MPTCP firewall blackhole issue happens. This time period will
48 grow exponentially when more blackhole issues get detected right after
49 MPTCP is re-enabled and will reset to the initial value when the
50 blackhole issue goes away.
51
52 0 to disable the blackhole detection. This is a per-namespace sysctl.
53
54 Default: 3600
55
56 checksum_enabled - BOOLEAN
57 Control whether DSS checksum can be enabled.
58
59 DSS checksum can be enabled if the value is nonzero. This is a
60 per-namespace sysctl.
61
62 Default: 0
63
64 close_timeout - INTEGER (seconds)
65 Set the make-after-break timeout: in absence of any close or
66 shutdown syscall, MPTCP sockets will maintain the status
67 unchanged for such time, after the last subflow removal, before
68 moving to TCP_CLOSE.
69
70 The default value matches TCP_TIMEWAIT_LEN. This is a per-namespace
71 sysctl.
72
73 Default: 60
74
75 enabled - BOOLEAN
76 Control whether MPTCP sockets can be created.
77
78 MPTCP sockets can be created if the value is 1. This is a
79 per-namespace sysctl.
80
81 Default: 1 (enabled)
82
83 path_manager - STRING
84 Set the default path manager name to use for each new MPTCP
85 socket. In-kernel path management will control subflow
86 connections and address advertisements according to
87 per-namespace values configured over the MPTCP netlink
88 API. Userspace path management puts per-MPTCP-connection subflow
89 connection decisions and address advertisements under control of
90 a privileged userspace program, at the cost of more netlink
91 traffic to propagate all of the related events and commands.
92
93 This is a per-namespace sysctl.
94
95 * "kernel" - In-kernel path manager
96 * "userspace" - Userspace path manager
97
98 Default: "kernel"
99
100 pm_type - INTEGER
101 Set the default path manager type to use for each new MPTCP
102 socket. In-kernel path management will control subflow
103 connections and address advertisements according to
104 per-namespace values configured over the MPTCP netlink
105 API. Userspace path management puts per-MPTCP-connection subflow
106 connection decisions and address advertisements under control of
107 a privileged userspace program, at the cost of more netlink
108 traffic to propagate all of the related events and commands.
109
110 This is a per-namespace sysctl.
111
112 Deprecated since v6.15, use path_manager instead.
113
114 * 0 - In-kernel path manager
115 * 1 - Userspace path manager
116
117 Default: 0
118
119 scheduler - STRING
120 Select the scheduler of your choice.
121
122 Support for selection of different schedulers. This is a per-namespace
123 sysctl.
124
125 Default: "default"
126
127 stale_loss_cnt - INTEGER
128 The number of MPTCP-level retransmission intervals with no traffic and
129 pending outstanding data on a given subflow required to declare it stale.
130 The packet scheduler ignores stale subflows.
131 A low stale_loss_cnt value allows for fast active-backup switch-over,
132 an high value maximize links utilization on edge scenarios e.g. lossy
133 link with high BER or peer pausing the data processing.
134
135 This is a per-namespace sysctl.
136
137 Default: 4
138
139 syn_retrans_before_tcp_fallback - INTEGER
140 The number of SYN + MP_CAPABLE retransmissions before falling back to
141 TCP, i.e. dropping the MPTCP options. In other words, if all the packets
142 are dropped on the way, there will be:
143
144 * The initial SYN with MPTCP support
145 * This number of SYN retransmitted with MPTCP support
146 * The next SYN retransmissions will be without MPTCP support
147
148 0 means the first retransmission will be done without MPTCP options.
149 >= 128 means that all SYN retransmissions will keep the MPTCP options. A
150 lower number might increase false-positive MPTCP blackholes detections.
151 This is a per-namespace sysctl.
152
153 Default: 2
154

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Address 재전송과 join·가용 component

1-38

`add_addr_timeout`은 이전 `ADD_ADDR`를 확인하지 않은 MPTCP peer에 control message를 다시 보내기까지의 최대 timeout(초)입니다. Connection RTT로 동적 추정한 재전송 timeout이 이 최대값보다 작으면 추정값을 사용합니다. 0이면 재전송하지 않으며 기본값은 `TCP_RTO_MAX`와 같은 120입니다. Network namespace별 설정입니다.

`allow_join_initial_addr_port`가 1이면 peer가 initial subflow에 사용한 IP address와 port로 join request를 보내도록 허용합니다. 이 값은 connection 설정 때 peer에 보내는 flag와 해당 join의 수락 여부를 제어하지만 `ADD_ADDR`로 광고한 address의 join에는 영향을 주지 않습니다. Namespace별이며 기본값은 1입니다.

`available_path_managers`와 `available_schedulers`는 현재 등록된 path manager와 packet scheduler 선택지를 문자열로 보여 줍니다. 추가 component가 설치되어 있어도 아직 load되지 않았다면 목록에 나타나지 않을 수 있습니다.

.. SPDX-License-Identifier: GPL-2.0

=====================
MPTCP Sysfs variables
=====================

/proc/sys/net/mptcp/* Variables
===============================

add_addr_timeout - INTEGER (seconds)
        Set the maximum value of timeout after which an ADD_ADDR control message
        will be resent to an MPTCP peer that has not acknowledged a previous
        ADD_ADDR message. A dynamically estimated retransmission timeout based
        on the estimated connection round-trip-time is used if this value is
        lower than the maximum one.

        Do not retransmit if set to 0.

        The default value matches TCP_RTO_MAX. This is a per-namespace
        sysctl.

        Default: 120

allow_join_initial_addr_port - BOOLEAN
        Allow peers to send join requests to the IP address and port number used
        by the initial subflow if the value is 1. This controls a flag that is
        sent to the peer at connection time, and whether such join requests are
        accepted or denied.

        Joins to addresses advertised with ADD_ADDR are not affected by this
        value.

        This is a per-namespace sysctl.

        Default: 1

available_path_managers - STRING
        Shows the available path managers choices that are registered. More

Blackhole·checksum·close·enabled

39-76

`blackhole_timeout`은 MPTCP firewall blackhole이 발생했을 때 active MPTCP socket에서 MPTCP를 비활성화하는 최초 기간(초)입니다. 다시 켠 직후 blackhole이 반복되면 기간이 지수적으로 늘고 문제가 사라지면 초기값으로 돌아갑니다. 0이면 detection을 끄며 namespace별 기본값은 3600입니다.

`checksum_enabled`는 DSS checksum을 허용할지 정합니다. 0이 아니면 켤 수 있으며 namespace별 기본값은 0입니다. `close_timeout`은 close나 shutdown syscall이 없는 상태에서 마지막 subflow 제거 뒤 MPTCP socket이 기존 상태를 유지하다 `TCP_CLOSE`로 이동하기까지의 make-after-break timeout입니다. `TCP_TIMEWAIT_LEN`과 같은 60초가 기본값입니다.

`enabled`가 1이면 MPTCP socket을 만들 수 있습니다. Network namespace별 설정이며 기본값은 1로 활성화 상태입니다.

        path managers may be available, but not loaded.

available_schedulers - STRING
        Shows the available schedulers choices that are registered. More packet
        schedulers may be available, but not loaded.

blackhole_timeout - INTEGER (seconds)
        Initial time period in second to disable MPTCP on active MPTCP sockets
        when a MPTCP firewall blackhole issue happens. This time period will
        grow exponentially when more blackhole issues get detected right after
        MPTCP is re-enabled and will reset to the initial value when the
        blackhole issue goes away.

        0 to disable the blackhole detection. This is a per-namespace sysctl.

        Default: 3600

checksum_enabled - BOOLEAN
        Control whether DSS checksum can be enabled.

        DSS checksum can be enabled if the value is nonzero. This is a
        per-namespace sysctl.

        Default: 0

close_timeout - INTEGER (seconds)
        Set the make-after-break timeout: in absence of any close or
        shutdown syscall, MPTCP sockets will maintain the status
        unchanged for such time, after the last subflow removal, before
        moving to TCP_CLOSE.

        The default value matches TCP_TIMEWAIT_LEN. This is a per-namespace
        sysctl.

        Default: 60

enabled - BOOLEAN
        Control whether MPTCP sockets can be created.

path_manager와 폐기된 pm_type

77-123

`path_manager`는 새 MPTCP socket에 적용할 기본 path manager 이름입니다. `kernel`은 MPTCP netlink API로 namespace별 설정한 값에 따라 kernel이 subflow connection과 address advertisement를 관리합니다. `userspace`는 privileged userspace program이 connection별 결정을 내리지만 관련 event와 command를 전달하는 netlink traffic이 더 많습니다. Namespace별 기본값은 `kernel`입니다.

정수형 `pm_type`은 같은 선택을 0(kernel), 1(userspace)로 지정하던 이전 interface입니다. Linux v6.15부터 deprecated이므로 `path_manager`를 사용해야 하며 기본값은 0입니다.

MPTCP path manager
설정값주체특징
kernel / 0In-kernel path managernamespace 공통 policy와 netlink 설정
userspace / 1Privileged userspace programconnection별 policy, 추가 netlink traffic

새 connection의 경로 관리 주체입니다.


        MPTCP sockets can be created if the value is 1. This is a
        per-namespace sysctl.

        Default: 1 (enabled)

path_manager - STRING
        Set the default path manager name to use for each new MPTCP
        socket. In-kernel path management will control subflow
        connections and address advertisements according to
        per-namespace values configured over the MPTCP netlink
        API. Userspace path management puts per-MPTCP-connection subflow
        connection decisions and address advertisements under control of
        a privileged userspace program, at the cost of more netlink
        traffic to propagate all of the related events and commands.

        This is a per-namespace sysctl.

        * "kernel"          - In-kernel path manager
        * "userspace"       - Userspace path manager

        Default: "kernel"

pm_type - INTEGER
        Set the default path manager type to use for each new MPTCP
        socket. In-kernel path management will control subflow
        connections and address advertisements according to
        per-namespace values configured over the MPTCP netlink
        API. Userspace path management puts per-MPTCP-connection subflow
        connection decisions and address advertisements under control of
        a privileged userspace program, at the cost of more netlink
        traffic to propagate all of the related events and commands.

        This is a per-namespace sysctl.

        Deprecated since v6.15, use path_manager instead.

        * 0 - In-kernel path manager
        * 1 - Userspace path manager

        Default: 0

scheduler - STRING
        Select the scheduler of your choice.

        Support for selection of different schedulers. This is a per-namespace
        sysctl.

Scheduler·stale 판정·TCP fallback

124-153

`scheduler`는 사용할 MPTCP packet scheduler를 선택하는 namespace별 문자열이며 기본값은 `default`입니다. `stale_loss_cnt`는 특정 subflow에 outstanding data가 남은 채 traffic이 없는 MPTCP-level retransmission interval 횟수로, 이 수에 도달하면 stale로 선언해 scheduler가 무시합니다.

낮은 `stale_loss_cnt`는 active-backup 전환을 빠르게 하지만, 높은 값은 BER이 높은 손실 link나 peer의 data 처리 일시 중단 같은 edge 상황에서 link 이용률을 높입니다. Namespace별 기본값은 4입니다.

`syn_retrans_before_tcp_fallback`은 MPTCP option을 버리고 TCP로 fallback하기 전에 보낼 `SYN + MP_CAPABLE` 재전송 횟수입니다. Initial SYN 뒤 이 횟수만큼 MPTCP SYN을 재전송하고 그 다음부터 MPTCP option 없는 SYN을 보냅니다. 0이면 첫 재전송부터 일반 TCP이고, 128 이상이면 모든 SYN 재전송에서 MPTCP option을 유지합니다. 값이 낮으면 MPTCP blackhole을 잘못 감지할 가능성이 커집니다. Namespace별 기본값은 2입니다.


        Default: "default"

stale_loss_cnt - INTEGER
        The number of MPTCP-level retransmission intervals with no traffic and
        pending outstanding data on a given subflow required to declare it stale.
        The packet scheduler ignores stale subflows.
        A low stale_loss_cnt  value allows for fast active-backup switch-over,
        an high value maximize links utilization on edge scenarios e.g. lossy
        link with high BER or peer pausing the data processing.

        This is a per-namespace sysctl.

        Default: 4

syn_retrans_before_tcp_fallback - INTEGER
        The number of SYN + MP_CAPABLE retransmissions before falling back to
        TCP, i.e. dropping the MPTCP options. In other words, if all the packets
        are dropped on the way, there will be:

        * The initial SYN with MPTCP support
        * This number of SYN retransmitted with MPTCP support
        * The next SYN retransmissions will be without MPTCP support

        0 means the first retransmission will be done without MPTCP options.
        >= 128 means that all SYN retransmissions will keep the MPTCP options. A
        lower number might increase false-positive MPTCP blackholes detections.
        This is a per-namespace sysctl.

        Default: 2