목차
1. Linux에서의 흐름 제어 원리" >1. Linux에서의 흐름 제어 원리
2. 지정된 IP 및 포트의 액세스 속도를 이 머신으로 제한합니다" >2. 지정된 IP 및 포트의 액세스 속도를 이 머신으로 제한합니다
2.1 네트워크 카드 보기" >2.1 네트워크 카드 보기
2.2 구성 qdisc-class-filter" >2.2 구성 qdisc-class-filter
3.3 查看并清理配置" >3.3 查看并清理配置
3. 限制本机对指定 IP、Port 的访问速度" >3. 限制本机对指定 IP、Port 的访问速度
3.1 启用虚拟网卡" >3.1 启用虚拟网卡
3.2 配置 qdisc-class-filter" >3.2 配置 qdisc-class-filter
시스템 튜토리얼 리눅스 TC를 사용하여 Linux에서 네트워크 전류 제한을 우아하게 구현

TC를 사용하여 Linux에서 네트워크 전류 제한을 우아하게 구현

Feb 14, 2024 pm 12:27 PM
linux 리눅스 튜토리얼 리눅스 시스템 리눅스 명령 쉘 스크립트 준비 임베디드리눅스 리눅스 시작하기 리눅스 학습

1. Linux에서의 흐름 제어 원리

패킷을 대기열에 추가하여 전송 방법을 제어할 수 있습니다. 이러한 종류의 제어를 데이터 형성이라고 하며, 데이터에 대해 다음 작업을 수행합니다.

  • 지연 시간 증가
  • 패킷 삭제
  • 재정렬
  • 중복되었거나 손상되었습니다
  • 제어율

qdisc-class-filter 구조에서 흐름을 제어하려면 세 단계가 필요합니다.

  • qdisc 대기열 만들기

Linux는 패킷을 대기열에 넣어 트래픽을 제어하므로 먼저 대기열이 필요합니다.

  • 수업 분류 만들기

클래스는 실제로 교통 정책을 분류하는 데 사용됩니다. 예를 들어 트래픽 속도 제한 수준을 10MBps와 20MBps의 두 가지로 나눌 수 있습니다.

  • 필터 필터 만들기

클래스 분류가 생성되었으나 클래스에 바인딩된 IP나 포트가 없으므로 현재로서는 제어 효과가 없습니다. 또한 흐름 제어 클래스가 리소스에 적용될 수 있도록 지정된 IP 및 포트를 클래스에 바인딩하는 필터를 만들어야 합니다.

TC는 Linux에서 제공하는 트래픽 제어 도구이며 Cilium/eBPF와 같은 네트워크 구성 요소의 핵심 인프라 중 하나입니다.

2. 지정된 IP 및 포트의 액세스 속도를 이 머신으로 제한합니다

2.1 네트워크 카드 보기

으아악

2.2 구성 qdisc-class-filter

  • qdisc 루트 대기열 만들기
아아아아
  • 모든 대역폭 리소스를 바인딩하는 첫 번째 수준 클래스를 만듭니다

여기서 단위는 6 MBps,也就是 48 Mbps입니다.

으아악
  • 하위 카테고리 수업 만들기

여러 하위 카테고리를 생성하여 리소스 트래픽을 세련된 방식으로 관리할 수 있습니다.

으아악

여기서 ceil은 상한을 설정합니다. 일반적인 상황에서는 속도 제한이 6MBps이지만 네트워크가 유휴 상태일 때는 10MBps에 도달할 수 있습니다.

  • 필터 필터 만들기, IP 제한
아아아아

여기에 1.2.3.4 进行限制带宽为 1:10,也就是 6MBps。当然,你也可以直接给网段 1.2.0.0/16에 수업 전략을 추가하세요.

2.3 查看并清理配置

  • 查看 class 配置
tc class show dev eth0

class htb 1:10 parent 1:1 leaf 10: prio 0 rate 48Mbit ceil 80Mbit burst 15Kb cburst 1600b 
class htb 1:1 root rate 48Mbit ceil 48Mbit burst 15Kb cburst 1590b
로그인 후 복사
  • 查看 filter 配置
tc filter show dev eth0

filter parent 1: protocol ip pref 1 u32 chain 0 
filter parent 1: protocol ip pref 1 u32 chain 0 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 1 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 f

lowid 1:10 not_in_hw 


  match 01020303/ffffffff at 16
로그인 후 복사
  • 清理全部配置
