
linux协议栈
文章平均质量分 78
gogly
勤于学习、勤于思考、勤于实践、长期积累
展开
-
Linux路由表的结构与算法分析
路由是网络栈的核心部分。路由表本身的设计很大情度上影响着路由的性能,并且好的设计 能减少系统资源的消耗,这两方面尤其体现在路由表的查找上。目前的内核路由存在两种查找算法,一种为HASH算法,另一种为LC-trie算法,前者是目 前内核使用的缺省算法,而后者更适用在超大路由表的情况,它在这种情况提高查找效率的同时,大大地增加了算法本身的复杂性和内存的消耗。综上,这两种算法 各有其适用的场合,本文转载 2011-06-14 10:46:00 · 1609 阅读 · 1 评论 -
linux XFRM整体框架简单分析
author: jonathan本文档的CopyRight归jonathan所有,可自由转载,转载时请保持文档的完整性。/*----------------------------------------------------------------------------------------------------------------------------*/Linux转载 2011-11-16 19:32:12 · 10851 阅读 · 0 评论 -
IP有效载荷压缩协议(IPComp)
版权声明Copyright(C)TheInternetSociety(1998).AllRightsReserved.摘要本文档描述用于在INTERNET环境中为ip层提供无损耗压缩的协议。1.介绍IP有效载荷压缩是一个减少IP数据报长度的协议。通过压缩数据报,这个协议将在一对通信主机/网关(“节点”)之间提升整体通信性能。倘若节点有足够的计算能力,透过CPU功能或转载 2011-11-15 18:56:21 · 5527 阅读 · 0 评论 -
SKB几个复制函数的区别
1、skb_clone()Skb_clone()函数只是复制sk_buff结构,并不复制skb的数据缓冲区。Clone后的sk_buff结构与原始的sk_buff指向同一数据缓冲区。原始的和clone后的skb描述符的cloned值都会被置1,clone的skb描述符的use转载 2011-09-26 12:16:21 · 10651 阅读 · 0 评论 -
基于linux-2.6.31的IPV6的数据包接收流程分析
static struct packet_type ipv6_packet_type__read_mostly = { .type= cpu_to_be16(ETH_P_IPV6), .func= ipv6_rcv, .转载 2011-08-10 14:34:10 · 5578 阅读 · 0 评论 -
基于linux-2.6.31的IPV6的数据包发送及转发流程分析
发送及转发的流程为:dst_out--->ipv6_output----> ipv6_output 2à ipv6_output_finish或者ip6_forward-àip6_forward_finish-à dst_out --->ipv6_output----> ip转载 2011-08-10 21:32:54 · 6108 阅读 · 0 评论 -
sk_buff结构详解
struct sk_buff可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。 这个结构被网络的不同层(MAC或者其他二层链路协议,三层的IP,四层的TCP或UDP等)使用,并且其中的成员变量转载 2011-08-10 14:32:10 · 963 阅读 · 0 评论 -
linux路由内核实现分析(四)---路由缓存机制
路由缓存机制 rtable结构 struct rtable{ union { struct dst_entry dst; } u; struct flowi fl; struct in_device *idev;转载 2011-06-14 11:06:00 · 7268 阅读 · 0 评论 -
linux路由内核实现分析(三)---路由查找过程
路由查找 //这个函数负责从fib_table中查找fn_key相匹配的fib_node,然后找到相应的fib_info,//将结果存放在fib_result结构中 //传入参数fz_divisor是linux kernel 2.6的变化,在2.4.x中是直接传入key的,而flp参数里面包含了数据包的全部地址信息,传入之后再用目的地址来计算key.static int转载 2011-06-14 11:03:00 · 2359 阅读 · 0 评论 -
linux路由内核实现分析(二)---FIB相关数据结构
FIB结构 用于保存路由规则,路由的查找过程如下:1, 在缓存中搜索路由表项,如果能查到,就直接将对应的一项作为路由规则2, 如果不能查到,就从FIB规则中换算出来,并且在路由缓存中添加表项 fib_table结构 struct fib_table { struct hlist_node tb_hlist; u32转载 2011-06-14 11:03:00 · 4532 阅读 · 0 评论 -
linux网络内核结构
------------------------------------------------------------------------------------------|----------------------------------| 应用层|----------------------------------| BSD So转载 2011-06-14 10:57:00 · 1833 阅读 · 0 评论 -
linux路由内核实现分析(一)----邻居子节点
有三种路由结构: 1,neigh_table{}结构和neighbour{}结构 存储和本机物理上相邻的主机地址信息表,通常称为邻居子节点,指的是和本机相邻只有 一跳的机器,其中neigh_table{}作为数据结构链表来表示neighbour{}表示相邻的机器节点 2,路由规则的存储,判断了一个到达一个网络地址必转载 2011-06-14 10:59:00 · 4243 阅读 · 2 评论 -
IPsec问题一
首先接收一个IPsec包(tunnel模式) 形式如下:IPa + ESP + IPb + L4 经过xfrm_rcv后变成IPb + L4, 其中skb->sp保存的是esp(xfrm-state).,之后交给netif_rx, 如果我没有记错的话,这里x->sel是IPb的信息,不是IPa的信息。 xfrm_state{}的查找,有两个方向: 1)outbound查转载 2011-11-16 19:44:46 · 1694 阅读 · 0 评论