[#56965] [ruby-trunk - Bug #8852][Open] Synology build of ruby-2.0.0-p247 is failing — "barbecuesteve (Steve Sparks)" <sparks@...>

12 messages 2013/09/02

[#57051] [ruby-trunk - Bug #8872][Open] Case statements do not honor a refinement of the '===' method — "jconley88 (Jon Conley)" <schnozberries@...>

21 messages 2013/09/07

[#57058] [ruby-trunk - Bug #8875][Open] Select is not usable with SSLSocket — "headius (Charles Nutter)" <headius@...>

11 messages 2013/09/07

[#57074] [ruby-trunk - Bug #8879][Open] String#to_r fails after moving ruby to other OSX system — "mpapis (Michal Papis)" <mpapis@...>

12 messages 2013/09/08

[#57092] [ruby-trunk - Bug #8883][Open] Rational canonicalization unexpectedly converts to Fixnum — "melquiades (Paul Cantrell)" <cantrell@...>

16 messages 2013/09/09

[#57109] [ruby-trunk - Bug #8886][Open] TracePoint API inconsistence when raise used — deivid (David Rodríguez) <deivid.rodriguez@...>

14 messages 2013/09/10

[#57111] [ruby-trunk - Feature #8887][Open] min(n), max(n), min_by(n), max_by(n) — "akr (Akira Tanaka)" <akr@...>

13 messages 2013/09/10

[#57131] [ruby-trunk - Feature #8895][Open] Destructuring Assignment for Hash — "chendo (Jack Chen)" <ruby-lang@...>

19 messages 2013/09/11

[#57186] [ruby-trunk - Feature #8909][Open] Expand "f" frozen suffix to literal arrays and hashes — "headius (Charles Nutter)" <headius@...>

37 messages 2013/09/14

[#57262] [ruby-trunk - Feature #8921][Open] Allow select, reject, etc to accept a regex — "kyledecot (Kyle Decot)" <kyle.decot@...>

13 messages 2013/09/18

[#57273] [ruby-trunk - Feature #8923][Open] Frozen nil/true/false — "ko1 (Koichi Sasada)" <redmine@...>

13 messages 2013/09/19

[#57353] [ruby-trunk - Feature #8948][Open] Frozen regex — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

19 messages 2013/09/24

[#57385] [ruby-trunk - Bug #8953][Open] `str =~ /pattern/` does not call =~ method if (1) str is a String, (2) /pattern/ is a Regexp literal — "gfx (Goro Fuji)" <gfuji@...>

12 messages 2013/09/26

[#57396] [ruby-trunk - Feature #8956][Open] Allow hash members delimited by \n inside of {} — "adamdunson (Adam Dunson)" <adam@...>

20 messages 2013/09/26

[ruby-core:57048] [ruby-trunk - Feature #8871][Open] Server side TCP fast open

From: "Glass_saga (Masaki Matsushita)" <glass.saga@...>
Date: 2013-09-06 16:05:18 UTC
List: ruby-core #57048
Issue #8871 has been reported by Glass_saga (Masaki Matsushita).

----------------------------------------
Feature #8871: Server side TCP fast open
https://bugs.ruby-lang.org/issues/8871

Author: Glass_saga (Masaki Matsushita)
Status: Open
Priority: Normal
Assignee: 
Category: ext
Target version: current: 2.1.0


I propose that ruby support server side TCP fast open (TFO).
TCP fast open reduces step of the handshake process.

detailed information about TCP fast open: http://lwn.net/Articles/508865/

# example

## server side

require "socket"

serv = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM)
serv.setsockopt(Socket::SOL_TCP, Socket::TCP_FASTOPEN, 5)
addrinfo = Addrinfo.new(Socket.sockaddr_in(8888, "localhost"))
serv.bind(addrinfo)
serv.listen(1)

loop do
  socket, addrinfo = serv.accept
  p socket, addrinfo
  p socket.gets
end

## client side (Python)

#!/usr/bin/env python

import sys, socket

HOST = "localhost"
PORT = 8888

TCP_FASTOPEN = 23
MSG_FASTOPEN = 0x20000000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# sendto with MSG_FASTOPEN flag
s.sendto("Hello, world!", MSG_FASTOPEN, (HOST, PORT))
s.close()

# tcpdump result

% sudo tcpdump -i lo port 8888

## without TFO

00:46:43.029704 IP localhost.35653 > localhost.8888: Flags [S], seq 1189386786, win 43690, options [mss 65495,sackOK,TS val 476896037 ecr 0,nop,wscale 7], length 0
00:46:43.029735 IP localhost.35653 > localhost.8888: Flags [.], ack 2201113579, win 342, options [nop,nop,TS val 476896037 ecr 476896037], length 0
00:46:43.029782 IP localhost.35653 > localhost.8888: Flags [P.], seq 0:13, ack 1, win 342, options [nop,nop,TS val 476896037 ecr 476896037], length 13
00:46:43.029808 IP localhost.35653 > localhost.8888: Flags [F.], seq 13, ack 1, win 342, options [nop,nop,TS val 476896037 ecr 476896037], length 0

4 packets captured
8 packets received by filter
0 packets dropped by kernel

## with TFO

00:47:01.787766 IP localhost.36567 > localhost.8888: Flags [S], seq 2471392232:2471392245, win 43690, options [mss 65495,sackOK,TS val 476900726 ecr 0,nop,wscale 7,Unknown Option 254f989ccf497eb7eb6ea2e], length 13
00:47:01.787814 IP localhost.36567 > localhost.8888: Flags [.], ack 874717749, win 342, options [nop,nop,TS val 476900726 ecr 476900726], length 0
00:47:01.788029 IP localhost.36567 > localhost.8888: Flags [F.], seq 0, ack 1, win 342, options [nop,nop,TS val 476900726 ecr 476900726], length 0

3 packets captured
6 packets received by filter
0 packets dropped by kernel


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next