Linux bridge: Provider networks

Linux bridge: Provider networks

Contoh arsitektur jaringan penyedia memberikan konektivitas lapisan-2 antar instance dan infrastruktur jaringan fisik dengan menggunakan VLAN (802.1q) tagging. Hal itu mendukung satu jaringan untagged (flat) dan sampai 4095 jaringan tagged (VLAN). Jumlah sebenarnya dari jaringan VLAN tergantung pada infrastruktur jaringan fisik. Untuk informasi lebih lanjut tentang jaringan provider, lihat Provider networks.

Prasyarat

Satu node controller dengan komponen berikut:

  • Dua antarmuka jaringan: manajemen dan penyedia.

  • OpenStack Networking server service dan ML2 plug-in.

Dua node komputasi dengan komponen berikut:

  • Dua antarmuka jaringan: manajemen dan penyedia.

  • OpenStack Networking Linux bridge layer-2 agent, DHCP agent, metadata agent, dan dependensi.

Catatan

Pengerahan yang lebih besar biasanya menggunakan DHCP dan agen metadata pada subset node komputasi untuk meningkatkan kinerja dan redundansi. Namun, terlalu banyak agen dapat membanjiri bus pesan. Juga, untuk lebih menyederhanakan pengerahan, Anda dapat menghilangkan agen metadata dan menggunakan drive konfigurasi untuk menyediakan metadata untuk instance.

Arsitektur

Provider networks using Linux bridge - overview

Gambar berikut menunjukkan komponen dan konektivitas untuk satu jaringan untagged (flat). Dalam kasus ini, instance berada pada node komputasi yang sama sebagai agen DHCP untuk jaringan. Jika agen DHCP berada pada node komputasi lain, yang terakhir ini hanya berisi namespace DHCP dan jembatan Linux dengan port pada penyedia antarmuka jaringan fisik.

Provider networks using Linux bridge - components and connectivity - one network

Gambar berikut menjelaskan konektivitas virtual antara komponen untuk dua jaringan tag (VLAN). Pada dasarnya, setiap jaringan menggunakan jembatan terpisah yang berisi port pada VLAN sub-interface pada penyedia antarmuka jaringan fisik. Mirip dengan kasus jaringan tunggal untagged, agen DHCP dapat berada pada node komputasi yang berbeda.

Provider networks using Linux bridge - components and connectivity - multiple networks

Catatan

Gambar ini menghilangkan controller node karena tidak menangani lalu lintas jaringan instance.

Contoh configuration

Menggunakan konfigurasi contoh berikut sebagai template untuk menggunakan jaringan provider di lingkungan Anda.

Controller node

  1. Menginstal komponen layanan Networking yang menyediakan layman neutron-server dan ML2 plug-in.

  2. Dalam file neutron.conf:

    • Mengkonfigurasi opsi umum:

      [DEFAULT]
      core_plugin = ml2
      auth_strategy = keystone
      rpc_backend = rabbit
      notify_nova_on_port_status_changes = true
      notify_nova_on_port_data_changes = true
      
      [database]
      ...
      
      [keystone_authtoken]
      ...
      
      [oslo_messaging_rabbit]
      ...
      
      [nova]
      ...
      

      Lihat Installation Guide untuk rilis OpenStack Anda untuk mendapatkan konfigurasi yang sesuai untuk bagian [database], [keystone_authtoken], [oslo_messaging_rabbit], dan [nova].

    • Menonaktifkan layanan plug-in karena jaringan operator tidak memerlukan. Namun, ini bagian istirahat dari dashboard yang mengelola layanan Networking. Lihat Installation Guide untuk informasi lebih lanjut.

      [DEFAULT]
      service_plugins =
      
    • Aktifkan dua agen DHCP per jaringan sehingga kedua node komputasi dapat memberikan layanan DHCP jaringan penyedia.

      [DEFAULT]
      dhcp_agents_per_network = 2
      
    • Jika diperlukan, configure MTU.

  3. Dalam file ml2_conf.ini:

    • Mengkonfigurasi jenis driver dan jaringan:

      [ml2]
      type_drivers = flat,vlan
      tenant_network_types =
      mechanism_drivers = linuxbridge
      extension_drivers = port_security
      
    • Konfigurasi pemetaan jaringan:

      [ml2_type_flat]
      flat_networks = provider
      
      [ml2_type_vlan]
      network_vlan_ranges = provider
      

      Catatan

      Opsi tenant_network_types tidak mengandung nilai karena arsitektur tidak mendukung jaringan self-service.

      Catatan

      Nilai provider di opsi network_vlan_ranges tidak memiliki kisaran VLAN ID untuk mendukung penggunaan ID VLAN bebas

    • Mengkonfigurasi driver security group:

      [securitygroup]
      firewall_driver = iptables
      
  4. Mengisi database.

    # su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
      --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
    
  5. Mulai layanan berikut:

    • Server

