Linux bridge: Provider networks

Linux bridge: Provider networks

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

Prasyarat

Satu node controller dengan komponen-komponen berikut:

  • Dua antarmuka jaringan: manajemen dan provider.

  • Layanan server OpenStack Networking dan ML2 plug-in.

Dua node komputasi dengan komponen-komponen berikut:

  • Dua antarmuka jaringan: manajemen dan provider.

  • 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 (overwhelm) pengangkutan pesan. Juga, untuk lebih menyederhanakan penyebaran, Anda dapat menghilangkan agen metadata dan menggunakan drive konfigurasi untuk memberikan 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 hanya berisi namespace DHCP dan Linux bridge dengan port pada antarmuka jaringan fisik provider.

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

Gambar berikut menjelaskan konektivitas virtual antar komponen untuk dua jaringan tag (VLAN). Pada dasarnya, setiap jaringan menggunakan jembatan terpisah yang berisi port pada sub-interface VLAN pada antarmuka jaringan fisik provider. 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

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

Konfigurasi contoh

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

Controller node

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

  2. Dalam file neutron.conf:

    • Mengkonfigurasi opsi umum:

      [DEFAULT]
      core_plugin = ml2
      auth_strategy = keystone
      
      [database]
      ...
      
      [keystone_authtoken]
      ...
      
      [nova]
      ...
      
      [agent]
      ...
      

      Lihat Installation Tutorials and Guides dan Configuration Reference untuk rilis OpenStack Anda untuk mendapatkan konfigurasi tambahan yang sesuai untuk bagian [DEFAULT], [database], [keystone_authtoken], [nova], dan [agent].

    • Menonaktifkan layanan plug-in karena jaringan provider tidak memerlukannya. Namun, hal ini mengistirahatkan bagian dari dashboard yang mengelola layanan Networking. Lihat Newton Install Tutorials and Guides untuk informasi lebih lanjut.

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

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

  3. Dalam file ml2_conf.ini:

    • Mengkonfigurasi driver dan tipe jaringan:

      [ml2]
      type_drivers = flat,vlan
      tenant_network_types =
      mechanism_drivers = linuxbridge
      extension_drivers = port_security
      
    • Mengkonfigurasi 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 berkisar VLAN ID untuk mendukung penggunaan ID VLAN bebas.

  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 (simpul komputasi)

  1. Instal layanan Networking, Linux bridge layer-2 agent.

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

    [DEFAULT]
    core_plugin = ml2
    auth_strategy = keystone
    
    [database]
    ...
    
    [keystone_authtoken]
    ...
    
    [nova]
    ...
    
    [agent]
    ...
    

    Lihat Installation Tutorials and Guides dan Configuration Reference untuk rilis OpenStack Anda untuk mendapatkan konfigurasi tambahan yang sesuai untuk bagian [DEFAULT], [database], [keystone_authtoken], [nova], dan [agent].

  3. Dalam file linuxbridge_agent.ini, lakukan konfigurasi Linux bridge agent:

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

    Gantilah PROVIDER_INTERFACE dengan nama interface yang mendasarinya yang menangani jaringan penyedia. Sebagai contoh,``eth1``.

  4. Dalam file dhcp_agent.ini, lakukan konfigurasi agen DHCP:

    [DEFAULT]
    interface_driver = linuxbridge
    enable_isolated_metadata = True
    force_metadata = True
    

    Catatan

    Opsi force_metadata memaksa agen DHCP untuk memberikan rute host ke layanan metadata pada 169.254.169.254 terlepas dari apakah subnet berisi sebuah antarmuka pada router, dengan demikian mempertahankan perilaku metadata yang sama dan dapat diprediksi antar subnet.

  5. Dalam file metadata_agent.ini, lakukan konfigurasi agen metadata:

    [DEFAULT]
    nova_metadata_ip = controller
    metadata_proxy_shared_secret = METADATA_SECRET
    

    Nilai METADATA_SECRET harus sesuai dengan nilai opsi yang sama dalam bagian [neutron] `` dari file ``nova.conf.

  6. Mulai layanan berikut:

    • Agen jembatan Linux

    • Agen DHCP

    • Agen Metadata

Melakukan verifikasi operasi layanan

  1. Dapatkan sumber kredensial proyek administrasi.

  2. Memverifikasi keberadaan dan operasi agen:

    $ openstack network agent list
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    | ID                                   | Agent Type         | Host     | Availability Zone | Alive | State | Binary                    |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    | 09de6af6-c5f1-4548-8b09-18801f068c57 | Linux bridge agent | compute2 |                   | True  | UP    | neutron-linuxbridge-agent |
    | 188945d1-9e70-4803-a276-df924e0788a4 | Linux bridge agent | compute1 |                   | True  | UP    | neutron-linuxbridge-agent |
    | e76c440d-d5f6-4316-a674-d689630b629e | DHCP agent         | compute1 | nova              | True  | UP    | neutron-dhcp-agent        |
    | e67367de-6657-11e6-86a4-931cd04404bb | DHCP agent         | compute2 | nova              | True  | UP    | neutron-dhcp-agent        |
    | e8174cae-6657-11e6-89f0-534ac6d0cb5c | Metadata agent     | compute1 |                   | True  | UP    | neutron-metadata-agent    |
    | ece49ec6-6657-11e6-bafb-c7560f19197d | Metadata agent     | compute2 |                   | True  | UP    | neutron-metadata-agent    |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    

