Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

vRouter 패킷 경로 추적

Contrail Networking은 가상 머신(VM)에서 패킷을 받아 대상으로 전달하는 구성 요소입니다. 추적은 패킷 경로를 디버깅하는 데 유용한 도구입니다.

이 주제에서는 다음 사용 사례에서 vRouter 패킷 경로를 추적합니다.

유니캐스트 패킷 경로 - VN 내

이 절차에서는 VM1에서 VM2(동일한 컴퓨팅 노드) 및 VM3(다른 컴퓨팅 노드)으로 가상 네트워크 내(VN 내) 트래픽에 대한 유니캐스트 패킷 경로를 디버깅하는 단계를 단계별로 설명합니다. 이 예에서 나열된 VM은 동일한 서브넷 10.1.1.0/24에 있습니다. VN 내 트래픽이 동일한 가상 네트워크 내에 있습니다.

VM1

IP 주소 10.1.1.5/32 (컴퓨팅 1)

VM2

IP 주소 10.1.1.6/32 (컴퓨팅 1)

VM3

IP 주소 10.1.1.7/32 (컴퓨팅 2)

컴퓨팅 내 사용 사례

  1. 다음 명령을 사용하여 VM의 VMI(가상 머신 인터페이스)에 해당하는 인터페이스를 검색합니다 vif .

    또한 introspect URL을 vif 입력하여 인터페이스를 검색할 수 있습니다.

    본보기:

    메모:

    IP 주소를 인트로스펙트 HTTP URL의 실제 컴퓨팅 IP 주소로 바꿉니다.

  2. vif --get <index> 명령을 실행하여 vRouter 인터페이스(VIF)에 가상 라우팅 및 포워딩(VRF) 및 정책 플래그가 설정되어 있는지 확인합니다.

    각각 vif에 대한 출력 확인 플래그의 예:

  3. 다음 명령을 실행하여 브리지 테이블의 모든 항목을 표시합니다.

    본보기:

    이 예에서는 브리지 테이블에 있는 대상 VM의 대상 MAC 주소 및 이와 연결된 다음 홉 식별자가 강조 표시됩니다.

  4. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

    예를 들어, 은(는) Oif:6 패킷에 대한 발신 인터페이스인 다음 홉의 OIF 인덱스입니다. 은 Encap Data (는) 패킷이 발신 인터페이스로 전달되기 전에 IP 패킷에 추가되는 L2 캡슐화에 해당합니다.

  5. 나가는 VIF 세부 정보를 가져오려면 실행합니다 vif --get <oifindex> .

    본보기:

    해당 VIF 인터페이스에 대한 수신 패킷 RX 및 전송 패킷 TX 카운터는 트래픽이 통과할 때 증가합니다.

  6. flow -l 명령을 실행하여 생성된 흐름을 나열합니다. VIF에서 정책 플래그가 사용되도록 설정된 경우 예제와 같이 흐름이 생성됩니다.

    예: 에서 ping 10.1.1.6 합니다 10.1.1.5.

    트래픽이 통과할 때 순방향 및 역방향 흐름의 통계가 증가합니다. 특정 흐름에 대한 통계가 증가하지 않는 경우 해당 방향에 잠재적인 문제가 있음을 나타낼 수 있습니다. 플로우 작업은 패킷이 포워딩 또는 NATed 아웃되기 위한 또는 N 이어야 F 합니다. 의 D 플로우 작업은 패킷이 드롭됨을 나타냅니다.

  7. vrouter_agent_debug 스크립트를 실행하여 모든 관련 로그를 수집합니다.

컴퓨팅 간 사용 사례

컴퓨팅 간 사례에서 다음 홉 조회는 패킷을 다른 컴퓨팅 노드로 가져가는 터널을 가리킵니다. 또한 브리지 항목은 캡슐화 중에 패킷에 추가된 레이블/VNID를 나타냅니다. 컴퓨팅 간 트래픽은 서로 다른 컴퓨팅 노드의 VM 간에 발생합니다.

