Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Mar 2015 14:49:20 +0000
From:      "Scheffenegger, Richard" <rs@netapp.com>
To:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   TCP SACK improvements (RFC6675 rescue retransmission and lost retransmission detection)
Message-ID:  <046c2d4c51964cb698d0d27f1b8d0451@hioexcmbx05-prd.hq.netapp.com>

next in thread | raw e-mail | index | archive | help
--_002_046c2d4c51964cb698d0d27f1b8d0451hioexcmbx05prdhqnetappc_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi,

I hope this is the correct forum to ask for help improving a rather crude p=
atch to introduce RFC6675 Rescue Retransmissions and efficient Lost Retrans=
mission Detection. Note that this is not a full implementation of the RFC66=
75.

The patch that I have is against 8.0, but I believe the SACK scoreboard has=
 not really changed and thus should be applicable still.

One outstanding issue of that patch is the missing interaction with the con=
gestion control part, when retransmitting a lost retransmission (that shoul=
d reduce cwnd once  per cycle).

Also, the implementation is not very efficient, as more traversals of the s=
coreboard are done checking the elegibility of prior holes to be in need of=
 being retransmitted once more...


Best regards,
  Richard Scheffenegger


--_002_046c2d4c51964cb698d0d27f1b8d0451hioexcmbx05prdhqnetappc_
Content-Type: application/octet-stream; name="sack5-freebsd8.0-release.diff"
Content-Description: sack5-freebsd8.0-release.diff
Content-Disposition: attachment; filename="sack5-freebsd8.0-release.diff";
	size=6825; creation-date="Tue, 05 Oct 2010 14:20:26 GMT";
	modification-date="Wed, 25 Mar 2015 13:00:00 GMT"
Content-Transfer-Encoding: base64