Menciptakan jaringan awal

Konfigurasi ini mendukung satu jaringan datar atau beberapa jaringan penyedia VLAN. Untuk mempermudah, prosedur berikut menciptakan satu jaringan operator datar.

  1. Dapatkan sumber kredensial proyek administrasi.

  2. Buat jaringan datar (flat network)

    $ openstack network create --share --provider-physical-network provider \
      --provider-network-type flat provider1
    +---------------------------+-----------+-
    | Field                     | Value     |
    +---------------------------+-----------+
    | admin_state_up            | UP        |
    | mtu                       | 1500      |
    | name                      | provider1 |
    | port_security_enabled     | True      |
    | provider:network_type     | flat      |
    | provider:physical_network | provider  |
    | provider:segmentation_id  | None      |
    | router:external           | Internal  |
    | shared                    | True      |
    | status                    | ACTIVE    |
    +---------------------------+-----------+
    

    Catatan

    Opsi share memungkinkan proyek untuk menggunakan jaringan ini. Untuk membatasi akses ke jaringan provider, lihat :ref: config-rbac.

    Catatan

    Untuk membuat jaringan VLAN bukannya jaringan datar, rubahlah --provider:network_type flat ke --provider-network-type vlan and add --provider-segment dengan nilai mereferensi VLAN ID.

  3. Buat subnet IPv4 pada jaringan provider.

    $ openstack subnet create --subnet-range 203.0.113.0/24 --gateway 203.0.113.1 \
      --network provider1 --allocation-pool start=203.0.113.11,end=203.0.113.250 \
      --dns-nameserver 8.8.4.4 provider1-v4
    +-------------------+----------------------------+
    | Field             | Value                      |
    +-------------------+----------------------------+
    | allocation_pools  | 203.0.113.11-203.0.113.250 |
    | cidr              | 203.0.113.0/24             |
    | dns_nameservers   | 8.8.4.4                    |
    | enable_dhcp       | True                       |
    | gateway_ip        | 203.0.113.1                |
    | ip_version        | 4                          |
    | name              | provider1-v4               |
    +-------------------+----------------------------+
    

    Catatan

    Pengaktifan DHCP membuat layanan Networking untuk menyediakan DHCP yang dapat mengganggu layanan DHCP yang ada pada infrastruktur jaringan fisik.

  4. Buat subnet IPv6 pada jaringan provider.

    $ openstack subnet create --subnet-range fd00:203:0:113::/64 --gateway fd00:203:0:113::1 \
      --ip-version 6 --ipv6-address-mode slaac --network provider1 \
      --dns-nameserver 2001:4860:4860::8844 provider1-v6
    +-------------------+------------------------------------------------------+
    | Field             | Value                                                |
    +-------------------+------------------------------------------------------+
    | allocation_pools  | fd00:203:0:113::2-fd00:203:0:113:ffff:ffff:ffff:ffff |
    | cidr              | fd00:203:0:113::/64                                  |
    | dns_nameservers   | 2001:4860:4860::8844                                 |
    | enable_dhcp       | True                                                 |
    | gateway_ip        | fd00:203:0:113::1                                    |
    | ip_version        | 6                                                    |
    | ipv6_address_mode | slaac                                                |
    | ipv6_ra_mode      | None                                                 |
    | name              | provider1-v6                                         |
    +-------------------+------------------------------------------------------+
    

    Catatan

    Layanan Networking menggunakan agen lapisan-3 untuk memberikan router advertisement. Jaringan penyedia mengandalkan infrastruktur jaringan fisik untuk lapisan layer-3 daripada agen layer-3. Dengan demikian, infrastruktur jaringan fisik harus menyediakan router advertisement pada jaringan provider untuk operasi IPv6 yang tepat.

