ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • tc (traffic control)
    개발공부/tool 2024. 12. 29. 21:49

    tc?

    • 저수준 도구 (개발자 친화적)
    • tc 는 linux 커널의 네트워크 트래픽 제어를 위한 명령
    • 큐잉, 쉐이핑, 스케줄링, 필터링, 대역폭 제한 … 다양한 기능
    • 2계층에서 동작

    명령어

    • tc [qdisc/class/filter] [add/change/del/show] dev eth0 옵션
    tc qdisc show
    tc qdisc show dev eno1

     

     

    qdisc ==> class ==> filter 생성 순

    qdisc (queueing discipline)

    • 트래픽 송출하기 전 처리하는 방식(큐잉 알고리즘)
    • 나중에 전송하기 위해 패킷을 대기열에 추가 (enqueue)
    • 대기열에서 패킷을 꺼내서 송출 (대기열에서 제거) (dequeue)
    • 대기열에 쌓여있는 패킷중 하나 dequeue 하는 방식임
    • 종류(dequeue 역할)
      • fifo
      • tbf (token bucket filter) : 패킷 송출 속도 제한
      • htb (hierarchical token bucket) : 여러 트래픽에 클래스 부여(우선순위 부여)
      • cbq (class-based queing) : 특정 트래픽에 클래스 부여
      • fq_codel : 공정 큐잉, 레이턴시 모니터링
      • red : 큐가 가득 차기전에 삭제
    • ex)
      • sudo tc qdisc add dev eth0 root handle 1: htb default 12
      • 1은 qdisc의 핸들번호(id)
      • 해당 클래스에 속하지 않는 것들은 12번 아이디로 모두 보내겠다.
        • 없으면 보통의 트래픽 처리와 동일

    class

    • bandwidth 제한 설정
    • ex)
      • sudo tc class add dev eth0 parent 1: classid 1:5 htb rate 200kbps
      • eth0 으로 나가는 트래픽 중에 최대 대역폭 200kbps 인 클래스를 5번으로 생성
      • classid 1:5 에서 1은 qdisc 의 아이디, 5는 본인이 생성할 id
      • parent 1 도 qdisc를 지정하는것

    filter

    • 특정 클래스로 패킷을 분류 시켜서 traffic shaping 효과
    • ex)
      • sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.4.8 match ip dport 22 0xffff flowid 1:5
        • parent 1:0 = qdisc id
        • prio 1 = 필터의 우선순위
        • u32 = 32비트
        • match ip dst 192.168.4.8 = 해당 ip 주소로 가는 ip 패킷
        • match ip dport 22 0xffff = 해당 포트로 가는 패킷, 0xffff 는 비트마스크
        • flowid 1:5 = 일치하는 트래픽을 보낼 id

    조건 생성

    1. qdisc 생성(큐잉 규칙 만들기)
    2. Class 생성(qdisc 를 거쳐 가는 모든 트래픽 구분)
    3. filter 생성 (특정 클래스로 패킷을 분류시키기 위해)

    조건 확인

    • sudo tc qdisc show dev ifname
    • tc가 잘 설정되었는지 확인 = iperf 이용
      • iperf
        • iperf -s 로 iperf 서버(패킷을 받는 입장) 시작
        • iperf -c 서버ip 옵션 으로 서버에 연결, 테스트 진행
           
        • ex)
          • iperf -c 192.168.1.100 -t 30
          • 해당 ip 서버에 30초간 트래픽 전송
        • 확인중....

    '개발공부 > tool' 카테고리의 다른 글

    unp  (0) 2024.12.21
Designed by Tistory.