EdgeRouter - 서비스 품질 (Quality of Service, QoS) ======================================= download at 2017-02-14T01:54:01Z `origin `_ .. raw:: html
.. raw:: html
.. rubric:: Table of Contents :name: table-of-contents .. raw:: html
`1. Overview <#Overview>`__ `2. 트래픽 정책 <#Traffic-Policies>`__ `2.1 마지막 트래픽 버림 (FIFO) <#Drop-Tail-FIFO>`__ `2.2 랜덤 사전 탐지 <#Random-Early-Detection>`__ `2.3 비율 컨트롤 <#Rate-Control>`__ `2.4 공정한 대기열 <#Fair-Queue>`__ `2.5 Shaper <#Shaper>`__ `2.6 리미터 <#Limiter>`__ .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: Overview :name: overview .. raw:: html
서비스 품질 (QoS)는 리우터로 하여금 서로 다른 트래픽 타입에 대하여 다른 수준의 서비스를 제공할 수 있는 기능입니다. 기본적으로 일부 트래픽에 더 나은 처리(높은 수준의 우선순위, 더 많은 대역폭 등)를 할 수 있도록 합니다. 고수준에서 서로 다른 트래픽 정책을 사용하므로 서비스 품질을 다르게 할 수 있습니다. 또 트래픽을 특정 라우터로 보내어 품질을 다르게 제공 할 수 있습니다. 간략하게 설명하면, 트래픽 정책은 1개 이상의 룰로 정의됩니다. 각 룰은 다음의 양식을 따릅니다: :: Type of traffic > How the router should treat it 예를 들어, 간단한 룰 R1의 예제는 다음과 같습니다: :: R1: FTP traffic > Limit the bandwidth to 1 Mbps 트래픽 정책을 1개 이상의 룰로 정의할 수 있습니다. 예를 들어 트래픽 정책 P1은 2개의 룰 R1, R2를 가지고 있으며 다음과 같이 표시됩니다: :: P1: R1: FTP traffic > Limit the bandwith to 1 Mbps R2: SSH traffic > Make latency lower 트래픽 적책이 효과를 발휘하려면, 특정 네트워크 인터페이스에 특정 패킷 방향을 지정하여야 합니다. 아래는 그 예제를 참조하세요: :: Traffic going out on interface "eth1" > Use traffic policy P1 다음은 다양한 트래픽 정책 타입을 상세하게 서술합니다. .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: Traffic Policies :name: traffic-policies .. raw:: html
많은 트래픽 정책 타입이 존재합니다. 각각 정책은 사용해야 할 곳과 한계가 존재합니다. 몇몇 정책은 EdgeOS CLI에서 실행할 수 있습니다. - 마지막 트래픽 버림 (FIFO) - 랜덤 사전 탐지 - 비율 컨트롤 - 공정한 대기열 - Shaper - 리미터 .. raw:: html
.. raw:: html
.. rubric:: 마지막 트래픽 버림 (FIFO) :name: drop-tail-fifo .. raw:: html
*마지막 트래픽 버림 (drop-tail)* 정책은 패킷을 큐에 계쏙 보관합니다. 패킷이 전송되면 큐에 추가하고 라우터는 큐에 저장되어 있는 트래픽 패킷을 *선입선출 Firs In First Out (FIFO)* 방식으로 처리합니다. 큐는 미리 정의된 길이 제한이 존재하며 큐가 꽉 찰경우, 추가 패킷은 처리할 수 없습니다. 이것을 "트래픽 버림, tail drop"이라고 합니다. Tail drop은 너무 많은 트래픽이 큐에 추가되었을 때 발생합니다. 라우터는 패킷을 빠르게 처리할 만한 충분한 자원이 없음을 의미합니다. drop-tail 정책은 다음 한계점을 가집니다: - 트래픽 타입을 구분할 수 없습니다. - 큐 길이만을 파라미터로 받습니다. - 인터페이스의 *out* 방향 트래픽만 제어 할 수 있습니다. 예를 들어, 다음 CLI 명령어를 통해서 *drop-tail* 정책을 *policy1* 으로 명명하고 eth1의 *out* 방향 트래픽에 적용할 수 있습니다: :: set traffic-policy drop-tail policy1 queue-limit 100 set traffic-policy drop-tail policy1 description "limit queue 100" set interfaces ethernet eth0 traffic-policy out policy1 .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: 랜덤 사전 탐지 :name: random-early-detection .. raw:: html
*랜덤 사전 탐지 (Random Early Detection, RED)* 정책은 위의 정책과 다르게 패킷을 사전에 큐의 길이가 증가하기 이전에 버립니다. 이 정책의 이점은 TCP 트래픽에 점진적으로 패킷을 버리게 하여 TCP 종단에서 네트워크 혼잡을 감지 할 수 있도록 하거나 트래픽을 감소하여 더 좋은 성능을 획득 할 수 있습니다. 이 정책은 큐의 길이를 넘어서는 모든 트래픽을 버리는 위의 정책과 반대되는 정책이라고 할 수 있습니다. 위의 *drop-tail* 정책과 같이 *RED* 정책은 인터페이스의 *out* 방향에만 적용이 가능합니다. 3개의 RED 주요 파라미터는 다음과 같습니다: - **Minimum queue length:** RED 정책이 시작할 때 확률적으로 패킷을 버리기 시작하는 큐의 길이 - **Maximum queue length:** 큐의 길이가 최소 큐 길이와 최대 큐 길이 사이에 있을 때 RED 정책은 패킷을 버리는 확률을 0에서 최대 확률로 점진적으로 증가합니다. - **Maximum drop probability:** RED 정책에서 패킷의 길이가 증가할 때 최대 큐 길이에 도달하기 이전까지 패킷을 버리는 확률 추가적으로, 각 IP에 RED 파라미터를 다르게 적용 할 수 있습니다. 아래는 RED 정책을 CLI 명령어를 사용하여 적용한 예제입니다: :: set traffic-policy random-detect random1 precedence 0 mark-probability 50 set traffic-policy random-detect random1 precedence 0 maximum-threshold 50 set traffic-policy random-detect random1 precedence 0 minimum-threshold 20 set interfaces ethernet eth0 traffic-policy out random1 commit 이 예제에서는 최대 확률을 우선순위가 0일 때 2%로 지정하였습니다. .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: 비율 컨트롤 :name: rate-control .. raw:: html
*비율 컨트롤 (rate-control)* 정책은 트래픽 전송을 미리 정의된 비율만큼 보장합니다. *out* 방향에 적용이 가능하며, 메인 파라미터는 전송 트래픽의 최대 비율입니다. 예를 들어 다음 CLI 명령어를 통해서 비율 컨트롤 정책을 생성하고 최대 1Mbps 만큼 eth0 인터페이스에서 전송할 수 있도록 보장합니다. :: set traffic-policy rate-control rate1 bandwidth 1mbit set interfaces ethernet eth0 traffic-policy out rate1 commit .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: 공정한 대기열 :name: fair-queue .. raw:: html
*공정한 대기열 (fair queue)* 정책은 *확률론적 공정 대기열* 기법을 사용하여 TCP 커넥션과 같이 특정한 트래픽을 다른 버킷에 분류하여 라우터가 각 버킷마다 서비스를 제공 할 수 있도록 트래픽을 분리합니다. 분리 작업은 시작지/도착지 IP 주소와 시작지 포트를 해싱하여 분류합니다. 확률적으로 라우터가 각 트래픽에 공평한 서비스를 제공할 수 있습니다. *공정한 대기열* 정책은 *out* 방향에 적용 가능합니다. 공정함이라는 단어는 **확률론** 적입니다. 몇몇 경우에는 다수가 같은 버킷에 입력될 우려가 있으므로 **불공정** 을 초래할 수 있습니다. 불공정을 최소화하기 위해서는 *hash interval* 파라미터를 조정하여 해싱 알고리즘을 고정된 시간 기간동안마다 변경하도록 해야합니다. 아래는 그 예제 설정입니다: :: set traffic-policy fair-queue fair1 hash-interval 10 set interfaces ethernet eth0 traffic-policy out fair1 commit .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: Shaper :name: shaper .. raw:: html
더 복잡한 정책은 *shaper* 정책입니다. *계층 토큰 버킷* 기법을 사용하여 각 네트워크 링크의 트래픽 클래스마다 서로 다른 대역폭을 제공합니다. 간단한 예제는 아래와 같습니다. :: set traffic­policy shaper shaper1 bandwidth 100mbit set traffic­policy shaper shaper1 default bandwidth 60mbit set traffic­policy shaper shaper1 class 2 bandwidth 20mbit set traffic­policy shaper shaper1 class 2 match client2 ip source address 10.0.1.2/32 set traffic­policy shaper shaper1 class 3 bandwidth 20mbit set traffic­policy shaper shaper1 class 3 match client3 ip source address 10.0.1.3/32 set interfaces ethernet eth0 traffic­policy out shaper1 commit 이 예제는 shaper 정책을 *shaper1* 로 정의하고 eth0의 100Mbps 대역폭으로 제한하여 *out* 방향에 대하여 적용하였습니다. 2개의 트래픽 클래스가 정의되었으며 IP 주소가 10.0.1.2에서 시작한 트래픽과 10.0.1.3에서 시작한 트래픽 두 가지로 정의하였습니다. 두가지 클래스 각각 20Mbps 대역폭을 보장합니다. 다른 트래픽은 *default* 클래스로 분류되어 60 Mbps 대역폭을 보장받습니다. 예를 들면, eth0은 20 Mbps의 10.0.1.2, 20 Mbps의 10.0.1.3를 통합하여 보장하고 다른 트래픽에는 80 Mbps를 사용하고 있다가 앞 2개의 주소에서 자신의 대역폭을 모두 사용하면 다른 트래픽은 최대 60 Mbps 만큼만 사용이 가능하게 됩니다. .. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: 리미터 :name: limiter .. raw:: html
*리미터, limiter* 정책은 *진입 정책 관리* 를 수행합니다. 그러므로 트래픽의 *in* 방향에 적용할 수 있습니다. 트래픽을 다양한 클래스로 나누어 적용할 수 있으며 각각 다른 대역폭을 정의할 수 있습니다. 예를 들어, 다음 정책은 ICMP 트래픽에 1 Mbps, 다른 트래픽에는 10 Mbps를 제한하는 예제입니다. :: set traffic­policy limiter limit1 class 1 bandwidth 1mbit set traffic­policy limiter limit1 class 1 match match1 ip protocol icmp set traffic­policy limiter limit1 default bandwidth 10mbit set interfaces ethernet eth0 traffic­policy in limit1 commit *Note: *리미터* 정책은 라우터가 목적지인 트래픽에 대하여 적용하기 위해 고안되었습니다. 정책의 행위가 라우터 바깥으로 나가는 트래픽에 대하여는 정확하게 적용하기 어렵습니다. 바깥으로 나가는 트래픽에 대하여는 *인풋 인터페이스* 를 생성해서 다른 아웃바운드 정책이 적용 가능하도록 하여 설정해볼 수 있습니다.* .. rubric:: 관련 문서 :name: related-articles :class: firstHeading gumax-firstHeading wysiwyg-text-align-left .. raw:: html
-------------- .. raw:: html
- `SSH로 커넥션을 생성하는 방법 `__    .. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html