Lakukan verifikasi operasi jaringan

  1. Pada setiap node komputasi, lakukan verifikasi penciptaan namespace qdhcp.

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

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

    $ openstack security group rule create --proto icmp default
    +------------------+-----------+
    | Field            | Value     |
    +------------------+-----------+
    | direction        | ingress   |
    | ethertype        | IPv4      |
    | protocol         | icmp      |
    | remote_ip_prefix | 0.0.0.0/0 |
    +------------------+-----------+
    
    $ openstack security group rule create --ethertype IPv6 --proto ipv6-icmp default
    +-----------+-----------+
    | Field     | Value     |
    +-----------+-----------+
    | direction | ingress   |
    | ethertype | IPv6      |
    | protocol  | ipv6-icmp |
    +-----------+-----------+
    
    $ openstack security group rule create --proto tcp --dst-port 22 default
    +------------------+-----------+
    | Field            | Value     |
    +------------------+-----------+
    | direction        | ingress   |
    | ethertype        | IPv4      |
    | port_range_max   | 22        |
    | port_range_min   | 22        |
    | protocol         | tcp       |
    | remote_ip_prefix | 0.0.0.0/0 |
    +------------------+-----------+
    
    $ openstack security group rule create --ethertype IPv6 --proto tcp --dst-port 22 default
    +------------------+-----------+
    | Field            | Value     |
    +------------------+-----------+
    | direction        | ingress   |
    | ethertype        | IPv6      |
    | port_range_max   | 22        |
    | port_range_min   | 22        |
    | protocol         | tcp       |
    +------------------+-----------+
    
  4. Luncurkan sebuah instance dengan sebuah antarmuka pada jaringan provider. Misalnya, image CirrOS menggunakan flavor ID 1.

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

    Gantilah NETWORK_ID dengan ID dari jaringan provider.

  5. Tentukan alamat IPv4 dan IPv6 instance.

    $ openstack server list
    +--------------------------------------+--------------------+--------+------------------------------------------------------------+------------+
    | ID                                   | Name               | Status | Networks                                                   | Image Name |
    +--------------------------------------+--------------------+--------+------------------------------------------------------------+------------+
    | 018e0ae2-b43c-4271-a78d-62653dd03285 | provider-instance1 | ACTIVE | provider1=203.0.113.13, fd00:203:0:113:f816:3eff:fe58:be4e | cirros     |
    +--------------------------------------+--------------------+--------+------------------------------------------------------------+------------+
    
  6. Pada controller node atau host dengan akses ke jaringan provider, lakukan ping IPv4 dan alamat IPv6 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:f816:3eff:fe58:be4e
    PING fd00:203:0:113:f816:3eff:fe58:be4e(fd00:203:0:113:f816:3eff:fe58:be4e) 56 data bytes
    64 bytes from fd00:203:0:113:f816:3eff:fe58:be4e icmp_seq=1 ttl=64 time=1.25 ms
    64 bytes from fd00:203:0:113:f816:3eff:fe58:be4e icmp_seq=2 ttl=64 time=0.683 ms
    64 bytes from fd00:203:0:113:f816:3eff:fe58:be4e icmp_seq=3 ttl=64 time=0.762 ms
    64 bytes from fd00:203:0:113:f816:3eff:fe58:be4e icmp_seq=4 ttl=64 time=0.486 ms
    
    --- fd00:203:0:113:f816:3eff:fe58:be4e 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. Dapatkan akses ke instance.

  8. Lakukan 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 berjalan antara instance dan jaringan eksternal seperti Internet. Lalu lintas jaringan *east-barat * berjalan antara instance pada jaringan yang sama atau berbeda. Dalam semua skenario, infrastruktur jaringan fisik menangani switching dan routing antara jaringan provider dan jaringan eksternal seperti Internet. Setiap kasus merujuk satu atau lebih dari komponen berikut:

  • Jaringan provider 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

  • Jaringan provider 2 (VLAN)

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

    • Gateway (gerbang)

      • 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

North-south scenario: Instance dengan alamat IP tetap

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

  • Instance mengirimkan sebuah paket ke host di Internet.

Langkah berikut melibatkan komputasi node 1.

  1. Antarmuka instance (1) meneruskan paket ke provider bridge instance port (2) melalui pasangan veth.

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

  3. Port sub-interface VLAN (4) di provider bridge meneruskan paket ke antarmuka 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

Lalu lintas balik mengikuti langkah yang sama secara terbalik.

East-west scenario 1: Instance pada jaringan yang sama

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

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

  • Instance 2 berada pada komputasi node 2 dan menggunakan jaringan operator 1.

  • Instance 1 mengirimkan sebuah paket ke instance 2.

Langkah berikut melibatkan komputasi node 1:

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

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

  3. Port sub-interface VLAN (4) di provider bridge meneruskan paket ke antarmuka 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 komputasi node 1 ke komputasi node 2 (7).

Langkah berikut melibatkan komputasi node 2:

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

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

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

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

Catatan

Lalu lintas balik mengikuti langkah yang sama secara terbalik.

East-west scenario 2: Instances pada jaringan yang berbeda

Instance berkomunikasi melalui router pada infrastruktur jaringan fisik.

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

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

  • Instance 1 mengirimkan sebuah paket ke instance 2.

Catatan

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

Langkah berikut melibatkan node komputasi:

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

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

  3. Port sub-interface VLAN (4) di provider bridge meneruskan paket ke antarmuka 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 node komputasi:

  1. Physical network interface (12) menghapus VLAN tag 102 dari paket dan meneruskannya ke VLAN sub-interface port (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

Lalu lintas 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.