Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a91aa39 authored by Andrea Bittau's avatar Andrea Bittau Committed by David S. Miller
Browse files

[DCCP] CCID2: Initial CCID2 (TCP-Like) implementation



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: default avatarAndrea Bittau <a.bittau@cs.ucl.ac.uk>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aa5d7df3
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -314,9 +314,9 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb)


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


@@ -430,6 +430,8 @@ struct dccp_sock {
	struct timeval			dccps_timestamp_time;
	struct timeval			dccps_timestamp_time;
	__u32				dccps_timestamp_echo;
	__u32				dccps_timestamp_echo;
	__u32				dccps_packet_size;
	__u32				dccps_packet_size;
	__u16				dccps_l_ack_ratio;
	__u16				dccps_r_ack_ratio;
	unsigned long			dccps_ndp_count;
	unsigned long			dccps_ndp_count;
	__u32				dccps_mss_cache;
	__u32				dccps_mss_cache;
	struct dccp_options		dccps_options;
	struct dccp_options		dccps_options;
+4 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,10 @@ config INET_DCCP_DIAG
	def_tristate y if (IP_DCCP = y && INET_DIAG = y)
	def_tristate y if (IP_DCCP = y && INET_DIAG = y)
	def_tristate m
	def_tristate m


config IP_DCCP_ACKVEC
	depends on IP_DCCP
	def_bool N

source "net/dccp/ccids/Kconfig"
source "net/dccp/ccids/Kconfig"


menu "DCCP Kernel Hacking"
menu "DCCP Kernel Hacking"
+36 −3
Original line number Original line Diff line number Diff line
menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
	depends on IP_DCCP && 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
config IP_DCCP_CCID3
	tristate "CCID3 (TFRC) (EXPERIMENTAL)"
	tristate "CCID3 (TFRC) (EXPERIMENTAL)"
	depends on IP_DCCP
	depends on IP_DCCP
@@ -15,10 +43,15 @@ config IP_DCCP_CCID3
	  suitable than CCID 2 for applications such streaming media where a
	  suitable than CCID 2 for applications such streaming media where a
	  relatively smooth sending rate is of importance.
	  relatively smooth sending rate is of importance.


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

	  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.
	  If in doubt, say M.


+4 −0
Original line number Original line Diff line number Diff line
@@ -2,4 +2,8 @@ obj-$(CONFIG_IP_DCCP_CCID3) += dccp_ccid3.o


dccp_ccid3-y := ccid3.o
dccp_ccid3-y := ccid3.o


obj-$(CONFIG_IP_DCCP_CCID2) += dccp_ccid2.o

dccp_ccid2-y := ccid2.o

obj-y += lib/
obj-y += lib/

net/dccp/ccids/ccid2.c

0 → 100644
+838 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading