Linux 内核之网络协议栈
小刀刀
while(1)
{
Thinking;
doing;
}
展开
-
NAPI机制分析
NAPI 的核心在于:在一个繁忙网络,每次有网络数据包到达时,不需要都引发中断,因为高频率的中断可能会影响系统的整体效率,假象一个场景,我们此时使用标准的 100M 网卡,可能实际达到的接收速率为 80MBits/s,而此时数据包平均长度为 1500Bytes,则每秒产生的中断数目为: 80M bits/s / (8 Bits/Byte * 1500 Byte) = 6667 个中断 /转载 2014-03-05 19:42:54 · 3238 阅读 · 0 评论 -
Linux 内核网络协议栈 ------ tcp重传数据包 tcp_retransmit_skb 函数
/* This retransmits one SKB. Policy decisions and retransmit queue * state updates are done by the caller. Returns non-zero if an * error occurred which prevented the send. */int tcp_retransmit_原创 2014-03-26 19:20:51 · 6231 阅读 · 0 评论 -
Linux 内核网络协议栈 ------ 清理重传队列中函数 tcp_clean_rtx_queue
如果重传队列中的一些数据已经被确认,那么, 需要从重传队列中清除出去,需要使用这个函数:tcp_clean_rtx_queue/* Remove acknowledged frames from the retransmission queue. If our packet * is before the ack sequence we can discard it as it's原创 2014-03-26 17:05:54 · 4866 阅读 · 0 评论 -
Linux 内核网络协议栈 ------ 拥塞避免处理函数 tcp_reno_cong_avoid
慢启动和快速重传拥塞避免算法,函数tcp_reno_cong_avoid在“慢开始”阶段,每收到一个ACK,cwnd++一次,那么一个RTT之后,cwnd就会加倍拥塞避免阶段,其实就是在一个RTT时间内将cwnd++一次( 注意在不丢包的情况下 )/* * TCP Reno congestion control * This is special case used f原创 2014-03-26 18:59:07 · 4947 阅读 · 0 评论 -
Linux 内核网络协议栈 ------ tcp_ack 函数处理接收到的ACK包之后
注意 tcp_ack 是来处理接收到的ACK的,那么到底怎么去做呢?看下面:先还上把tcp_sock的结构放在这里,下面一些数据的分析需要用到:struct tcp_sock { /* inet_connection_sock has to be the first member of tcp_sock */ struct inet_conn原创 2014-03-26 19:37:10 · 10731 阅读 · 1 评论 -
Linux 内核网络协议栈 ------ TCP拥塞状态机 tcp_fastretrans_alert
这里主要说的是TCP拥塞情况下的状态状态处理/* Process an event, which can update packets-in-flight not trivially. * Main goal of this function is to calculate new estimate for left_out, * taking into account both pa原创 2014-03-26 19:27:02 · 6952 阅读 · 0 评论 -
Linux 内核网络协议栈 ------ Linux 内核路由机制(二)之 ip层开始 -> 直到包被处理
Linux 内核路由机制(二) ---- ip层开始 -> 直到包被处理原创 2014-03-10 22:44:29 · 12758 阅读 · 3 评论 -
Linux 内核网络协议栈 ------sk_buff 结构体 以及 完全解释 (2.6.16)
sk_buff 结构体详解原创 2014-03-13 21:11:40 · 40212 阅读 · 7 评论 -
Linux 内核网络协议栈 ------ 数据从接收到ip层
Linux 内核----- 数据从接收到ip层之前原创 2014-03-07 11:33:37 · 7369 阅读 · 0 评论 -
Linux 内核网络协议栈 ----- Linux 内核路由机制(一) (2.6.25)
内核的路由部分是是网络中重要部分,目前在Linux内核中默认的路由查找算法使用的是Hash查找,所以你会看到很多的数据结构是XXX_hash什么之类(例如fn_hash)。Linux内核从2.1开始就支持基于策略的路由,那么什么是基于策略的路由呢?我们一般的最基本的路由转发是考虑IP包的目的地址,但是有些时候不仅仅是这些,还有例如IP协议,传输端口等之类的考虑因素,所以采用所谓基于策略的路由。原创 2014-02-26 18:38:44 · 15335 阅读 · 0 评论 -
Linux 内核网络协议栈 ------ tcp重传数据包 tcp_xmit_retransmit_skb
当知道需要重传数据结的时候执行这个函数:对于函数tcp_xmit_retransmit_queue:需要重传哪些包呢到底?首先是lost、标记的包;然后还需要处理:之前发送过的但是尚未收到确认的包(向前重传),或者新数据,在这两者之间有一个选择/* This gets called after a retransmit timeout, and the initially原创 2014-03-26 19:22:43 · 5614 阅读 · 0 评论