neutron(1)veth pair
来源:互联网 发布:sqlserver count 编辑:程序博客网 时间:2024/04/29 14:52
主要参考
[0]Introducing Linux Network Namespaces
veth pair
veth pair是用于不同network namespace间进行通信的方式,veth pair将一个network namespace数据发往另一个network namespace的veth。如下:
Veth pair 是一对虚拟网卡,从一张veth网卡发出的数据包可以直接到达它的peer veth,两者之间存在着虚拟链路。
Veth 网卡和常规的以太网区别仅在于xmit接口:将数据发送到其peer,触发peer的Rx 过程。Veth 的原理示意图如下:
Veth 的实现在linux/drivers/net/veth.c 下,总体来看比较简单:
关键的数据结构:
- struct veth_priv {
- struct net_device __rcu *peer;
- atomic64_t dropped;
- };
- /*
- * tie the deviced together
- */
- priv = netdev_priv(dev);
- rcu_assign_pointer(priv->peer, peer);
- priv = netdev_priv(peer);
- rcu_assign_pointer(priv->peer, dev);
- rcv = rcu_dereference(priv->peer);
- ...
- if (likely(dev_forward_skb(rcv, skb)== NET_RX_SUCCESS)){
- struct pcpu_vstats *stats = this_cpu_ptr(dev->vstats);
- u64_stats_update_begin(&stats->syncp);
- stats->bytes+= length;
- stats->packets++;
- u64_stats_update_end(&stats->syncp);
- } else{
应用方式:通过net namespace 做实验如下:
- #!/bin/sh
- echo "create net namespace net0 and net1"
- ip netns add net0
- ip netns add net1
- echo "list net namespace"
- ip netns list
- echo "add veth pair v1 and vp1"
- ip link add veth_0 type veth peer name veth_0_peer
- ip link
- echo "set veth_0 in net0"
- ip link set veth_0 netns net0
- echo "set veth_0_peer in net1"
- ip link set veth_0_peer netns net1
- ip netns exec net0 ip addr add local 10.0.78.3/24 dev veth_0
- ip netns exec net0 ifconfig veth_0 up
- ip netns exec net1 ip addr add local 10.0.78.4/24 dev veth_0_peer
- ip netns exec net1 ifconfig veth_0_peer up
- echo "show ip netns net0"
- ip netns exec net0 ip addr
- echo "show ip netns net1"
- ip netns exec net1 ip addr
- ip netns exec net1 ping 10.0.78.3
0 0
- neutron(1)veth pair
- veth pair
- veth pair
- Neutron OVS Bridge 连接方式 (veth pair / ovs peer) 的选型和性能测试
- network namespace与veth pair
- network namespace 与veth pair
- Linux-虚拟网络设备-veth pair
- network namespace与veth pair
- neutron(1)
- (3) Linux Switching – Interconnecting Namespaces – brctl – ovs-vsctl – veth pair
- Neutron印象1:neutron简介
- map and pair (1)
- neutron surround you(1)
- neutron network types(1)
- neutron浅析-1
- Neutron 概述(1)
- neutron(2)
- neutron
- IOS9-CoreSpotlight到底怎么用?(OC语言版)
- 进程&线程(持续更)
- Matlab小程序-正弦波线性组合频谱图
- 产品思维------三维思考模型
- jfinalQ开发教程02-权限系统和一对多的处理
- neutron(1)veth pair
- jfinalQ开发教程03-加密部署
- iOS开发之日期
- 二、Python课程【初级篇】
- jfinalQ开发教程04-jfinal配置和jfinalQ文件结构
- github在window7环境搭建
- WPF路线图白皮书: 2015及未来
- 19-陋室铭
- 默认拷贝构造函数,浅拷贝,深拷贝