最新文章

追踪 Kubernetes 中的数据包

追踪 Kubernetes 中的数据包

网络和操作系统内核,对我来说是既陌生又满是吸引,希望能够拨开层层迷雾找到背后的真相。 在 上一篇文章 中我深入探讨了 Kubernetes 网络模型,这次我想更深入一点:了解数据包在 Kubernetes 中的传输,为学习 Kubernetes 的 eBPF 网络加速做准备,加深对网络和操作系统内核的理解。 文中可能有疏漏之处,还望大家赐教。 在开始之前,我可以用一句话来总结我的学习成果:数据包的流转其实就是一个网络套接字描述符(Socket File Descriptor,中文有点冗长,以下简称 socket fd)的寻址过程。 它不是简单的指 socket fd 的内存地址,还包括它的网络地址。 在 Unix 和类 Unix 系统中,一切皆文件,也可以通过文件描述符来操作 socket。 基础知识 数据包 既然要讨论数据包的流转,先看看什么是数据包。 网络数据包(network packet),也称为网络数据报(network datagram)或网络帧(Network frame),是通过计算机网络传输的数据单位。拿最常见的 TCP 数据包来看包含如下几个部分: Ethernet header:链路层信息,主要包括目的 MAC 地址和源 MAC 地址,以及报文的格式,这里是 IP 包。 IP header:网络层信息,主要包括长度、源 IP 地址和目的 IP 地址以及报文的格式,当然这里必须是 TCP 包。 TCP header:传输层信息,包括源端口和目的端口。 数据:一般是第 7 层的数据,比如 HTTP 等。 这里没有介绍的 checksum 和 FCS 通常是用来检查数据包在传输过程中是否被篡改或者发生了错误。

Karmada:混合多云下的应用管理

Karmada:混合多云下的应用管理

背景 过去几年,公有云凭借着更高扩展性、灵活性、可靠性和安全性,吸引了大量的企业将应用程序部署到公有云上。随着业务规模的不断扩张,企业出于某些原因,如避免厂商锁定、追求更低的延迟、更高的可靠性等,选择将应用部署在更多的公有云上;也有些企业出 …