mKCP transport: Add cwndMultiplier

Replace legacy KCP buffer options with cwndMultiplier and maxSendingWindow across models and UI. Updated KcpStreamSettings in web/assets/js/model/inbound.js and web/assets/js/model/outbound.js (constructor, fromJson and toJson) to remove congestion/readBuffer/writeBuffer and use cwndMultiplier/maxSendingWindow instead. Updated web/html/form/outbound.html to reflect the new KCP fields in the stream form and to include extensive template formatting/markup cleanup for consistency and readability.
This commit is contained in:
MHSanaei 2026-04-20 17:45:14 +02:00
parent 6d0e7ec495
commit 86304226a9
No known key found for this signature in database
GPG key ID: 7E4060F2FBE5AB7A
4 changed files with 787 additions and 333 deletions

View file

@ -323,18 +323,16 @@ class KcpStreamSettings extends XrayCommonClass {
tti = 20,
uplinkCapacity = 5,
downlinkCapacity = 20,
congestion = false,
readBufferSize = 1,
writeBufferSize = 1,
cwndMultiplier = 0,
maxSendingWindow = 0,
) {
super();
this.mtu = mtu;
this.tti = tti;
this.upCap = uplinkCapacity;
this.downCap = downlinkCapacity;
this.congestion = congestion;
this.readBuffer = readBufferSize;
this.writeBuffer = writeBufferSize;
this.cwndMultiplier = cwndMultiplier;
this.maxSendingWindow = maxSendingWindow;
}
static fromJson(json = {}) {
@ -343,9 +341,8 @@ class KcpStreamSettings extends XrayCommonClass {
json.tti,
json.uplinkCapacity,
json.downlinkCapacity,
json.congestion,
json.readBufferSize,
json.writeBufferSize,
json.cwndMultiplier,
json.maxSendingWindow,
);
}
@ -355,9 +352,8 @@ class KcpStreamSettings extends XrayCommonClass {
tti: this.tti,
uplinkCapacity: this.upCap,
downlinkCapacity: this.downCap,
congestion: this.congestion,
readBufferSize: this.readBuffer,
writeBufferSize: this.writeBuffer,
cwndMultiplier: this.cwndMultiplier,
maxSendingWindow: this.maxSendingWindow,
};
}
}

View file

@ -169,18 +169,16 @@ class KcpStreamSettings extends CommonClass {
tti = 20,
uplinkCapacity = 5,
downlinkCapacity = 20,
congestion = false,
readBufferSize = 1,
writeBufferSize = 1,
cwndMultiplier = 0,
maxSendingWindow = 0,
) {
super();
this.mtu = mtu;
this.tti = tti;
this.upCap = uplinkCapacity;
this.downCap = downlinkCapacity;
this.congestion = congestion;
this.readBuffer = readBufferSize;
this.writeBuffer = writeBufferSize;
this.cwndMultiplier = cwndMultiplier;
this.maxSendingWindow = maxSendingWindow;
}
static fromJson(json = {}) {
@ -189,9 +187,8 @@ class KcpStreamSettings extends CommonClass {
json.tti,
json.uplinkCapacity,
json.downlinkCapacity,
json.congestion,
json.readBufferSize,
json.writeBufferSize,
json.cwndMultiplier,
json.maxSendingWindow,
);
}
@ -201,9 +198,8 @@ class KcpStreamSettings extends CommonClass {
tti: this.tti,
uplinkCapacity: this.upCap,
downlinkCapacity: this.downCap,
congestion: this.congestion,
readBufferSize: this.readBuffer,
writeBufferSize: this.writeBuffer,
cwndMultiplier: this.cwndMultiplier,
maxSendingWindow: this.maxSendingWindow,
};
}
}

File diff suppressed because it is too large Load diff

View file

@ -30,18 +30,15 @@
:min="0"
></a-input-number>
</a-form-item>
<a-form-item label="Congestion">
<a-switch v-model="inbound.stream.kcp.congestion"></a-switch>
</a-form-item>
<a-form-item label="Read Buffer (MB)">
<a-form-item label="CWND Multiplier">
<a-input-number
v-model.number="inbound.stream.kcp.readBuffer"
v-model.number="inbound.stream.kcp.cwndMultiplier"
:min="0"
></a-input-number>
</a-form-item>
<a-form-item label="Write Buffer (MB)">
<a-form-item label="Max Sending Window">
<a-input-number
v-model.number="inbound.stream.kcp.writeBuffer"
v-model.number="inbound.stream.kcp.maxSendingWindow"
:min="0"
></a-input-number>
</a-form-item>