tc qdisc del dev eth0 root
로그인 후 복사

3. 限制本机对指定 IP、Port 的访问速度

由于排队规则主要是基于出口方向,不能对入口方向的流量(Ingress)进行限制。因此,我们需要将流量重定向到 ifb 设备上,再对 ifb 的出口流量(Egress)进行限制,以最终达到控制的目的。

3.1 启用虚拟网卡

  • 将在 ifb 设备
modprobe ifb numifbs=1
로그인 후 복사
  • 启用 ifb0 虚拟设备
ip link set dev ifb0 up
로그인 후 복사

3.2 配置 qdisc-class-filter

  • 添加 qdisc
tc qdisc add dev eth0 handle ffff: ingress
로그인 후 복사
  • 重定向网卡流量到 ifb0
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress re

direct dev ifb0
로그인 후 복사
  • 添加 class 和 filter
tc qdisc add dev ifb0 root handle 1: htb default 10

tc class add dev ifb0 parent 1:0 classid 1:1 htb rate 6Mbps

tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 6Mbps

tc filter add dev ifb0 parent 1:0 protocol ip prio 16 u32 match ip dst 1.2.3.4  flowid 1:

10
로그인 후 복사

3.3 查看并清理配置

  • 下面是限速本机对指定 IP 访问的监控图
Linux 下使用 TC 优雅的实现网络限流

进入的流量被限制在 6 MBps 以下,而出去的流量不被限制。

  • 查看 class 配置
tc class show dev ifb0

class htb 1:10 parent 1:1 prio 0 rate 48Mbit ceil 48Mbit burst 1590b cburst 1590b 

class htb 1:1 root rate 48Mbit ceil 48Mbit burst 1590b cburst 1590b 
로그인 후 복사
  • 查看 filter 配置
tc filter show dev ifb0

filter parent 1: protocol ip pref 16 u32 chain 0 
filter parent 1: protocol ip pref 16 u32 chain 0 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 16 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 

flowid 1:10 not_in_hw 

  match 01020304/ffffffff at 16
로그인 후 복사
  • 清理全部配置
tc qdisc del dev eth0 ingress
tc qdisc del dev ifb0 root
modprobe -r ifb
로그인 후 복사

위 내용은 TC를 사용하여 Linux에서 네트워크 전류 제한을 우아하게 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux는 실제로 좋은 것은 무엇입니까? Linux는 실제로 좋은 것은 무엇입니까? Apr 12, 2025 am 12:20 AM

Linux는 서버, 개발 환경 및 임베디드 시스템에 적합합니다. 1. 서버 운영 체제로서 Linux는 안정적이고 효율적이며 종종 고 대전성 애플리케이션을 배포하는 데 사용됩니다. 2. 개발 환경으로서 Linux는 효율적인 명령 줄 도구 및 패키지 관리 시스템을 제공하여 개발 효율성을 향상시킵니다. 3. 임베디드 시스템에서 Linux는 가볍고 사용자 정의 가능하며 자원이 제한된 환경에 적합합니다.

Linux와 함께 Docker 사용 : 포괄적 인 가이드 Linux와 함께 Docker 사용 : 포괄적 인 가이드 Apr 12, 2025 am 12:07 AM

Linux에서 Docker를 사용하면 개발 및 배포 효율성을 향상시킬 수 있습니다. 1. Docker 설치 : 스크립트를 사용하여 Ubuntu에 Docker를 설치하십시오. 2. 설치 확인 : Sudodockerrunhello-World를 실행하십시오. 3. 기본 사용 : Nginx 컨테이너 생성 Dockerrun-Namemy-Nginx-P8080 : 80-Dnginx. 4. 고급 사용 : DockerFile을 사용하여 사용자 정의 이미지를 만들고 빌드 및 실행하십시오. 5. 최적화 및 모범 사례 : 다단계 빌드 및 dockercompose를 사용하여 Dockerfiles를 작성하기위한 모범 사례를 따르십시오.

Apache80 포트가 점유 된 경우해야 할 일 Apache80 포트가 점유 된 경우해야 할 일 Apr 13, 2025 pm 01:24 PM

Apache 80 포트가 점유되면 솔루션은 다음과 같습니다. 포트를 차지하고 닫는 프로세스를 찾으십시오. 방화벽 설정을 확인하여 Apache가 차단되지 않았는지 확인하십시오. 위의 방법이 작동하지 않으면 Apache를 재구성하여 다른 포트를 사용하십시오. Apache 서비스를 다시 시작하십시오.

