예: 기본 DSCP 동작 집계 분류자 구성 및 적용
Junos OS 분류자는 트래픽 플로우를 식별하고 분리하며, CoS(Class of Service) 프로세스의 후반부에 트래픽 우선 순위를 지정하는 수단을 제공합니다.
BA(behavior aggregate) 분류기는 잘 알려진 CoS 값을 포워딩 클래스 및 손실 우선순위와 연결하여 이 기능을 수행합니다. 기본 분류기를 활성화하려면 디바이스 인터페이스에 적용하기만 하면 됩니다. 기본 분류기가 인터페이스에 적용되지 않으면 적용되지 않습니다.
Junos OS 여러 개의 기본 BA 분류자 유형을 제공하며, 이는 전체 트래픽 분류 목표를 달성하는 데 필요에 따라 맞춤형 BA 분류자와 결합하고 보완할 수 있습니다. 이 예는 기본(BA) DSCP(DiffServ Code Point) 분류기를 적용하고 해당 기능을 확인하는 방법을 보여줍니다.
요구 사항
이 절차를 확인하기 위해 이 예는 트래픽 생성기를 사용합니다. 트래픽 생성기는 하드웨어 기반이거나 서버 또는 호스트 머신에서 실행되는 소프트웨어일 수 있습니다. 트래픽 생성기에 액세스할 수 없는 경우, 검증을 위해 확장 핑을 사용할 수 있습니다. 이 접근 방식도 보여줍니다.
이 절차의 기능은 Junos OS 실행되는 디바이스에서 널리 지원됩니다. 여기에 표시된 예는 릴리스 10.4를 Junos OS MX 시리즈 라우터에서 테스트 및 검증되었습니다.
개요
Junos OS CoS의 기반은 트래픽 차별화입니다. 다양한 서비스 등급에 트래픽을 할당하면 필요한 차별화가 제공됩니다. 라우터의 관점에서 패킷에 할당된 서비스 등급은 라우터가 패킷에 대해 어떻게 작동하는지 정의합니다. 트래픽 차별화 개념은 모든 CoS 도구에 존재하며, 그 결과 전체 CoS 설계에 걸쳐 서비스 등급이 존재합니다. 분류기에는 입력이 하나 있고 수신 패킷이 있으며 N 가능한 출력이 있으며, 여기서 N 은 패킷을 분류할 수 있는 가능한 서비스 클래스의 수입니다.
BA 분류는 디바이스로 유입되는 트래픽이 패킷 헤더에서 이미 신뢰할 수 있는 CoS 값을 가지고 있을 때 사용됩니다. 예를 들어, 기본 DSCP BA 분류자는 코드 포인트 000000과 함께 들어오는 패킷이 best-effort 포워딩 클래스에 할당되고 손실 우선순위가 낮은 것으로 지정합니다.
포워딩 클래스 및 손실 우선 순위는 기본적으로 잘 알려진 각 DSCP에 할당됩니다. 이를 보려면 명령을 실행합니다 show class-of-service classifier
.
user@host> show class-of-service classifier type dscp Classifier: dscp-default, Code point type: dscp, Index: 7 Code point Forwarding class Loss priority 000000 best-effort low 000001 best-effort low 000010 best-effort low 000011 best-effort low 000100 best-effort low 000101 best-effort low 000110 best-effort low 000111 best-effort low 001000 best-effort low 001001 best-effort low 001010 assured-forwarding low 001011 best-effort low 001100 assured-forwarding high 001101 best-effort low 001110 assured-forwarding high 001111 best-effort low 010000 best-effort low 010001 best-effort low 010010 best-effort low 010011 best-effort low 010100 best-effort low 010101 best-effort low 010110 best-effort low 010111 best-effort low 011000 best-effort low 011001 best-effort low 011010 best-effort low 011011 best-effort low 011100 best-effort low 011101 best-effort low 011110 best-effort low 011111 best-effort low 100000 best-effort low 100001 best-effort low 100010 best-effort low 100011 best-effort low 100100 best-effort low 100101 best-effort low 100110 best-effort low 100111 best-effort low 101000 best-effort low 101001 best-effort low 101010 best-effort low 101011 best-effort low 101100 best-effort low 101101 best-effort low 101110 expedited-forwarding low 101111 best-effort low 110000 network-control low 110001 best-effort low 110010 best-effort low 110011 best-effort low 110100 best-effort low 110101 best-effort low 110110 best-effort low 110111 best-effort low 111000 network-control low 111001 best-effort low 111010 best-effort low 111011 best-effort low 111100 best-effort low 111101 best-effort low 111110 best-effort low 111111 best-effort low
포워딩 클래스가 출력 대기열을 결정합니다. 기본적으로 모든 베스트에픽 트래픽은 대기열 0을 사용합니다.
기본적으로 각 포워딩 클래스와 연결된 대기열을 보려면 명령을 사용합니다 show class-of-service forwarding-class
. (명료하게는 일부 출력은 제외됩니다.)
user@host> show class-of-service forwarding-class Forwarding class ID Queue best-effort 0 0 expedited-forwarding 1 1 assured-forwarding 2 2 network-control 3 3
손실 우선순위는 스케줄러가 RED(Random Early Detection) 알고리즘과 함께 혼잡 기간 동안 폐기되는 패킷을 제어하는 데 사용됩니다. 손실 우선순위를 생각할 때는 손실 우선순위를 구성하지 않는 한 의미가 없다는 점을 유의하십시오. 기본 드롭 동작은 대기열이 100% 가득 차게 될 때까지 기다렸다가 무차별적으로 패킷 드롭을 시작하는 것입니다. 대기열이 100% 이하로 떨어지면 패킷이 떨어지지게 됩니다.
기본 드롭 동작은 명령에 표시됩니다 show class-of-service drop-profile
.
user@host> show class-of-service drop-profile Drop profile: <default-drop-profile>, Type: discrete, Index: 1 Fill level Drop probability 100 100
다양한 손실 우선순위에 대한 의미를 생성하려면 사용자 지정 드롭 프로파일을 구성해야 합니다. 예를 들어, 대기열이 75% 가득 차 있고 대기열 채우기 수준이 95%일 때 40%의 드롭 확률을 의미하는 낮은 손실 우선순위를 정의할 수 있습니다. 채우기 수준이 25%이고 채우기 수준이 50%일 때 90%의 드롭 확률을 의미하는 높은 손실 우선 순위를 정의할 수 있습니다. 사용자 지정 드롭 프로필은 이 예에 포함되지 않지만 분류자는 손실 우선 순위를 할당하기 때문에 명확하게 여기에 언급됩니다. 드롭 프로파일을 생성할 때까지 이러한 할당은 의미가 없다는 것을 이해하는 것이 중요합니다.
기본 분류자 작업은 그림 1에 표시됩니다. 이 그림은 인터페이스에 들어가 패킷 헤더의 DSCP 코드 포인트에 따라 분류되는 두 개의 IPv4 패킷을 보여줍니다.
분류자는 다음 주니퍼 네트웍스 Learning Byte 비디오에 자세히 설명되어 있습니다.
토폴로지
그림 2 는 샘플 네트워크를 보여줍니다.
단일 디바이스에 적용하는 대신 토폴로지 전반에 서비스 등급 구성을 적용하는 것이 중요합니다. 또한 들어오는 인터페이스에 분류가 적용되지만 BA 분류기를 모든 코어 및 코어 대면 인터페이스에 적용해야 합니다. 트래픽 방향에 따라 단일 인터페이스가 들어오거나 발신될 수 있기 때문입니다. 예를 들어, 트래픽이 호스트 1에서 호스트 2로 흐르면서 수신 인터페이스는 디바이스 R2에서 ge-1/0/7이고 디바이스 R3에서는 ge-2/0/6입니다. 트래픽이 호스트 2에서 호스트 R1로 다른 방향으로 흐르면서 수신 인터페이스는 디바이스 R2에서 ge-1/0/3이고 디바이스 R1에서 ge-1/0/7입니다.
이러한 인터페이스는 코어 대면이 아니기 때문에 BA 분류자는 디바이스 R1의 ge-1/0/1 또는 디바이스 R3의 ge-2/0/5에 적용되지 않습니다. 일반적으로 에지 대면 인터페이스에서는 BA 분류기가 아닌 멀티필드 분류기를 사용합니다.
CLI 빠른 구성 은 그림 2의 모든 주니퍼 네트웍스 디바이스에 대한 구성을 보여줍니다. 단계별 절차 섹션은 디바이스 R2의 단계를 설명합니다.
구성
절차
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브러브를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경한 다음 계층 수준에서 명령을 CLI [edit]
로 복사해 붙여 넣습니다.
디바이스 R1
set interfaces ge-1/0/1 unit 0 family inet address 172.16.50.2/30 set interfaces ge-1/0/7 unit 0 family inet address 10.30.0.1/30 set class-of-service interfaces ge-1/0/7 unit 0 classifiers dscp default
디바이스 R2
set interfaces ge-1/0/3 unit 0 family inet address 10.40.0.1/30 set interfaces ge-1/0/7 unit 0 family inet address 10.30.0.2/30 set class-of-service interfaces ge-1/0/3 unit 0 classifiers dscp default set class-of-service interfaces ge-1/0/7 unit 0 classifiers dscp default
디바이스 R3
set interfaces ge-2/0/5 unit 0 family inet address 172.16.70.2/30 set interfaces ge-2/0/6 unit 0 family inet address 10.40.0.2/30 set class-of-service interfaces ge-2/0/6 unit 0 classifiers dscp default
단계별 절차
다음 예제에서는 구성 계층에서 다양한 수준의 탐색이 필요합니다. 이를 수행하는 방법에 대한 지침은 CLI 사용자 가이드의 구성 모드에서 CLI 편집기 사용을 참조하십시오.
기본 DSCP 동작 집계 분류기를 활성화하려면 다음을 수행합니다.
-
디바이스 인터페이스를 구성합니다.
[edit interfaces] user@R2# set ge-1/0/3 unit 0 family inet address 10.40.0.1/30 user@R2# set ge-1/0/7 unit 0 family inet address 10.30.0.2/30
-
인터페이스에서 기본 DSCP 분류기를 활성화합니다.
[edit class-of-service interfaces] user@R2# set ge-1/0/3 unit 0 classifiers dscp default user@R2# set ge-1/0/7 unit 0 classifiers dscp default
결과
구성 모드에서 및 show class-of-service
명령을 입력하여 구성을 show interfaces
확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정합니다.
user@R2# show interfaces ge-1/0/3 { unit 0 { family inet { address 10.40.0.1/30; } } } ge-1/0/7 { unit 0 { family inet { address 10.30.0.2/30; } } }
user@R2# show class-or-service interfaces { ge-1/0/3 { unit 0 { classifiers { dscp default; } } } ge-1/0/7 { unit 0 { classifiers { dscp default; } } } }
디바이스 구성이 완료되면 구성 모드에서 을(를) 입력합니다 commit
.
확인
구성이 제대로 작동하는지 확인합니다.
동작 총 분류자 확인
목적
디바이스 인터페이스에서 기본 동작 집계 분류기가 활성화되어 있는지 확인합니다. 분류기가 수신 패킷에서 작동하지만 나가는 인터페이스에서 결과 대기열 할당을 볼 수 있습니다.
작업
디바이스 R2에서 인터페이스 통계를 삭제합니다.
user@R2> clear interface statistics ge-1/0/3
디바이스 R1의 확장 핑 또는 호스트 또는 서버에서 실행되는 패킷 생성기를 사용하여 코드 포인트가 001010으로 설정된 패킷을 보냅니다.
두 방법 모두 여기에 표시됩니다. 사용된 패킷 생성기는 hping입니다.
확장 핑을 사용하여 IPv4 패킷 헤더에서 DSCP 코드 포인트를 설정하는 경우 명령 옵션
ping
에서 서비스 유형(ToS) 10진수 값(이 경우 40)이 필요합니다tos
.hping을 사용하여 IPv4 패킷 헤더에서 DSCP 코드 포인트를 설정하는 경우 명령 옵션
hping
에서 ToS 166 값(이 경우 28)이 필요합니다--tos
.
이진수에서 10진수로의 이진수 또는 10진수 변환 기술이 녹슨 경우, http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html 같은 온라인 계산기를 사용할 수 있습니다.
참고:이진 DSCP 코드 포인트 값을 변환할 때 끝에 2개의 추가 0을 추가해야 합니다. 따라서 001010 대신 00101000을 사용합니다. 이러한 0 값(7번째 및 8번째 비트)은 예약되고 무시되지만 변환에 포함하지 않으면 16진수 및 십진수 값이 올바르지 않습니다.
디바이스 R1에서 전송된 확장 핑
user@R1> ping 172.16.70.1 tos 40 rapid count 25 PING 172.16.70.1 (172.16.70.1): 56 data bytes !!!!!!!!!!!!!!!!!!!!!!!!! --- 172.16.70.1 ping statistics --- 25 packets transmitted, 25 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.430/0.477/0.847/0.079 ms
호스트 1에서 보낸 hping
root@host1> hping 172.16.70.1 --tos 28 -c 25 HPING 172.16.70.1 (eth1 172.16.70.1): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.3 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.6 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=2 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=3 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=4 win=0 rtt=0.6 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=5 win=0 rtt=0.3 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=6 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=7 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=8 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=9 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=10 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=11 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=12 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=13 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=14 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=15 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=16 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=17 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=18 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=19 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=20 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=21 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=22 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=23 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=24 win=0 rtt=0.4 ms
디바이스 R2에서 대기열 2가 증가되는지 확인합니다.
코드 포인트 001010은 기본적으로 대기열 2를 사용하는 보장 포워딩과 관련이 있습니다.
user@R2> show interfaces extensive ge-1/0/3 | find "queue counters" Queue counters: Queued packets Transmitted packets Dropped packets 0 0 0 0 1 0 0 0 2 50 25 0 3 3 3 0 Queue number: Mapped forwarding classes 0 best-effort 1 expedited-forwarding 2 assured-forwarding 3 network-control
의미
출력 결과, 라우터를 통해 50개의 패킷을 전송한 후 대기열 2가 50개의 패킷으로 증가했음을 보여줍니다.