Compute nodes

  1. Install the Networking service Linux bridge layer-2 agent.

  2. Dalam file neutron.conf, konfigurasi opsi umum:

    [DEFAULT]
    core_plugin = ml2
    auth_strategy = keystone
    rpc_backend = rabbit
    notify_nova_on_port_status_changes = true
    notify_nova_on_port_data_changes = true
    
    [database]
    ...
    
    [keystone_authtoken]
    ...
    
    [oslo_messaging_rabbit]
    ...
    
    [nova]
    ...
    

    Lihat Installation Guide untuk rilis OpenStack Anda untuk mendapatkan konfigurasi yang sesuai untuk bagian [database], [keystone_authtoken], [oslo_messaging_rabbit], dan [nova].

  3. Dalam file ``linuxbridge_agent.ini`, mengkonfigurasi agen Linux bridge:

    [linux_bridge]
    physical_interface_mappings = provider:PROVIDER_INTERFACE
    
    [vxlan]
    enable_vxlan = False
    
    [securitygroup]
    firewall_driver = iptables
    

    Ganti PROVIDER_INTERFACE dengan nama interface yang mendasari yang menangani provider network. Misalnya, eth1.

  4. Dalam file dhcp_agent.ini, mengkonfigurasi agen DHCP:

    [DEFAULT]
    interface_driver = linuxbridge
    enable_isolated_metadata = True
    
  5. Dalam file metadata_agent.ini, mengkonfigurasi agen metadata:

    [DEFAULT]
    nova_metadata_ip = controller
    metadata_proxy_shared_secret = METADATA_SECRET
    

    Xilai METADATA_SECRET harus sesuai dengan nilai opsi yang sama di bagian [neutron] dari file nova.conf.

  6. Mulai layanan berikut:

    • Linux bridge agent
    • DHCP agent
    • Metadata agent

Verifikasi operasi layanan

  1. Dapatkan kredensial proyek administrasi.

  2. Memverifikasi keberadaan dan operasi agen:

    $ neutron agent-list
    +--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
    | id                                   | agent_type         | host     | availability_zone | alive | admin_state_up | binary                    |
    +--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
    | 09de6af6-c5f1-4548-8b09-18801f068c57 | Linux bridge agent | compute2 |                   | :-)   | True           | neutron-linuxbridge-agent |
    | 188945d1-9e70-4803-a276-df924e0788a4 | Linux bridge agent | compute1 |                   | :-)   | True           | neutron-linuxbridge-agent |
    | e76c440d-d5f6-4316-a674-d689630b629e | DHCP agent         | compute1 | nova              | :-)   | True           | neutron-dhcp-agent        |
    | e67367de-6657-11e6-86a4-931cd04404bb | DHCP agent         | compute2 | nova              | :-)   | True           | neutron-dhcp-agent        |
    | e8174cae-6657-11e6-89f0-534ac6d0cb5c | Metadata agent     | compute1 |                   | :-)   | True           | neutron-metadata-agent    |
    | ece49ec6-6657-11e6-bafb-c7560f19197d | Metadata agent     | compute2 |                   | :-)   | True           | neutron-metadata-agent    |
    +--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
    

Menciptakan jaringan awal

Konfigurasi ini mendukung satu jaringan penyedia datar atau beberapa VLAN jaringan penyedia. Untuk mempermudah, prosedur berikut membuat satu jaringan operator datar (flat provider network).

  1. Dapatkan kredensial proyek administrasi.

  2. Membuat jaringan datar (flat network).

    $ neutron net-create --shared --provider:physical_network provider \
      --provider:network_type flat provider1
    Created a new network:
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | True                                 |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | description               |                                      |
    | id                        | 2b5ad13f-3859-4847-8db7-c695ab7dfce6 |
    | ipv4_address_scope        |                                      |
    | ipv6_address_scope        |                                      |
    | mtu                       | 1500                                 |
    | name                      | provider1                            |
    | port_security_enabled     | True                                 |
    | provider:network_type     | flat                                 |
    | provider:physical_network | provider                             |
    | provider:segmentation_id  |                                      |
    | router:external           | False                                |
    | shared                    | True                                 |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      |                                      |
    | tenant_id                 | de59fed9547a4628b781df0862c837cf     |
    +---------------------------+--------------------------------------+
    

    Catatan

    Opsi shared mengizinkan proyek untuk menggunakan jaringan ini.

    Catatan

    Untuk membuat jaringan VLAN bukannya jaringan datar, perubahan --provider:network_type flat ke --provider:network_type vlan dan tambah --provider:segmentation_id dengan nilai referensi VLAN ID.

  3. Buat subnet IPv4 pada jaringan operator.

     $ neutron subnet-create --name provider1-v4 --ip-version 4 \
       --allocation-pool start=203.0.113.11,end=203.0.113.250 \
       --gateway 203.0.113.1 --dns-nameserver 8.8.4.4 provider1 \
       203.0.113.0/24
     Created a new subnet:
     +-------------------+---------------------------------------------------+
     | Field             | Value                                             |
     +-------------------+---------------------------------------------------+
     | allocation_pools  | {"start": "203.0.113.11", "end": "203.0.113.250"} |
     | cidr              | 203.0.113.0/24                                    |
     | description       |                                                   |
     | dns_nameservers   | 8.8.4.4                                           |
     | enable_dhcp       | True                                              |
     | gateway_ip        | 203.0.113.1                                       |
     | host_routes       |                                                   |
     | id                | 7ce3fd60-1d45-4432-a9a5-4f7645629bd9              |
     | ip_version        | 4                                                 |
     | ipv6_address_mode |                                                   |
     | ipv6_ra_mode      |                                                   |
     | name              | provider1-v4                                      |
    | network_id        | 2b5ad13f-3859-4847-8db7-c695ab7dfce6              |
     | subnetpool_id     |                                                   |
     | tenant_id         | de59fed9547a4628b781df0862c837cf                  |
     +-------------------+---------------------------------------------------+
    
  4. Buat subnet IPv6 pada jaringan operator.

    $ neutron subnet-create --name provider1-v6 --ip-version 6 \
      --gateway fd00:203:0:113::1 --dns-nameserver 2001:4860:4860::8844 \
      provider1 fd00:203:0:113::/64
    Created a new subnet:
    +-------------------+-----------------------------------------------------------------------------+
    | Field             | Value                                                                       |
    +-------------------+-----------------------------------------------------------------------------+
    | allocation_pools  | {"start": "fd00:203:0:113::2", "end": "fd00:203:0:113:ffff:ffff:ffff:ffff"} |
    | cidr              | fd00:203:0:113::/64                                                         |
    | description       |                                                                             |
    | dns_nameservers   | 2001:4860:4860::8844                                                        |
    | enable_dhcp       | True                                                                        |
    | gateway_ip        | fd00:203:0:113::1                                                           |
    | host_routes       |                                                                             |
    | id                | 773ea59c-e8c1-4254-baf3-27d5b2d42eb5                                        |
    | ip_version        | 6                                                                           |
    | ipv6_address_mode |                                                                             |
    | ipv6_ra_mode      |                                                                             |
    | name              | provider1-v6                                                                |
    | network_id        | 2b5ad13f-3859-4847-8db7-c695ab7dfce6                                        |
    | subnetpool_id     |                                                                             |
    | tenant_id         | de59fed9547a4628b781df0862c837cf                                            |
    +-------------------+-----------------------------------------------------------------------------+
    

    Catatan

    Secara default, jaringan penyedia IPv6 bergantung pada infrastruktur jaringan fisik untuk stateless address autoconfiguration (SLAAC) dan router advertisement.

Verifikasi operasi jaringan

  1. Pada setiap node komputasi, memverifikasi penciptaan namespace qdhcp.

    # ip netns
    qdhcp-8b868082-e312-4110-8627-298109d4401c
    
  2. Dapatkan sumber kredensial proyek biasa (non-administratif).

  3. Buat aturan kelompok keamanan yang sesuai untuk mengizinkan ping dan instance akses SSH menggunakan jaringan.

    $ openstack security group rule create --proto icmp default
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | id                    | 2b45fbf8-45db-486c-915f-3f254740ae76 |
    | ip_protocol           | icmp                                 |
    | ip_range              | 0.0.0.0/0                            |
    | parent_group_id       | d35188d0-6b10-4fb9-a6b9-891ed3feeb54 |
    | port_range            |                                      |
    | remote_security_group |                                      |
    +-----------------------+--------------------------------------+
    
    $ openstack security group rule create --proto ipv6-icmp default
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | id                    | 2b45fbf8-45db-486c-915f-3f254740ae76 |
    | ip_protocol           | ipv6-icmp                            |
    | ip_range              | ::/0                                 |
    | parent_group_id       | d35188d0-6b10-4fb9-a6b9-891ed3feeb54 |
    | port_range            |                                      |
    | remote_security_group |                                      |
    +-----------------------+--------------------------------------+
    
    $ openstack security group rule create --proto tcp --dst-port 22 default
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | id                    | 86e5cc55-bb08-447a-a807-d36e2b9f56af |
    | ip_protocol           | tcp                                  |
    | ip_range              | 0.0.0.0/0                            |
    | parent_group_id       | d35188d0-6b10-4fb9-a6b9-891ed3feeb54 |
    | port_range            | 22:22                                |
    | remote_security_group |                                      |
    +-----------------------+--------------------------------------+
    
  4. Meluncurkan sebuah instance dengan sebuah antarmuka pada jaringan operator. Misalnya, image CirrOS menggunakan flavor ID 1.

    $ openstack server create --flavor 1 --image cirros \
      --nic net-id=NETWORK_ID provider-instance1
    

    Ganti `` NETWORK_ID`` dengan ID dari jaringan operator.

  5. Tentukan alamat IPv4 dan IPv6 dari instance.

    $ openstack server list
    +--------------------------------------+--------------------+--------+--------------------------------------------+
    | ID                                   | Name               | Status | Networks                                   |
    +--------------------------------------+--------------------+--------+--------------------------------------------+
    | 018e0ae2-b43c-4271-a78d-62653dd03285 | provider-instance1 | ACTIVE | provider1=203.0.113.13, fd00:203:0:113::13 |
    +--------------------------------------+--------------------+--------+--------------------------------------------+
    

    Catatan

    Alamat IPv4 dan IPv6 muncul mirip hanya untuk tujuan ilustrasi.

  6. Pada kontroler simpul atau host dengan akses ke jaringan operator, ping alamat IPv4 dan IPv6 dari instance.

    $ ping -c 4 203.0.113.13
    PING 203.0.113.13 (203.0.113.13) 56(84) bytes of data.
    64 bytes from 203.0.113.13: icmp_req=1 ttl=63 time=3.18 ms
    64 bytes from 203.0.113.13: icmp_req=2 ttl=63 time=0.981 ms
    64 bytes from 203.0.113.13: icmp_req=3 ttl=63 time=1.06 ms
    64 bytes from 203.0.113.13: icmp_req=4 ttl=63 time=0.929 ms
    
    --- 203.0.113.13 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3002ms
    rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms
    
    $ ping6 -c 4 fd00:203:0:113::13
    PING fd00:203:0:113::13(fd00:203:0:113::13) 56 data bytes
    64 bytes from fd00:203:0:113::13: icmp_seq=1 ttl=64 time=1.25 ms
    64 bytes from fd00:203:0:113::13: icmp_seq=2 ttl=64 time=0.683 ms
    64 bytes from fd00:203:0:113::13: icmp_seq=3 ttl=64 time=0.762 ms
    64 bytes from fd00:203:0:113::13: icmp_seq=4 ttl=64 time=0.486 ms
    
    --- fd00:203:0:113::13 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 2999ms
    rtt min/avg/max/mdev = 0.486/0.796/1.253/0.282 ms
    
  7. Mendapatkan akses ke instance.

  8. Uji konektivitas IPv4 dan IPv6 ke Internet atau jaringan eksternal lainnya.

Arus lalu lintas jaringan

Bagian berikut menjelaskan arus lalu lintas jaringan di beberapa skenario umum. Lalu lintas jaringan North-south perjalanan antara instance dan jaringan eksternal sebagaimana Internet. Lalu lintas jaringan East-west perjalanan antara instance pada jaringan yang sama atau berbeda. Dalam semua skenario, infrastruktur jaringan fisik menangani switching dan routing antara jaringan penyedia dan jaringan eksternal sebagaimana Internet. Setiap kasus merujuk satu atau lebih dari komponen berikut:

  • Provider network 1 (VLAN)
    • VLAN ID 101 (tagged)
    • Rentang alamat IP 203.0.113.0/24 dan fd00:203:0:113::/64

    • Gateway (melalui infrastruktur jaringan fisik)

      • Alamat IP 203.0.113.1 dan fd00:203:0:113:0::1

  • Provider network 2 (VLAN)
    • VLAN ID 102 (tagged)
    • Kisaran alamat IP 192.0.2.0/24 dan fd00:192:0:2::/64

    • Gateway
      • Alamat IP 192.0.2.1 dan fd00:192:0:2::1

  • Instance 1
    • Alamat IP 203.0.113.101 dan fd00:203:0:113:0::101

  • Instance 2
    • Alamat IP 192.0.2.101 dan fd00:192:0:2:0::101

Skenario North-south: Instance dengan alamat IP tetap

  • Instance berada pada compute node 1 dan menggunakan jaringan operator 1.

  • Instance mengirimkan sebuah paket ke host di Internet.

Langkah-langkah berikut yang melibatkan compute node 1.

  1. Antarmuka Instance (1) meneruskan paket ke port instance jembatan penyedia (2) melalui pasangan veth.

  2. Aturan kelompok keamanan (3) pada jembatan penyedia menangani firewall dan pelacakan koneksi paket.

  3. Port sub-interface VLAN (4) di jembatan penyedia meneruskan paket ke interface jaringan fisik (5).

  4. Antarmuka jaringan fisik (5) menambahkan VLAN tag 101 untuk paket dan meneruskannya ke switch infrastruktur jaringan fisik (6).

Langkah-langkah berikut melibatkan infrastruktur jaringan fisik:

  1. Switch menghapus VLAN tag 101 dari paket dan meneruskannya ke router (7).

  2. Router me-rute paket dari jaringan operator (8) ke jaringan eksternal (9) dan meneruskan paket ke switch (10).

  3. Switch meneruskan paket ke jaringan eksternal (11).

  4. Jaringan eksternal (12) menerima paket.

Provider networks using Linux bridge - network traffic flow - north/south

Catatan

Traffic balik mengikuti langkah yang sama secara terbalik.

Skenario East-west 1: Instances pada jaringan yang sama

Instance pada jaringan yang sama berkomunikasi secara langsung antara node komputasi yang berisi instance.

  • Instance 1 berada pada compute node 1 dan menggunakan jaringan provider 1.

  • Instance 2 berada pada compute node 2 dan menggunakan provider network 2.

  • Instance 1 mengirimkan sebuah paket ke instance 2.

Langkah berikut yang melibatkan compute node 1:

  1. Instance 1 interface (1) meneruskan paket ke port instance jembatan provider (2) melalui pasangan veth.

  2. Aturan kelompok keamanan (3) pada jembatan penyedia menangani firewall dan pelacakan koneksi paket.

  3. Port sub-interface VLAN (4) di jembatan penyedia meneruskan paket ke interface jaringan fisik (5).

  4. Antarmuka jaringan fisik (5) menambahkan VLAN tag 101 untuk paket dan meneruskannya ke switch infrastruktur jaringan fisik (6).

Langkah-langkah berikut melibatkan infrastruktur jaringan fisik:

  1. Switch meneruskan paket dari compute node 1 ke compute node 2 (7).

Langkah berikut yang melibatkan compute node 2:

  1. Antarmuka jaringan fisik (8) menghapus VLAN tag 101 dari paket dan meneruskannya ke port sub-interface VLAN (9) di provider bridge.

  2. Aturan kelompok keamanan (10) pada provider bridge menangani firewall dan pelacakan koneksi paket.

  3. Port instance provider bridge (11) meneruskan paket ke instance 2 interface (12) melalui pasangan veth.

Provider networks using Linux bridge - network traffic flow - east/west scenario 1

Catatan

Traffic balik mengikuti langkah yang sama secara terbalik.

Skenario East-west 2: Instances pada jaringan yang berbeda

Instance berkomunikasi melalui router pada infrastruktur jaringan fisik.

  • Instance 1 berada pada compute node 1 dan menggunakan jaringan provider 1.

  • Instance 2 berada pada compute node 1 dan menggunakan provider network 2.

  • Instance 1 mengirimkan sebuah paket ke instance 2.

Catatan

Kedua contoh berada pada compute node yang sama untuk menggambarkan bagaimana VLAN tagging mengaktifkan beberapa jaringan lapisan-2 logis menggunakan jaringan lapisan-2 fisik yang sama.

Langkah berikut melibatkan compute node:

  1. Instance 1 interface (1) meneruskan paket ke port instance jembatan provider (2) melalui pasangan veth.

  2. Aturan kelompok keamanan (3) pada jembatan penyedia menangani firewall dan pelacakan koneksi paket.

  3. Port sub-interface VLAN (4) di jembatan penyedia meneruskan paket ke interface jaringan fisik (5).

  4. Antarmuka jaringan fisik (5) menambahkan VLAN tag 101 untuk paket dan meneruskannya ke switch infrastruktur jaringan fisik (6).

Langkah-langkah berikut melibatkan infrastruktur jaringan fisik:

  1. Switch menghapus VLAN tag 101 dari paket dan meneruskannya ke router (7).

  2. Router me-rute paket dari provider network 1 (8) ke provider network 2 (9).

  3. Router meneruskan paket ke switch (10).

  4. Switch menambahkan VLAN tag 102 untuk paket dan meneruskannya ke compute node 1 (11).

Langkah berikut melibatkan compute node:

  1. Antarmuka jaringan fisik (12) menghapus VLAN tag 102 dari paket dan meneruskannya ke port sub-interface VLAN (13) di provider bridge.

  2. Aturan kelompok keamanan (14) dari provider bridge menangani firewall dan pelacakan koneksi untuk paket.

  3. Provider bridge instance port (15) meneruskan paket ke instance 2 interface (16) melalui pasangan veth.

Provider networks using Linux bridge - network traffic flow - east/west scenario 2

Catatan

Traffic balik mengikuti langkah yang sama secara terbalik.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.