欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Neutron的Port详解

程序员文章站 2022-06-10 23:42:13
...
Port资源模型,如下表所示:
Neutron的Port详解
Neutron的Port详解
Port是一个逻辑模型,但是同时我们也可以理解为其代表一个虚拟网口。所以,一个虚拟机需要绑定Port,一个路由器也需要绑定Port。既然是一个虚拟网口,那么理所当然,它就具备两个基本属性:IP地址和MAC地址。
一 IP地址
Port模型中,表示IP地址的是一个数组(fixed_ip),表明这个Port可以有多个IP地址。在这个数组中,每一个元组由两个字段组成:ip_address、subnet_id。我们可以看一个例子:
“fixed_ips”:[
        {
                “ip_address”:”10.0.0.1”
                “subnet_id”:”fhdjs-fdjs-fdsdf-fds--fd”
        }
        {
                “ip_address”:”10.0.0.1”
                “subnet_id”:”shdjs-fdjs-fdsdf-fds--fd”
        }
],
为什么Port的IP地址还需要跟subnet_id关联呢?这是因为,在Neutron模型中,IP地址不能孤立存在,它必须属于一个Subnet,这也间接地意味着,Port也必须关联一个Subnet。这同时也意味着,Port的IP地址不能随便取值,它必须在其关联的Subnet的地址范围内。
Port不仅需要间接关联一个Subnet,还必须直接属于一个Network,这是靠Port模型中的字段network_id(string类型)来表达。当一个Port属于一个Network的时候,如果这个Network有N个Subnet,理论上说,这个Port也可以有N个IP地址,每个IP地址属于其中一个Subnet。
Network、Subnet、Port这三者之间的关系,如下图:
Neutron的Port详解
在图中,Port与Subnet之间的关系是m:n,但是为了表达清楚,特意画了两根线。这个图表明,一个Network可以有多个Subnet,一个Subnet只能归属一个Network。同时一个Network可以有多个Port,而一个Port可以与其所在Network中的所有Subnet相关联。当然,一个Subnet也可以有多个Port。
二 MAC
一个Port可以有多个IP地址,但是一般情况下,一个Port只有一个MAC地址,这体现在mac_address这个字段,它的含义是:port的MAC地址。
三 allowed_address_pairs
这个字段是一个数组,先举个例子:
{
        “port”:{
        “allowed_address_pairs”:[
        {
                “ip_address”:”10.0.0.1”
                “max_address”:”re-34-65-34-65-34”
        }
        {
                “ip_address”:”10.1.0.1”
                “max_address”:”re-34-65-34-65-34”
       }
   ]
 }
}
allowed_address_pairs的使用场景有不少,其中一个比较典型的场景是Antispoofing。该技术是一种识别和删除有错误源地址的数据包技术。
四 其他
Port是如此重要,但是也不能凭空存在,它必须得绑定到一个实体上才有意义。Port有两个字段与实体绑定相关。其中一个是device_id,标识谁使用了这个Port,比如一个路由器。另外一个字段是device_owner,它标识使用这个Port的实体类型。比如一个虚拟机绑定了这个端口,那么这个实体类型就是compute:nova。
相关标签: Port