Mininet OpenvSwitch多控制器配置



根据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。如果角色值为OFPCR_role_NOCHANGE,则控制器的当前角色不变;这使控制器能够在不更改其当前角色的情况下查询其当前角色

收到OFPT_ROLE_REQUEST消息后,交换机必须返回OFPT_ROLE_REPLY信息。此消息的结构与OFPT_ROLE_REQUEST消息完全相同,字段角色是控制器的当前角色。

此外,如果消息中的角色值为OFPCR_role_MASTER或OFPCR_role_SLAVE,则交换机必须验证generation_id以检查是否有过时的消息。如果验证失败,交换机必须放弃角色请求,并返回类型为OFPET_role_request_FAILED、代码为OFPRRFC_STALE的错误消息。

最新更新