컴퓨팅 1의 경우:

  1. 다음 명령을 사용하여 VM의 VMI(가상 머신 인터페이스)에 해당하는 인터페이스를 검색합니다 vif .

    또한 introspect URL을 vif 입력하여 인터페이스를 검색할 수 있습니다.

    본보기:

    메모:

    IP 주소를 인트로스펙트 HTTP URL의 실제 컴퓨팅 IP 주소로 바꿉니다.

  2. vif --get <index> 명령을 실행하여 vRouter 인터페이스(VIF)에 가상 라우팅 및 포워딩(VRF) 및 정책 플래그가 설정되어 있는지 확인합니다.

    각각 vif에 대한 출력 확인 플래그의 예:

  3. 다음 명령을 실행하여 브리지 테이블의 모든 항목을 표시합니다.

    본보기:

    이 예에서 은(는) 2:99:ef:64:96:e1 IP 주소 10.1.1.7 에 속하며 레이블 27 은 패킷을 캡슐화하는 데 사용됩니다.

  4. 다음 홉 세부 정보를 가져오기 위해 실행합니다 nh --get <nh id> .

    본보기:

    예에서 다음 홉 출력은 다음 홉 유형을 (으)로, 캡슐화는 (MPLSoGRE으)로Tunnel, 발신 인터페이스는 (으)로Oif:0, 터널의 해당 소스 및 대상 IP 주소를 나타냅니다.

컴퓨팅 2의 경우:

  1. mpls --get <label> 명령을 실행하여 특정 수신 MPLS 테이블에 매핑된 다음 홉을 확인합니다.

    본보기:

  2. 다음 홉 세부 정보를 가져오기 위해 실행합니다 nh --get <nh_id> .

    본보기:

  3. 나가는 VIF 세부 정보를 가져오려면 실행합니다 vif --get <oifindex> .

    본보기:

    메모:

    VXLAN 캡슐화를 사용하는 경우 컴퓨팅 2에서 다음을 수행합니다.

    1. 1단계의 경우 명령을 실행하는 mpls --get 대신 명령을 실행하여 vxlan --get <vxlanid> VXLAN ID에서 다음 홉으로의 매핑을 가져옵니다.

    2. VXLAN을 사용하면 다음 홉이 VRF로 변환된 다음 홉을 가리킵니다. 3 단계와 같이 해당 VRF에서 브리지 조회를 사용하여 VIF 인터페이스를 가리킬 최종 발신 다음 홉을 가져옵니다.

유니캐스트 패킷 경로 - VN 간

다음 절차에서는 VM1에서 VM2(동일한 컴퓨팅 노드) 및 VM3(다른 컴퓨팅 노드)으로의 패킷 경로를 디버깅하는 단계를 수행합니다. 이 예에서 나열된 VM(가상 머신)은 동일한 서브넷 10.1.1.0/24에 있습니다.

VM1

IP 주소 10.1.1.5/32 (컴퓨팅 1)

VM2

IP 주소 20.1.1.6/32 (컴퓨팅 1)

VM3

IP 주소 20.1.1.5/32 (컴퓨팅 2)

메모:

모든 자체 검사 URL에서 IP 주소를 실제 컴퓨팅 IP 주소로 바꿉니다.

컴퓨팅 내 사용 사례

  1. 다음 명령을 사용하여 VM의 VMI(가상 머신 인터페이스)에 해당하는 인터페이스를 검색합니다 vif .

    또한 introspect URL을 vif 입력하여 인터페이스를 검색할 수 있습니다.

    본보기:

    메모:

    자체 점검 HTTP URL에서 IP 주소를 실제 컴퓨팅 IP 주소로 바꿉니다.

  2. vif --get <index> 명령을 실행하여 vRouter 인터페이스(VIF)에 가상 라우팅 및 포워딩(VRF) 및 정책 플래그가 설정되어 있는지 확인합니다.

    각각 vif에 대한 출력 확인 플래그의 예:

  3. 다음 명령을 실행하여 브리지 테이블의 모든 항목을 표시합니다.

    본보기:

    가상 네트워크 간(VN)의 경우, 패킷은 레이어 2 스위칭 대신 레이어 3 라우팅됩니다. vRouter는 소스의 ARP 요청에 대한 가상 MAC 주소 0:0:5e:0:1:0 백을 제공하는 대상 네트워크에 대한 프록시 ARP를 수행합니다. 이는 소스 VN inet 테이블의 에서 rt –dump 확인할 수 있습니다. 이로 인해 vRouter에서 패킷이 수신되며, vRouter는 경로 조회를 수행하여 패킷을 올바른 대상으로 보냅니다.

  4. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

  5. 지정된 IP 주소의 inet 제품군 경로를 표시하려면 실행합니다 rt --dump 2 --family inet | grep <ip address> .

    본보기:

  6. 다음 홉 세부 정보를 가져오기 위해 실행합니다 nh --get <nh id> .

    본보기:

  7. 나가는 VIF 세부 정보를 가져오려면 실행합니다 vif --get <oifindex> .

    본보기:

컴퓨팅 간 사용 사례

컴퓨팅 간의 경우 패킷을 보내기 위해 조회된 다음 홉이 터널 다음 홉을 가리킵니다. 캡슐화 우선순위에 따라 적절한 캡슐화가 추가되고 패킷이 터널링됩니다. 컴퓨팅 간 트래픽은 서로 다른 컴퓨팅 노드의 VM 간에 발생합니다.

