> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/openstack_code_neutron/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/openstack_code_neutron/understanding/plugin.md).

# Plugin 专题

plugin实现对REST API请求的后端支持。前端的rest框架会调用plugin的相应方法来实现rest api规定的语义。

plugin包括两种类型：核心plugin和服务plugin。

核心Plugin实现了对标准API的支持（对网络、端口和子网资源的相应操作），此外还可以选择性的支持一些扩展的API（\_supported\_extension\_aliases属性中会指出）。 以neutron的openvswitch plugin为例，支持的扩展API包括

```python
_supported_extension_aliases = ["provider", "external-net", "router",
                                    "ext-gw-mode", "binding", "quotas",
                                    "security-group", "agent", "extraroute",
                                    "l3_agent_scheduler",
                                    "dhcp_agent_scheduler",
                                    "extra_dhcp_opt",
                                    "allowed-address-pairs"]
```

服务plugin则专门用于实现扩展API。目前，路由器、防火墙、vpn等都有相应的service plugin来专门实现。

neturon server启动时候，根据配置文件动态加载相应的核心plugin及服务plugins。 目前，neutron-server只能配置一个核心Plugin，但可以配置多个服务plugin（但每个extension的实现plugin不能超过一个）。

ML2 core plugin允许同时加载多个mechanism driver，可以达到同时使用不同的L2实现技术的效果。
