随笔分类 -  linux

摘要:1.1 流量控制是什么 ​ 流量控制是路由器上报文的接收和发送机制及排队系统的统称。这包括在一个输入接口上决定以何种速率接收何种报文,在一个输出接口上以何种速率、何种顺序输出何种报文。 ​ 传统的流量控制涉及到整流(sharping),调度(scheduling), 分类(classifying), 阅读全文
posted @ 2019-07-13 23:40 AISEED 阅读(4906) 评论(1) 推荐(1) 编辑
摘要:前言:thrift的版本问题比较麻烦,高版本的在c++上需要c++ 11的支持,而低版本则可能在go的支持上有问题,测试发现thrift 9.0以上需要c++ 11,而thrift 8.0则在go的支持上可能会存在问题。使用的发行版本是centos 6.5,gcc 4.4.7。最终选择使用thrif 阅读全文
posted @ 2018-05-02 22:01 AISEED 阅读(4428) 评论(0) 推荐(1) 编辑
摘要:全文转载:原出处 系统管理的重要任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生文件无法存储的困扰。 认识EXT2文件系统 Linux最传统的磁盘文件系统使用的是EXT2。 磁盘分区与组成 整个磁盘的(物理)组成主要有: ² 圆形的盘片(主要记 阅读全文
posted @ 2018-04-21 17:42 AISEED 阅读(443) 评论(0) 推荐(0) 编辑
摘要:当拿到OVS这么大一个工程的时候,如何理解他的组织、实现的功能、数据结构的创新,对于这个从0到1的过程,该如何一步步深入呢? 首先,我觉得直接看架构也好,看文件目录也好,都是比较容易理解全局的办法。 那就先看看文件的组织: 这些显示的是文件夹的目录,从目录中可以看出有window相关的,也有xens 阅读全文
posted @ 2018-01-24 22:06 AISEED 阅读(2540) 评论(0) 推荐(2) 编辑
摘要:前言:TCP的可靠性大致通过3类方法来保障:1.确认和重传。2.流量控制。3.拥塞避免。其中的流量控制中使用的滑动窗口,使得TCP的发送方和接收方速度得以匹配,从而为传输提供了可靠性支撑。本篇就介绍一下滑动窗口在Linux的大致代码,对于滑动窗口的基本知识已经有无数优秀的文章,更有TCP/IP卷一可 阅读全文
posted @ 2018-01-23 21:54 AISEED 阅读(2147) 评论(0) 推荐(1) 编辑
摘要:前言:为了使用mininet和ovs,想要弄一个轻量级的linux环境,所以在mac上安装了docker,顺便体验一下docker的便捷。 1.安装环境要求 System Requirements: Docker for Mac will launch only if all of these re 阅读全文
posted @ 2017-12-10 21:29 AISEED 阅读(6708) 评论(0) 推荐(0) 编辑
摘要:前言:在追踪内核的网络栈时,经常会出现复杂的条件分支,导致分不清报文处理的重要流程,本文介绍的ftrace则能够追踪记录函数的调用流程,非常方便的用以分析代码。 一. ftrace简单介绍 ​ ftrace是内核提供的一种调试工具,可以对内核发生的事件进行记录,比如函数调用,进程切换,中断开关等。他 阅读全文
posted @ 2017-09-13 23:13 AISEED 阅读(4547) 评论(0) 推荐(0) 编辑
摘要:前言:tcp连接时,一直以来都是只能绑定一个ip地址,但是随着多网卡主机越来越多,从一个主机到另一个主机往往都会有多条链路可以到达,这种情况下,如何充分利用这多条链路进行并行的传输或者作为链路备份,就变得十分有意义,本篇就简单介绍其中一种多路径传输的方法—多路径TCP。 一. 多路径传输的背景 我们 阅读全文
posted @ 2017-08-27 17:15 AISEED 阅读(11096) 评论(1) 推荐(0) 编辑
摘要:前言:IPIP隧道是一种三层隧道,通过把原来的IP包封装在新的IP包里面,来创建隧道传输。本篇简单分析Linux(2.6.32版本)中的IPIP隧道的实现过程,期望有所借鉴,造出轮子: ) 一. IPIP的初始化 Linux中的IPIP隧道文件主要分布在 和`ipip.c tunnel4.c`中。来 阅读全文
posted @ 2017-08-09 23:34 AISEED 阅读(5430) 评论(0) 推荐(0) 编辑
摘要:前言:前面我们说过tcp是一种可靠的协议,可靠性是通过多种方式来保障的,本文要说明的的重传功能和流量控制就是其中的两种措施。因为网络环境复杂性和和不同网络栈实现的细微区别,导致tcp在这些机制上异常复杂,本文主要简单说明一下这两个问题,更加详细的可以参考《tcp/ip详解》。 一. tcp重传机制 阅读全文
posted @ 2017-07-31 22:22 AISEED 阅读(1272) 评论(0) 推荐(0) 编辑
摘要:前言:TCP是传输层协议,实现了一种可靠的通信。它从不同角度提供了多种可靠性保障措施来为网络传输提供确定性。连接性就是其中之一,不像UDP的无连接状态,TCP在数据传输之前会进行连接,只有双方都协调完成后,才会进行数据传输;同样的,在结束时,又会断开连接,通告传输的完成;在数据传输过程中,又会对每个 阅读全文
posted @ 2017-07-01 15:24 AISEED 阅读(2986) 评论(0) 推荐(0) 编辑
摘要:前言:在前面的文章中介绍了协议无关层和系统调用接口层。当用户态程序调用 和`recvfrom()`来发送和接收数据时,其中的过程是怎么样的呢?又是经过了几次数据拷贝呢?这篇重点说明这两个接口,接着上篇来说明数据传输的过程。 1. 在上一篇中,我们知道,当在应用中调用 发送函数时,就会调用到系统调用 阅读全文
posted @ 2017-06-19 22:32 AISEED 阅读(1696) 评论(0) 推荐(0) 编辑
摘要:一. 从socket api看协议无关层 前面的系列已经说了系统调用接口层,在应用层使用socket api,填充对应的参数,就能创建出想要使用的socket类型。这个过程就是协议无关层完成的。简单的说过程就是:根据参数,匹配注册的协议族,使用对应的协议。接下来重点分析几个socket api的BS 阅读全文
posted @ 2017-06-04 21:07 AISEED 阅读(1806) 评论(0) 推荐(0) 编辑
摘要:一. socket操作系统调用 我们在上一节中说到过,在应用层和协议无关层之间,是一个系统调用接口层。系统调用接口如下: socketcall socket系统调用 socket 建立socket bind 绑定socket到端口 connect 连接远程主机 accept 响应socket连接请求 阅读全文
posted @ 2017-06-03 18:11 AISEED 阅读(1606) 评论(0) 推荐(0) 编辑
摘要:一. linux网络层次结构 linux网络栈的层次结构非常清晰,并没有按照OSI七层模型来实现,而是压缩并扩展了一些层。如下图中的所示: 从上而下,依次为应用层,系统调用接口层,协议无关接口层,网络栈层,设备无关接口层,设备驱动层。因为linux的网路栈中的socket是继承自BSD的,socke 阅读全文
posted @ 2017-05-31 22:40 AISEED 阅读(1403) 评论(0) 推荐(0) 编辑
摘要:前言:网桥设备作为一个虚拟设备,用于连接多个端口,可以构建一个局域网。与之相似的是vlan设备,在linux中,vlan设备是为了处理802.1q的添加和去除TAG的问题,这和传统交换机中vlan的功能—划分局域网,不太一样,在这里仅仅是处理了消息头,只是实现了隔离功能,并未实现交换功能,如果需要v 阅读全文
posted @ 2017-05-26 22:57 AISEED 阅读(4587) 评论(1) 推荐(0) 编辑
摘要:linux网络栈本已有无数的文档在飞,对于开发者而言,有兴趣的一直有兴趣,而没兴趣的,对于动辄数十篇的分析文档,恐怕也不是一时半会儿就能消化的了的。对于linux网络栈,我一直怀有敬畏之心,毕竟无论是从架构上说,还是包罗万象的协议,设备上说,linux协议栈都是一个巧夺天工的设计。但终于,尽管前辈的 阅读全文
posted @ 2017-05-26 22:12 AISEED 阅读(638) 评论(0) 推荐(0) 编辑