Switch-Router

Recent Posts

  • 2019-12-01

    Dive into eBPF (2): 将虚拟机程序载入内核

    在 Dive into eBPF (1) 中,介绍了 BPF 的来源。在本文中,我们将开始 eBPF 的旅程。extended BPFeBPF (extended BPF),是 Linux 内核对 BPF 的扩展。为了与传统的 BPF 更好地区别,传统的 BPF 现在被命名为 cBPF (classical BPF)。eBPF 与 cBPF 相比,有以下两个重要的改进: 首先, eBPF 的功能更加丰富。除了具有 cBPF 传统的报文过滤功能外,eBPF 大范围扩展了使用场景,比如性能测...

  • 2019-11-30

    Dive into eBPF (1): 从 BPF 说起

    近来将 eBPF 研究了一通,遂记录笔记于此文。BPF borneBPF 是 extended BPF 的简称,而 BPF 的全称是 Berkeley Packet Filter, 即伯克利报文过滤器,它的设计思想来源于 1992 年的一篇论文PDF。最初,BPF 是在 BSD 内核实现的,后来,由于其出色的设计思想,其他操作系统也将其引入, 包括 Linux , 有意思的是,Linux 最初将它的实现命名为 LSF (Linux Socket Filter),看上去是想将它与 Berke...

  • 2019-11-14

    什么是透明代理

    引多年前还在学校读本科时,为了节省网费,常去内网论坛用虚拟货币”买代理”,然后就可以用它外网了!对于一个穷学生,真是莫大的福音!多年之后,在工作岗位上,我竟然再次与代理产生了联系。那就索性总结一下吧。不过本文依旧是科普性质,与工作内容无关:)什么是代理本文的题目是透明代理( Transparent Proxy ), 所以我们必须首先搞清楚什么是代理。假设 A 与 B 要通信,如果它们之间有一个中间人 C 当传话筒,那么 C 就是代理。我们常常还会听到两个词叫前向代理( Forward Pr...

  • 2019-11-02

    理解 macvlan

    macvlan 是什么 ?macvlan 是 Linux 内核 3.0 版本引入的一种虚拟网卡,它让用户可以在一块物理网卡上,再创建若干个依附于它的虚拟网卡,这些网卡拥有不同的 MAC 地址,如此就完成了网卡的虚拟化。macvlan 应用在哪里呢? 答案是:macvlan 可以轻松地解决虚拟机之间或者容器之间的网络通信问题。我们可以假设这样一种场景:一台宿主机上存在两个容器,它们属于不同的 namespace ,容器间有通信需求(互相通信和与宿主机外部通信)。可以怎么做呢? veth + ...

  • 2019-09-29

    TCP listen套接字的查找的变化

    内核TCP在收到SYN报文时,会根据报文的目的IP和Port,在本地匹配处于LISTEN状态的套接字进行握手过程。4.17版本以前的listen套接字查找 The current listener hashtable is hashed by port only. When a process is listening at many IP addresses with the same port (e.g.[IP1]:443, [IP2]:443… [IPN]:443), the in...