因为ifconfig是命令,代码位于busybox,不过我们在内核的documentation目录下找到了ifconfig介绍,代码介绍文件位于:
接前面这个写起,比较过linux kernel vxlan device和ovs vxlan的性能,很好奇ovs vxlan是怎么实现的,linux kernel vxlan device是用如下命令创建的。
今天分享一篇经典Linux协议栈文章,主要讲解Linux网络子系统,看完相信大家对协议栈又会加深不少,不光可以了解协议栈处理流程,方便定位问题,还可以学习一下怎么去设计一个可扩展的子系统,屏蔽不同层次的差异。
这里深度理解一下在Linux下网络包的接收过程,为了简单起见,我们用udp来举例,如下:
正如我在朋友圈里所说的,最近我又对网络虚拟化技术产生了浓厚的兴趣。迫切想搞明白在 Docker 等虚拟技术下,网络底层是如何运行的。
ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。
Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题。 跟踪探索了一段时间的源代码后,我写下了这篇总结,希望在 Linux 无线网络的工作原理上,读者能从这篇文章获得一个具有帮助性的概览。
linux下设备驱动都有一套标准的结构,字符设备,块设备,网络设备都是自己的一套框架。编写驱动只需要把内核的框架搞清楚,然后照着结构填入参数,注册进内核,在应用层就可以按照标准的形式调用了。 对于网络设备而言,主要目的就是网络数据的收发,编写驱动时将linux网络设备驱动里的接口与实际网卡硬件的操作接口对应上,应用层就可以操作网卡完成网络通信了。底层驱动里编写网卡驱动与单片机一样。
/*接下来的几节分析Linux网络*/ /**首先: 分析Linux网络子系统的构成,以及Linux网络子系统的作用*/ /*Linux网络子系统结构图*/ 📷 /*从上图可以看出: 用户空间有: 应用层 内核空间包含的有: 系统调用接口: 为应用程序提供访问网络子系统的统一方法 协议无关接口: 提供通用的方法来使用传输层协议 网络协议栈: 实现具体的网络协议
因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对网络底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。
因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。
使用NDOUtils将Nagios监控信息存入MySQL 1.NDOUtils安装需求 nagios mysql cpan DBI #非必需 cpan DBD::mysql #非必需 2.关联mysql头文件和库 不做关联可能在config或make时出错 ln -s /opt/mysql/include/* /usr/include/ ln -s /opt/mysql/lib/* /usr/lib/ echo '/usr/lib' >> /etc/ld.so.conf ldconfig -v 3.安
半年前我以源码的方式描述了网络包的接收过程。之后不断有粉丝提醒我还没聊发送过程呢。好,安排!
Nagios:安装方法:http://www.linuxidc.com/Linux/2014-01/94658.htm
前几天在看Linux内核源码时,发现一个net_device设备框架的一个问题,以至于upstream的内核源码中,至少有12个设备驱动和虚拟设备存在内存泄漏的风险。
接下来启动MySql,对MySql进行配置 service mysqld start
SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互通信。
网络设备不同于字符设备和块设备,并不对应于/dev目录下的文件,应用程序通过 socket 完成与网络设备的交互,在网络设备上并不体现”一切皆文件”的设计思想。
先将当前的nagios2.9备份 cd /usr/local cp -r nagios nagios2.9 cd /etc/init.d/ cp nagios nagios2.9 升级(从2.9到3.0.3) 下载nagios-3.0.3 首先大致的看一下里面的两篇文章 whatsnew.html和upgrading.html 介绍了新版的特点和升级方法 然后开始升级工作 解压缩后执行 ./configure --with-command-group=nagios make all make install 然后验证 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 报两个warning和一个critical 两个warning是:downtime_file 和 comment_file这两个文件已经不在使用,将他们的内容添加到state_retention_file这个文件的后面 一个critical是:434行有错误,变量不能识别 解决两个warning的方法如下: 先将nagios.cfg中comments 和downtime变量注释掉 # COMMENT FILE # This is the file that Nagios will use for storing host and service # comments. #comment_file=/usr/local/nagios/var/comments.dat # DOWNTIME FILE # This is the file that Nagios will use for storing host and service # downtime data. #downtime_file=/usr/local/nagios/var/downtime.dat 查找state_retention_file=/usr/local/nagios/var/retention.dat 然后执行 cd /usr/local/nagios/var cat comments.dat >>retention.dat cat downtime.dat >>retention.dat 解决critical的方法如下 注释掉434行的#check_result_buffer_slots=4096 这个变量已经不在使用了。 然后再验证启动nagios就没问题了 需要说明:从2.x升级到3.x还有这样一点要注意 Extended host and extended service definitions have been deprecated. They are still read and processed by Nagios, but it is recommended that you move the directives found in these definitions to your host and service definitions, respectively. 我配置的有extended service,但是里面的配置信息是nagios grapher自动生产的。况且3.x是可以读的,只是推荐写到service定义中而已。我这里并没有按照这条的建议。没对原来的配置做修改。 Nagvis启动故障的排查 更新nagios之后 启动nagvis需要的NDO组件 /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 提示Could not bind socket: Address already in use 查看/usr/local/nagios/etc/ndo2db.cfg 有这样的内容 # SOCKET TYPE # This option determines what type of socket the daemon will create # an accept connections from. # Value: # unix = Unix domain socket (default) # tcp = TCP socket socket_type=unix #socket_type=tcp socket是unix类型的(是一个sock文件),而不是tcp类型的(tcp端口) 原来是/usr/local/nagios/var/ndo.sock还存在(因为ndo是使用kill命令杀掉进程的) 所以删掉这个.sock文件即可 运行/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 启
在开发过程中,遇到一个鬼畜的问题,在DO的某个成员上添加@Deprecated注解之后,通过ProtoStuff反序列化得到的DO中,这个成员一直为null;花了不少时间才定位这个问题,特此记录一下
centreon是开源的IT监控软件,由法国人于2003年开发,最初名为Oreon,并于2005年正式更名为centreon。 centreon作为nagios的分布式监控管理平台,其功能之强大,打造了centreon在IT监控方面强势地位,它的底层使用nagios监控软件,nagios通过ndoutil模块将监控数据写入数据库,centreon读取该数据并即时的展现监控信息,通过centreon可以简单地管理和配置所有nagios,因此,完全可以使用centreon轻易的搭建企业级分布式IT基础运维监控系统。
https://whereisk0shl.top/post/2016-10-23-1
SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。
一,安装nagios useradd nagios必须的,要不make install时过不去 wget http://cdnetworks-kr-1.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.4.1/nagios-3.4.1.tar.gz #tar zxvf nagios-3.4.1.tar.gz -C /opt #cd /opt/nagios #./configure --prefix=/usr/local/nagios #make all # make install install-base install-cgis install-html install-exfoliation install-config install-init install- commandmode fullinstall nagios.conf文件已生成,不用修改 # egrep 'AuthUserFile' /etc/httpd/conf.d/nagios.conf AuthUserFile /usr/local/nagios/etc/htpasswd.users AuthUserFile /usr/local/nagios/etc/htpasswd.users 创建HTTP认证用户登录Nagios,用户名nagiosadmin,密码123456 #htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 重启apache #service httpd restart 其他配置基本不用改,启动nagios # service nagios start # chkconfig nagios on http://ip/nagios访问即可
前言:IPIP隧道是一种三层隧道,通过把原来的IP包封装在新的IP包里面,来创建隧道传输。本篇简单分析Linux(2.6.32版本)中的IPIP隧道的实现过程,期望有所借鉴,造出轮子:-)
nagios: http://sangh.blog.51cto.com/6892345/1263981
本文将介绍在Linux系统中,以一个UDP包的接收过程作为示例,介绍数据包是如何一步一步从应用程序到网卡并最终发送出去的。
我们拆解完了 Linux 网络包的接收过程,也搞定了网络包的发送过程。内核收发网络包整体流程就算是摸清楚了。
6) bool __blk_end_request_cur(struct request *rq, int error)
以下操作均是监控本机,如果要多其他机器进行监控则需要安装nagios-plugin和NRPE
本文作者张彦飞,原题“127.0.0.1 之本机网络通信过程知多少 ”,首次发布于“开发内功修炼”,转载请联系作者。本次有改动。
「代码链接」https://gist.github.com/AlbertRapp/438102c458fc8fbdffcb6feb76ff93f7 可以从网站直接获取,如果你下载网速很慢,可以从文末直接获取
伯克利数据包过滤器(BPF)机制自2014年被重写和扩展(eBPF)以来,一直在各种内核子系统中发挥作用。事实证明,通过在内核虚拟机,允许在不编写内核自身代码的情况下实现任意策略的方式,存在着巨大的价值。最近一个将BPF推向网络驱动程序的补丁集显示了这种机制的一些潜力—以及集成一种经得起时间考验的方式的设计难度。如果成功的话,它可能会改变Linux系统上的实现高性能网络方式。
在继续分析 dev_queue_xmit 发送数据包之前,我们需要了解以下重要概念。
https://blog.csdn.net/PythonEnding/article/details/86325351
/* 所谓回环网卡, 就是一个虚拟网卡。 既然是虚拟网卡那么就和硬件没关系。 * 在linux主机上输入"ifconfig" 看见eth 和 lo。 其中lo就是所谓的虚拟网卡,即回环网卡 * 本节主要分析这个虚拟网卡的驱动程序 */ struct pcpu_lstats { u64 packets; u64 bytes; struct u64_stats_sync syncp; }; /* 因为是虚拟网卡, 所以就不需要暂停数据传输, 当然也不需要唤醒。 因为不需要写入寄存器
今日在笔记本电脑ThinkBook 14 IML接入TP-LINK的TL-WDN7200H AC 1900双频高增益无线USB网卡,支持2.4GHz 600Mbps+5GHz 1300Mbps。
centreon是开源的IT监控软件,由法国人于2003年开发,最初名为Oreon,并于2005年正式更名为centreon。centreon可以简单地管理和配置nagios,比nagiosql更为简单明了。配合流程:
在容器化大行其道的今天,Docker 可谓是容器界的宠儿。比起笨重的虚拟机,Docker 可谓是身轻如燕。当然,本文不是介绍虚拟机与 Docker 之间的优缺点,而是介绍 Docker 网络中重要的组成部分之一:
基于FFMPEG的Wince版本网络收音机设计与开发 软件架构设计 模块依赖关系图 FFMPEG的编译移植 ./configure \ --enable-cross-compile \ --ena
IP层叫分片,TCP/UDP层叫分段。网卡能做的事(TCP/UDP组包校验和分段,IP添加包头校验与分片)尽量往网卡做,网卡不能做的也尽量迟后分片(发送)或提前合并片(接收)来减少在网络栈中传输和处理的包数目,从而减少数据传输和上下文切换所需要的CPU计算时间。
📷 #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dos.h> /*公众号:C语言与CPP编程回复“源码”,获取30个源码项目*/ #define HEADER1 " -------------------------------BOOK TICKET----------------------------------\n" #define HEADER2 " | num
DPDK是一个优秀的收发包kit,但它本身并不提供用户态协议栈,因此由将数据报文注入内核协议栈的需求,也就是KNI(Kernel NIC Interface)。作为用户态和内核的接口,其因为没有系统调用和内存拷贝,因此比传统的tun/tap设备要更高效。
在Linux / UNIX操作系统下,如何使用bash for loop重复执行某些任务?
来自Linux内核文档。之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问。为了更好地理解本文章中的功能,将这篇文章穿插入内。
Last Updated: Thursday, 2004-12-02 15:04 Eygle
作为网络领域的开发人员,我们经常要与Linux的数据报文打交道,一定要搞清楚数据报文是从何而来,又是如何离去。以前针对这个主题写过一些文章(主要是从源码角度),这次会更重视流程示意图(在细节上必然有所简化),争取在一篇文章中,就让大家理清数据报文的来龙去脉。
Redis 服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。
领取专属 10元无门槛券
手把手带您无忧上云