Switch-Router

Recent Posts

  • 2023-12-06

    跟我一起学习drgn(1)---使用初体验

    drgn (读作”dragon”, 官网主页 github地址) 是一款由 Meta 公司开发的可编程调试器. 它可用于调试用户态程序, 也可以调试内核.说到调试器, 绕不开的就是 GDB, 那么 drgn 与 GDB 有何不同呢? GDB 调试相信大家已经很熟悉了, 因此, 这里我们用一个 drgn 的例子来看下:先编写一个简单的C语言程序global_inc.c, 该程序每隔1s将变量值累加.#include <stdio.h>#include <unistd.h&g...

  • 2023-10-15

    istio ambient 流量路径

    本文用于梳理 istio ambient 模式下的流量路径.前置环境首先使用 kind 搭建 ambient 模式的环境.root@switch-router:/home/switch-router# kubectl get pod --all-namespaces -owideNAMESPACE NAME READY STATUS RESTARTS AGE IP ...

  • 2023-09-08

    tcp-brutal: 似控非控的拥塞控制算法

    TCP 拥塞控制算法的本质是限制自身的发送速率,以缓解整个网络的拥堵. 如果参与网络的终端都践行这套规则. 那么谁也不会吃亏.但问题是,一个参与者或许可以通过破坏规则而获利(抢占其他参与者的带宽), 而如果每个参与者都不遵守规则,后果就是所有人都占不到便宜.目前还可以庆幸的是,尽管互联网上已经有形形色色的规则破坏者, 但它们的流量很小, 尚且动摇不了整个公平的根基…本文的主题是 tcp-brutal 拥塞控制算法, 项目地址在这里 本质上来说, 它也是规则破坏者的一员一句话描述 tcp-b...

  • 2023-06-30

    ONOS 事件子系统

    本文先介绍ONOS事件子系统的实现原理, 再介绍如何在自己的服务中利用它实现业务的解耦。为什么需要它ONOS的事件子系统可以理解为消息总线,各个服务都可以利用它提供的订阅-发布特性与其他服务进行消息通信。假如没有这套机制,比如服务A想通知服务B一个消息。A就需要显式地调用B暴露的接口, 并且这个过程还只能在A的上下文执行,且它还是同步而不是异步的。这还只是两个服务的情况,这时再加入一个服务C也想收到这个消息,就需要修改服务A的实现,这实在不优雅。实现原理Event 与 Event Sink...

  • 2023-04-16

    理解 RACK 的原理和实现

    在 RACK 之前, TCP 的快速恢复采用对 DupACK 进行计数作为进入条件, 当计数超过 DupThresh 时, 触发快速恢复流程.但这种方法对 application-limited 的应用来说并不可靠, 因为这类应用不会持续发送数据, 而 DupACK 需要报文触发才能生成,这就导致一旦报文丢失, DupACK 不会增加, 最终发送方触发 RTO 超时重传流程, 而非快速恢复.可以把 RTO 超时重传理解为是”急刹车”, 快速恢复则是”点踩刹车”,前者代价高,后者代价低RAC...