9.4. QoS 정책을 사용하여 네트워크 트래픽 제한
RHOSP(Red Hat OpenStack Platform) Networking 서비스(neutron) QoS(서비스 품질) 정책을 생성하여 RHOSP 네트워크, 포트 또는 유동 IP의 대역폭을 제한하고 지정된 속도를 초과하는 모든 트래픽을 삭제할 수 있습니다.
사전 요구 사항
-
네트워킹 서비스에는
qos서비스 플러그인이 로드되어야 합니다.(기본적으로 플러그인이 로드됩니다.)
절차
자격 증명 파일을 가져옵니다.
예제
$ source ~/overcloudrc
qos서비스 플러그인이 Networking 서비스에 로드되었는지 확인합니다.$ openstack network qos policy list
qos서비스 플러그인이 로드되지 않은 경우ResourceNotFound오류가 발생하고qos서비스 플러그인을 로드해야 합니다. 자세한 내용은 9.2절. “QoS 정책을 위한 네트워킹 서비스 구성”의 내용을 참조하십시오.QoS 정책을 생성할 프로젝트의 ID를 확인합니다.
$ openstack project list
샘플 출력
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+
이전 단계의 프로젝트 ID를 사용하여 프로젝트에 대한 QoS 정책을 생성합니다.
예제
이 예에서는
admin프로젝트에 대해bw-limiter라는 QoS 정책이 생성됩니다.$ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 bw-limiter
정책에 대한 규칙을 구성합니다.
참고각 규칙의 유형 또는 방향이 다른 한 개 이상의 규칙을 정책에 추가할 수 있습니다. 예를 들어 송신과 수신 방향을 사용하여 대역폭 제한 규칙을 두 개 지정할 수 있습니다.
예제
이 예에서는 대역폭 제한이
kbps이고 최대 버스트 크기인50000bw-limiter라는 정책에 대해 QoS 수신 및 송신 규칙이 생성됩니다.$ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --ingress bw-limiter $ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --egress bw-limiter정책이 연결된 포트를 생성하거나 정책을 기존 포트에 연결할 수 있습니다.
예 - 정책이 연결된 포트 생성
이 예에서 정책
bw-limiter는 포트port2와 연결되어 있습니다.$ openstack port create --qos-policy bw-limiter --network private port2
샘플 출력
+-----------------------+--------------------------------------------------+ | Field | Value | +-----------------------+--------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | | | binding_host_id | | | binding_profile | | | binding_vif_details | | | binding_vif_type | unbound | | binding_vnic_type | normal | | created_at | 2022-07-04T19:20:24Z | | data_plane_status | None | | description | | | device_id | | | device_owner | | | dns_assignment | None | | dns_name | None | | extra_dhcp_opts | | | fixed_ips | ip_address='192.0.2.210', subnet_id='292f8c-...' | | id | f51562ee-da8d-42de-9578-f6f5cb248226 | | ip_address | None | | mac_address | fa:16:3e:d9:f2:ba | | name | port2 | | network_id | 55dc2f70-0f92-4002-b343-ca34277b0234 | | option_name | None | | option_value | None | | port_security_enabled | False | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | qos_policy_id | 8491547e-add1-4c6c-a50e-42121237256c | | revision_number | 6 | | security_group_ids | 0531cc1a-19d1-4cc7-ada5-49f8b08245be | | status | DOWN | | subnet_id | None | | tags | [] | | trunk_details | None | | updated_at | 2022-07-04T19:23:00Z | +-----------------------+--------------------------------------------------+
예 - 기존 포트에 정책 연결
이 예에서 정책
bw-limiter는port1과 연결됩니다.$ openstack port set --qos-policy bw-limiter port1
검증
bandwith 제한 정책이 포트에 적용되었는지 확인합니다.
정책 ID를 가져옵니다.
예제
이 예에서는 QoS 정책
bw-limiter를 쿼리합니다.$ openstack network qos policy show bw-limiter
샘플 출력
+-------------------+-------------------------------------------------------------------+ | Field | Value | +-------------------+-------------------------------------------------------------------+ | description | | | id | 8491547e-add1-4c6c-a50e-42121237256c | | is_default | False | | name | bw-limiter | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | revision_number | 4 | | rules | [{u'max_kbps': 50000, u'direction': u'egress', | | | u'type': u'bandwidth_limit', | | | u'id': u'0db48906-a762-4d32-8694-3f65214c34a6', | | | u'max_burst_kbps': 50000, | | | u'qos_policy_id': u'8491547e-add1-4c6c-a50e-42121237256c'}, | | | [{u'max_kbps': 50000, u'direction': u'ingress', | | | u'type': u'bandwidth_limit', | | | u'id': u'faabef24-e23a-4fdf-8e92-f8cb66998834', | | | u'max_burst_kbps': 50000, | | | u'qos_policy_id': u'8491547e-add1-4c6c-a50e-42121237256c'}] | | shared | False | +-------------------+-------------------------------------------------------------------+포트를 쿼리하고 정책 ID가 이전 단계에서 얻은 것과 일치하는지 확인합니다.
예제
이 예제에서는
port1을 쿼리합니다.$ openstack port show port1
샘플 출력
+-------------------------+--------------------------------------------------------------------+ | Field | Value | +-------------------------+--------------------------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | ip_address='192.0.2.128', mac_address='fa:16:3e:e1:eb:73' | | binding_host_id | compute-2.redhat.local | | binding_profile | | | binding_vif_details | port_filter='True' | | binding_vif_type | ovs | | binding_vnic_type | normal | | created_at | 2022-07-04T19:07:56 | | data_plane_status | None | | description | | | device_id | 53abd2c4-955d-4b44-b6ad-f106e3f15df0 | | device_owner | compute:nova | | dns_assignment | fqdn='host-192-0-2-213.openstacklocal.', hostname='my-host3', | | | ip_address='192.0.2.213' | | dns_domain | None | | dns_name | | | extra_dhcp_opts | | | fixed_ips | ip_address='192.0.2..213', subnet_id='641d1db2-3b40-437b-b87b-63 | | | 079a7063ca' | | | ip_address='2001:db8:0:f868:f816:3eff:fee1:eb73', subnet_id='c7ed0 | | | 70a-d2ee-4380-baab-6978932a7dcc' | | id | 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12 | | location | cloud='', project.domain_id=, project.domain_name=, project.id='7c | | | b99d752fdb4944a2208ec9ee019226', project.name=, region_name='regio | | | nOne', zone= | | mac_address | fa:16:3e:e1:eb:73 | | name | port2 | | network_id | 55dc2f70-0f92-4002-b343-ca34277b0234 | | port_security_enabled | True | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | propagate_uplink_status | None | | qos_policy_id | 8491547e-add1-4c6c-a50e-42121237256c | | resource_request | None | | revision_number | 6 | | security_group_ids | 4cdeb836-b5fd-441e-bd01-498d758704fd | | status | ACTIVE | | tags | | | trunk_details | None | | updated_at | 2022-07-04T19:11:41Z | +-------------------------+--------------------------------------------------------------------+
추가 리소스
- 명령줄 인터페이스 참조에서 네트워크 qos 규칙 생성
- 명령줄 인터페이스 참조에서 네트워크 qos 규칙 세트
- 명령줄 인터페이스 참조에서 네트워크 qos 규칙 삭제
- 명령줄 인터페이스 참조의 네트워크 qos 규칙 목록