4.4. 플랫 공급자 네트워크 패킷 흐름은 어떻게 작동합니까?
이 섹션에서는 플랫 공급자 네트워크 구성이 있는 인스턴스에서 트래픽이 또는 인스턴스로 이동하는 방법을 자세히 설명합니다.
플랫 공급자 네트워크의 발신 트래픽 흐름
다음 다이어그램에서는 인스턴스를 떠나고 외부 네트워크에서 직접 들어오는 트래픽에 대한 패킷 흐름을 설명합니다. br-ex 외부 브리지를 구성한 후 물리적 인터페이스를 브리지에 추가하고 Compute 노드에 인스턴스를 생성합니다. 인터페이스 및 브리지의 결과 구성은 다음 다이어그램의 구성과 유사합니다( iptables_hybrid 방화벽 드라이버 사용).

-
패킷은 인스턴스의
eth0인터페이스를 종료하고 linux bridgeqbr-xx에 도달합니다. -
bridge
qbr-xx는 veth 쌍qvb에 연결됩니다. 이는 브리지가 보안 그룹에서 정의한 인바운드/아웃바운드 방화벽 규칙을 적용하는 데 사용되기 때문입니다.-xx <-> qvo-xxx를 사용하여 br-int -
qvb-xx인터페이스는qbr-xxLinux 브리지에 연결되고qvoxx는br-intOpen 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 는 플랫 공급자 네트워크와 연결된 내부 VLAN 태그로 태그가 지정됩니다. 이 예에서 VLAN 태그는 5 입니다. 패킷이 qvo-xx 에 도달하면 패킷 헤더에 VLAN 태그가 추가됩니다.
그런 다음 패킷이 patch-peer int- OVS 브리지로 이동합니다.
br-ex <-> phy-br-ex를 사용하여 br-ex
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 태그 (5)를 제거하고 물리적 인터페이스로 전달합니다.
다음 예에서 출력은 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 태그 지정 인터페이스인 경우 물리적 인터페이스는 태그를 패킷에 추가합니다.
플랫 공급자 네트워크의 들어오는 트래픽 흐름
이 섹션에는 인스턴스의 인터페이스에 도달할 때까지 외부 네트워크에서 들어오는 트래픽 흐름에 대한 정보가 포함되어 있습니다.

-
들어오는 트래픽은 물리적 노드의
eth1에 도달합니다. -
패킷은
br-ex브리지에 전달됩니다. -
패킷은 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 maxbr-int에서 트래픽 흐름 관찰
패킷이
int-br-ex에 도달하면br-int브리지 내의 OVS 흐름 규칙이 패킷을 수정하여 내부 VLAN 태그5를 추가합니다.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
-
두 번째 규칙은 VLAN 태그가 없는 int-br-ex(in_port=15)에 도달하는 패킷을 관리합니다(vlan_tci=0x0000). 이 규칙은 VLAN 태그 5를 패킷(
actions=mod_vlan_vid:5,NORMAL)에 추가하고qvoxxx로 전달합니다. -
qvoXXX는 VLAN 태그를 제거한 후 패킷을 수락하고qvbxx로 전달합니다. - 그런 다음 패킷이 인스턴스에 도달합니다.
VLAN 태그 5는 플랫 공급자 네트워크가 있는 테스트 Compute 노드에서 사용된 VLAN의 예입니다. 이 값은 neutron-openvswitch-agent 에 의해 자동으로 할당되었습니다. 이 값은 자체 플랫 공급자 네트워크에 따라 다를 수 있으며 두 개의 Compute 노드에서 동일한 네트워크에 따라 다를 수 있습니다.