아파치를 시작하는 방법 아파치를 시작하는 방법 Apr 13, 2025 pm 01:06 PM

Apache를 시작하는 단계는 다음과 같습니다. Apache 설치 (명령 : Sudo apt-get Apache2를 설치하거나 공식 웹 사이트에서 다운로드) 시작 apache (linux : sudo systemctl start : windes (선택 사항, Linux : Sudo SystemCtl

Oracle 모니터링을 시작하는 방법 Oracle 모니터링을 시작하는 방법 Apr 12, 2025 am 06:00 AM

Oracle 청취자를 시작하는 단계는 다음과 같습니다. Windows의 리스너 상태 (LSNRCTL 상태 명령 사용)를 확인하고 Linux 및 UNIX의 Oracle Services Manager에서 "TNS 리스너"서비스를 시작하고 LSNRCTL 시작 명령을 사용하여 리스너가 LSNRCTL 명령을 사용하여 리스너가 시작되었음을 확인하십시오.

데비안에서 nginx ssl 성능을 모니터링하는 방법 데비안에서 nginx ssl 성능을 모니터링하는 방법 Apr 12, 2025 pm 10:18 PM

이 기사에서는 데비안 시스템에서 NGINX 서버의 SSL 성능을 효과적으로 모니터링하는 방법에 대해 설명합니다. NginxOxporter를 사용하여 Nginx 상태 데이터를 프로 메테우스로 내보낸 다음 Grafana를 통해 시각적으로 표시합니다. 1 단계 : nginx 구성 먼저 Nginx 구성 파일에서 stub_status 모듈을 활성화하여 nginx의 상태 정보를 얻어야합니다. nginx 구성 파일에 다음 스 니펫을 추가하십시오 (일반적으로 /etc/nginx/nginx.conf에 있거나 포함 파일에 위치) : location/nginx_status {stub_status

데비안 시스템에서 재활용 빈을 설정하는 방법 데비안 시스템에서 재활용 빈을 설정하는 방법 Apr 12, 2025 pm 10:51 PM

이 기사는 데비안 시스템에서 재활용 빈을 구성하는 두 가지 방법 인 그래픽 인터페이스와 명령 줄을 소개합니다. 방법 1 : Nautilus 그래픽 인터페이스를 사용하여 파일 관리자를 엽니 다. 데스크탑 또는 응용 프로그램 메뉴에서 Nautilus 파일 관리자 (일반적으로 "파일")를 찾아 시작하십시오. Recycle Bin 찾기 : 왼쪽 탐색 표시 줄에서 재활용 빈 폴더를 찾으십시오. 찾을 수없는 경우 검색하려면 "기타 위치"또는 "컴퓨터"를 클릭하십시오. 재활용 빈 속성을 구성하십시오 : "Recycle Bin"을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하십시오. 속성 창에서 다음 설정을 조정할 수 있습니다. 최대 크기 : 재활용 빈에서 사용 가능한 디스크 공간을 제한하십시오. 유지 시간 : 재활용 쓰레기통에서 파일이 자동으로 삭제되기 전에 보존을 설정합니다.

Debian Readdir의 성능을 최적화하는 방법 Debian Readdir의 성능을 최적화하는 방법 Apr 13, 2025 am 08:48 AM

Debian Systems에서 ReadDir 시스템 호출은 디렉토리 내용을 읽는 데 사용됩니다. 성능이 좋지 않은 경우 다음과 같은 최적화 전략을 시도해보십시오. 디렉토리 파일 수를 단순화하십시오. 대규모 디렉토리를 가능한 한 여러 소규모 디렉토리로 나누어 읽기마다 처리 된 항목 수를 줄입니다. 디렉토리 컨텐츠 캐싱 활성화 : 캐시 메커니즘을 구축하고 정기적으로 캐시를 업데이트하거나 디렉토리 컨텐츠가 변경 될 때 캐시를 업데이트하며 readDir로 자주 호출을 줄입니다. 메모리 캐시 (예 : Memcached 또는 Redis) 또는 로컬 캐시 (예 : 파일 또는 데이터베이스)를 고려할 수 있습니다. 효율적인 데이터 구조 채택 : 디렉토리 트래버스를 직접 구현하는 경우 디렉토리 정보를 저장하고 액세스하기 위해보다 효율적인 데이터 구조 (예 : 선형 검색 대신 해시 테이블)를 선택하십시오.

See all articles