Service function chaining (SFC) pada dasarnya mengacu pada software-defined networking (SDN) versi policy-based routing (PBR). Dalam banyak kasus, SFC melibatkan keamanan, meskipun dapat mencakup berbagai fitur lainnya.
Pada dasarnya, SFC me-rute paket melalui satu atau lebih fungsi pelayanan bukan routing konvensional yang me-rute paket menggunakan alamat IP tujuan. Fungsi layanan pada dasarnya meniru serangkaian perangkat jaringan fisik dengan kabel yang menghubungkan mereka bersama-sama.
Sebuah contoh dasar dari SFC melibatkan routing paket dari satu lokasi ke lokasi lain melalui firewall yang tidak memiliki alamat IP “next hop” dari perspektif routing yang konvensional. Sebuah contoh yang lebih kompleks melibatkan serangkaian memerintahkan fungsi layanan, masing-masing dilaksanakan dengan menggunakan beberapa instance (VMs). Paket harus mengalir melalui satu instance dan algoritma hashing mendistribusikan arus di beberapa instance pada setiap hop.
Semua layanan OpenStack Jaringan dan instance OpenStack Compute menghubungkan ke jaringan virtual melalui port sehingga hal itu memungkinkan untuk membuat model kemudi lalu lintas (traffic steering model) untuk layanan chaining hanya menggunakan port. Termasuk port ini dalam rantai port mengaktifkan kemudi lalu lintas melalui satu atau lebih instance yang menyediakan fungsi layanan.
Sebuah rantai port, atau jalur fungsi pelayanan, terdiri dari:
Satu set port yang menentukan urutan fungsi layanan.
Satu set pengklasifikasi aliran yang menspesifikasikan arus lalu lintas yang terklasifikasikan memasuki rantai.
Jika fungsi pelayanan melibatkan sepasang port, port pertama bertindak sebagai ingress port fungsi pelayanan dan port kedua bertindak sebagai port egress. Jika kedua port menggunakan nilai yang sama, mereka berfungsi sebagai port bidirectional virtual tunggal.
Sebuah rantai port merupakan rantai layanan searah. Port pertama bertindak sebagai kepala rantai fungsi pelayanan dan port tindakan kedua sebagai ekor rantai fungsi pelayanan. Sebuah rantai fungsi pelayanan dua arah terdiri dari dua rantai port searah.
Sebuah classifier aliran hanya bisa memilik salah satu rantai port untuk mencegah ambiguitas dimana rantai harus menangani paket dalam aliran. Sebuah cek mencegah ambiguitas tersebut. Namun, Anda dapat mengaitkan beberapa pengklasifikasi aliran dengan rantai port karena beberapa arus dapat meminta jalur fungsi pelayanan yang sama.
Saat ini, SFC tidak memiliki dukungan untuk fungsi-fungsi layanan multi-proyek.
Plug-in rantai port mendukung penyokong penyedia layanan termasuk driver OVS dan berbagai driver kontroler SDN. Driver umum API mengaktifkan driver yang lain untuk memberikan implementasi yang berbeda untuk rantai layanan path rendering.
Lihat developer documentation for more information.
id
- Port chain IDtenant_id
- Project IDname
- Readable namedescription
- Readable descriptionport_pair_groups
- List of port pair group IDsflow_classifiers
- List of flow classifier IDschain_parameters
- Dictionary of chain parametersSebuah rantai port terdiri dari urutan kelompok pasangan port. Setiap kelompok pasangan port adalah hop dalam rantai port. Sekelompok pasang port merupakan fungsi layanan yang menyediakan fungsi setara. Misalnya, sekelompok fungsi layanan firewall.
Sebuah klassifier aliran mengidentifikasi aliran. Sebuah rantai port dapat berisi beberapa pengklasifikasi aliran. Menghilangkan klassifier aliran efektif mencegah pengendalian lalu lintas melalui rantai port.
Atribut chain_parameters
berisi satu atau lebih parameter untuk rantai port. Saat ini, atribut itu hanya mendukung parameter korelasi yang defaultnya mpls
untuk konsistensi dengan kemampuan Open vSwitch (OVS). Nilai-nilai itu di masa depan untuk parameter korelasi mungkin meliputi network service header (NSH).
id
- Port pair group IDtenant_id
- Project IDname
- Readable namedescription
- Readable descriptionport_pairs
- List of service function port pairsSekelompok pasangan port mungkin berisi satu atau lebih pasangan port. Beberapa pasangan port mengaktifkan load balancing/distribution lebih dari satu set fungsi layanan setara (equivalent) secara fungsional.
id
- Port pair IDtenant_id
- Project IDname
- Readable namedescription
- Readable descriptioningress
- Ingress portegress
- Egress portservice_function_parameters
- Dictionary of service function parametersSepasang port merupakan fungsi pelayanan instance yang mencakup ingress and egress port. Sebuah fungsi pelayanan yang berisi port dua arah menggunakan ingress and egress port yang sama.
Atribut service_function_parameters
mencakup satu atau lebih parameter untuk fungsi pelayanan. Saat ini, atribut itu hanya mendukung parameter korelasi yang menentukan asosiasi paket dengan rantai. Parameter ini default ke none
untuk fungsi layanan legacy yang tidak memiliki dukungan untuk korelasi seperti NSH tersebut. Jika diatur ke none
, pelaksanaan data plane harus secara funcional menyediakan fungsi pelayanan proxy.
id
- Flow classifier IDtenant_id
- Project IDname
- Readable namedescription
- Readable descriptionethertype
- Ethertype (IPv4/IPv6)protocol
- IP protocolsource_port_range_min
- Minimum source protocol portsource_port_range_max
- Maximum source protocol portdestination_port_range_min
- Minimum destination protocol portdestination_port_range_max
- Maximum destination protocol portsource_ip_prefix
- Source IP address or prefixdestination_ip_prefix
- Destination IP address or prefixlogical_source_port
- Source portlogical_destination_port
- Destination portl7_parameters
- Dictionary of L7 parametersKombinasi atribut sumber mendefinisikan sumber aliran. Kombinasi atribut tujuan mendefinisikan tujuan aliran. Atribut `` l7_parameters`` adalah tempat dudukan yang dapat digunakan untuk mendukung klasifikasi aliran menggunakan layer 7 field, seperti URL. Jika tidak ditentukan, atribut logical_source_port
dan logical_destination_port
defaultnya ke none
, atribut ethertype
defaultnya ke IPv4
, dan semua atribut lainnya defaultnya nilai wildcard.
Contoh berikut menggunakan neutron
command-line interface (CLI) untuk menciptakan sebuah rantai port yang terdiri dari tiga instance fungsi pelayanan untuk menangani HTTP (TCP) arus lalu lintas dari 192.168.1.11:1000 ke 192.168.2.11:80.
Catatan
The example network net1
must exist before creating ports on it.
Sumber kepercayaan dari proyek yang memiliki jaringan net1
.
Buat port pada jaringan net1
dan merekam nilai UUID.
$ neutron port-create --name p1 net1
$ neutron port-create --name p2 net1
$ neutron port-create --name p3 net1
$ neutron port-create --name p4 net1
$ neutron port-create --name p5 net1
$ neutron port-create --name p6 net1
Peluncuran fungsi pelayanan instance vm1
menggunakan ports p1
dan p2
, vm2
menggunakan ports p3
and p4
, dan vm3
menggunakan ports p5
and p6
.
$ openstack server create --nic port-id=P1_ID --nic port-id=P2_ID vm1
$ openstack server create --nic port-id=P3_ID --nic port-id=P4_ID vm2
$ openstack server create --nic port-id=P5_ID --nic port-id=P6_ID vm3
Gantikan P1_ID
, P2_ID
, P3_ID
, P4_ID
, P5_ID
, dan P6_ID
dengan UUID dari port masing-masing.
Catatan
Perintah ini memerlukan opsi tambahan supaya berhasil meluncurkan sebuah instance. Lihat CLI reference <http://docs.openstack.org/cli-reference/openstack.html> _ untuk informasi lebih lanjut.
Atau, Anda dapat memulai setiap instance dengan satu antarmuka jaringan dan menghubungkan port tambahan nanti.
Buat klassifier aliran FC1
yang cocok dengan header paket yang sesuai.
$ neutron flow-classifier-create \
--description "HTTP traffic from 192.168.1.11 to 192.168.2.11" \
--ethertype IPv4 \
--source-ip-prefix 192.168.1.11/32 \
--destination-ip-prefix 192.168.2.11/32 \
--protocol tcp \
--source-port 1000:1000 \
--destination-port 80:80 FC1
Buat pasangan port PP1
dengan port p1
dan p2
, PP2
dengan port p3
dan p4
, dan PP3
dengan port p5
dan p6
.
$ neutron port-pair-create \
--description "Firewall SF instance 1" \
--ingress p1 \
--egress p2 PP1
$ neutron port-pair-create \
--description "Firewall SF instance 2" \
--ingress p3 \
--egress p4 PP2
$ neutron port-pair-create \
--description "IDS SF instance" \
--ingress p5 \
--egress p6 PP3
Buat grup pasangan port PPG1
dengan pasangan port PP1
dan PP2
dan PPG2
dengan pasangan port PP3
.
$ neutron port-pair-group-create \
--port-pair PP1 --port-pair PP2 PPG1
$ neutron port-pair-group-create \
--port-pair PP3 PPG2
Catatan
Anda dapat mengulangi opsi --port-pair
untuk beberapa pasang port fungsi layanan setara secara fungsional.
Buat rantai port PC1
dengan kelompok pasangan port PPG1
dan `` PPG2`` dan mengalir klassifier aliran FC1
.
$ neutron port-chain-create \
--port-pair-group PPG1 --port-pair-group PPG2 \
--flow-classifier FC1 PC1
Catatan
Anda dapat mengulangi opsi --port-pair-group
untuk menentukan tambahan kelompok pasangan port dalam rantai port. Sebuah rantai port harus mengandung setidaknya satu kelompok pasangan port.
Anda dapat mengulangi opsi --flow-classifier
untuk menentukan beberapa pengklasifikasi aliran untuk rantai port. Setiap klassifier aliran mengidentifikasi aliran.
Gunakan perintah neutron port-chain-update untuk secara dinamis menambahkan atau menghapus kelompok pasangan port atau pengklasifikasi aliran pada rantai port.
Misalnya, tambahkan grup pasangan port PPG3
untuk rantai port PC1
:
$ neutron port-chain-update \
--port-pair-group PPG1 --port-pair-group PPG2 --port-pair-group PPG3 \
--flow-classifier FC1 PC1
Misalnya, tambahkan klassifier aliran FC2
untuk rantai port PC1
:
$ neutron port-chain-update \
--port-pair-group PPG1 --port-pair-group PPG2 \
--flow-classifier FC1 --flow-classifier FC2 PC1
SFC mengarahkan lalu lintas yang cocok dengan klassifier aliran tambahan untuk kelompok pasangan port dalam rantai port.
Gunakan perintah neutron port-pair-group-update untuk melakukan scale-out dinamis atau operasi scale-in dengan menambahkan atau menghapus pasang port pada kelompok pasangan port.
$ neutron port-pair-group-update \
--port-pair PP1 --port-pair PP2 --port-pair PP4 PPG1
SFC melakukan load balancing/distribution terhadap fungsi layanan tambahan pada kelompok pasangan port.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.