Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

호스트 OS에서 설정 구성

이 장은 고급 기능을 활성화하거나 cRPD 기능의 규모를 늘리기 위해 호스트 OS 설정 조정에 대한 정보를 제공합니다.

ARP 확장 구성

최대 ARP 입력 번호는 Linux 호스트 커널에 의해 제어됩니다. 이웃이 많은 경우, Linux 호스트에서 ARP 항목 제한을 조정해야 할 수도 있습니다. Linux 호스트의 sysctl 명령에는 ARP 또는 NDP 항목 제한을 조정하는 옵션이 있습니다.

예를 들어, IPv4를 사용하여 최대 ARP 항목을 조정하려면:

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh1=4096

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh2=8192

root@host:~# sysctl -w net.ipv4.neigh.default.gc_thresh3=8192

예를 들어, IPv6을 사용하여 최대 ND 항목을 조정하려면 다음을 수행합니다.

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh1=4096

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh2=8192

root@host:~# sysctl -w net.ipv6.neigh.default.gc_thresh3=8192

cRPD 아래에서 OSPF 조정

cRPD 있는 OSPFv2/v3 인접 항목의 수를 늘리려면 IGMP 멤버십 제한을 늘입니다.

IGMP 멤버십 제한을 늘입니다.

root@host:~# sysctl -w net.ipv4.igmp_max_memberships=1000

MPLS 구성

Linux 커널에서 MPLS 구성하려면,

  1. 또는 을(를) 사용하여 modprobe 컨테이너에 MPLS 모듈을 로드합니다 insmod .

    root@crpd-ubuntu3:~# modprobe mpls_iptunnel

    root@crpd-ubuntu3:~# modprobe mpls_router

    root@crpd-ubuntu3:~# modprobe ip_tunnel

  2. 호스트 OS에 로드된 MPLS 모듈을 확인합니다.
  3. 호스트에서 을mpls_router(를) 로드한 후 다음 명령을 구성하여 인터페이스에서 MPLS 활성화합니다.

    root@host:~# sysctl -w net.mpls.platform_labels=1048575

MPLS 경로 추가

Netlink 메시지는 Linux 커널과 경로를 통신(추가/학습)하는 데 사용됩니다. MPLS 경로는 내부적으로 넷링크 소켓을 사용하여 커널을 업데이트하는 유틸리티를 사용하여 iproute2 커널에 추가됩니다. 유틸리티를 사용하여 호스트에 MPLS 경로를 추가하려면 다음을 수행 iproute2 합니다.

  1. 네트워크 인터페이스에서 mpls를 활성화합니다.

    root@host:/# cli

    root@host> show interfaces routing

  2. 다음 명령을 실행하여 호스트 OS에 mpls 경로를 추가합니다.

    root@host:~# ip -f mpls route add 100 as 200/300 via inet 172.20.0.2 dev br-a3a2fe3ae8e3

  3. 다음 명령을 실행하여 Linux의 MPLS fib 항목을 봅니다.

    root@host:~# ip -f mpls route show

MPLS 레이블이 있는 경로 추가

유틸리티를 사용하여 MPLS 레이블로 패킷을 캡슐화하여 호스트에 경로를 추가하려면 다음을 수행 iproute2 합니다.

  1. 다음 명령을 실행하여 패킷을 호스트 OS로 캡슐화합니다.

    root@host:~# ip route add 172.20.0.0/30 encap mpls 200 via inet 172.20.0.2 dev br-a3a2fe3ae8e3

  2. mpls 경로를 보려면 다음 명령을 실행합니다.

    root@host:~# ip route show

VRF 디바이스 생성

VRF 디바이스를 인스턴스화하고 이를 테이블과 연결하려면 다음을 수행합니다.

  1. VRF 디바이스를 생성하려면 다음 명령을 실행합니다.

    root@host:~# ip link add dev test1 type vrf table 11

  2. 다음 명령을 실행하여 생성된 VRF를 확인합니다.

    root@host:~# ip [-d] link show type vrf

  3. 다음 명령을 실행하여 호스트 OS의 VRF 목록을 확인합니다.

    root@host:~# ip vrf show

VRF에 네트워크 인터페이스 할당

네트워크 인터페이스는 넷데비치를 VRF 디바이스에 할당하여 VRF에 할당됩니다. 연결된 로컬 경로는 VRF 디바이스와 연결된 테이블로 자동으로 이동합니다.

VRF에 네트워크 인터페이스를 할당하는 방법:

인터페이스를 할당하려면 다음 명령을 실행합니다.

root@host:~# ip link set dev <name> master <name>

root@host:~# ip link set dev eth1 vrf test

VRF에 할당된 디바이스 보기

