目录
Port binding 的属性在Neutron的mechanism driver中作用
SimpleAgentMechanismDriverBase
Port binding 的属性在Nova的虚拟化virt vif driver中作用
Extension以及Port binding简述
Extension 是 Neutron 项目中对基本资源实现属性扩展的手段,而 Portbinding 则是 Neutron 在早期即引入的一个扩展模块,可以实现对 Port 资源的属性扩展。该扩展模块在 neutron 及 Agent 将 port 和实际网卡资源绑定时发挥重要作用,使得管理员可以人工指定或者获取 port 的物理绑定信息,其属性的正确与否会影响到 server(虚拟机、baremeta)的能否成功启动。
Port binding 的属性
Port binding 扩展定义的属性主要包括 vnic_type、vif_type、vif_details、host_id、profile ,这些属性都可以在创建 port 的 REST API接口中可以直接指定。
一个创建 port 的 REST API body 实例如下:
POST /v2.0/ports
{
"port": {
"binding:host_id": "4df8d9ff-6f6f-438f-90a1-ef660d4586ad",
"binding:profile": {
"local_link_information": [
{
"port_id": "Ethernet3/1",
"switch_id": "0a:1b:2c:3d:4e:5f",
"switch_info": "switch1"
}
]
},
"binding:vnic_type": "baremetal",
"device_id": "d90a13da-be41-461f-9f99-1dbcf438fdf2",
"device_owner": "baremetal:none",
"dns_domain": "my-domain.org.",
"dns_name": "myport",
"qos_policy_id": "29d5e02e-d5ab-4929-bee4-4a9fc12e22ae"
}
}
关于每个属性的具体含义、类型与取值范围如下表:
属性名称 | 类型 | 含义与取值 |
---|---|---|
binding:host_id | string | 该端口位于的实际计算节点的 uuid。 |
binding:profile | object | 这是一个字典,该字典赋予特定计算节点上应用能够传递或者接受vif port信息的能力,该信息专用于该计算节点上的网络后端实现,该字段的格式由对应的后端驱动决定,API 不作规定。 |
binding:vif_details | object | 这是一个字典,记载关于该端口的一些附加信息 。至今为止这个字段包含以下key: port_filter 和 ovs_hybrid_plug 。 port_filter 是一个布尔值用来表示当前系统的网络服务是否提供端口过滤的功能,比如安全组和/或防IP/MAC地址仿冒。 ovs_hybrid_plug 是一个布尔值的标志用来通知一个网络 API 消费者(比如 nova )是否对OVS使用混合插入(hybrid plugging)策略。 |
binding:vif_type | string | 用来处理该端口的机制类型。一个网络 API 消费者例如 nova 根据此属性可以选择一个合适的设备(比如一台虚拟机的网络接口)关联到该端口上 。当前可用的值包括: ovs , bridge , macvtap , hw_veb , hostdev_physical , vhostuser , distributed 以及 other 。还有一些特殊的值: unbound 和binding_failed 。 unbound 没有被任何网络后端所实现绑定。 binding_failed 则代表当一个网络后端在试图对该端口进行绑定时发生了错误。 |
binding:vnic_type | str |