2013年8月30日

Linux内存初始化

摘要: start_kernel -> setup_arch 在这个函数中我们主要看这几个函数.machine_specific_memory_setupmax_low_pfn = setup_memory();paging_initzone_sizes_init然后我们还要看build_all_zonelists();mem_init();//处理内存图,最后保存在e820中char * __init machine_specific_memory_setup(void){ ...... who = "BIOS-e820"; // #define E820_MAP_NR ( 阅读全文

posted @ 2013-08-30 11:46 SuperKing 阅读(1783) 评论(0) 推荐(0) 编辑

linux PCI设备初始化过程

摘要: linux PCI设备初始化过程start_kernel->rest_init 这个函数会启动一个核心线程0, 核心线程然后调用init -> do_basic_setup.然后我们开始看下面的过程void __init driver_init(void){ devices_init(); buses_init(); classes_init(); ...... platform_bus_init(); system_bus_init(); ......}//在drivers/base/core.cint __init devices_init... 阅读全文

posted @ 2013-08-30 11:35 SuperKing 阅读(4049) 评论(0) 推荐(0) 编辑

Linux网络地址转换分析

摘要: Linux网络地址转换分析地址转换用来改变源/目的端口,是netfilter的一部分,也是通过hook点上注册相应的结构来工作.Nat注册的hook点和conntrack相同,只是优先级不同,数据包进入netfilter之后先经过conntrack,再经过nat.而在数据包离开netfilter之前先经过nat,再经过conntrack.在ip_conntrack结构中有为nat定义的一个nat结构,为什么把这个结构放在ip_conntrack里呢。简单的说,对于非初始化连接的数据包,即后续的数据包,一旦确定它属于某个连接,则可以直接利用连接状态里的nat信息来进行地址转换;而对于初始数据包, 阅读全文

posted @ 2013-08-30 10:40 SuperKing 阅读(1492) 评论(0) 推荐(0) 编辑

Linux内核中流量控制

摘要: linux内核中提供了流量控制的相关处理功能,相关代码在net/sched目录下;而应用层上的控制是通过iproute2软件包中的tc来实现,tc和sched的关系就好象iptables和netfilter的关系一样,一个是用户层接口,一个是具体实现.流控包括几个部分: 流控算法, 通常在net/sched/sch_*.c中实现, 缺省的是FIFO, 是比较典型的黑盒模式, 对外只看到入队和出对两个操作;流控结构的操作处理; 和用户空间的控制接口, 是通过rtnetlink实现的。以下内核代码版本为2.6.24.[数据结构]流控处理对外表现是一个黑盒,外部只能看到数据入队和出队,但内部队列是如 阅读全文

posted @ 2013-08-30 10:28 SuperKing 阅读(5302) 评论(0) 推荐(0) 编辑

IPSEC实现

摘要: IPSEC介绍与实现一、介绍IPSec 协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议 Authentication Header(AH)、封装安全载荷协议Encapsulating Security Payload(ESP)、密钥管理协议Internet Key Exchange (IKE)和用于网络认证及加密的一些算法等。IPSec 规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源认证、数据加密等网络安全服务。1、安全特性IPSec的安全特性主要有:·不可否认性 "不可否认性" 阅读全文

posted @ 2013-08-30 10:05 SuperKing 阅读(6564) 评论(0) 推荐(0) 编辑

ip_conntrack 实现

摘要: 启动时首先在ip_conntrack_standalone.c中调用static int __init ip_conntrack_standalone_init(void) //proc相关部分省略{ ...... int ret = 0; ret = ip_conntrack_init(); //大部分初始化工作 if (ret (1024 * 1024 * 1024 / PAGE_SIZE)) //内存大于1G ip_conntrack_htable_size = 8192; if (ip_conntrack_htable_si... 阅读全文

posted @ 2013-08-30 09:49 SuperKing 阅读(1976) 评论(0) 推荐(0) 编辑

导航