Skip to content

Commit

Permalink
[DCCP] CCID2: Initial CCID2 (TCP-Like) implementation
Browse files Browse the repository at this point in the history
Original work by Andrea Bittau, Arnaldo Melo cleaned up and fixed several
issues on the merge process.

For now CCID2 was turned the default for all SOCK_DCCP connections, but this
will be remedied soon with the merge of the feature negotiation code.

Signed-off-by: Andrea Bittau <a.bittau@cs.ucl.ac.uk>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Andrea Bittau authored and David S. Miller committed Mar 21, 2006
1 parent aa5d7df commit 2a91aa3
Show file tree
Hide file tree
Showing 7 changed files with 957 additions and 6 deletions.
8 changes: 5 additions & 3 deletions include/linux/dccp.h
Original file line number Diff line number Diff line change
Expand Up @@ -314,9 +314,9 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb)

/* initial values for each feature */
#define DCCPF_INITIAL_SEQUENCE_WINDOW 100
/* FIXME: for now we're using CCID 3 (TFRC) */
#define DCCPF_INITIAL_CCID 3
#define DCCPF_INITIAL_SEND_ACK_VECTOR 0
/* FIXME: for now we're using CCID 2 (TCP-Like) */
#define DCCPF_INITIAL_CCID 2
#define DCCPF_INITIAL_SEND_ACK_VECTOR 1
/* FIXME: for now we're default to 1 but it should really be 0 */
#define DCCPF_INITIAL_SEND_NDP_COUNT 1

Expand Down Expand Up @@ -430,6 +430,8 @@ struct dccp_sock {
struct timeval dccps_timestamp_time;
__u32 dccps_timestamp_echo;
__u32 dccps_packet_size;
__u16 dccps_l_ack_ratio;
__u16 dccps_r_ack_ratio;
unsigned long dccps_ndp_count;
__u32 dccps_mss_cache;
struct dccp_options dccps_options;
Expand Down
4 changes: 4 additions & 0 deletions net/dccp/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ config INET_DCCP_DIAG
def_tristate y if (IP_DCCP = y && INET_DIAG = y)
def_tristate m

config IP_DCCP_ACKVEC
depends on IP_DCCP
def_bool N

source "net/dccp/ccids/Kconfig"

menu "DCCP Kernel Hacking"
Expand Down
39 changes: 36 additions & 3 deletions net/dccp/ccids/Kconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,34 @@
menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
depends on IP_DCCP && EXPERIMENTAL

config IP_DCCP_CCID2
tristate "CCID2 (TCP) (EXPERIMENTAL)"
depends on IP_DCCP
select IP_DCCP_ACKVEC
---help---
CCID 2, TCP-like Congestion Control, denotes Additive Increase,
Multiplicative Decrease (AIMD) congestion control with behavior
modelled directly on TCP, including congestion window, slow start,
timeouts, and so forth [RFC 2581]. CCID 2 achieves maximum
bandwidth over the long term, consistent with the use of end-to-end
congestion control, but halves its congestion window in response to
each congestion event. This leads to the abrupt rate changes
typical of TCP. Applications should use CCID 2 if they prefer
maximum bandwidth utilization to steadiness of rate. This is often
the case for applications that are not playing their data directly
to the user. For example, a hypothetical application that
transferred files over DCCP, using application-level retransmissions
for lost packets, would prefer CCID 2 to CCID 3. On-line games may
also prefer CCID 2.

CCID 2 is further described in:
http://www.icir.org/kohler/dccp/draft-ietf-dccp-ccid2-10.txt

This text was extracted from:
http://www.icir.org/kohler/dccp/draft-ietf-dccp-spec-13.txt

If in doubt, say M.

config IP_DCCP_CCID3
tristate "CCID3 (TFRC) (EXPERIMENTAL)"
depends on IP_DCCP
Expand All @@ -15,10 +43,15 @@ config IP_DCCP_CCID3
suitable than CCID 2 for applications such streaming media where a
relatively smooth sending rate is of importance.

CCID 3 is further described in [CCID 3 PROFILE]. The TFRC
congestion control algorithms were initially described in RFC 3448.
CCID 3 is further described in:

http://www.icir.org/kohler/dccp/draft-ietf-dccp-ccid3-11.txt.

The TFRC congestion control algorithms were initially described in
RFC 3448.

This text was extracted from draft-ietf-dccp-spec-11.txt.
This text was extracted from:
http://www.icir.org/kohler/dccp/draft-ietf-dccp-spec-13.txt

If in doubt, say M.

Expand Down
4 changes: 4 additions & 0 deletions net/dccp/ccids/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ obj-$(CONFIG_IP_DCCP_CCID3) += dccp_ccid3.o

dccp_ccid3-y := ccid3.o

obj-$(CONFIG_IP_DCCP_CCID2) += dccp_ccid2.o

dccp_ccid2-y := ccid2.o

obj-y += lib/
Loading

0 comments on commit 2a91aa3

Please sign in to comment.