디바이스를 보려면 다음을 수행합니다.

VRF에 할당된 디바이스를 보려면 다음 명령을 실행합니다.

root@host:~# ip link show vrf <name>

root@host:~# ip link show vrf red

VRF에 대한 인접 항목 보기

VRF 디바이스로 노예가 된 디바이스와 관련된 인접 항목을 나열하려면 다음을 수행합니다.

다음 명령을 실행하여 ip 명령에 기본 옵션을 추가합니다.

root@host:~# ip -6 neigh show vrf <NAME>

root@host:~# ip neigh show vrf red

root@host:~# ip -6 neigh show vrf red

VRF 주소 보기

VRF와 연결된 인터페이스의 주소를 표시하려면 다음을 수행합니다.

다음 명령을 실행하여 ip 명령에 기본 옵션을 추가합니다.

root@host:~# ip addr show vrf <NAME>

root@host:~# ip addr show vrf red

VRF 경로 보기

VRF 경로를 보려면 다음을 수행합니다.

  1. VRF 디바이스와 연결된 IPv6 경로 테이블을 보려면 다음 명령을 실행합니다.

    root@host:~# ip -6 route show vrf NAME

    root@host:~# ip -6 route show table ID

  2. VRF 디바이스에 대한 경로 검색을 수행하려면 다음 명령을 실행합니다.

    root@host:~# ip -6 route get vrf <NAME> <ADDRESS>

    root@host:~# ip route get 192.0.2.1 vrf red

    root@host:~# ip -6 route get oif <NAME> <ADDRESS>

    root@host:~# ip -6 route get 2001:db8::32 vrf red

  3. VRF 디바이스에서 IPv4 경로를 보려면 다음 명령을 실행합니다.

    root@host:~# ip route list table <table-id>

VRF에서 네트워크 인터페이스 제거

VRF 디바이스에 대한 노예가 끊어지면 VRF에서 네트워크 인터페이스가 제거됩니다.

다음 명령을 실행하여 네트워크 인터페이스를 제거합니다.

root@host:~# ip link set dev NAME nomaster

네트워크 인터페이스를 제거한 후 연결된 경로가 기본 테이블로 이동하고 로컬 항목이 로컬 테이블로 이동됩니다.

Linux에서 ECMP 로드 밸런싱을 위한 해시 필드 선택

전달된 트래픽과 로컬에서 생성된 트래픽(fib_multipath_hash_policyIPv4/IPv6) 모두에 대해 ECMP 해시 정책()을 선택할 수 있습니다.

IPv4 트래픽

  1. 기본적으로 Linux 커널은 레이어 3 해시 정책을 사용하여 IPv4 트래픽 로드 밸런싱을 합니다. 레이어 3 해싱은 다음 정보를 사용합니다.
    • 소스 IP 주소
    • 대상 IP 주소

    root@host:~# sysctl -n net.ipv4.fib_multipath_hash_policy 0

  2. 다음 명령을 실행하여 레이어 4 해시 정책을 사용하여 IPv4 트래픽을 로드 밸런싱합니다. 레이어 4 해싱은 다음 정보를 기반으로 트래픽 로드 밸런싱을 수행합니다.
    • 소스 IP 주소
    • 대상 IP 주소
    • 소스 포트 번호
    • 대상 포트 번호
    • 프로토콜

    root@host:~# sysctl -w net.ipv4.fib_multipath_hash_policy=1

    root@host:~# sysctl -n net.ipv4.fib_multipath_hash_policy 1

  3. 다음 명령을 실행하여 내부 패킷 헤더(IPv4/IPv6 over IPv4 GRE)에서 레이어 3 해싱을 사용합니다.

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=2

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 2

    정책은 IPv4 트래픽의 기본 접근 방식에 설명된 대로 전달된 패킷의 레이어 3 해싱에 기본값으로 지정됩니다.

    IPv6 트래픽

  4. 기본적으로 Linux 커널은 레이어 3 해시 정책을 사용하여 IPv6 트래픽 로드 밸런싱을 사용합니다. 레이어 3 해시 정책은 다음 정보를 기반으로 트래픽 로드 밸런싱을 수행합니다.
    • 소스 IP 주소
    • 대상 IP 주소
    • flow 레이블
    • 다음 헤더(프로토콜)

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 0

  5. 레이어 4 해시 정책을 사용하여 IPv6 트래픽 로드 밸런싱을 할 수 있습니다. 레이어 4 해시 정책은 다음 정보를 기반으로 트래픽 로드 밸런싱을 수행합니다.
    • 소스 IP 주소
    • 대상 IP 주소
    • 소스 포트 번호
    • 대상 포트 번호
    • 다음 헤더(프로토콜)

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=1

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 1

  6. 다음 명령을 실행하여 내부 패킷 헤더(IPv4/IPv6 over IPv4 GRE)에서 레이어 3 해싱을 사용합니다.

    root@host:~# sysctl -w net.ipv6.fib_multipath_hash_policy=2

    root@host:~# sysctl -n net.ipv6.fib_multipath_hash_policy 2

    MPLS

  7. Linux 커널은 다음 매개 변수를 사용하여 multipath 경로의 다음 홉을 선택할 수 있습니다.
    • 레이블 스택이 최대의 한계까지 MAX_MP_SELECT_LABELS (4)
    • 소스 IP 주소
    • 대상 IP 주소
    • 내부 IPv4/IPv6 헤더의 프로토콜

    인접 탐지

  8. 다음 명령을 실행하여 이웃 항목의 생계(실패/불완전/미해결)를 확인합니다. 이는 패킷을 다음 홉으로 전달하는 데 도움이 됩니다.

    root@host:~# sysctl -w net.ipv4.fib_multipath_use_neigh=1

    기본적으로 패킷은 명령을 사용하여 root@host:~# sysctl -n net.ipv4.fib_multipath_use_neigh 0 다음 홉으로 전달됩니다.

