ovs-vswitchd的启动分析

本文详细分析了ovs-vswitchd的启动流程,包括主要数据结构和概念介绍,如虚拟网桥和端口的创建。重点讨论了main主函数、虚拟网桥的初始化,特别是`bridge_run`调用的`ofproto_run`用于执行网桥功能,以及虚拟网卡初始化的`netdev_run`。通过对源码的解读,揭示了OVS如何管理虚拟网桥和设备,以及如何处理网络配置和流表项规则。
摘要由CSDN通过智能技术生成

ovs-vswitchd的启动分析(无修改源码)

(一)主要数据结构和概念了解

1.概念

在 OVS 中, 有几个非常重要的概念:

Bridge: Bridge 代表一个以太网交换机(Switch),一个主机中可以创建一个或者多个 Bridge 设备。

Port: 端口与物理交换机的端口概念类似,每个 Port 都隶属于一个 Bridge。

Interface: 连接到 Port 的网络接口设备。在通常情况下,Port 和 Interface 是一对一的关系, 只有在配置 Port 为 bond 模式后,Port 和 Interface 是一对多的关系。

当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是brname,之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。

有了这个交换机以后,我还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了

这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)

那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口brname,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。

2.数据结构

在ofproto-provider.h中注释里是这样说的。

这里定义了四类数据结构:

Struct ofproto表示一个交换机

Struct ofport表示交换机上的一个端口

Struct rule表示交换机上的一条flow规则

Struct ofgroup表示一个flow规则组

(二)main主函数分析

在文件openvswitch-2.11.4/vswitchd/ovs-vswitchd.c中!

Openvswitch主要管理两种类型的设备,一个是创建的拟网桥,一个是连接到虚拟网桥上的设备

int
main(int argc, char *argv[])
{
    ...   
    线程开启、网桥初始化等等
    ...

    while (!exiting) {
        memory_run();
        if (memory_should_report()) {
            struct simap usage;

            simap_init(&usage);
            bridge_get_memory_usage(&usage);
            memory_report(&usage);
            simap_destroy(&usage);
        }
        bridge_run();  //其中bridge_run就是初始化数据库中已经创建的虚拟网桥。
        unixctl_server_run(unixctl);
        netdev_run();  //在内核中添加虚拟网卡

        memory_wait();
        bridge_wait();
        unixctl_server_wait(unixctl);
        netdev_wait();
        if (exiting) {
            poll_immediate_wake();
        }
        poll_block();
        if (should_service_stop()) {
            exiting = true;
        }
    }
    
    ...
    退出和销毁操作
    ...

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值