컴퓨팅 1의 경우:

  1. 지정된 IP 주소에 대한 inet 제품군 경로를 표시하려면 실행합니다 rt --dump 2 --family inet | grep <ip address> .

    본보기:

  2. 터널 다음 홉을 가리키는 다음 홉 세부 정보를 표시하려면 실행합니다 nh --get <nh id> .

    본보기:

컴퓨팅 2의 경우:

  1. mpls --get <label> 명령을 실행하여 특정 수신 MPLS 테이블에 매핑된 다음 홉을 확인합니다.

    본보기:

  2. 다음 홉 세부 정보를 보려면 실행합니다 nh --get <nh id> .

    본보기:

    예를 들어, 은(는) Oif:4 패킷에 대한 발신 인터페이스인 다음 홉의 OIF 인덱스입니다. 은 Encap Data (는) 패킷이 발신 인터페이스로 전달되기 전에 IP 패킷에 추가되는 L2 캡슐화에 해당합니다.

  3. 나가는 VIF 세부 정보를 가져오려면 실행합니다 vif --get <oifindex> .

    본보기:

    Contrail Networking의 EVPN Type 5 라우팅에 대한 자세한 내용은 EVPN Route Type 5 지원을 참조하십시오.

브로드캐스트, 알 수 없는 유니캐스트 및 멀티캐스트 패킷 경로

다음 절차는 Contrail Networking에서 브로드캐스트, 알 수 없는 유니캐스트 및 멀티캐스트(BUM) 트래픽의 패킷 경로를 디버깅하는 단계별로 설명합니다. 이 예에서 나열된 VM(가상 머신)은 동일한 서브넷 70.70.70.0/24에 있습니다.

ToR 서비스 노드(TSN)는 적극적으로 다음을 담당합니다.contrail-tor-agent

  1. ToR 스위치에서 들어오는 모든 BUM 트래픽의 수신자 역할을 합니다.

  2. ToR 스위치에 연결된 BMS에 대한 DNS/DHCP 응답자 역할을 합니다.

Contrail Networking 5.x 이전 릴리스에서는 OVSDB(Open vSwitch Database) 매니지드 VXLAN 환경을 사용했습니다.

