네트워크 스케줄러
Network scheduler
네트워크 스케줄러는 패킷스케줄러, 큐잉 분야(qdisc) 또는 큐잉 알고리즘이라고도 불리며 패킷스위칭 통신 네트워크의 노드 상의 아비터입니다.프로토콜 스택 및 네트워크 인터페이스 컨트롤러의 송수신 큐에 있는 네트워크 패킷의 시퀀스를 관리합니다.다양한 운영체제시스템에 사용할 수 있는 네트워크스케줄러가 여러 개 있어요이러한 네트워크스케줄러에는 기존의 네트워크스케줄링 알고리즘이 많이 실장되어 있습니다
네트워크 스케줄러 로직은 다음에 전송할 네트워크 패킷을 결정합니다.네트워크 스케줄러는 큐잉시스템과 관련되어 네트워크 패킷이 전송될 때까지 일시적으로 저장됩니다.시스템에는 1개 또는 여러 개의 큐가 있을 수 있습니다.이 경우 각 큐는 1개의 흐름, 분류 또는 priority의 패킷을 보유할 수 있습니다.
경우에 따라서는, 시스템의 제약 조건내에서 모든 송신을 스케줄 할 수 없는 경우가 있습니다.이러한 경우 네트워크 스케줄러는 전송할 트래픽과 폐기할 트래픽을 결정합니다.
용어와 책임
네트워크 스케줄러는 특정 네트워크트래픽 제어 이니셔티브의 실장을 담당하는 경우가 있습니다.네트워크 트래픽 제어는 네트워크 폭주, 지연 및 패킷 손실을 줄이기 위한 모든 조치를 포괄적으로 의미합니다.특히 Active Queue Management(AQM; 액티브큐 관리)는 과도한 네트워크 폭주를 방지하는 보다 큰 목표를 달성하기 위해 큐잉된 네트워크 패킷을 선택적으로 폐기하는 것입니다.스케줄러는 폐기할 패킷을 선택해야 합니다.트래픽 쉐이핑은, 송신 패킷이 버스트에 큐잉 되었을 때에 지연하는 것으로써, 트래픽흐름의 대역폭 요건을 부드럽게 합니다.송신 패킷의 타이밍은 스케줄러에 의해서 결정됩니다.Quality of Service(QoS; 서비스 품질)는 서비스 클래스(Differentiated Services) 또는 예약된 연결(Integrated Services)에 기초한 트래픽의 우선순위 부여입니다.
알고리즘
시간이 지남에 따라 많은 네트워크 큐잉 규칙이 개발되었습니다.이러한 각 기능은, 다양한 송신 버퍼 또는 [1]수신 버퍼내의 네트워크 패킷의 특정의 순서 변경 또는 드롭을 실시합니다.큐잉 규칙은 일반적으로 특정 클래스의 네트워크 패킷 지연 감소 등 다양한 네트워크 조건을 보완하기 위한 시도로 사용되며 일반적으로 QoS 측정의 [2][3][4]일부로 사용됩니다.
네트워크 트래픽 관리에 적합한 알고리즘의 예는 다음과 같습니다.
- AVQ(어댑티브 가상 큐)[5]
- CBQ(클래스 베이스 큐잉) 규칙
- CHOKe(응답 흐름의 경우 CHOose 및 Keep, 응답하지 않는 흐름의 경우 CHOose 및 Kill)는 RED의 일종입니다.
- CoDel(제어된 지연) 및 FQ-CoDel(플로우큐 CoDel)
- Linux[6] 커널에 구현된 CACKE(Common Applications Keep Enhanced)
- 신용 기반 공정 큐잉
- DRR(적자 라운드 로빈) 및 DWRR. 예를 들어 Linux[7] 커널용 패트릭 맥하디가 작성하고 GNU General Public License에 따라 게시된 구현입니다.
- FaQ(즐겨찾기 큐)[8]
- FQ-PIE(플로우큐 비례적분컨트롤러
- GCRA(Generic Cell Rate Algorithm)
- HFF(헤비히터 필터)[9]
- 계층적 공정 서비스 곡선
- HTB(계층형 토큰버킷)[10]
- QFQ(퀵 균등화 큐잉)[11]
- FQ(균등화 큐잉) 및 WFQ(무게 부여 균등화 큐잉)
- FIFO(선입선출)
- pkt_sched: fq: 균등화 큐 패킷스케줄러
- NETEM 네트워크[13] 에뮬레이터
- PIE(비례 통합 컨트롤러 확장)[14]
- RED(랜덤 조기 검출)
- RR(라운드 로빈) 및 WRR(무게 부여 라운드 로빈)
- SFB(Stocastic Fair Blue) 및 RSFB(Resistant SFB)
- SFQ(스태스틱 공정성 [15]큐잉)
- TBF(토큰버킷 필터)[16]
- TEQL(삼원 링크 이퀄라이저)
상기 중 몇 개는 Linux[17] 커널 모듈로 구현되어 있으며 무료로 이용할 수 있습니다.
버퍼블라트
Bufferbloat는 패킷 교환 네트워크에서의 현상으로 패킷의 과도한 버퍼링이 높은 지연과 패킷 지연의 변동을 일으킵니다.버퍼블롯은 불필요한 높은 버퍼링백로그를 피하기 위해 패킷을 전략적으로 폐기하는 네트워크스케줄러에 의해 처리될 수 있습니다.예를 들어 CoDel, FQ-CoDel 및 랜덤 조기 검출이 있습니다.
구현
![]() |
Linux 커널
Linux 커널 패킷스케줄러는 Linux 커널 네트워크 스택의 일부이며 OSI 모델의 레이어 2에서 작업하거나 이더넷프레임을 처리하는 등 모든 NIC의 송수신 링 버퍼를 관리합니다.
패킷 스케줄러는, 라고 하는 유틸리티를 사용해 설정됩니다.tc
('교통 제어'의 줄임말).디폴트 큐잉의 원칙으로서 패킷스케줄러는 pfo_fast라는 [18]FIFO 구현을 사용합니다.단, 버전 217에서는 디폴트 큐잉의 원칙이 변경되어 있기 때문에 systemd에서는fq_codel
를 클릭합니다.[19]
그ifconfig
그리고.ip
유틸리티로 시스템 관리자는 버퍼 크기를 설정할 수 있습니다.txqueuelen
그리고.rxqueuelen
이더넷 프레임의 수에 관해서는, 그 크기에 관계없이, 각 디바이스에 개별적으로 대응합니다.Linux 커널의 네트워크 스택에는 네트워크 [a]스케줄러에 의해 관리되지 않는 다른 버퍼가 몇 개 포함되어 있습니다.
Berkeley Packet Filter 필터는 패킷스케줄러의 분류자에 부가할 수 있습니다.2015년 Linux 커널 버전 4.1에서 도입된 eBPF 기능은 기존 BPF 프로그래밍 가능 분류자를 eBPF로 [20]확장합니다.LLVM eBPF 백엔드를 사용하여 컴파일하고 실행 중인 커널에 로드하려면tc
유틸리티입니다.[21]
BSD 및 OpenBSD
ALTQ는 BSD용 네트워크스케줄러의 실장입니다OpenBSD 버전 5.5 ALTQ는 HFSC 스케줄러로 대체되었습니다.
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ "Traffic Control HOWTO: Classless Queuing Disciplines (qdiscs)". tldp.org. Retrieved November 24, 2013.
- ^ "Traffic Control HOWTO: Components of Linux Traffic Control". tldp.org. Retrieved November 24, 2013.
- ^ "Traffic Control HOWTO: Traditional Elements of Traffic Control". tldp.org. Retrieved November 24, 2013.
- ^ "Queuing Disciplines: Order of Packet Transmission and Dropping" (PDF). tau.ac.il. October 25, 2006. Retrieved March 18, 2014.
- ^ "Abstract". 2002. CiteSeerX 10.1.1.108.4477.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ "Let them run CAKE". LWN.net.
- ^ "DRR Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.
- ^ "FavorQueue: a Parameterless Active Queue Management to Improve TCP Traffic Performance" (PDF).
- ^ "Heavy-Hitter Filter qdisc". kernel.org.
- ^ "HTB Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.
- ^ "QFQ Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.
- ^ "Fair Queue packet scheduler committed to Linux kernel 3.12".
- ^ "Network emulator Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.
- ^ "Proportional Integral controller Enhanced (PIE)". kernel.org.
- ^ "SFQ Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.
- ^ "TBF Linux kernel network scheduler module". kernel.org. Retrieved 2013-09-07.
- ^ "The Linux kernel network scheduler". kernel.org. 2012-12-26. Retrieved 2013-09-07.
- ^ "Linux Advanced Routing and Traffic Control HOWTO, Section 9.2.1. pfifo_fast". lartc.org. 2012-05-19. Retrieved 2014-09-19.
- ^ "systemd System and Service Manager: NEWS file". freedesktop.org. 2015-05-22. Retrieved 2015-06-09.
- ^ "Linux kernel 4.1, Section 11. Networking". kernelnewbies.org. 2015-06-21.
- ^ "BPF and XDP Reference Guide". Cilium documentation web site.