专栏名称: 刘超的通俗云计算
刘超,网易云解决方案首席架构师,代码级略懂OpenStack、Hadoop、Docker、Lucene、Mesos等开源软件,曾出版《Lucene应用开发揭秘》,个人博客可搜索popsuper1982。
今天看啥  ›  专栏  ›  刘超的通俗云计算

从Openvswitch代码看网络包的旅程

刘超的通俗云计算  · 公众号  · 架构  · 2017-07-24 07:26
    

文章预览

我们知道,Openvwitch可以创建虚拟交换机,而网络包可以通过虚拟交换机进行转发,并通过流表进行处理,具体的过程如何呢? 一、内核模块Openvswitch.ko的加载 OVS是内核态和用户态配合工作的,所以首先要加载内核态模块Openvswitch.ko。 在datapath/datapath.c中会调用module_init(dp_init);来初始化内核模块。 其中比较重要的是调用了dp_register_genl(),这个就是注册netlink函数,从而用户态进程ovs-vswitchd可以通过netlink调用内核。 这里dp_genl_families由四个netlink的family组成   static struct genl_family *dp_genl_families[] = {     _datapath_genl_family,     _vport_genl_family,     _flow_genl_family,     _packet_genl_family, }; 可以看出,在内核中,包含对datapath的操作,例如OVS_DP_CMD_NEW,对虚拟端口vport的操作, ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览