Kconfig 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
  2. config IP_DCCP_CCID2
  3. tristate "CCID2 (TCP-Like)"
  4. def_tristate IP_DCCP
  5. ---help---
  6. CCID 2, TCP-like Congestion Control, denotes Additive Increase,
  7. Multiplicative Decrease (AIMD) congestion control with behavior
  8. modelled directly on TCP, including congestion window, slow start,
  9. timeouts, and so forth [RFC 2581]. CCID 2 achieves maximum
  10. bandwidth over the long term, consistent with the use of end-to-end
  11. congestion control, but halves its congestion window in response to
  12. each congestion event. This leads to the abrupt rate changes
  13. typical of TCP. Applications should use CCID 2 if they prefer
  14. maximum bandwidth utilization to steadiness of rate. This is often
  15. the case for applications that are not playing their data directly
  16. to the user. For example, a hypothetical application that
  17. transferred files over DCCP, using application-level retransmissions
  18. for lost packets, would prefer CCID 2 to CCID 3. On-line games may
  19. also prefer CCID 2. See RFC 4341 for further details.
  20. CCID2 is the default CCID used by DCCP.
  21. config IP_DCCP_CCID2_DEBUG
  22. bool "CCID2 debugging messages"
  23. depends on IP_DCCP_CCID2
  24. ---help---
  25. Enable CCID2-specific debugging messages.
  26. When compiling CCID2 as a module, this debugging output can
  27. additionally be toggled by setting the ccid2_debug module
  28. parameter to 0 or 1.
  29. If in doubt, say N.
  30. config IP_DCCP_CCID3
  31. tristate "CCID3 (TCP-Friendly)"
  32. def_tristate IP_DCCP
  33. select IP_DCCP_TFRC_LIB
  34. ---help---
  35. CCID 3 denotes TCP-Friendly Rate Control (TFRC), an equation-based
  36. rate-controlled congestion control mechanism. TFRC is designed to
  37. be reasonably fair when competing for bandwidth with TCP-like flows,
  38. where a flow is "reasonably fair" if its sending rate is generally
  39. within a factor of two of the sending rate of a TCP flow under the
  40. same conditions. However, TFRC has a much lower variation of
  41. throughput over time compared with TCP, which makes CCID 3 more
  42. suitable than CCID 2 for applications such streaming media where a
  43. relatively smooth sending rate is of importance.
  44. CCID 3 is further described in RFC 4342,
  45. http://www.ietf.org/rfc/rfc4342.txt
  46. The TFRC congestion control algorithms were initially described in
  47. RFC 3448.
  48. This text was extracted from RFC 4340 (sec. 10.2),
  49. http://www.ietf.org/rfc/rfc4340.txt
  50. To compile this CCID as a module, choose M here: the module will be
  51. called dccp_ccid3.
  52. If in doubt, say M.
  53. if IP_DCCP_CCID3
  54. config IP_DCCP_CCID3_DEBUG
  55. bool "CCID3 debugging messages"
  56. ---help---
  57. Enable CCID3-specific debugging messages.
  58. When compiling CCID3 as a module, this debugging output can
  59. additionally be toggled by setting the ccid3_debug module
  60. parameter to 0 or 1.
  61. If in doubt, say N.
  62. choice
  63. prompt "Select method for measuring the packet size s"
  64. default IP_DCCP_CCID3_MEASURE_S_AS_MPS
  65. config IP_DCCP_CCID3_MEASURE_S_AS_MPS
  66. bool "Always use MPS in place of s"
  67. ---help---
  68. This use is recommended as it is consistent with the initialisation
  69. of X and suggested when s varies (rfc3448bis, (1) in section 4.1).
  70. config IP_DCCP_CCID3_MEASURE_S_AS_AVG
  71. bool "Use moving average"
  72. ---help---
  73. An alternative way of tracking s, also supported by rfc3448bis.
  74. This used to be the default for CCID-3 in previous kernels.
  75. config IP_DCCP_CCID3_MEASURE_S_AS_MAX
  76. bool "Track the maximum payload length"
  77. ---help---
  78. An experimental method based on tracking the maximum packet size.
  79. endchoice
  80. config IP_DCCP_CCID3_RTO
  81. int "Use higher bound for nofeedback timer"
  82. default 100
  83. ---help---
  84. Use higher lower bound for nofeedback timer expiration.
  85. The TFRC nofeedback timer normally expires after the maximum of 4
  86. RTTs and twice the current send interval (RFC 3448, 4.3). On LANs
  87. with a small RTT this can mean a high processing load and reduced
  88. performance, since then the nofeedback timer is triggered very
  89. frequently.
  90. This option enables to set a higher lower bound for the nofeedback
  91. value. Values in units of milliseconds can be set here.
  92. A value of 0 disables this feature by enforcing the value specified
  93. in RFC 3448. The following values have been suggested as bounds for
  94. experimental use:
  95. * 16-20ms to match the typical multimedia inter-frame interval
  96. * 100ms as a reasonable compromise [default]
  97. * 1000ms corresponds to the lower TCP RTO bound (RFC 2988, 2.4)
  98. The default of 100ms is a compromise between a large value for
  99. efficient DCCP implementations, and a small value to avoid disrupting
  100. the network in times of congestion.
  101. The purpose of the nofeedback timer is to slow DCCP down when there
  102. is serious network congestion: experimenting with larger values should
  103. therefore not be performed on WANs.
  104. endif # IP_DCCP_CCID3
  105. config IP_DCCP_TFRC_LIB
  106. tristate
  107. default n
  108. config IP_DCCP_TFRC_DEBUG
  109. bool
  110. depends on IP_DCCP_TFRC_LIB
  111. default y if IP_DCCP_CCID3_DEBUG
  112. endmenu