TCP收包流程

2880阅读 0评论2014-02-20 humjb_1983
分类:LINUX


=============================================================
 TCP收包流程
=============================================================

 
网卡收包中断

  网卡驱动处理中断netif_rx(非NAPI)-- 使用softnet_data->input_pkt_queue公共队列,用backlog_dev替换dev
    NAPI使用设备内存,驱动程序使用自定义的poll方法从设备(ring buffer)中直接取帧。不调用neif_rx方法直接走下面的流程
     netif_rx_schedule
      触发软中断

软中断处理-->net_rx_action
dev->poll 
  process_backlog(非NAPI),从softnet_data->input_pkt_queue公共队列中取数据处理
  驱动自定义的poll函数,从设备(ring buffer)中直接取帧

netif_receive_skb
ip_rcv
  ip_rcv_finish
    dst_input
      skb->dst->input(skb)=ip_local_deliver或ip_forward
        ip_local_deliver
          ip_local_deliver_finish
            ipprot->handler(skb)=tcp_v4_rcv
              tcp_v4_rcv
                tcp_v4_do_rcv
                  tcp_rcv_established
        ip_forward

 

上一篇: Intel虚拟化相关技术(网络)
下一篇:CPU相关概念