繁体   English   中英

Mininet OpenvSwitch 多控制器配置

[英]Mininet OpenvSwitch Multi-controller Configuration

根据 OpenFlow 规范,OpenFlow 交换机可以连接多个不同角色的控制器。

我现在正在使用 OpenvSwitch 实现 mininet 拓扑。 我想知道如何在 Mininet 中为 OpenvSwitch 指定控制器的角色?

角色由控制器决定,请参见A 3.9。 Openflow 1.3 规范中的部分:

A.3.9 角色请求消息 当控制器想要改变其角色时,它使用具有以下结构的 OFPT_ROLE_REQUEST 消息:

OpenFlow Switch Specification Version 1.3.0
/* Role request and reply message. */
struct ofp_role_request {
    struct ofp_header header; /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
    uint32_t role; /* One of NX_ROLE_*. */
    uint8_t pad[4]; /* Align to 64 bits. */
    uint64_t generation_id; /* Master Election Generation Id */
};
OFP_ASSERT(sizeof(struct ofp_role_request) == 24);

字段角色是控制器想要承担的新角色,可以具有以下值:

/* Controller roles. */
enum ofp_controller_role {
    OFPCR_ROLE_NOCHANGE = 0, /* Don’t change current role. */
    OFPCR_ROLE_EQUAL = 1, /* Default role, full access. */
    OFPCR_ROLE_MASTER = 2, /* Full access, at most one master. */
    OFPCR_ROLE_SLAVE = 3, /* Read-only access. */
};

如果角色值为 OFPCR_ROLE_MASTER,则角色为 OFPCR_ROLE_MASTER 的所有其他控制器都更改为 OFPCR_ROLE_SLAVE。 如果role值为OFPCR_ROLE_NOCHANGE,则控制器当前角色不改变; 这使控制器能够在不更改它的情况下查询其当前角色。

在收到OFPT_ROLE_REQUEST消息后,交换机必须返回OFPT_ROLE_REPLY消息。 这个消息的结构和OFPT_ROLE_REQUEST消息完全一样,字段role是控制器当前的角色。

此外,如果消息中的角色值为 OFPCR_ROLE_MASTER 或 OFPCR_ROLE_SLAVE,则交换机必须验证 generation_id 以检查陈旧消息。 如果验证失败,交换机必须丢弃角色请求并返回类型为 OFPET_ROLE_REQUEST_FAILED 和代码为 OFPRRFC_STALE 的错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM