网络流量监控工具 网络流量控制( 三 )
config DEFAULT_TCP_CONGstringdefault "bic" if DEFAULT_BICdefault "cubic" if DEFAULT_CUBICdefault "htcp" if DEFAULT_HTCPdefault "hybla" if DEFAULT_HYBLAdefault "vegas" if DEFAULT_VEGASdefault "westwood" if DEFAULT_WESTWOODdefault "veno" if DEFAULT_VENOdefault "reno" if DEFAULT_RENOdefault "dctcp" if DEFAULT_DCTCPdefault "cdg" if DEFAULT_CDGdefault "bbr" if DEFAULT_BBRdefault "cubic" Linux mptcp v0.95内核支持的Mptcp拥塞算法;
config TCP_CONG_LIAtristate "MPTCP Linked Increase"depends on MPTCPdefault n---help---MultiPath TCP Linked Increase Congestion ControlTo enable it, just put 'lia' in tcp_congestion_controlconfig TCP_CONG_OLIAtristate "MPTCP Opportunistic Linked Increase"depends on MPTCPdefault n---help---MultiPath TCP Opportunistic Linked Increase Congestion ControlTo enable it, just put 'olia' in tcp_congestion_controlconfig TCP_CONG_WVEGAStristate "MPTCP WVEGAS CONGESTION CONTROL"depends on MPTCPdefault n---help---wVegas congestion control for MPTCPTo enable it, just put 'wvegas' in tcp_congestion_controlconfig TCP_CONG_BALIAtristate "MPTCP BALIA CONGESTION CONTROL"depends on MPTCPdefault n---help---Multipath TCP Balanced Linked Adaptation Congestion ControlTo enable it, just put 'balia' in tcp_congestion_controlconfig TCP_CONG_MCTCPDESYNCtristate "DESYNCHRONIZED MCTCP CONGESTION CONTROL (EXPERIMENTAL)"depends on MPTCPdefault n---help---Desynchronized MultiChannel TCP Congestion Control. This is experimentalcode that only supports single path and must have set mptcp_ndiffportslarger than one.To enable it, just put 'mctcpdesync' in tcp_congestion_controlFor further details see:http://ieeexplore.ieee.org/abstract/document/6911722/https://doi.org/10.1016/j.comcom.2015.07.010 Linux4.x内核中的拥塞算法在扩展时引用struct , 拥塞算法主要通过重写内部函数来实现:
struct tcp_congestion_ops { struct list_head list; u32 key; u32 flags; void (*init)(struct sock *sk); void (*release)(struct sock *sk); u32 (*ssthresh)(struct sock *sk); void (*cong_avoid)(struct sock *sk, u32 ack, u32 acked); void (*set_state)(struct sock *sk, u8 new_state); void (*cwnd_event)(struct sock *sk, enum tcp_ca_event ev); void (*in_ack_event)(struct sock *sk, u32 flags); u32 (*undo_cwnd)(struct sock *sk); void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample); u32 (*min_tso_segs)(struct sock *sk); u32 (*sndbuf_expand)(struct sock *sk); void (*cong_control)(struct sock *sk, const struct rate_sample *rs); size_t (*get_info)(struct sock *sk, u32 ext, int *attr, union tcp_cc_info *info); char name[TCP_CA_NAME_MAX]; struct module *owner;}; Linux4.x内核中的立方算法是通过以下函数实现的:
static struct tcp_congestion_ops cubictcp __read_mostly = { .init = bictcp_init, .ssthresh = bictcp_recalc_ssthresh, .cong_avoid = bictcp_cong_avoid, .set_state = bictcp_state, .undo_cwnd = tcp_reno_undo_cwnd, .cwnd_event = bictcp_cwnd_event, .pkts_acked = bictcp_acked, .owner = THIS_MODULE, .name = "cubic",}; Linux 系统流量控制重要系统参数 # 每个套接字所允许的最大缓冲区的大小net.core.optmem_max = 20480# 接收套接字缓冲区大小的缺省值(以字节为单位) 。net.core.rmem_default = 229376# 接收套接字缓冲区大小的最大值(以字节为单位) 。net.core.rmem_max = 16777216# socket监听的backlog(监听队列)上限net.core.somaxconn = 128# tcp默认拥塞算法net.ipv4.tcp_congestion_control = cubic# 是否开启tcp窗口扩大net.ipv4.tcp_window_scaling = 1# tcp内存大小区(以页为单位, 1页=4096字节), 3个数值分别为 low, pressure, high# low: tcp使用低于该值页数时不考虑释放内存, pressure: tcp使用内存大于该值则试图稳定其使用内存low以下# high: 允许tcp用排队缓存数据报文的页面量, 超过该值拒绝分配socket, 出现TCP: too many of orphaned socketsnet.ipv4.tcp_mem = 381705 508942 763410# tcp读缓存区(以字节为单位), 3个数值分别为 默认值 最小值 最大值net.ipv4.tcp_rmem = 10240 87380 16777216# tcp写缓存区(以字节为单位), 3个数值分别为 默认值 最小值 最大值net.ipv4.tcp_wmem = 10240 87380 16777216 Reference https://tools . IETF . org/html/STD 7 https://data tracker . IETF . org/doc/html/RFC 1122 https://data tracker . IETF . org/doc/html/RFC 1323 https://data tracker . IETF . org/doc/html/RFC 1379 https://data tracker . IETF . org/doc/html/RFC 1948 https://data tracker . IETF . org/doc/html/RFC 2018
推荐阅读
- 电脑网络不稳定是什么原因导致的,一招解决网络不稳定的办法!
- 5个让新手快速变网络推广高手的方法 网络营销高手都是怎么运营的
- 看看15K网站运营总监都在做什么 网络运营总监岗位职责和日常工作
- 4个靠谱的网络推广方法 中小企业网络营销战略分析
- 互联网广告宣传的特点 网络广告的发展优势有哪些
- 新产品免费网上推广的方法 如何做好网络推广工作
- 产品网络推广的免费渠道和方法 如何进行产品推广
- 完整的网络品牌推广方案 如何做好品牌推广工作
- 8类免费实用的营销工具 最好的网络营销软件有哪些
- 2019最佳口碑营销方案 网络口碑营销成功案例
