4.4. 플랫 프로바이더 네트워크 패킷 흐름은 어떻게 작동합니까?

이 섹션에서는 플랫 프로바이더 네트워크 구성이 있는 인스턴스와의 트래픽 흐름 방법을 자세히 설명합니다.

플랫 공급자 네트워크에서 나가는 트래픽 흐름

다음 다이어그램에서는 인스턴스를 벗어나고 외부 네트워크에 직접 도착하는 트래픽의 패킷 흐름을 설명합니다. br-ex 외부 브리지를 구성한 후 실제 인터페이스를 브리지에 추가하고 Compute 노드에 인스턴스를 생성합니다. 결과적으로 생성된 인터페이스 및 브리지 구성은 다음 다이어그램의 구성과 비슷합니다( iptables_hybrid 방화벽 드라이버를 사용하는 경우).

네트워크 패킷 흐름 - 나가는
  1. 패킷은 인스턴스의 eth0 인터페이스를 종료하고 Linux 브리지 qbr-xx 에 도착합니다.
  2. 브리지 qbr-xx 는 veth 쌍 qvb -xx <-> qvo-xxx를 사용하여 br- int 에 연결됩니다. 이는 브리지가 보안 그룹에서 정의한 인바운드/아웃바운드 방화벽 규칙을 적용하는 데 사용되기 때문입니다.
  3. qvb-xx 인터페이스는 qbr-xx linux 브리지에 연결되고 qvoxxbr-int Open vSwitch(OVS) 브리지에 연결됩니다.

'qbr-xx'Linux 브리지의 구성 예:

 # brctl show
qbr269d4d73-e7		8000.061943266ebb	no		qvb269d4d73-e7
							tap269d4d73-e7

br-int의 qvo- xx 구성 :

 # ovs-vsctl show
  Bridge br-int
        fail_mode: secure
            Interface "qvof63599ba-8f"
        Port "qvo269d4d73-e7"
            tag: 5
            Interface "qvo269d4d73-e7"

참고

포트 qvo-xx 는 flat 프로바이더 네트워크와 연결된 내부 VLAN 태그로 태그가 지정됩니다. 이 예에서 VLAN 태그는 5 입니다. 패킷이 qvo-xx 에 도달하면 VLAN 태그가 패킷 헤더에 추가됩니다.

그런 다음 patch-peer int -br-ex <-> phy-br-ex를 사용하여 패킷이 br -ex OVS 브리지로 이동합니다.

br-int 의 patch-peer 구성 예 :

 # ovs-vsctl show
    Bridge br-int
        fail_mode: secure
       Port int-br-ex
            Interface int-br-ex
                type: patch
                options: {peer=phy-br-ex}

br-ex 의 patch-peer 구성 예 :

    Bridge br-ex
        Port phy-br-ex
            Interface phy-br-ex
                type: patch
                options: {peer=int-br-ex}
        Port br-ex
            Interface br-ex
                type: internal

이 패킷이 br -ex의 phy-br -ex 에 도달하면 br-ex 내부의 OVS 흐름이 VLAN 태그를 제거하고 실제 인터페이스로 전달합니다.

다음 예에서 출력에는 phy-br-ex 의 포트 번호가 2 가 표시되어 있습니다.

 # ovs-ofctl show br-ex
OFPT_FEATURES_REPLY (xid=0x2): dpid:00003440b5c90dc6
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE

 2(phy-br-ex): addr:ba:b5:7b:ae:5c:a2
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max

다음 출력은 VLAN 태그가 5 (dl_vlan=5)인 phy-br-ex (in_port=2)에 도착하는 모든 패킷을 보여줍니다. 또한 br-ex의 OVS 흐름은 VLAN 태그를 제거하고 패킷을 실제 인터페이스로 전달합니다.

# ovs-ofctl dump-flows br-ex
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=4703.491s, table=0, n_packets=3620, n_bytes=333744, idle_age=0, priority=1 actions=NORMAL
 cookie=0x0, duration=3890.038s, table=0, n_packets=13, n_bytes=1714, idle_age=3764, priority=4,in_port=2,dl_vlan=5 actions=strip_vlan,NORMAL
 cookie=0x0, duration=4702.644s, table=0, n_packets=10650, n_bytes=447632, idle_age=0, priority=2,in_port=2 actions=drop

실제 인터페이스가 또 다른 VLAN 태그 지정된 인터페이스인 경우 실제 인터페이스는 패킷에 태그를 추가합니다.

플랫 공급자 네트워크에서 들어오는 트래픽 흐름

이 섹션에는 인스턴스의 인터페이스에 도달할 때까지 외부 네트워크에서 들어오는 트래픽 흐름에 대한 정보가 포함되어 있습니다.

네트워크 패킷 흐름 - 수신
  1. 들어오는 트래픽은 물리적 노드의 eth1 에 도착합니다.
  2. 패킷이 br-ex 브리지에 전달됩니다.
  3. 패킷은 patch-peer phy -br-ex <--> int-br-ex를 통해 br-int 로 이동합니다.

다음 예에서 int-br-ex 는 포트 번호 15 를 사용합니다. 15(int-br-ex) 가 포함된 항목을 참조하십시오.

 # ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:00004e67212f644d
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
 15(int-br-ex): addr:12:4e:44:a9:50:f4
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max

br-int에서 트래픽 흐름 관찰

  1. 패킷이 int-br-ex에 도착하면 br-int 브리지 내의 OVS 흐름 규칙이 패킷을 수정하여 내부 VLAN 태그를 추가합니다 . actions=mod_vlan_vid:5 에 대한 항목을 참조하십시오.

     # ovs-ofctl dump-flows br-int
    NXST_FLOW reply (xid=0x4):
     cookie=0x0, duration=5351.536s, table=0, n_packets=12118, n_bytes=510456, idle_age=0, priority=1 actions=NORMAL
     cookie=0x0, duration=4537.553s, table=0, n_packets=3489, n_bytes=321696, idle_age=0, priority=3,in_port=15,vlan_tci=0x0000 actions=mod_vlan_vid:5,NORMAL
     cookie=0x0, duration=5350.365s, table=0, n_packets=628, n_bytes=57892, idle_age=4538, priority=2,in_port=15 actions=drop
     cookie=0x0, duration=5351.432s, table=23, n_packets=0, n_bytes=0, idle_age=5351, priority=0 actions=drop
  2. 두 번째 규칙은 VLAN 태그(vlan_tci=0x0000)가 없는 int-br-ex(in_port=15)에 도착하는 패킷을 관리합니다. 이 규칙은 패킷(actions=mod_vlan_vid:5,NORMAL)에 VLAN 태그 5를 추가하고 qvoxxx 로 전달합니다.
  3. qvo XXX는 VLAN 태그를 제거한 후 패킷을 수락하고 qvbxx 로 전달합니다.
  4. 그런 다음 패킷이 인스턴스에 도달합니다.
참고

VLAN 태그 5는 플랫 프로바이더 네트워크가 있는 테스트 컴퓨팅 노드에서 사용된 VLAN의 예입니다. 이 값은 neutron-openvswitch-agent 에서 자동으로 할당했습니다. 이 값은 자체 플랫 프로바이더 네트워크에 따라 다를 수 있으며, 별도의 두 컴퓨팅 노드의 동일한 네트워크에 따라 다를 수 있습니다.