Skip to the content.

Tìm hiểu Network Namespace và Kiến trúc Neutron.

Network Namespace.

Linux network namespace.

Một số câu lệnh làm việc với network namespace.


## Neutron Architecture

Openstack Neutron là một dịch vụ độc lập mà triển khai một số tiến trình trên một số lượng các node. Các tiến trình này tương tác với nhau và với các dịch vụ Openstack khác. Tiến trình chính của Neutron là neutron-server, một daemon Python expose Openstack Networking API và truyền yêu cầu của người dùng đến một plug-ins phù hợp để xử lý sau đó.

Các thành phần của Openstack networking:

**neutron-server (neutron-server and neutron-*-plugin)**: Dịch vụ này chạy trên network node để cung cấp Networking API và phần mở rộng của nó. Nó cũng thực thi mô hình mạng và địa chỉ ip trên từng port. Dịch vụ neutron-server yêu cầu truy cập gián tiếp đến database thông qua các plugin - mà giao tiếp với database sử dụng AMQP.

**plugin agent(neutron-*-agent)**: chạy trên mỗi compute node để quản lý cấu hình của switch ảo trên đó. Plug-in sẽ được dùng để xác định agent nào đang chạy. Dịch vụ này yêu cầu truy cập message queue và các yêu cầu khác phụ thuộc vào plug-in nào được sử dụng.

**DHCP-Agent(neutron-l3-agent)**: Cung cấp dịch vụ DHCP cho mạng của khách hàng. Trên mọi plug-ins thì agent này đều có nhiệm vụ giống nhau là quản lý cấu hình DHCP. DHCP agent yêu cầu truy cập message queue và các yêu cầu khác tùy vào plug-in.

**L3 agent(neutron-l3-agent)**: Cung cấp các cấu hình mạng ở layer 3/Nat forwarding để mạng ngoài truy cập, giao tiếp với mạng khách hàng. L3 agent yêu cầu truy cập message queue và các yêu cầu khác tùy vào plug-in.

**network provider service(SDN server/services)**: Cung cấp thêm dịch vụ cho networking. Dịch vụ SDN có thể giao tiếp với *neutron-server*, *neutron-plugin* và *neutron-agent* thông qua các kênh giao tiếp như REST-API.


Sơ đồ dưới đây mô tả kiến trúc và luồng hoạt động của các thành phần trong Openstack Networking:

![](https://i.imgur.com/eQEVhuN.png)


## ML2 Plugin

Modular Layer 2(ml2) plugin cho phép Openstack Networking sử dụng đồng thời nhiều công nghệ mạng layer 2 giống các công nghệ được tìm thấy ở các data center thật. ML2 phân biệt hai loại driver:
- **Type driver**: 
  - Thể hiện cách thức mà Openstack network được thực hiện về mặt kĩ thuật(ví dụ: VXLAN)
  - Mỗi loại mạng được quản lý bởi một ML2 type driver. 

- **Mechanism drivers**:
  - Xác địn cơ chế để truy cập một mạng Openstack của một loại mạng nhất định. (Ví dụ Open vSwitch mechanism driver).
  - Mechanism driver chịu trách nhiệm lấy thông tin được thiết lập bởi type driver và đảm bảo áp dụng chúng cho đúng cho mechanism driver mà đã được bật.
  - Mechanism driver có thể sử dụng các L2 agent(qua RPC) và/hoặc có thể tương tác trực tiếp với các thiết bị hoặc controller bên ngoài(các thiết bị trên máy chủ)
  
- Nhiều Type driver và mechanism driver có thể được sử dụng đồng thòi để truy cập các port khác nhau trên cùng một mạng ảo.

### ML2 Driver support Matrix

| Type driver/Mechanism driver| Flat | VLAN | VXLAN | GRE |
|-----------------------------|------|------|-------|-----|
| Open vSwitch | yes | yes | yes | yes |
| Linux Bridge | yes | yes | yes | no  |
| SRIOV        | yes | yes | no  | no  |
| Open vSwitch | yes | yes | no  | no  |
| L2 population | no | no | yes | yes |



### Cấu hình
#### Cấu hình type driver

Để cấu hình bật type driver trong ML2 plugin, sửa file **/etc/neutron/plugins/ml2/ml2_conf.ini**:

[ml2] type_drivers = flat,vlan,vxlan,gre


#### Cấu hình mechanism driver.
Để cấu hình bật mechanism driver, sửa file **/etc/neutron/plugins/ml2/ml2_conf.ini** 

[ml2] mechanism_drivers = ovs,l2pop ```

Tài liệu tham khảo