日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

網絡流量控制 網絡流量監(jiān)控工具( 五 )

Linux4.x內核中擁塞算法擴展時參考struct,擁塞算法主要重寫里面函數來實現:
struct tcp_congestion_ops {struct list_headlist;u32 key;u32 flags;/* initialize private data (optional) */void (*init)(struct sock *sk);/* cleanup private data(optional) */void (*release)(struct sock *sk);/* return slow start threshold (required) */u32 (*ssthresh)(struct sock *sk);/* do new cwnd calculation (required) */void (*cong_avoid)(struct sock *sk, u32 ack, u32 acked);/* call before changing ca_state (optional) */void (*set_state)(struct sock *sk, u8 new_state);/* call when cwnd event occurs (optional) */void (*cwnd_event)(struct sock *sk, enum tcp_ca_event ev);/* call when ack arrives (optional) */void (*in_ack_event)(struct sock *sk, u32 flags);/* new value of cwnd after loss (required) */u32(*undo_cwnd)(struct sock *sk);/* hook for packet ack accounting (optional) */void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample);/* override sysctl_tcp_min_tso_segs */u32 (*min_tso_segs)(struct sock *sk);/* returns the multiplier used in tcp_sndbuf_expand (optional) */u32 (*sndbuf_expand)(struct sock *sk);/* call when packets are delivered to update cwnd and pacing rate,* after all the ca_state processing. (optional)*/void (*cong_control)(struct sock *sk, const struct rate_sample *rs);/* get info for inet_diag (optional) */size_t (*get_info)(struct sock *sk, u32 ext, int *attr,union tcp_cc_info *info);charname[TCP_CA_NAME_MAX];struct module*owner;};Linux4.x內核cubic算法重新如下函數來實現:
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 系統(tǒng)流量控制重要系統(tǒng)參數# 每個套接字所允許的最大緩沖區(qū)的大小net.core.optmem_max = 20480# 接收套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位) 。net.core.rmem_default = 229376# 接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位) 。net.core.rmem_max = 16777216# socket監(jiān)聽的backlog(監(jiān)聽隊列)上限net.core.somaxconn = 128# tcp默認擁塞算法net.ipv4.tcp_congestion_control = cubic# 是否開啟tcp窗口擴大net.ipv4.tcp_window_scaling = 1# tcp內存大小區(qū)(以頁為單位, 1頁=4096字節(jié)), 3個數值分別為 low, pressure, high# low: tcp使用低于該值頁數時不考慮釋放內存, pressure: tcp使用內存大于該值則試圖穩(wěn)定其使用內存low以下# high: 允許tcp用排隊緩存數據報文的頁面量, 超過該值拒絕分配socket, 出現TCP: too many of orphaned socketsnet.ipv4.tcp_mem = 381705508942763410# tcp讀緩存區(qū)(以字節(jié)為單位), 3個數值分別為 默認值 最小值 最大值net.ipv4.tcp_rmem = 102408738016777216# tcp寫緩存區(qū)(以字節(jié)為單位), 3個數值分別為 默認值 最小值 最大值net.ipv4.tcp_wmem = 102408738016777216Referencehttps://tools.ietf.org/html/std7
https://datatracker.ietf.org/doc/html/rfc1122
https://datatracker.ietf.org/doc/html/rfc1323
https://datatracker.ietf.org/doc/html/rfc1379
https://datatracker.ietf.org/doc/html/rfc1948
https://datatracker.ietf.org/doc/html/rfc2018
https://datatracker.ietf.org/doc/html/rfc5681
https://datatracker.ietf.org/doc/html/rfc6247
https://datatracker.ietf.org/doc/html/rfc6298
https://datatracker.ietf.org/doc/html/rfc6824
https://datatracker.ietf.org/doc/html/rfc7323
https://datatracker.ietf.org/doc/html/rfc7414
https://en.wikipedia.org/wiki/Transmission_Control_Protocol
https://linuxgazette.net/135/pfeiffer.html
http://www.tcpipguide.com/free/t_TCPSlidingWindowDataTransferandAcknowledgementMech.htm
https://www2.tkn.tu-berlin.de/teaching/rn/animations/gbn_sr/
https://zhuanlan.zhihu.com/p/144273871
http://lxr.linux.no/linux+v3.2.8/Documentation/networking/ip-sysctl.txt#L464

推薦閱讀