Servis işlev zinciri (SFC) temel olarak politika tabanlı yönlendirme (PBR)`nin :term:`yazılım-tanımlı ağ (SDN) sürümü olarak adlandırılır. Bir çok durumda, SFC güvenliği içerir, ancak diğer çeşitli özellikleri de içerebilir.
Temel olarak SFC, paketleri hedef IP adresini kullanarak yönlendiren geleneksel yönlendirme yerine bir veya daha fazla hizmet işleviyle paket yönlendirir. Servis fonksiyonları, aslında, kabloları bir araya getiren bir dizi fiziksel ağ cihazını taklit eder.
SFC’nin temel bir örneği, klasik bir yönlendirme perspektifinden “bir sonraki durak” IP adresinden yoksun bir güvenlik duvarı vasıtasıyla paketleri bir konumdan diğerine yönlendirmeyi içerir. Daha karmaşık bir örnek, her biri birden çok örneği (VM’ler) kullanarak uygulanan sıralı bir dizi hizmet işlevini içerir. Paketler bir örnek vasıtasıyla akmalıdır ve bir karma algoritması, akışları her duraktaki birden fazla sunucuya dağıtır.
Tüm OpenStack Ağ hizmetleri ve OpenStack Hesaplama sunucuları, bağlantı noktaları kullanarak sanal bir ağa bağlanır; sadece bağlantı noktaları kullanarak servis zincirleme için bir trafik direksiyon modeli oluşturmayı mümkün kılar. Bu bağlantı noktalarını bir bağlantı zincirine dahil etmek, servis işlevleri sağlayan bir veya daha fazla örnek aracılığıyla trafiğin yönlendirilmesini sağlar.
Bir bağlantı noktası zinciri veya servis fonksiyon yolu aşağıdakini içerir:
Bir hizmet işlevi bir çift bağlantı noktasını içeriyorsa, ilk bağlantı noktası hizmet işlevinin giriş bağlantı noktası görevi görür ve ikinci bağlantı noktası çıkış bağlantı noktası görevi görür. Her iki bağlantı noktası da aynı değeri kullanıyorsa, tek bir sanal iki yönlü bağlantı noktası olarak işlev görürler.
Bir bağlantı noktası zinciri tek yönlü bir hizmet zinciridir. İlk bağlantı noktası servis fonksiyon zincirinin başı ve ikinci bağlantı noktası servis fonksiyon zincirinin kuyruğu gibi davranır. İki yönlü hizmet işlev zinciri, iki tek yönlü bağlantı zincirinden oluşur.
Bir akış sınıflandırıcısı, hangi zincirin akıştaki paketleri işleyeceği konusunda belirsizliği önlemek için yalnızca bir bağlantı noktasına ait olabilir. Bir kontrol bu belirsizliği engelliyor. Bununla birlikte, çoklu akış sınıflandırıcılarını bir bağlantı noktası zinciriyle ilişkilendirebilirsiniz, çünkü çoklu akışlar aynı hizmet işlev yolunu isteyebilir.
Şimdilik, SFC, çoklu proje hizmet işlevleri için destek bulunmuyor.
Bağlantı zinciri eklentisi, OVS sürücüsü ve çeşitli SDN kontrolör sürücüleri de dahil olmak üzere destek hizmetleri sağlayıcılarını desteklemektedir. Ortak sürücü API’sı, farklı sürücülerin servis zinciri yolu işleme için farklı uygulamaları sunmalarını sağlar.
Daha fazla bilgi için `geliştirici belgesi <https://docs.openstack.org/developer/networking-sfc/>`_ne bakınız.
id
- Bağlantı noktası zinciri ID’sitenant_id
- Proje IDisim
- Okunabilir isimaçıklama
- Okunabilir açıklamaport_pair_groups
- Bağlantı noktası çifti grup IDleri listesiflow_classifiers
- Akış sınıflandırıcı IDler listesichain_parameters
- Zincir parametreleri sözlüğüBir bağlantı zinciri, bir dizi bağlantı noktası çifti grubundan oluşur. Her bir bağlantı noktası çifti grubu, bağlantı noktası zincirinde bir atlamadır. Bir grup bağlantı noktası çifti, eş değer işlevsellik sağlayan servis işlevlerini temsil eder. Örneğin, bir grup güvenlik duvarı servis fonksiyonları.
Akış sınıflandırıcısı bir akışı tanımlar. Bir bağlantı zinciri, çoklu akış sınıflandırıcıları içerebilir. Akış sınıflandırıcısının atlanması etkili bir şekilde bağlantı noktası zinciri boyunca trafik yönlendirilmesini engeller.
chain_parameters
özelliği, bağlantı noktası zinciri için bir veya daha fazla parametre içerir. Şimdilik, yalnızca Open vSwitch (OVS) yetenekleriyle tutarlılık için ``mpls``ye varsayılan bir korelasyon parametresi destekliyor. Korelasyon parametresi için gelecek değerler şunları içerebilir ağ servis başlığı (NSH).
id
- Bağlantı noktası çifti grup ID’sitenant_id
- Proje IDisim
- Okunabilir isimaçıklama
- Okunabilir açıklamaport_pairs
- Servis fonksiyonu bağlantı noktası çifti listesiBir bağlantı noktası çifti grubu bir veya daha fazla bağlantı noktası çifti içerebilir. Çoklu port çiftleri, işlevsel olarak eşdeğer bir servis fonksiyonları seti üzerinden yük dengeleme/dağıtma imkanı sağlar.
id
- Bağlantı noktası çifti ID’sitenant_id
- Proje IDisim
- Okunabilir isimaçıklama
- Okunabilir açıklamaingress
- Giriş bağlantı noktasıegress
- Çıktı bağlantı noktasıservice_function_parameters
- Servis fonksiyon parametreleri sözlüğüBir bağlantı noktası çifti, bir giriş ve çıkış bağlantı noktası içeren bir servis fonksiyonu örneğini temsil eder. Çift yönlü bir bağlantı noktası içeren bir servis fonksiyonu, aynı giriş ve çıkış bağlantı noktasını kullanır.
service_function_parameters
özniteliği, servis fonksiyonu için bir veya daha fazla parametre içerir. Şimdilik, yalnızca bir paketin bir zincirle ilişkilendirilmesini belirleyen bir korelasyon parametresini desteklemektedir. Bu parametre, NSH gibi korelasyon için destek bulunmayan eski hizmet işlevleri için varsayılan olarak none
olur. none
olarak ayarlanmazsa, veri platformu uygulaması servis fonksiyonu vekil işlevselliği sağlamalıdır.
id
- Akış sınıflandırıcı IDtenant_id
- Proje IDisim
- Okunabilir isimaçıklama
- Okunabilir açıklamaethertype
- Eternet türü (IPv4/IPv6)protokol
- IP protokolüsource_port_range_min
- En küçük kaynak protokol bağlantı noktasısource_port_range_max
- En büyük kaynak protokol bağlantı noktasıdestination_port_range_min
- En küçük hedef protokol bağlantı noktasıdestination_port_range_max
- En fazla hedef protokol bağlantı noktasısource_ip_prefix
- Kaynak IP adres veya önekdestination_ip_prefix
- Hedef IP adres veya öneklogical_source_port
- Kaynak bağlantı noktasılogical_destination_port
- Hedef bağlantı noktasıl7_parameters
- L7 parametreleri sözlüğüKaynak argümanlarının birleşimi, akışın kaynağını tanımlar. Hedef argümanlarının birleşimi, akışın varış yerini tanımlar. l7_parameters
özniteliği, bir URL gibi katman 7 alanları kullanarak akış sınıflandırmasını desteklemek için kullanılabilen bir yer tutucudur. Belirtilmemişse, logical_source_port
ve logical_destination_port
öznitelikleri none
, ethertype
öznitelikleri varsayılan olarak IPv4
ve diğer tüm öznitelikler bir joker karakter değeri varsayılanıdır.
Aşağıdaki örnek, 192.0.2.11:1000’den 198.51.100.11:80’e kadar HTTP (TCP) trafik akışlarını işlemek için üç servis işlev sunucusundan oluşan bir bağlantı zinciri oluşturmak için neutron
komut satırı arabirimini (CLI) kullanmaktadır.
Not
Örnek ağ net1
üzerinde bağlantı noktası oluşturulmadan önce var olmalıdır.
net1
ağına sahip olan projenin kimlik bilgilerini yazın.
net1
ağında bağlantı noktaları oluşturun ve UUID değerlerini kaydedin.
$ openstack port create p1 --network net1
$ openstack port create p2 --network net1
$ openstack port create p3 --network net1
$ openstack port create p4 --network net1
$ openstack port create p5 --network net1
$ openstack port create p6 --network net1
p1
ve p2
bağlantı noktalarını kullanarak vm1
, p3
ve p4
bağlantı noktalarını kullanarak vm2
, p5
ve p6
bağlantı noktalarını kullanarak vm3
servis fonksiyon sunucularını başlatın.
$ 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
P1_ID
, P2_ID
, P3_ID
, P4_ID
, P5_ID
, ve ``P6_ID``yi sıralı bağlantı noktalarının UUIDleri ile yer değiştirin.
Not
Bu komut, bir sunucuyu başarılı bir şekilde başlatmak için ek seçeneklere ihtiyaç duyar. Daha fazla bilgi için CLI kılavuzu belgesine bakınız.
Alternatif olarak, her bir sunucuyu bir ağ arabirimi ile başlatabilir ve daha sonra ek bağlantı noktaları takabilirsiniz.
Uygun paket üstbilgileriyle eşleşen akış sınıflandırıcısı FC1
oluşturun.
$ neutron flow-classifier-create \
--description "HTTP traffic from 192.0.2.11 to 198.51.100.11" \
--ethertype IPv4 \
--source-ip-prefix 192.0.2.11/32 \
--destination-ip-prefix 198.51.100.11/32 \
--protocol tcp \
--source-port 1000:1000 \
--destination-port 80:80 FC1
p1
ve p2
ile PP1
, p3
ve p4
ile PP2
ve p5
ve p6
ile PP3
bağlantı noktası çifti oluştur.
$ 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
PP1
ve PP2
ve PPG2
bağlantı noktası çiftleri PP3` bağlantı noktasıyla çiftiyle ``PPG1
bağlantı noktası çifti grubu oluşturun.
$ neutron port-pair-group-create \
--port-pair PP1 --port-pair PP2 PPG1
$ neutron port-pair-group-create \
--port-pair PP3 PPG2
Not
İşlevsel olarak eşdeğer servis fonksiyonlarının çoklu bağlantı noktası çiftleri için --port-pair
seçeneğini tekrarlayabilirsiniz.
Bağlantı noktaları çiftleri grupları PPG1
ve PPG2
ve akış sınıflandırıcı FC1
ile bağlantı birimi PC1
oluşturun.
$ neutron port-chain-create \
--port-pair-group PPG1 --port-pair-group PPG2 \
--flow-classifier FC1 PC1
Not
Bağlantı noktası zincirinde ek bağlantı noktası çifti grupları belirtmek için --port-pair-group
seçeneğini tekrarlayabilirsiniz. Bir bağlantı zinciri, en az bir bağlantı noktası çifti grubu içermelidir.
Bir bağlantı noktası zinciri için birden fazla akış sınıflandırıcı belirtmek için --flow-classifier
seçeneğini tekrarlayabilirsiniz. Her akış sınıflandırıcısı bir akış tanımlar.
Bir port zincirindeki port çift gruplarını veya akış sınıflandırıcılarını dinamik olarak eklemek veya kaldırmak için neutron port-chain-update komutunu kullanın.
Örneğin, PC1
bağlantı noktası zincirine PPG3
bağlantı noktası grubunu ekleyin:
$ neutron port-chain-update \
--port-pair-group PPG1 --port-pair-group PPG2 --port-pair-group PPG3 \
--flow-classifier FC1 PC1
Örneğin, PC1
bağlantı noktası zincirine FC2
akış sınıflandırıcısı ekleyin:
$ neutron port-chain-update \
--port-pair-group PPG1 --port-pair-group PPG2 \
--flow-classifier FC1 --flow-classifier FC2 PC1
SFC, ek akış sınıflandırıcısını bağlantı noktası zincirindeki bağlantı noktası çift gruplarıyla eşleşen trafiği yönlendirir.
Bir port çifti grubuna port çiftleri ekleyerek veya çıkartarak dinamik ölçeklendirme veya ölçeklendirme işlemleri gerçekleştirmek için neutron port-pair-group-update komutunu kullanın.
$ neutron port-pair-group-update \
--port-pair PP1 --port-pair PP2 --port-pair PP4 PPG1
SFC, bağlantı noktası çifti grubundaki ek hizmet işlevleri üzerinde yük dengeleme/dağıtma gerçekleştirir.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.