9.4. QoS 정책을 사용하여 네트워크 트래픽 제한

RHOSP(Red Hat OpenStack Platform) Networking 서비스(neutron) QoS(서비스 품질) 정책을 생성하여 RHOSP 네트워크, 포트 또는 유동 IP의 대역폭을 제한하고 지정된 속도를 초과하는 모든 트래픽을 삭제할 수 있습니다.

사전 요구 사항

  • 네트워킹 서비스에는 qos 서비스 플러그인이 로드되어야 합니다.(기본적으로 플러그인이 로드됩니다.)

절차

  1. 자격 증명 파일을 가져옵니다.

    예제

    $ source ~/overcloudrc

  2. qos 서비스 플러그인이 Networking 서비스에 로드되었는지 확인합니다.

    $ openstack network qos policy list

    qos 서비스 플러그인이 로드되지 않은 경우 ResourceNotFound 오류가 발생하고 qos 서비스 플러그인을 로드해야 합니다. 자세한 내용은 9.2절. “QoS 정책을 위한 네트워킹 서비스 구성”의 내용을 참조하십시오.

  3. QoS 정책을 생성할 프로젝트의 ID를 확인합니다.

    $ openstack project list

    샘플 출력

    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors |
    | 519e6344f82e4c079c8e2eabb690023b | services |
    | 80bf5732752a41128e612fe615c886c6 | demo     |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin    |
    +----------------------------------+----------+

  4. 이전 단계의 프로젝트 ID를 사용하여 프로젝트에 대한 QoS 정책을 생성합니다.

    예제

    이 예에서는 admin 프로젝트에 대해 bw-limiter 라는 QoS 정책이 생성됩니다.

    $ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 bw-limiter
  5. 정책에 대한 규칙을 구성합니다.

    참고

    각 규칙의 유형 또는 방향이 다른 한 개 이상의 규칙을 정책에 추가할 수 있습니다. 예를 들어 송신과 수신 방향을 사용하여 대역폭 제한 규칙을 두 개 지정할 수 있습니다.

    예제

    이 예에서는 대역폭 제한이 50000 kbps이고 최대 버스트 크기인 bw-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
  6. 정책이 연결된 포트를 생성하거나 정책을 기존 포트에 연결할 수 있습니다.

    예 - 정책이 연결된 포트 생성

    이 예에서 정책 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-limiterport1 과 연결됩니다.

    $ 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                                               |
      +-------------------------+--------------------------------------------------------------------+

추가 리소스