4.4. 플랫 프로바이더 네트워크 패킷 흐름은 어떻게 작동합니까?
이 섹션에서는 플랫 프로바이더 네트워크 구성이 있는 인스턴스와의 트래픽 흐름 방법을 자세히 설명합니다.
플랫 공급자 네트워크에서 나가는 트래픽 흐름
다음 다이어그램에서는 인스턴스를 벗어나고 외부 네트워크에 직접 도착하는 트래픽의 패킷 흐름을 설명합니다. br-ex
외부 브리지를 구성한 후 실제 인터페이스를 브리지에 추가하고 Compute 노드에 인스턴스를 생성합니다. 결과적으로 생성된 인터페이스 및 브리지 구성은 다음 다이어그램의 구성과 비슷합니다( iptables_hybrid
방화벽 드라이버를 사용하는 경우).
-
패킷은 인스턴스의
eth0
인터페이스를 종료하고 Linux 브리지qbr-xx
에 도착합니다. -
브리지
qbr-xx
는 veth 쌍qvb
에 연결됩니다. 이는 브리지가 보안 그룹에서 정의한 인바운드/아웃바운드 방화벽 규칙을 적용하는 데 사용되기 때문입니다.-xx <-> qvo-xxx를 사용하여 br-
int -
qvb-xx
인터페이스는qbr-xx
linux 브리지에 연결되고qvoxx
는br-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
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
-exbr-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 태그 지정된 인터페이스인 경우 실제 인터페이스는 패킷에 태그를 추가합니다.
플랫 공급자 네트워크에서 들어오는 트래픽 흐름
이 섹션에는 인스턴스의 인터페이스에 도달할 때까지 외부 네트워크에서 들어오는 트래픽 흐름에 대한 정보가 포함되어 있습니다.
-
들어오는 트래픽은 물리적 노드의
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 max
br-int에서 트래픽 흐름 관찰
패킷이
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
-
두 번째 규칙은 VLAN 태그(vlan_tci=0x0000)가 없는 int-br-ex(in_port=15)에 도착하는 패킷을 관리합니다. 이 규칙은 패킷(
actions=mod_vlan_vid:5,NORMAL
)에 VLAN 태그 5를 추가하고qvoxxx
로 전달합니다. -
qvo
XXX는 VLAN 태그를 제거한 후 패킷을 수락하고qvbxx
로 전달합니다. - 그런 다음 패킷이 인스턴스에 도달합니다.
VLAN 태그 5는 플랫 프로바이더 네트워크가 있는 테스트 컴퓨팅 노드에서 사용된 VLAN의 예입니다. 이 값은 neutron-openvswitch-agent
에서 자동으로 할당했습니다. 이 값은 자체 플랫 프로바이더 네트워크에 따라 다를 수 있으며, 별도의 두 컴퓨팅 노드의 동일한 네트워크에 따라 다를 수 있습니다.