VXLAN内核相关实现分析.
OVS VXLAN tunnel 相关配置命令
1 | $ ovs-vsctl add-br br0 |
1 | options: key=100 <<<<vni为100 |
内核结构关系
几个关键的数据结构
OVS支持的vport的类型,本文主要分析VXLAN
1 | enum ovs_vport_type { |
vport ovs-vsctl add-port创建,ovs port在kernel对应一个vport
1 | struct vport { |
vxlan dev, 一个vxlan vport对应一个vxlan dev
1 | /* Pseudo network device */ |
VTEP, UDP socket 信息
1 | /* per UDP socket information */ |
主要的流程
创建
1 | ovs_vxlan_tnl_init |
1 | dev->netdev_ops = &vxlan_netdev_ether_ops; // vxlan.c |
1 | vxlan_open() //vxlan.c |
接收
1 | vxlan_rcv() //Callback from net/ipv4/udp.c to receive packets vxlan.c |
发送
1 | ovs_vport_send() |