요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. 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
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.
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.
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
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입니다.
새 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
요약·해설
mptcp-sysctl.rst:1-153대부분 network namespace별 값이며 address advertisement 재전송, path 관리 주체, stale subflow 판정, MPTCP option을 제거한 TCP fallback 시점을 세밀하게 조절합니다.