摘要:
搭一个l2tp隧道,拓扑如下 两台机器是CentOS5,内核选上CONFIG_LEGACY_PTYS选项后自己编译的,l2tp是已经停更的l2tpd-0.69。先在LS上配置IP地址,iptables规则,这些不在多说,直接看l2tpd的配置文件 ;/etc/l2tpd/l2tpd.conf [gl 阅读全文
摘要:
花了几天看了一下ppp/pppoe有关的东西,画了一下用户态pppoe收发包的示意图。 阅读全文
摘要:
拓扑如下 基本的IP配置就不说了,直接写重点,在LS上配置 #配置SA ip xfrm state add src 194.168.10.4 dst 194.168.10.5 proto esp spi 0x00004005 mode tunnel auth md5 0xa87ff679a2f3e7 阅读全文
摘要:
我没有太多的物理服务器,实验环境只能用四台装了linux的虚拟机来模拟,用户层工具是openswan。大致拓扑如下(我有点懒,公网地址我用的194.168.10.0/24,别和192.168.xx.xx弄混了) LS(left server)的公网地址是194.168.10.4,私网地址是192.1 阅读全文
摘要:
看linux内核协议栈的时候看到tcp_sendmsg函数,看起来并不难理解,但是申请skb的时候主buff大小让我很困惑。我以前一直以为会根据sack/ip option/pmtu等计算一个mss,然后申请主buff大小为mss的skb。看到代码我发现我想的太简单了,linux有一个特性就是推迟分 阅读全文
摘要:
不知道原帖,我是从这里看到了,解决了迷惑我很久的疑问,抄过来。 看见noble_shi兄弟"关于net_rx_action函数的若干问题"贴中关于pt_prev的问题, 本来想在论坛上找到一个相关的帖子的链接告诉他。但是发现咱们论坛上关于pt_prev的讨论要么没有说明,要么理解的偏差,甚至是错误。 阅读全文
摘要:
记录一下linux数据包从网卡进入协议栈的过程,不涉及驱动,不涉及其他层的协议处理。 内核是如何知道网卡收到数据的,这就涉及到网卡和内核的交互方式: 轮询(poll):内核周期性的检查网卡,查看是否收到数据。优点:数据包非常多的时候,这种处理方法会非常快速有效。缺点:数据包少的时候会CPU总是轮询却 阅读全文
摘要:
做个笔记 linux通过pcibios_scan_root函数以深度优先的算法搜索整个pci架构,建立一个树形的链表,如下: 之后再调用pci_bus_add_devices函数把所有搜索到的pci_dev链接到pci_bus_type的klist_devices字段下。当设备驱动通过pci_reg 阅读全文
摘要:
先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的cache里,之后读写这块数据都是在cache里做的。 linux本来有伙伴系统分配内存页,为了加快单个内存页的分配linux在每个node 阅读全文
摘要:
内核刚开始启动的时候如果一步到位写一个很完善的内存管理系统是相当麻烦的。所以linux先建立了一个非常简单的临时内存管理系统bootmem,有了这个bootmem就可以做简单的内存分配/释放操作,在bootmem的基础上再做一个完善的内存管理系统就比较简单了。bootmem的本质就是位图,一个bit 阅读全文