우리는 이미 사설망의 사용자가 수행 주소(NAT)를 통해 인터넷에 연결되어 있다고 말했습니다 4
. 사용자에게 액세스를 제공하지만 사용자의 대역폭은 제한하지만 다른 사용자는 제한하지 않도록 구성해야 합니다.Linux router
public IP
network address translation
QoS
Internet
2
eth0:121.51.26.35
eth1:10.239.107.1
eth0
Linux Router
링크 입니다 10Mbps
. eth1
에 연결되고 switch
노드 4
가 에 연결되었습니다 switch
. 하나의 사용자 그룹에만 대역폭을 tc
누적 사용량으로 제한하도록 구성하고 싶습니다 . (1명의 사용자가 다운로드/업로드할 경우 반드시 받아야 하며, 3명이 동시에 다운로드/업로드할 경우에는 반드시 받아야 함)2 nodes
(XyZ in picture)
3Mbps
3Mbps
1MBps
우선 이 요구 사항을 충족할 수 있는지 알려주세요., 그렇다면 어떻게 진행하나요?
다음은 토폴로지 다이어그램입니다.
답변1
HFSC 또는 HTB와 같은 클래스 인식 qdisc를 선택해야 합니다.
그런 다음 다음과 같은 클래스 트리를 구축해야 합니다.
Root Class (10MBit)
|
\--- XyZ Class (rate 3Mbit ceil 3Mbit)
| |
| \--- Client 10 (rate 1.5Mbit ceil 3Mbit)
| \--- Client 11 (rate 1.5Mbit ceil 3Mbit)
|
\--- Client 30 (rate 3.5Mbit ceil 10Mbit)
\--- Client 40 (rate 3.5Mbit ceil 10Mbit)
그리고 두 인터페이스 모두에서(업로드 및 다운로드 구성용)
HTB를 사용하여 예측 가능한 결과를 얻으려면 하위 항목의 합이 항상 상위 항목과 동일한지 확인해야 합니다. 따라서 루트에는 10Mbit가 있고 직계 하위 항목은 동일합니다(Xyz 3Mbit + Client30 3.5Mbit + Client40 + 3.5Mbit == 10Mbit). 마찬가지로 XyZ에는 3Mbit와 그 하위 Client10+Client11이 있습니다.
몇 년 전에 나는 비슷한 작업을 수행하는 스크립트를 작성했습니다.
https://github.com/frostschutz/FairNAT
오늘은 유지 관리되지 않았지만 아마도 몇 가지 아이디어를 얻을 수 있을 것입니다.
Linux의 트래픽 조절은 무시되고 난해한 영역이며 좋은 문서를 찾기가 어렵습니다. 이게 바뀌었는지는 모르겠지만...
가지다http://lartc.org/ (WonderShaper 부분은 무시하세요)
및 커널 패킷 전송 다이어그램http://www.docum.org/docum.org/kptd/(또한 FAQ)
또는 이것이 너무 복잡하다면 ESFQ와 같은 상태 비저장 qdisc가 귀하의 요구에 적합할 수도 있습니다. 실제로 하드 대역폭 제한을 적용하지 않고 클라이언트 간의 균형을 맞추려고 시도합니다.
행운을 빌어요.