摘要:
当拿到OVS这么大一个工程的时候,如何理解他的组织、实现的功能、数据结构的创新,对于这个从0到1的过程,该如何一步步深入呢? 首先,我觉得直接看架构也好,看文件目录也好,都是比较容易理解全局的办法。 那就先看看文件的组织: 这些显示的是文件夹的目录,从目录中可以看出有window相关的,也有xens 阅读全文
摘要:
前言:TCP的可靠性大致通过3类方法来保障:1.确认和重传。2.流量控制。3.拥塞避免。其中的流量控制中使用的滑动窗口,使得TCP的发送方和接收方速度得以匹配,从而为传输提供了可靠性支撑。本篇就介绍一下滑动窗口在Linux的大致代码,对于滑动窗口的基本知识已经有无数优秀的文章,更有TCP/IP卷一可 阅读全文
摘要:
前言:为了使用mininet和ovs,想要弄一个轻量级的linux环境,所以在mac上安装了docker,顺便体验一下docker的便捷。 1.安装环境要求 System Requirements: Docker for Mac will launch only if all of these re 阅读全文
摘要:
前言:在调试多流拥塞调度下载的过程中,出现了下载一半时卡住的现象,几经查看,在看遍了不同的现象后,在周末时发现是模拟的终端(一个板子上用DPDK实现)网卡发送包错误,当打开DPDK调试日志后,出现了更扑朔迷离的现象,就此展开本文。 一. BUG场景介绍 接着终端网卡发送失败说起,在发送失败后,打开了 阅读全文
摘要:
前言:在追踪内核的网络栈时,经常会出现复杂的条件分支,导致分不清报文处理的重要流程,本文介绍的ftrace则能够追踪记录函数的调用流程,非常方便的用以分析代码。 一. ftrace简单介绍 ftrace是内核提供的一种调试工具,可以对内核发生的事件进行记录,比如函数调用,进程切换,中断开关等。他 阅读全文
摘要:
一. 问题介绍 在DPDK中往往是在内核启动参数中设置要启动的大页的总数量,比如设置大页个数为16个,每个大页是1G,这样系统启动后,就能在 上看到node0上分配的大页,同样可以查看到node1上的大页。默认的情况是内核会平均分配到 不同的socket上。在我的机器上,就是2个socket,这 阅读全文
摘要:
前言:对于有些任务比较重的工作,我们通常都会采用负载均衡的方法用以提高任务效率。然而有些应用报文对于报文顺序要求比较严格,这就要求在报文在经过负载均衡处理后,进一步处理前,重新调整报文的顺序,保证和进入负载均衡前的顺序一致。DPDK reorder库就是这样一个东西,用以在进一步处理前重新对报文进行 阅读全文
摘要:
前言:tcp连接时,一直以来都是只能绑定一个ip地址,但是随着多网卡主机越来越多,从一个主机到另一个主机往往都会有多条链路可以到达,这种情况下,如何充分利用这多条链路进行并行的传输或者作为链路备份,就变得十分有意义,本篇就简单介绍其中一种多路径传输的方法—多路径TCP。 一. 多路径传输的背景 我们 阅读全文
摘要:
前言:IPIP隧道是一种三层隧道,通过把原来的IP包封装在新的IP包里面,来创建隧道传输。本篇简单分析Linux(2.6.32版本)中的IPIP隧道的实现过程,期望有所借鉴,造出轮子: ) 一. IPIP的初始化 Linux中的IPIP隧道文件主要分布在 和`ipip.c tunnel4.c`中。来 阅读全文
摘要:
前言:前面我们说过tcp是一种可靠的协议,可靠性是通过多种方式来保障的,本文要说明的的重传功能和流量控制就是其中的两种措施。因为网络环境复杂性和和不同网络栈实现的细微区别,导致tcp在这些机制上异常复杂,本文主要简单说明一下这两个问题,更加详细的可以参考《tcp/ip详解》。 一. tcp重传机制 阅读全文