openvswitch

OVS架构

吃可爱长大的小学妹 提交于 2019-11-28 07:23:07
先看下OVS整体架构,用户空间主要组件有数据库服务ovsdb-server和守护进程ovs-vswitchd。kernel中是datapath内核模块。最上面的Controller表示OpenFlow控制器,控制器与OVS是通过OpenFlow协议进行连接,控制器不一定位于OVS主机上,下面分别介绍图中各组件 ovs1 ovs-vswitchd ovs-vswitchd 守护进程是OVS的核心部件,它和 datapath 内核模块一起实现OVS基于流的数据交换。作为核心组件,它使用openflow协议与上层OpenFlow控制器通信,使用OVSDB协议与 ovsdb-server 通信,使用 netlink 和 datapath 内核模块通信。 ovs-vswitchd 在启动时会读取 ovsdb-server 中配置信息,然后配置内核中的 datapaths 和所有OVS switches,当ovsdb中的配置信息改变时(例如使用ovs-vsctl工具), ovs-vswitchd 也会自动更新其配置以保持与数据库同步 # ps -ef |grep ovs-vs root 22176 22175 0 Jan17 ? 00:16:56 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err

Openvswitch原理与代码分析(2): ovs-vswitchd的启动

旧城冷巷雨未停 提交于 2019-11-28 07:21:51
ovs-vswitchd.c的main函数最终会进入一个while循环,在这个无限循环中,里面最重要的两个函数是bridge_run()和netdev_run()。 Openvswitch主要管理两种类型的设备,一个是创建的虚拟网桥,一个是连接到虚拟网桥上的设备。 其中bridge_run就是初始化数据库中已经创建的虚拟网桥。 一、虚拟网桥的初始化bridge_run bridge_run会调用bridge_run__,bridge_run__中最重要的是对于所有的网桥,都调用ofproto_run static void bridge_run__(void) { …… /* Let each bridge do the work that it needs to do. */ HMAP_FOR_EACH (br, node, &all_bridges) { ofproto_run(br->ofproto); } } Int ofproto_run(struct ofproto *p)会调用error = p->ofproto_class->run(p); ofproto_class的定义在ofproto-provider.h中,它的实现定义在ofproto-dpif.c中,这里面的所有的函数,在这个文件中都有定义。 const struct ofproto_class

Openvswitch原理与代码分析(3): openvswitch内核模块的加载

穿精又带淫゛_ 提交于 2019-11-28 07:21:34
上一节我们讲了ovs-vswitchd,其中虚拟网桥初始化的时候,对调用内核模块来添加虚拟网卡。 我们从openvswitch内核模块的加载过程,来看这个过程。 在datapath/datapath.c中会调用module_init(dp_init);来初始化内核模块。 static int __init dp_init(void) { int err; BUILD_BUG_ON(sizeof(struct ovs_skb_cb) > FIELD_SIZEOF(struct sk_buff, cb)); pr_info("Open vSwitch switching datapath %s\n", VERSION); err = compat_init(); if (err) goto error; err = action_fifos_init(); if (err) goto error_compat_exit; err = ovs_internal_dev_rtnl_link_register(); if (err) goto error_action_fifos_exit; err = ovs_flow_init(); if (err) goto error_unreg_rtnl_link; err = ovs_vport_init(); if (err) goto

OpenvSwitch入门

心不动则不痛 提交于 2019-11-27 19:31:24
前段时间参加openshift培训,通过产品部门的讲解,刷新了我对OpenShift一些的认识,今天先从最弱的环节网络做一些了解吧。 来源: https://www.cnblogs.com/ericnie/p/11374298.html

neutron计算节点

主宰稳场 提交于 2019-11-27 07:05:19
第一步:下载 [root@zxw6 ~]# yum install openvswitch openstack-neutron-openvswitch ebtables ipset -y 第二步:配置neutron的文件 [root@zxw8 ~]# egrep -v '(^#|^$)' /etc/nova/nova.conf [DEFAULT] enabled_apis = osapi_compute,metadata transport_url = rabbit://openstack:zxw6@zxw6 my_ip = 192.168.126.6 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver [api] auth_strategy = keystone [api_database] [barbican] [cache] [cells] [cinder] [cloudpipe] [conductor] [console] [consoleauth] [cors] [cors.subdomain] [crypto] [database] [ephemeral_storage_encryption] [filter_scheduler] [glance] api_servers

openvswitch笔记

浪尽此生 提交于 2019-11-27 02:56:25
openvswitch安装 下载地址 http://www.openvswitch.org/download/ wget https://www.openvswitch.org/releases/openvswitch-2.5.8.tar.gz 来源: https://www.cnblogs.com/liuxm2017/p/11339989.html

软件定义网络

我的未来我决定 提交于 2019-11-26 17:00:57
软件定义网络(SDN) 主要有以下三个特点: 控制与转发分离 :转发平面就是一个个虚拟或者物理的网络设备,就像小区里面的一条条路。控制平面就是统一的控制中心,就像小区物业的监控室。它们原来是一起的,物业管理员要从监控室出来,到路上去管理设备,现在是分离的,路就是走人的,控制都在监控室。 控制平面与转发平面之间的开放接口 :控制器向上提供接口,被应用层调用,就像总控室提供按钮,让物业管理员使用。控制器向下调用接口,来控制网络设备,就像总控室会远程控制电梯的速度。这里经常使用两个名词,前面这个接口称为 北向接口 ,后面这个接口称为 南向接口 ,上北下南嘛。 逻辑上的集中控制 :逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制,就像物业管理员在监控室能够看到整个小区的情况,并根据情况优化出入方案 如下图: OpenFlow和OpenvSwitch OpenFlow是SDN控制器和网络设备之间互通的南向接口协议,OpenvSwitch用于创建软件的虚拟交换机。OpenvSwitch是支持OpenFlow协议的,当然也有一些硬件交换机也支持OpenFlow 协议。它们都可以被统一的SDN控制器管理,从而实现物理机和虚拟机的网络连通。 如下图: 在OpenvSwitch里面,有一个流表规则