LS0tIC4uL25ldGluZXQub3JpZy90Y3Bfc2Fjay5jICAyMDEwLTA5LTEwIDIzOjM5OjI1LjAwMDAw
MDAwMCArMDIwMA0KKysrIC4uL25ldGluZXQvdGNwX3NhY2suYyAyMDEwLTA5LTIzIDIwOjM3OjA0
LjAwMDAwMDAwMCArMDIwMA0KQEAgLTM0MCwxMCArMzQwLDUyIEBADQogIC8qIEZyZWUgdGhpcyBT
QUNLIGhvbGUuICovDQogIHRjcF9zYWNraG9sZV9mcmVlKHRwLCBob2xlKTsNCiB9DQogDQogLyoN
CisgKiBDYWxjdWxhdGUgdGhlIHNlcXVlbmNlIG51bWJlciwgd2hpY2ggd2hlbiBTQUNLZWQgd2ls
bCBpbmRpY2F0ZSBhIA0KKyAqIGxvc3QgcmV0cmFuc21pc3Npb24uDQorICovDQordGNwX3NlcQ0K
K3RjcF9zYWNrX2RvbmVieShpbnQgYnl0ZXMsIHN0cnVjdCB0Y3BjYiAqdHAsIHN0cnVjdCBzYWNr
aG9sZSAqcCkNCit7DQorICAgIHdoaWxlICgocCAhPSBOVUxMKSAmJiAoYnl0ZXMgPj0gMCkpIHsN
CisgICAgICAgIHAgPSBUQUlMUV9ORVhUKHAsIHNjYmxpbmspOw0KKyAgICAgICAgaWYgKHAgIT0g
TlVMTCkgew0KKyAgICAgICAgICAgIGJ5dGVzIC09IChwLT5lbmQgLSBwLT5zdGFydCk7DQorICAg
ICAgICAgICAgaWYgKChieXRlcyA+PSAwKSAmJiAvLyBSRkM2Njc1ICJyZXNjdWUgcmV0cmFuc21p
c3Npb24iDQorICAgICAgICAgICAgICAgIChUQUlMUV9ORVhUKHAsIHNjYmxpbmspID09IE5VTEwp
KQ0KKyAgICAgICAgICAgICAgICAgYnl0ZXMgPSAtbWluKHAtPmVuZCAtIHAtPnN0YXJ0LCB0cC0+
dF9tYXhzZWcpOyAgDQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHAgPT0gTlVMTCkgew0K
KyAgICAgICAgcmV0dXJuIHRwLT5zbmRfbnh0Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0
dXJuIChwLT5lbmQgKyBieXRlcyk7DQorICAgIH0NCit9DQorDQorLyoNCisgKiBDaGVjayB3ZXRo
ZXIgYSBnaXZlbiBzZXF1ZW5jZSBudW1iZXIgaGFzIGJlZW4gU0FDS2VkIG9yIG5vdC4NCisgKi8N
CitpbnQNCit0Y3Bfc2Fja19pc2hvbGUodGNwX3NlcSBzZXEsIHN0cnVjdCB0Y3BjYiAqdHAsIHN0
cnVjdCBzYWNraG9sZSAqcCkNCit7DQorICAgIGludCBiID0gMDsNCisgICAgaWYgKFNFUV9HRVEo
c2VxLCB0cC0+c25kX2ZhY2spKSB7DQorIHJldHVybiAxOw0KKyAgICB9DQorICAgIHdoaWxlIChw
ICE9IE5VTEwpIHsNCisgaWYgKFNFUV9MVChzZXEsIHAtPnN0YXJ0KSkNCisgICAgIGJyZWFrOw0K
KyBpZiAoU0VRX0dFUShzZXEsIHAtPnN0YXJ0KSAmJg0KKyAgIFNFUV9MVChzZXEsIHAtPmVuZCkp
IHsNCisgICAgIGIgPSAxOw0KKyAgICAgYnJlYWs7DQorIH0NCisgcCA9IFRBSUxRX05FWFQocCwg
c2NibGluayk7DQorICAgIH0NCisgICAgcmV0dXJuIGI7DQorfQ0KKw0KKy8qDQogICogUHJvY2Vz
cyBjdW11bGF0aXZlIEFDSyBhbmQgdGhlIFRDUCBTQUNLIG9wdGlvbiB0byB1cGRhdGUgdGhlIHNj
b3JlYm9hcmQuDQogICogdHAtPnNuZF9ob2xlcyBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgaG9sZXMg
KG9sZGVzdCB0byBuZXdlc3QsIGluIHRlcm1zIG9mDQogICogdGhlIHNlcXVlbmNlIHNwYWNlKS4N
CiAgKi8NCiB2b2lkDQpAQCAtNDgwLDExICs1MjIsMTUgQEANCiAgICAgICAqIHByZXZpb3VzIGhv
bGUuDQogICAgICAgKi8NCiAgICAgIGN1ciA9IFRBSUxRX1BSRVYoY3VyLCBzYWNraG9sZV9oZWFk
LCBzY2JsaW5rKTsNCiAgICAgIGNvbnRpbnVlOw0KICAgIH0NCi0gICB0cC0+c2Fja2hpbnQuc2Fj
a19ieXRlc19yZXhtaXQgLT0gKGN1ci0+cnhtaXQgLSBjdXItPnN0YXJ0KTsNCisgICAvKioqKioN
CisgICAgKiBsb3N0IGFnYWluDQorICAgICoqKioqLw0KKyAgIHRwLT5zYWNraGludC5zYWNrX2J5
dGVzX3JleG1pdCAtPSAoDQorICAgICBTRVFfTUlOKGN1ci0+cnhtaXQsIGN1ci0+ZW5kKSAtIGN1
ci0+c3RhcnQpOw0KICAgIEtBU1NFUlQodHAtPnNhY2toaW50LnNhY2tfYnl0ZXNfcmV4bWl0ID49
IDAsDQogICAgICAgICgic2Fja2hpbnQgYnl0ZXMgcnR4ID49IDAiKSk7DQogICAgaWYgKFNFUV9M
RVEoc2Jsa3AtPnN0YXJ0LCBjdXItPnN0YXJ0KSkgew0KICAgICAgLyogRGF0YSBhY2tzIGF0IGxl
YXN0IHRoZSBiZWdpbm5pbmcgb2YgaG9sZS4gKi8NCiAgICAgIGlmIChTRVFfR0VRKHNibGtwLT5l
bmQsIGN1ci0+ZW5kKSkgew0KQEAgLTUwNiwxMSArNTUyLDE3IEBADQogICAgfSBlbHNlIHsNCiAg
ICAgIC8qIERhdGEgYWNrcyBhdCBsZWFzdCB0aGUgZW5kIG9mIGhvbGUuICovDQogICAgICBpZiAo
U0VRX0dFUShzYmxrcC0+ZW5kLCBjdXItPmVuZCkpIHsNCiAgICAgICAgLyogTW92ZSBlbmQgb2Yg
aG9sZSBiYWNrd2FyZC4gKi8NCiAgICAgICAgY3VyLT5lbmQgPSBzYmxrcC0+c3RhcnQ7DQotICAg
ICAgIGN1ci0+cnhtaXQgPSBTRVFfTUlOKGN1ci0+cnhtaXQsIGN1ci0+ZW5kKTsNCisgICAgICAg
LyoqKioqDQorICAgICAgICAqIGxvc3QgYWdhaW4NCisgICAgICAgICoqKioqLw0KKyAgICAgICBp
ZiAoU0VRX0dFUShjdXItPnJ4bWl0LCBjdXItPmVuZCkpIHsNCisgICAgICAgICAgIGN1ci0+cnht
aXQgPSB0Y3Bfc2Fja19kb25lYnkoDQorICAgICAgICAgdGNwcmV4bXR0aHJlc2ggKiB0cC0+dF9t
YXhzZWcsIHRwLCBjdXIpOw0KKyAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICAvKg0K
ICAgICAgICAgKiBBQ0tzIHNvbWUgZGF0YSBpbiBtaWRkbGUgb2YgYSBob2xlOyBuZWVkDQogICAg
ICAgICAqIHRvIHNwbGl0IGN1cnJlbnQgaG9sZQ0KICAgICAgICAgKi8NCkBAIC01MjIsMjYgKzU3
NCw0NyBAQA0KICAgICAgICAgICAgdHAtPnNhY2toaW50LnNhY2tfYnl0ZXNfcmV4bWl0DQogICAg
ICAgICAgICAgICAgKz0gKHRlbXAtPnJ4bWl0DQogICAgICAgICAgICAgICAgLSB0ZW1wLT5zdGFy
dCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGN1ci0+ZW5kID0gc2Jsa3AtPnN0YXJ0Ow0KLSAg
ICAgICAgIGN1ci0+cnhtaXQgPSBTRVFfTUlOKGN1ci0+cnhtaXQsDQotICAgICAgICAgICAgIGN1
ci0+ZW5kKTsNCisgICAgICAgICAvKioqKioNCisgICAgICAgICAgKiBsb3N0IGFnYWluDQorICAg
ICAgICAgICoqKioqLw0KKyAgICAgICAgIGlmIChTRVFfR0VRKGN1ci0+cnhtaXQsIGN1ci0+ZW5k
KSkgew0KKyAgICAgICAgICAgICBjdXItPnJ4bWl0ID0gdGNwX3NhY2tfZG9uZWJ5KA0KKyAgICAg
ICAgICAgdGNwcmV4bXR0aHJlc2ggKiB0cC0+dF9tYXhzZWcsIHRwLCBjdXIpOw0KIw0KIw0KIw0K
KyAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCi0gICB0cC0+c2Fja2hpbnQu
c2Fja19ieXRlc19yZXhtaXQgKz0gKGN1ci0+cnhtaXQgLSBjdXItPnN0YXJ0KTsNCisgICAvKioq
KioNCisgICAgKiBsb3N0IGFnYWluDQorICAgICoqKioqLw0KKyAgIHRwLT5zYWNraGludC5zYWNr
X2J5dGVzX3JleG1pdCArPSANCisgICAgIChTRVFfTUlOKGN1ci0+cnhtaXQsIGN1ci0+ZW5kKSAt
IGN1ci0+c3RhcnQpOw0KICAgIC8qDQogICAgICogVGVzdGluZyBzYmxrcC0+c3RhcnQgYWdhaW5z
dCBjdXItPnN0YXJ0IHRlbGxzIHVzIHdoZXRoZXINCiAgICAgKiB3ZSdyZSBkb25lIHdpdGggdGhl
IHNhY2sgYmxvY2sgb3IgdGhlIHNhY2sgaG9sZS4NCiAgICAgKiBBY2NvcmRpbmdseSwgd2UgYWR2
YW5jZSBvbmUgb3IgdGhlIG90aGVyLg0KICAgICAqLw0KICAgIGlmIChTRVFfTEVRKHNibGtwLT5z
dGFydCwgY3VyLT5zdGFydCkpDQogICAgICBjdXIgPSBUQUlMUV9QUkVWKGN1ciwgc2Fja2hvbGVf
aGVhZCwgc2NibGluayk7DQogICAgZWxzZQ0KICAgICAgc2Jsa3AtLTsNCiAgfQ0KKyAvKioqKioN
CisgICogbG9zdCBhZ2Fpbg0KKyAgKioqKiovDQorIGlmICgodGVtcCA9IHRwLT5zYWNraGludC5u
ZXh0aG9sZSkgIT0gTlVMTCkgew0KKyAgICAgZG8gew0KKyAgIGlmICghKHRjcF9zYWNrX2lzaG9s
ZSh0ZW1wLT5yeG1pdCwgdHAsIHRlbXApKSkgew0KKyAgICAgICB0ZW1wLT5yeG1pdCA9IHRlbXAt
PnN0YXJ0Ow0KKyAgICAgICB0cC0+c2Fja2hpbnQubmV4dGhvbGUgPSB0ZW1wOw0KKyAgICAgICAv
L1RDUFNUQVRfSU5DKHRjcHNfc2Fja19yZXhtaXRfbG9zdCk7DQorICAgfQ0KKyAgICAgfSB3aGls
ZSAoKHRlbXAgPSBUQUlMUV9QUkVWKHRlbXAsIHNhY2tob2xlX2hlYWQsIHNjYmxpbmspKSAhPSBO
VUxMKTsNCisgfQ0KIH0NCiANCiAvKg0KICAqIEZyZWUgYWxsIFNBQ0sgaG9sZXMgdG8gY2xlYXIg
dGhlIHNjb3JlYm9hcmQuDQogICovDQotLS0gLi4vbmV0aW5ldC5vcmlnL3RjcF92YXIuaCAyMDEw
LTA5LTEwIDIzOjM5OjI1LjAwMDAwMDAwMCArMDIwMA0KKysrIC4uL25ldGluZXQvdGNwX3Zhci5o
ICAyMDEwLTA5LTE5IDIwOjU5OjQyLjAwMDAwMDAwMCArMDIwMA0KQEAgLTM2LDEwICszNiwxMiBA
QA0KICNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPg0KIA0KICNpZmRlZiBfS0VSTkVMDQogI2luY2x1
ZGUgPG5ldC92bmV0Lmg+DQogDQorc3RhdGljIGNvbnN0IGludCB0Y3ByZXhtdHRocmVzaCA9IDM7
DQorDQogLyoNCiAgKiBLZXJuZWwgdmFyaWFibGVzIGZvciB0Y3AuDQogICovDQogVk5FVF9ERUNM
QVJFKGludCwgdGNwX2RvX3JmYzEzMjMpOw0KIFZORVRfREVDTEFSRShpbnQsIHRjcF9yZWFzc19x
c2l6ZSk7DQpAQCAtNDU3LDEwICs0NTksMTEgQEANCiANCiAgLyogU0FDSyByZWxhdGVkIHN0YXRz
ICovDQogIHVfbG9uZyAgdGNwc19zYWNrX3JlY292ZXJ5X2VwaXNvZGU7IC8qIFNBQ0sgcmVjb3Zl
cnkgZXBpc29kZXMgKi8NCiAgdV9sb25nICB0Y3BzX3NhY2tfcmV4bWl0czsgICAgICAvKiBTQUNL
IHJleG1pdCBzZWdtZW50cyAgICovDQogIHVfbG9uZyAgdGNwc19zYWNrX3JleG1pdF9ieXRlczsg
ICAgIC8qIFNBQ0sgcmV4bWl0IGJ5dGVzICAgICAgKi8NCisvLyB1X2xvbmcgIHRjcHNfc2Fja19y
ZXhtaXRfbG9zdDsgICAgICAvKiBTQUNLIGxvc3QgcmV4bWl0IHNlZ21lbnRzICovDQogIHVfbG9u
ZyAgdGNwc19zYWNrX3Jjdl9ibG9ja3M7ICAgICAvKiBTQUNLIGJsb2NrcyAob3B0aW9ucykgcmVj
ZWl2ZWQgKi8NCiAgdV9sb25nICB0Y3BzX3NhY2tfc2VuZF9ibG9ja3M7ICAgICAgLyogU0FDSyBi
bG9ja3MgKG9wdGlvbnMpIHNlbnQgICAgICovDQogIHVfbG9uZyAgdGNwc19zYWNrX3Nib3ZlcmZs
b3c7ICAgICAgIC8qIHRpbWVzIHNjb3JlYm9hcmQgb3ZlcmZsb3dlZCAqLw0KICANCiAgLyogRUNO
IHJlbGF0ZWQgc3RhdHMgKi8NCkBAIC02OTksMTAgKzcwMiwxMiBAQA0KIGV4dGVybiBzdHJ1Y3Qg
cHJfdXNycmVxcyB0Y3BfdXNycmVxczsNCiBleHRlcm4gdV9sb25nIHRjcF9zZW5kc3BhY2U7DQog
ZXh0ZXJuIHVfbG9uZyB0Y3BfcmVjdnNwYWNlOw0KIHRjcF9zZXEgdGNwX25ld19pc24oc3RydWN0
IHRjcGNiICopOw0KIA0KK3RjcF9zZXEgICB0Y3Bfc2Fja19kb25lYnkoaW50LCBzdHJ1Y3QgdGNw
Y2IgKiwgc3RydWN0IHNhY2tob2xlICopOw0KK2ludCAgIHRjcF9zYWNrX2lzaG9sZSh0Y3Bfc2Vx
LCBzdHJ1Y3QgdGNwY2IgKiwgc3RydWN0IHNhY2tob2xlICopOw0KIHZvaWQgIHRjcF9zYWNrX2Rv
YWNrKHN0cnVjdCB0Y3BjYiAqLCBzdHJ1Y3QgdGNwb3B0ICosIHRjcF9zZXEpOw0KIHZvaWQgIHRj
cF91cGRhdGVfc2Fja19saXN0KHN0cnVjdCB0Y3BjYiAqdHAsIHRjcF9zZXEgcmN2X2xhc3RzdGFy
dCwgdGNwX3NlcSByY3ZfbGFzdGVuZCk7DQogdm9pZCAgdGNwX2NsZWFuX3NhY2tyZXBvcnQoc3Ry
dWN0IHRjcGNiICp0cCk7DQogdm9pZCAgdGNwX3NhY2tfYWRqdXN0KHN0cnVjdCB0Y3BjYiAqdHAp
Ow0KIHN0cnVjdCBzYWNraG9sZSAqdGNwX3NhY2tfb3V0cHV0KHN0cnVjdCB0Y3BjYiAqdHAsIGlu
dCAqc2Fja19ieXRlc19yZXhtdCk7DQotLS0gLi4vbmV0aW5ldC5vcmlnL3RjcF9pbnB1dC5jIDIw
MTAtMDktMTEgMjI6Mzg6NTMuMDAwMDAwMDAwICswMjAwDQorKysgLi4vbmV0aW5ldC90Y3BfaW5w
dXQuYyAgMjAxMC0wOS0xNSAxOTowODo0MS4wMDAwMDAwMDAgKzAyMDANCkBAIC05NCwxMiArOTQs
MTAgQEANCiANCiAjaW5jbHVkZSA8bWFjaGluZS9pbl9ja3N1bS5oPg0KIA0KICNpbmNsdWRlIDxz
ZWN1cml0eS9tYWMvbWFjX2ZyYW1ld29yay5oPg0KIA0KLXN0YXRpYyBjb25zdCBpbnQgdGNwcmV4
bXR0aHJlc2ggPSAzOw0KLQ0KIFZORVRfREVGSU5FKHN0cnVjdCB0Y3BzdGF0LCB0Y3BzdGF0KTsN
CiBWTkVUX0RFRklORShpbnQsIGJsYWNraG9sZSk7DQogVk5FVF9ERUZJTkUoaW50LCB0Y3BfZGVs
YWNrX2VuYWJsZWQpOw0KIFZORVRfREVGSU5FKGludCwgZHJvcF9zeW5maW4pOw0KIFZORVRfREVG
SU5FKGludCwgdGNwX2RvX3JmYzMwNDIpOw0KLS0tIC4uL25ldGluZXQub3JpZy90Y3Bfb3V0cHV0
LmMgIDIwMTAtMDktMTAgMjM6Mzk6MjUuMDAwMDAwMDAwICswMjAwDQorKysgLi4vbmV0aW5ldC90
Y3Bfb3V0cHV0LmMgMjAxMC0wOS0xNSAxOTowMzo1OS4wMDAwMDAwMDAgKzAyMDANCkBAIC05NTEs
MTAgKzk1MSwxNyBAQA0KICAgIGVsc2UNCiAgICAgIHRoLT50aF9zZXEgPSBodG9ubCh0cC0+c25k
X21heCk7DQogIH0gZWxzZSB7DQogICAgdGgtPnRoX3NlcSA9IGh0b25sKHAtPnJ4bWl0KTsNCiAg
ICBwLT5yeG1pdCArPSBsZW47DQorICAgLyoqKioqDQorICAgICogbG9zdCBhZ2Fpbg0KKyAgICAq
KioqKi8NCisgICBpZiAoU0VRX0dFUShwLT5yeG1pdCwgcC0+ZW5kKSkgew0KKyAgICAgICBwLT5y
eG1pdCA9IHRjcF9zYWNrX2RvbmVieSgNCisgICAgIHRjcHJleG10dGhyZXNoICogdHAtPnRfbWF4
c2VnLCB0cCwgcCk7DQorICAgfQ0KICAgIHRwLT5zYWNraGludC5zYWNrX2J5dGVzX3JleG1pdCAr
PSBsZW47DQogIH0NCiAgdGgtPnRoX2FjayA9IGh0b25sKHRwLT5yY3Zfbnh0KTsNCiAgaWYgKG9w
dGxlbikgew0KICAgIGJjb3B5KG9wdCwgdGggKyAxLCBvcHRsZW4pOw0K

--_002_046c2d4c51964cb698d0d27f1b8d0451hioexcmbx05prdhqnetappc_--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?046c2d4c51964cb698d0d27f1b8d0451>