- 博客(10)
- 资源 (10)
- 收藏
- 关注
转载 基于连接跟踪机制的状态防火墙的设计与实现
基于连接跟踪机制的状态防火墙的设计与实现连接跟踪本身并没有实现什么具体功能,它为状态防火墙和NAT提供了基础框架。前面几章节我们也看到:从连接跟踪的职责来看,它只是完成了数据包从“个性”到“共性”抽象的约定,即它的核心工作是如何针对不同协议报文而定义一个通用的“连接”的概念出来,具体的实现由不同协议自身根据其报文特殊性的实际情况来提供。那么连接跟踪的主要工作其实可以总结为:入口处,收到一个数据包后,计算其hash值,然后根据hash值查找连接跟踪表,如果没找到连接跟踪记录,就为其创建一个连接跟踪项;如果
2020-12-29 17:52:29 477
转载 (十)洞悉linux下的Netfilter&iptables:网络地址转换原理之SNAT
源地址转换:SNAT SNAT主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了。它的主要作用是将那些由私网发来的数据包skb的源地址改成防火墙的公网地址A,这是因为目的主机在响应源地址为私网地址的数据包时,私网地址不能在网络上路由的缘故。SNAT仅可以在LOCAL_OUT和POSTROUTING点生效,这也说明了为什么用户空间的iptables命令在配置SNAT规则时只能配置到nat表的OUTPUT和POSTR...
2020-12-29 16:57:26 203
转载 Linux网络报文捕获/抓包技术对比:napi、libpcap、afpacket、PF_RING、PACKET_MMAP、DPDK、XDP(eXpress Data Path)
Table of Contents1.传统linux网络协议栈流程和性能分析协议栈的主要问题针对单个数据包级别的资源分配和释放流量的串行访问从驱动到用户态的数据拷贝内核到用户空间的上下文切换跨内存访问2. 提高捕获效率的技术预分配和重用内存资源数据包采用并行直接通道传递.内存映射.数据包的批处理.亲和性与预取.3. 典型收包引擎3.1 libpcap3.2 libpcap-mmap3.3 PF_RING3.4 PACKET_MMAP
2020-12-29 16:38:28 4232 1
转载 Linux NAT基本流程与实现技巧
基于matches的NATLinux的NAT是基于match的,即在满足一系列条件的前提下执行SNAT或者DNAT,因此要求也就比较宽松,唯一的约束就是路由,即路由动作发生的时候,必须是基于最终的目标IP地址,因此DNAT必须发生在路由之前(对于本机发出的数据包,则在路由之后,然后重新路由),如下图所示附:Netfilter与ip_conntrackNetfilterLinux的协议栈仅仅实现了基本的协议操作,对应TCP/IP标准,Linux的协议栈仅仅实现了一个最小集。其余的所有扩展几乎(
2020-12-29 16:37:40 534
转载 linux 下的带宽、延时、吞吐率、PPS
Linux 网络协议栈是根据 TCP/IP 模型来实现的,TCP/IP 模型由应用层、传输层、网络层和网络接口层,共四层组成,每一层都有各自的职责。应用程序要发送数据包时,通常是通过 socket 接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的 socket 层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。而对于接收网络包时,同样也要经过网络协议逐层处理,不过处理的方向与发送数据时是相反的,也就是从下到上的逐层处理,最后才送到应用程序。网络的速度往往跟用户体验是挂
2020-12-15 12:56:04 2223 1
转载 如何写出让 CPU 跑得更快的代码?
前言代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能。CPU 内部嵌入了 CPU Cache(高速缓存),它的存储容量很小,但是离 CPU 核心很近,所以缓存的读写速度是极快的,那么如果 CPU 运算时,直接从 CPU Cache 读取数据,而不是从内存的话,运算速度就会很快。但是,大多数人不知道 CPU Cache 的运行机制,以至于不知道如何才能够写出能够配合 CPU Cache
2020-12-10 10:07:08 142
转载 桃李春风一杯酒,江湖夜雨十年灯 - 老兵夜话DPDK
20年弹指一挥间。技术在飞速的发展,从最初接触ixp1200 的耳目一新,到如今DPDK, smart NIC的 如火如荼。我也已经从昔日的青葱少年,变成了两鬓微霜的打工人。午夜梦回, 在感慨人生有如逆旅之余,心中也有很多想法不吐不快。前传2000年是网络处理器的黄金时代,Intel在那个时候也有一个Network Processor产品,名为IXP1200,主要是通过可编程的专用引擎来加速网络报文处理。IXP1200/2400/2800本身带有N个微引擎,可供编程。但是编程的难度很大,尤其是在高并
2020-12-10 10:02:40 340
转载 EBPF学习计划
“Super powers have finally come to Linux” — Brendan Gregg目录学习计划 实验环境和相关代码 博文目录 第一阶段学习总结学习计划自从知道了eBPF这项技术后,一直对它十分感兴趣,这几天静下心来作了一个学习计划,准备逐步深入学习,最后希望能有输出,能够给大家讲讲这项“黑科技”。实验环境和相关代码https://github.com/nevermosby/linux-bpf-learning博文目录3篇经典文章翻译.
2020-12-09 14:33:21 847
转载 raw socket 使用 BPF 过滤报文
抓包使用 raw socket 进行网络底层抓包,想必大家都清楚(仔细想想tcpdump原理)。这里不赘述,网上许多资料。注意,网卡需要开启混杂模式、其次程序运行需要root权限。#include <stdlib.h>#include <stdio.h>#include <sys/socket.h>#include <net/if_arp.h>#include <net/if.h>#include <netinet...
2020-12-04 13:39:50 1286
转载 图解Linux网络包接收过程
以下文章来源于开发内功修炼,作者张彦飞allen开发内功修炼作者有互联网大厂9年多的后端开发工作经验。在本公众号中,逐步把这些年工作中对于底层的一些思考总结出来分享给大家,希望我们每一位开发同学都能够做到:了解每一比特,用好每一纳秒。因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无..
2020-12-03 19:11:45 556 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人