Linux에서 BGP를 사용하는 wECMP

불평등한 비용 로드 밸런싱은 다양한 경로(multipath 다음 홉으로 구성)에서 트래픽을 균등하지 않게 배포하는 방법입니다. 경로에 서로 다른 대역폭 기능이 있을 때 BGP 프로토콜은 링크 대역폭 확장 커뮤니티를 사용하여 링크의 대역폭으로 각 경로/경로를 태깅하여 이를 달성합니다. 해당 링크의 대역폭은 이 링크 대역폭 커뮤니티의 일부로 인코딩될 수 있습니다. RPD는 각 경로에 대한 이 대역폭 정보를 사용하여 적절한 linux::weights로 multipath 다음 홉을 프로그래밍합니다. linux::weight가 포함된 다음 홉을 사용하면 linux 커널이 트래픽을 비대칭적으로 로드 밸런시할 수 있습니다.

BGP는 multipath 다음 홉을 형성하고 개별 경로의 대역폭 값을 사용하여 ECMP 다음 홉을 형성하는 각 다음 홉이 수신해야 하는 트래픽 비율을 확인합니다. 링크 대역폭에 지정된 대역폭 값은 인터페이스의 절대 대역폭이 되어서는 안 됩니다. 이러한 값은 한 경로의 상대 대역폭을 다른 경로에서 반영해야 합니다. 자세한 내용은 BGP 커뮤니티 및 확장 커뮤니티를 정의하는 방법과 라우팅 정책 일치 조건에서 BGP 커뮤니티 및 확장 커뮤니티가 평가되는 방법 이해하기를 참조하십시오.

R1이 R2 및 R3에서 대상 R4까지 동일한 비용 경로를 수신하는 네트워크를 고려합니다. 경로 R1-R2를 통해 로드 밸런싱된 트래픽의 90%와 wECMP를 사용하여 경로 R1-R3을 통해 트래픽의 나머지 10%를 전송하려면 링크 대역폭 community policy-options가 있는 두 BGP 피어에서 수신한 경로를 태그해야 합니다.

  1. 정책 문을 구성합니다.

    root@host> show configuration policy-options

  2. RPD는 대역폭 값을 사용하여 트래픽을 다중 경로 다음 홉과 균등하게 균형을 유지합니다.

    root@host> show route 100.100.100.100 detail

  3. Linux 커널은 각 다음 홉에 linux::weights를 할당하여 균등하지 않은 로드 밸런싱을 지원합니다.

    root@host:/# ip route show 100.100.100.100

    linux::weights는 정수 255의 분할(부호 없는 문자의 최대 값)으로 리눅스로 프로그래밍됩니다. ECMP 다음 홉의 각 다음 홉에는 대역폭 점유율에 비례하는 linux::weight가 제공됩니다.

cRPD SRv6 활성화

다음 sysctl 명령을 사용하여 cRPD IPv6 세그먼트 라우팅 기능을 활성화할 수 있습니다.

  1. 세그먼트 라우팅을 활성화합니다.

    root@host:~# sysctl net.ipv6.conf.all.seg6_enabled=1

    root@host:~# sysctl net.ipv6.conf.all.forwarding=1

  2. eth0 인터페이스에서 SRv6을 활성화하려면 다음 명령을 구성합니다.

    root@host:~# sysctl net.ipv6.conf.eth0.seg6_enabled=1

  3. DT4 SID를 설정하려면 다음 명령을 구성합니다.

    root@host:~# sysctl -wq net.vrf.strict_mode=1