OVSDB 매니지드 VXLAN의 토폴로지 예시는 다음과 같습니다.

  • ToR SW1(Top-of-Rack Switch 1) - 10.204.74.229(lo0.0 = 1.1.1.229)

  • ToR SW2(TOR(Top-of-Rack Switch 2) - 10.204.74.230(lo0.0 = 1.1.1.230)

  • ToR 서비스 노드 1(TSN1) = 10.219.94.7

  • ToR 서비스 노드 2(TSN2) = 10.219.94.8

  • 컨트롤러1 = 10.219.94.4

  • 컨트롤러2 = 10.219.94.5

  • 컨트롤러3 = 10.219.94.6

  • 컴퓨팅1 = 10.219.94.9

  • 컴퓨팅2 = 19.219.94.18

  • 가상 네트워크(VN) = 70.70.70.0/24

  • 가상 머신 1(VM1) = Compute2에 상주하는 70.70.70.3

  • VM2(가상 머신 2) = Compute1에 있는 70.70.70.5

  • 베어메탈 서버 1(BMS1) = 70.70.70.100

  • 베어메탈 서버 2(BMS2) = 70.70.70.101

  1. set protocols ovsdb interfaces <interface> 명령을 실행하여 OVSDB 프로토콜이 관리할 물리적 인터페이스를 구성합니다.

    본보기:

    BMS가 중단된 ToR 인터페이스는 로 ovsdb interfaces표시됩니다.

  2. ToR 스위치에 대한 테이블을 표시 ovsdb mac 하여 이러한 인터페이스로 들어오는 패킷을 확인합니다.

    본보기:

    빨간색으로 표시된 항목(ff:ff:ff:ff:ff:ff:ff - 브로드캐스트 경로)은 ToR SW로 들어오는 BUM 패킷의 다음 홉을 ovsdb interface나타냅니다. 이 경우 VTEP 주소 10.219.94.7 는 다음 홉인 TSN1입니다. 이는 해당 ToR 스위치에 대해 활성 contrail-tor-agent 상태인 TSN에 따라 변경됩니다. 이를 통해 BUM 패킷은 VXLAN 터널의 TSN 노드로 전달됩니다(로컬 VTEP 소스 인터페이스는 이고 1.1.1.229 RVTEP 소스 인터페이스는 임 10.219.94.7).

    VXLAN 캡슐화 패킷은 논리 인터페이스가 생성될 때 Contrail Networking에 의해 미리 결정된 VXLAN 네트워크 식별자(VNI)와 함께 전송됩니다. 예를 들어, 이(가) Contrail Networking에서 논리적 포트로 구성된 경우 ge-0/0/46 , ToR에서 다음 구성이 커밋되었습니다.

    본보기:

    VXLAN 캡슐화된 패킷이 TSN 노드에 도착하면 vRouter가 이 패킷을 처리하는 방법을 살펴보겠습니다.

  3. VXLAN 테이블을 덤프하기 위해 실행합니다 vxlan --dump . VXLAN 테이블은 네트워크 ID를 다음 홉으로 매핑합니다.

    본보기:

    이 예에서 다음 홉 13 은 VNI 4에 대해 프로그래밍됩니다.

  4. 다음을 nh --get <nh id> 실행하여 다음 홉 세부 정보를 표시하고 연결된 가상 라우팅 및 포워딩(VRF)을 확인합니다.

    본보기:

  5. 다음 명령을 실행하여 브리지 테이블의 모든 항목을 표시합니다.

    본보기:

    예제 브리지 테이블에서는 BUM 패킷 경로를 추적하므로 프로그래밍된 다음 홉을 선택하여 ff:ff:ff:ff:ff 경로를 검사해야 합니다. 예제에서는 24입니다. 일련의 복합 다음 홉이 프로그래밍됩니다.

  6. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

    예제의 멀티캐스트 트리는 두 개의 DIP(Dynamic IP)가 있음을 보여줍니다. 패킷이 발생한 DIP는 무시됩니다. 따라서 패킷은 DIP 10.219.94.18 로만 전달됩니다.

  7. DIP 10.219.94.18 가 수신 VXLAN 캡슐화 패킷으로 어떤 작업을 수행하는지 조사하기 위해 실행합니다vxlan --get <vnid>.

    본보기:

  8. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

  9. 다음 명령을 실행하여 브리지 테이블의 모든 항목을 표시합니다.

    본보기:

    예제 브리지 테이블에서는 BUM 패킷 경로를 추적하므로 프로그래밍된 다음 홉을 선택하여 ff:ff:ff:ff:ff 경로를 검사해야 합니다. 예제에서는 50입니다.

  10. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

    이 예에서는 DIP 10.219.94.9만 검사하면 됩니다. 나머지 엔드포인트는 로컬이거나 BUM 트래픽이 발생한 소스입니다. 이제 수신 VXLAN 캡슐화 패킷으로 DIP 10.219.94.9 가 어떤 작업을 수행하는지 살펴보겠습니다.

  11. DIP 10.219.94.9 가 수신 VXLAN 캡슐화 패킷으로 어떤 작업을 수행하는지 조사하기 위해 실행합니다vxlan --get <vnid>.

    본보기:

  12. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

  13. 다음 명령을 사용하여 VRF에 대한 브리지 테이블을 표시합니다.

    본보기:

  14. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

    위의 출력에서 추가로 검사해야 하는 유일한 DIP는 10.219.94.8입니다. 나머지 DIP는 로컬이거나 BUM 트래픽이 발생한 소스입니다. 이제 수신 VXLAN 캡슐화 패킷으로 DIP 10.219.94.8 가 어떤 작업을 수행하는지 살펴보겠습니다.

  15. DIP 10.219.94.9 가 수신 VXLAN 캡슐화 패킷으로 어떤 작업을 수행하는지 조사하기 위해 실행합니다vxlan --get <vnid>.

    본보기:

  16. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

  17. 다음 명령을 사용하여 VRF에 대한 브리지 테이블을 표시합니다.

    본보기:

  18. Run nh --get <nh id> 을 실행하여 다음 홉 세부 정보를 표시합니다.

    본보기:

    이제 토폴로지에 ToR SW2인 DIP 1.1.1.230 가 하나만 있습니다. 이 ToR SW에는 추적 중인 것과 동일한 VN(VNI=4)에 엔드포인트(BMS2)가 있으므로 멀티캐스트 트리에도 있어야 합니다.

이렇게 하면 하나의 ToR 스위치에서 모든 수준의 BUM 패킷 포워딩 및 추적이 완료되고 토폴로지의 다른 의도된 수신기로 복제됩니다.

이러한 멀티캐스트 트리는 TSN이 연결된 컨트롤러에 의해 프로그래밍됩니다. 컨트롤러의 메모리와 모든 TSN 컴퓨팅에서 최종적으로 프로그래밍되는 항목을 검사하려면 컨트롤러 IP 주소를 사용하여 다음 검사 URL을 입력합니다.