首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Docker 网络基础 | 虚拟网络设备对(veth)原理

所以,Linux 内核提供了 虚拟网络设备对(veth) 这个功能,用于解决不同网络命名空间之间的通信。...当然,本文的主题是 veth 的实现,而不是 网桥 的现实,所以对 网桥 的介绍就此结束,有兴趣可以参考《Linux网桥工作原理与实现》一文。...虚拟网络设备对实现 在 Linux 内核中,使用 net_device 对象来表示一个网络设备。由于 veth 提供双向通信的功能,所以需要使用两个 net_device 对象来实现。...虽然 Linux 内核使用 net_device 对象来表示一个网络设备,但由于不同厂商的网络设备可能存在各种差异,所以为了让 Linux 内核能够适应各种网络设备,故为不同的网络设备提供私有数据的存储空间...dev->netdev_ops = &veth_netdev_ops; ... } 在初始化 虚拟网络设备对 时,最重要的是设置其操作函数集。

4.4K11

使用QEMU模拟树莓派Raspberry Pi

被誉为 “世界上最流行最便宜的小型电脑” 的「树莓派」Raspberry Pi 是一款性价比超高的迷你电脑主机 (仅有信用卡大小), 深受全球开发者、极客、技术爱好者们的追捧和喜爱 树莓派可以安装多种 Linux...并且功能极其丰富强大,这也使得它的应用范围和潜力几乎是无限的 下面介绍在之前的编译安装Qemu5.1的文章基础下安装raspberrypi树莓派 Fedora32下编译安装Qemu5.1并创建ARM版本Linux...kernel-qemu-4.19.50-buster -append 'root=/dev/sda2 panic=1' -no-reboot -display vnc=10.20.90.56:1 -netdev...user,id=unet -device virtio-net-pci,netdev=unet -M versatilepb -cpu arm1176 -m 256 -hda ....user,id=unet -device virtio-net-pci,netdev=unet 4、体验树莓派系统 vnc登录5901端口 lscpu+uname -a可以看到cpu为arm架构,内核也为

7.8K62

virtio代码分析(一)-qemu部分

virtio内容众多,代码分布于qemu,linux,dpdk等中,而且分为frontend和backend,可以运行于userspace也可以运行于kernelspace,极其难以理解,不看代码只看原理性文档往往流于表面...以qemu和linux中的virtio-net举例分析代码,这儿只分析qemu部分virtio代码,在qemu中创建一个virtio-net设备,tap作为backend,有2个queue,那么qemu...中tx和rx各2个,再加1个controll queue就得创建5个queue了 -netdev tap,id=hostnet0,queues=2 -device virtio-net-pci,host_mtu...=1450,mq=on,vectors=5,netdev=hostnet0,id=net0,mac=fa:16:3e:d8:fe:81,bus=pci.0,addr=0x3 我们先看数据结构NetClientState...=hostnet0,而-netdev中有id=hostnet0,根据name找到了刚才tap创建的2个NetClientState和queue个数为2 typedef struct NICPeers {

2.4K20

Linux 网络子系统

今天分享一篇经典Linux协议栈文章,主要讲解Linux网络子系统,看完相信大家对协议栈又会加深不少,不光可以了解协议栈处理流程,方便定位问题,还可以学习一下怎么去设计一个可扩展的子系统,屏蔽不同层次的差异...目录 Linux网络子系统的分层 Linux网络子系统实现需要: 支持不同的协议族 ( INET, INET6, UNIX, NETLINK…) 支持不同的网络设备 支持统一的BSD socket API...Linux实现的是链路层、网络层和传输层这三层。 在Linux内核实现中,链路层协议靠网卡驱动来实现,内核协议栈来实现网络层和传输层。内核对更上层的应用层提供socket接口来供用户进程访问。...netdev->netdev_ops = &e1000_netdev_ops; e1000_set_ethtool_ops(netdev); ... ... } 这个函数很长,我们不都列出来...我们留意其注册了netdevnetdev_ops,用的是e1000_netdev_ops这个结构体: static const struct net_device_ops e1000_netdev_ops

3.2K21
领券