自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

badman250的专栏

分享一个Linux性能诊断网站:http://linuxperformance.top/ ,访问有收获

  • 博客(29)
  • 资源 (107)
  • 收藏
  • 关注

原创 netfilter和iptables的实现机制

随着计算机网络和Internet普及,计算机很久之前就开始遭受各种入侵了。因此为了阻止入侵,就产生了网络防火墙以及网络数据分析的需求。而这个netfilter就是在linux系统中来实现防火墙功能。netfilter是Linux 2.4.x引入的一个Linux内核框架,提供一整套的hook函数的管理机制。可以根据动态定义的条件来过滤和操作分组。从防火墙到网络通信数据的详细分析,到分组过滤器,都可以...

2018-03-31 18:11:39 1710

原创 tcpdump源码分析(4)——使用详细

最后我们来看下tcpdump的使用详细,不过这个就是使用指南了,其实使用tcpdump –help看到的内容更加的官方和专家,此处不过是罗列一些常用的仅当参考罢了。1.1.1.1  过滤关键字第一种:关于类型,主要包括host,net,port等。第二种:关于传输方向,主要包括src , dst ,dst or src, dst and src等。第三种:关于协议,主要包括fddi,ip,arp,...

2018-03-28 22:38:08 810

原创 tcpdump源码分析(3)——android系统移植(tcpdump,gdb,netstat)

在android系统中编译运行tcpdump有两个方法,一个是直接在android系统中进行源码编译;另一个是在x86系统上进行交叉编译,然后将编译生成的二进制文件复制到android系统中。本文采用第二种方法。先编译libpcap,下载地址如下,其实是和tcpdump在同一页面上的:http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz将下载得到的...

2018-03-28 22:37:06 934

原创 tcpdump源码分析(2)——抓包原理

本篇我们从总体看下tcpdump工具的抓包原理,通过学习了解并掌握其实现的机制,为后续进一步底层操作做准备。1.1.1.1  如何实现先来看看包传递过来的流程,如下图。包从网卡到内存,到内核态,最后给用户程序使用。我们知道tcpdump程序运行在用户态,那如何实现从内核态的抓包呢?  这个就是通过libpcap库来实现的,tcpdump调用libpcap的api函数,由libpcap进入到内核态到...

2018-03-28 22:35:40 11398

原创 tcpdump源码分析(1)——介绍

本系列会分析网络诊断工具tcpdump。使得大家(其实主要是针对自己本人)对tcpdump抓包原理和机制有深入认识,并掌握如何对其进行功能扩展。同时能起到细化linux网络协议栈知识点的功效。            第一篇从整体上来进行介绍,以及源码出处。         Tcpdump由美国的Lawrence Berkeley National Laboratory开发。使用了libpcap,独...

2018-03-28 22:30:06 3706

原创 Linux per-cpu机制

Linux操作系统,特别是针对SMP或者NUMA架构的多CPU系统的时候,描述每个CPU的私有数据的时候,Linux操作系统提供了per_cpu机制。 1.1     定义per_cpu机制就是让每个CPU都有自己的私有数据段,便于保护与访问。相关宏定义在include/linux/percpu-defs.h文件中:/*      * Normal declaration and definiti...

2018-03-26 14:41:59 3152

原创 Ethtool工具源码剖析

Ethtool工具源码剖析ethool是一个实用的工具,用来给系统管理员以大量的控制网络接口的操作。可以用来控制接口参数,速度,介质类型,双工模式,DMA环设置,硬件校验和,LAN唤醒操作等。本人经常用于来观测物理链路层的链接状态,用于判断网线是否正常,不用去机房看网卡亮没亮灯了。            ethtool的版本通过如下命令进行查看:# ethtool --versionethtool...

2018-03-25 12:25:46 2237

原创 ifconfig工具源码分析

ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。同netstat一样,ifconfig源码也位于net-tools中。源码位于net-tools工具包中,这是linux网络的基本工具包,此外还有arp,hostname,route等命令。  项目链接:http://net-tools.sourcefo...

2018-03-24 22:45:10 3748

原创 netstat工具源码剖析

netstat工具源码剖析netstat是监控TCP/IP网络的工具,可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。网上关于netstat工具使用的文章多如牛毛,但是针对工具剖析的却没有,一篇难找。古人说:工欲善其事必先利其器。那么我们一起来分析吧。netstat的源码位于net-t...

2018-03-23 19:58:51 3459

原创 e1000网络驱动分析

e1000网络驱动分析e1000是intel千兆以太网卡的驱动源码。官方关于驱动的使用可以参考如下链接。https://www.intel.cn/content/www/cn/zh/support/articles/000006866/network-and-i-o/ethernet-products.html本文主要结合e1000驱动的源码进行分析. 版本是#define DRV_VERSION...

2018-03-21 18:17:17 7317

原创 linux中pci设备知识

linux中pci设备知识  Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。PCI(Periheral Component Interconnect)有三种地址空间:PCI I/O空间、PCI内存地址空间和PCI配置空间。其中,PCI I/O空间和PCI内存地址空间由设备驱动程序使用,而PCI配置空间由Linux PCI初始化代码使用,用于配置PCI设备,比如中...

2018-03-21 18:15:04 2897

原创 linux内核网络中RPS/RFS原理

linux内核网络中RPS/RFS原理  在上篇中,从整体上讲解了网络软中断的机制和优化,但是在RPS和RFS处并没有彻底讲清楚,只是描述了其整体功能和涉及初衷。这篇,进一步深度并搞明白RPS和RFS机制。1.1.1 自带irqbalance瓶颈基于简单的中断负载均衡(如系统自带的irqbalance进程)可能会弄巧成拙。因为其并不识别网络流,只识别到这是一个数据包,不能识别到数据包的元组信息。在...

2018-03-20 19:58:13 10524 2

原创 linux网络软中断softirq底层机制及并发优化

 linux网络软中断softirq底层机制及并发优化在实际生产系统环境中,我们经常碰到过高的软中断导致CPU的si负载偏高,从而导致性能服务器性能出现瓶颈。而这种瓶颈出现的时候往往是在业务高峰期,此时很多优化手段不敢轻易去上,只能祈祷平稳度过。但是如果能从底层去了解网络软中断,就可以在事前将优化做充足。1.1.1 软中断软中断(softirq)表示可延迟函数的所有种类, linux上使用的软中断...

2018-03-20 19:55:45 4897

原创 start_kernel启动函数

start_kernel启动函数机器上电后,会进行BIOS自检,之后是系统引导,内核加载,最后是初始化阶段。我们这里主要关心的是初始化阶段(start_kernel)的事情,而从上电到初始化之前的事情直接忽略了。            start_kernel函数, 也是内核启动函数,位于init/main.c文件中,该函数中调用的函数都是一个大分支。asmlinkage void __init ...

2018-03-19 22:07:11 769

原创 Linux协议栈(10)——网络驱动

 Linux协议栈(10)——网络驱动网络驱动区别于其他驱动(例如块驱动)的一个方面是:块驱动的运行只是响应来自内核的请求,但是网络驱动从外边异步地接收报文。Linux内核的网络子系统设计成完全独立于协议的。            相关内容可以参考:linux网络驱动初始化module_init函数跟踪1.1.1.1  注册网络设备函数alloc_netdev分配一个新的net_device实例。...

2018-03-18 16:48:19 725

原创 Linux协议栈(9)——应用层实现

Linux协议栈(9)——应用层实现一般Linux开发程序员来看,外部的设备都是普通文件,都可以通过读写访问来实现发送和接收数据包。但是网卡有些意外,因为每个层次使用了不同的通信协议,建立连接需要指定许多选项,不能通过打开设备来完成这些任务。后来就有了套接字的特殊结构,具体怎么来的就不说了就是一个美国政府和伯克利分校的项目中诞生的,现在已经成为了工业标准,在POSIX标准中也定义了套接字,当然li...

2018-03-18 16:40:29 998

原创 Linux协议栈(8)——传输层实现

Linux协议栈(8)——传输层实现ip_local_deliver负责分发IP分组传输的数据内容。基于IP的主要传输协议分别是UDP和TCP。处理函数分别是udp_rcv和tcp_rcv。1.1.1.1  接收1.1.1.1.1          tcp接收函数tcp_v4_rcv()定义在net/ipv4/tcp_ipv4.c中负责接收来自网络层的TCP数据包。相比UDP,TCP在内核中实现要...

2018-03-18 16:39:22 1537

原创 Linux协议栈(7)——网络层实现

网络层具体就是IP协议层,处理发送和接收数据外,还需要进行转发和路由分组。在查找最佳路由并选择适当网卡的时候也会涉及对底层地址族的处理,例如MAC地址。ip头数据结构定义在:include/uapi/linux/ip.h。struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD)        __u8    ihl:4,                ...

2018-03-18 16:32:16 912

原创 Linux协议栈(6)——初始化及链路层实现

这篇主要学习链路层在内核协议栈的实现,包括初始化、注册以及接收发送,会涉及相关函数和代码所在位置。我们知道以太网不仅可以传输IP分组,还可以传输其他协议的分组,接收系统必须能够区分不同的协议类型,以便将数据转发到正确的例程进一步处理。因为分析数据并查明所用传输协议比较耗时,所以在以太网的帧首部包含了一个标识符,ip数据包的以太类型为0x0800,存在在以太网14字节报头中的前两个字节中。(定义在i...

2018-03-18 16:28:09 1174

原创 Linux协议栈(4)——sk_buff及代码 Linux协议栈(4)——sk_buff及代码

sk_buff结构可能是网络代码中最重要的数据结构。代表已接收或正要传输的数据报。定义在include/linux/skbuff.h头文件中。由变量堆(heap)组成。用于管理网络数据包。操作sk_buff的函数定义在net/core/skbuff.c中。当网络包被内核接收处理时,底层协议的数据被传送高层,当数据传送时,过程反过来。sk_buff在网络实现层交换数据而不用拷贝来或去数据包,可以显著...

2018-03-18 15:29:22 1466 1

原创 Linux协议栈(5)——net-device及代码

net_device结构体,存储着网络设备的所有信息,每个设备都有这种结构。所有设备的net_device结构放在一个全局变量dev_base所有全局列表中。和sk_buff一样,结构也是相当庞大的。结构的字段可以分为:n   配置(configuration)n   统计数据(Statistics)n   设备状态(Device status)n   列表管理(List mana...

2018-03-18 15:25:43 1919

原创 Linux协议栈(3)——接收流程及函数

Linux协议栈(3)——接收流程及函数本章来看下,数据是如何从网络中接收并最后到达应用程序的。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息。1.1.1.1  链路层包到达机器的物理网卡时候触发一个中断,并将通过DMA传送到位于 linux kernel 内存中的rx_ring。中断处理程序分配 skb_buff 数据结构,并将接收到的数据帧从网络适配器I/O端...

2018-03-17 23:59:19 1536

原创 Linux协议栈(2)——发送流程及函数

Linux协议栈(2)——发送流程及函数本章会一步一步的分析,在linux内核中,数据是如何从网络中接收并最后到达应用程序的。用户数据的发送流程如下图所示,不管是tfp,telnet,http都是类似的。当然我们在使用应用的时候,根本不会关注到这些加头的措施,因为要么是程序要么是内核帮助我们完成了。而我们现在所做的就是层层拨开他们去理解这协议栈的整个过程。发送过程中数据的变化如下:1.1.1.1 ...

2018-03-17 22:11:14 1624

原创 单独编译驱动模块

单独编译驱动模块路径在drivers下,找到对应驱动如net,例如:/usr/src/linux-source-4.4.0/linux-source-4.4.0/drivers/net/ethernet/realtek然后在Makefile中增加如下代码:KERN_DIR = /usr/src/linux-headers-4.4.0-63-genericall: make -C $(KERN_DI...

2018-03-16 12:00:01 2825

原创 Linux协议栈(1)——协议介绍

Linux协议栈(1)——协议介绍本系列材料是关于Linux网络内核协议栈的,总体上将其分10个文章,主要目的是简明扼要的描述Linux协议栈在内核中的实现,从总体上掌握linux网络协议栈。因为操作系统中的网络子系统非常庞大,加上本系列材料有限,所以路由系统、邻接子系统、无线系统、桥接等不会涉及,后续有机会再系列介绍。材料先会介绍网络相关相关的TCP/IP协议族知识(本章),然后从总体上观测包的...

2018-03-15 22:46:39 7964

原创 网络驱动开发样例snull详解(基于3.10.0)

网络驱动开发样例snull详解(基于3.10.0)  本章素材为ldd3书中的网络驱动snull部分。由于现在内核的更新,导致其在最新的内核中无法编译该网络驱动,需要针对修改,顾为此文(内核3.10.0)。另外,网络驱动的开发对理解linux内核网络协议栈有较大帮助,文中涉及设备虽为虚拟设备,但提供了网络驱动必备的知识。1.1.1 snull编译问题1、CFLAGS变为EXTRA_CFLAGS2、...

2018-03-15 22:00:57 910

原创 linux网络驱动初始化module_init函数跟踪

  module_init函数对做驱动开发的同学是在太熟悉了,但是关于底层的知识可能大家有些不愿去了解,而其中知识对于网络初始化也直接相关,所以先将此分享。在驱动程序中有module_init函数,该函数定义在文件include/linux/module.h中(以前好像在include/linux/init.h中),如下。#define module_init(x)  __initcall(x);...

2018-03-12 16:50:39 608

原创 linux系统调用实现机制详解(内核4.14.4)

linux系统调用实现机制详解(内核4.14.4)https://yq.aliyun.com/articles/522766?spm=a2c4e.11155435.0.0.25d33312xbNbM51.1     linux系统调用介绍linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。和普通库函数调用相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用...

2018-03-09 16:18:12 2618 1

原创 Linux中断原理及绑定和优化

Linux中断原理及绑定和优化1、中断处理 网线收到帧(包处理后为帧)后,会将帧拷贝到网卡内部的FIFO缓冲区,然后触发硬件中断。硬件中断函数属于网卡驱动部分。(中断处理函数会在一个CPU上运行,如果绑定了一个核就在绑定的核上运行。)  硬中断处理函数通过构建sk_buff,把frame从网卡FIFO拷贝到内存skb中,接下来交给内核处理(调用软中断)。因为网卡上接收网络数据包的缓存大小固定,而且...

2018-03-05 17:12:13 917

HammerDB作者优化指南

HammerDB作者优化指南

2018-07-21

DB2_docview

WebSphere Application Server - Service Integration Bus Messaging Engine Data Store Connectivity Problems and Solutions

2018-07-21

Oracle-NUMA绑定脚本

Oracle-NUMA绑定脚本Oracle-NUMA绑定脚本Oracle-NUMA绑定脚本Oracle-NUMA绑定脚本Oracle-NUMA绑定脚本Oracle-NUMA绑定脚本

2018-07-21

HP Superdome X扩展性

HP Superdome X扩展性HP Superdome X扩展性HP Superdome X扩展性HP Superdome X扩展性HP Superdome X扩展性HP Superdome X扩展性

2018-07-21

Linux块层技术剖析-v0.1

Linux块层技术剖析-v0.1Linux块层技术剖析-v0.1Linux块层技术剖析-v0.1Linux块层技术剖析-v0.1Linux块层技术剖析-v0.1Linux块层技术剖析-v0.1

2018-07-21

Infrastructure_Matters_POWER8_vs_XEON_x86-IBM官网引导的报告-中文

Infrastructure_Matters_POWER8_vs_XEON_x86-IBM官网引导的报告-中文

2018-07-19

oracle数据库大会6共6个

oracle数据库大会6共6个oracle数据库大会6共6个oracle数据库大会6共6个oracle数据库大会6共6个oracle数据库大会6共6个oracle数据库大会6共6个oracle数据库大会6共6个

2018-07-19

oracle数据库大会4

oracle数据库大会4共6个材料oracle数据库大会4共6个材料oracle数据库大会4共6个材料oracle数据库大会4共6个材料oracle数据库大会4共6个材料oracle数据库大会4共6个材料oracle数据库大会4共6个材料

2018-07-19

oracle数据库大会3

oracle数据库大会3共6个材料oracle数据库大会3共6个材料oracle数据库大会3共6个材料oracle数据库大会3共6个材料

2018-07-19

oracle数据库大会2

oracle数据库大会2oracle数据库大会2oracle数据库大会2oracle数据库大会2共6个部分

2018-07-19

oracle数据库大会材料1

oracle数据库大会材料,共6个。oracle数据库大会材料,共6个。oracle数据库大会材料,共6个。oracle数据库大会材料,共6个。oracle数据库大会材料,共6个。oracle数据库大会材料,共6个。

2018-07-19

CON1101_Crawford_jr-CON1477_Hu_ExadataMAA-Best-Practice_v2_EN_

CON1101_Crawford_jr-CON1477_Hu_ExadataMAA-Best-Practice_v2_EN_CON1101_Crawford_jr-CON1477_Hu_ExadataMAA-Best-Practice_v2_EN_CON1101_Crawford_jr-CON1477_Hu_ExadataMAA-Best-Practice_v2_EN_

2018-07-19

459334-oracle_vm3-application-driven_virtualization

459334-oracle_vm3-application-driven_virtualization459334-oracle_vm3-application-driven_virtualization459334-oracle_vm3-application-driven_virtualization459334-oracle_vm3-application-driven_virtualization

2018-07-19

129255-oracle_timesten_in-memory_database

129255-oracle_timesten_in-memory_database129255-oracle_timesten_in-memory_database129255-oracle_timesten_in-memory_database129255-oracle_timesten_in-memory_database

2018-07-19

SPECjEnterprise 2010 Performance Update

SPECjEnterprise 2010 Performance UpdateSPECjEnterprise 2010 Performance UpdateSPECjEnterprise 2010 Performance UpdateSPECjEnterprise 2010 Performance Update

2018-07-19

oracle循环插入

oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入oracle循环插入

2018-07-19

SQL Server健康查询

SQL Server健康查询SQL Server健康查询SQL Server健康查询SQL Server健康查询SQL Server健康查询SQL Server健康查询SQL Server健康查询

2018-07-19

HammerDB测试TPC-H

HammerDB测试TPC-HHammerDB测试TPC-HHammerDB测试TPC-HHammerDB测试TPC-HHammerDB测试TPC-HHammerDB测试TPC-H

2018-07-19

HP ATX性能套件

HP ATX性能套件HP ATX性能套件HP ATX性能套件HP ATX性能套件

2018-07-19

华为高性能服务器DB2技术交流材料

基于IBM DB2、WAS的SPECvirt解决方案测试指导

2018-07-19

甲骨文智慧城市解决方案

甲骨文智慧城市解决方案甲骨文智慧城市解决方案甲骨文智慧城市解决方案

2018-07-19

智慧城市案例、材料

智慧城市案例、材料智慧城市案例、材料智慧城市案例、材料智慧城市案例、材料智慧城市案例、材料智慧城市案例、材料智慧城市案例、材料

2018-07-19

企业入云材料案例

企业入云材料案例

2018-07-19

MRD_Early_Bird_Training

MRD_Early_Bird_TrainingMRD_Early_Bird_TrainingMRD_Early_Bird_TrainingMRD_Early_Bird_Training

2018-07-19

去IOE案例、方案

去IOE案例、方案去IOE案例、方案去IOE案例、方案去IOE案例、方案去IOE案例、方案去IOE案例、方案

2018-07-19

大数据数据质量

大数据数据质量大数据数据质量大数据数据质量大数据数据质量大数据数据质量大数据数据质量大数据数据质量大数据数据质量大数据数据质量

2018-07-19

oracle-实时决策(In-memory)-案例-材料

oracle-实时决策(In-memory)-案例-材料oracle-实时决策(In-memory)-案例-材料oracle-实时决策(In-memory)-案例-材料oracle-实时决策(In-memory)-案例-材料oracle-实时决策(In-memory)-案例-材料

2018-07-19

DWGL数据仓库全球领导课程

DWGL数据仓库全球领导课程DWGL数据仓库全球领导课程DWGL数据仓库全球领导课程DWGL数据仓库全球领导课程DWGL数据仓库全球领导课程DWGL数据仓库全球领导课程

2018-07-19

Exadata-的核心进程-SHOUG成员Steven.Lee_.pdf

Exadata-的核心进程-SHOUG成员Steven.Lee_.pdfExadata-的核心进程-SHOUG成员Steven.Lee_.pdfExadata-的核心进程-SHOUG成员Steven.Lee_.pdfExadata-的核心进程-SHOUG成员Steven.Lee_.pdfExadata-的核心进程-SHOUG成员Steven.Lee_.pdf

2018-07-19

DTCC2016中国数据库技术大会会议全部材料

DTCC2015中国数据库技术大会会议全部材料DTCC2015中国数据库技术大会会议全部材料DTCC2015中国数据库技术大会会议全部材料

2018-07-19

DTCC2015中国数据库技术大会会议全部材料

DTCC2015中国数据库技术大会会议全部材料DTCC2015中国数据库技术大会会议全部材料DTCC2015中国数据库技术大会会议全部材料

2018-07-19

tesseract-ocr-setup-4.0.0.zip

tesseract-ocr-setup-4.0.0,解压密码123456

2021-08-01

Modern Microprocessors - A 90-Minute Guide!.pdf

处理器90分钟公开教程

2019-11-18

RDMA编程用户手册-官方中文版

因为工作需要,将这个 Mellanox 的编程用户手册翻译成了中文,便于大家 学习参考。其中第一章和第二章参考了网络上的一些已有翻译,并做了部分纠 错。其他借助了 google 翻译。发布时候我会同时上传英文原版和翻译版,以便 纠错。

2019-03-23

multitenant多租户

multitenant多租户 multitenant-wp-12c-1949736.pdf

2018-08-10

SPECVirt极限调优

SPECVirt极限调优

2018-07-24

09 SYBASE官方文档合集

09 SYBASE官方文档合集09 SYBASE官方文档合集09 SYBASE官方文档合集09 SYBASE官方文档合集09 SYBASE官方文档合集

2018-07-24

Linux虚拟文件系统全面剖析——打开、读、写逻辑v0.1

Linux虚拟文件系统全面剖析——打开、读、写逻辑v0.1Linux虚拟文件系统全面剖析——打开、读、写逻辑v0.1Linux虚拟文件系统全面剖析——打开、读、写逻辑v0.1Linux虚拟文件系统全面剖析——打开、读、写逻辑v0.1Linux虚拟文件系统全面剖析——打开、读、写逻辑v0.1

2018-07-24

db2perfsupport使用指南

db2perfsupport使用指南db2perfsupport使用指南db2perfsupport使用指南db2perfsupport使用指南db2perfsupport使用指南

2018-07-19

Linux NUMA 进化

Linux NUMA 进化Linux NUMA 进化Linux NUMA 进化Linux NUMA 进化Linux NUMA 进化

2018-07-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除