Stein 오픈스택 클라우드 분석(2) - 호스트 네트워크 인터페이스 아키텍처

blog post 

 

앞서 포스트에서는 간단하게 사용자와 프로젝트를 생성하고 분석해 보았습니다. 다음으로 네트워크 및 VM 생성단계로 넘어가기에 앞서, 오픈스택 시스템의 기본 네트워크 인터페이스 구조를 우선 살펴보도록 하겠습니다.

 

Neutron 네트워크 서비스 포스팅을 통해 네트워크 서비스가 정상적으로 구축되었다는 전제 하에 분석하도록 하겠습니다. 본 구성 단계는 어떠한 네트워크나 VM도 생성하지 않은 초기 상태에서 시작합니다.

 

 

1. 컴퓨트 노드의 인터페이스 구성

 

 

네트워크 서비스 구축 과정에서 컴퓨트 노드에서도 Neutron 서비스를 구축했습니다. 우선 컴퓨트 노드에서 인터페이스가 어떻게 구성되어 있는지 살펴보겠습니다.

 

[root@Compute0 ~]# ovs-vsctl show
7d7c87c8-560d-4138-8742-8f745aea968b
    Manager "ptcp:6640:127.0.0.1"
        is_connected: true
    Bridge br-int
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        Port br-int
            Interface br-int
                type: internal
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
    Bridge br-tun
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        Port br-tun
            Interface br-tun
                type: internal
        Port "vxlan-0a00001b"
            Interface "vxlan-0a00001b"
                type: vxlan
                options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="10.0.0.25", out_key=flow, remote_ip="10.0.0.27"}
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
    ovs_version: "2.11.0"

 

컴퓨트 노드에서 브릿지 구조를 살펴보면, 가장 눈에 띄는 것은 두 개의 브릿지 (br-int, br-tun)가 생성된 것입니다. 또한 두 브릿지는 패치 인터페이스(patch-tun, patch-int)로 서로 연결(피어 관계)되어 있는것도 확인할 수 있습니다. 각 브릿지는 사실 역할이 있습니다. 일단 두 개의 브릿지가 생성되었다는 것만 알고 넘어가겟습니다.

 

또한 br-tun에는 vxlan 타입의 "vxlan-0a00001b" 인터페이스가 생성되어 바인딩 되어 있는 것을 확인할 수 있습니다. 옵션 값 중에 원격지(remote_ip)를 살펴보니 10.0.0.27, 즉 네트워크 노드와 연결된 것을 확인할 수 있습니다. 이 부분을 통해 추후 VM이 생성되면 이 vxlan 인터페이스를 통해 트래픽이 네트워크 노드로 흐를 것이라는 걸 예상해 볼 수 있습니다.

 

컴퓨트 노드는 생각보다 인터페이스 구성은 간단합니다. 컴퓨트 노드의 인터페이스 구성을 아키텍처로 살펴보면 아래와 같습니다.

 

컴퓨트 노드의 네트워크 인터페이스 아키텍처

 

 

 

 

2. 네트워크 노드의 인터페이스 구성

 

 

네트워크 노드에서의 인터페이스 구성은 컴퓨트 노드 보다 좀 더 복잡해집니다. 우선 전체 인터페이스 구성을 살펴보면 아래와 같습니다.

 

[root@Network ~]# ovs-vsctl show
25bab28b-f4e3-4cc1-8369-1267ca847c93
    Manager "ptcp:6640:127.0.0.1"
        is_connected: true
    Bridge br-int
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        Port "int-br-eth1"
            Interface "int-br-eth1"
                type: patch
                options: {peer="phy-br-eth1"}
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port br-int
            Interface br-int
                type: internal
    Bridge br-tun
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        Port br-tun
            Interface br-tun
                type: internal
        Port "vxlan-0a000019"
            Interface "vxlan-0a000019"
                type: vxlan
                options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="10.0.0.27", out_key=flow, remote_ip="10.0.0.25"}
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
    Bridge "br-eth1"
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        Port "phy-br-eth1"
            Interface "phy-br-eth1"
                type: patch
                options: {peer="int-br-eth1"}
        Port "br-eth1"
            Interface "br-eth1"
                type: internal
        Port "eno16777736"
            Interface "eno16777736"
    ovs_version: "2.11.0"

 

네트워크 노드에서도 역시 컴퓨트 노드에서 보았던 두 개의 브릿지(br-tun, br-int)가 보입니다. 추가로 우리가 앞서 테넌트 환경 구축 포스트를 통해 생성했던 브릿지 인터페이스 "br-eth1"도 있습니다. 

 

또한 컴퓨트 노드와 마찬가지로 네트워크 노드에서도 br-tun과 br-int 간의 연결을 위한 패치 인터페이스(patch-tun, patch-int)를 확인할 수 있습니다. 또 컴퓨트 노드와의 터널링을 위한 vxlan 인터페이스(vxlan-0a000019)도 역시 확인할 수 있습니다.

 

한 가지 다른 점이라면, br-int 브릿지에 "int-br-eth1" 인터페이스가 보이는데, 타입을 보니 다른 인터페이스와 패치 인터페이스로 연결(피어 관계) 되어 있음을 볼 수 있습니다. 대상은 "phy-br-eth1"인데, "br-eth1" 브릿지에 바인딩 된 것을 볼 수 있습니다. 감이 오시나요? 추후에 인스턴스(VM)의 트래픽이 외부망으로 나가기 위해 이 패치 인터페이스를 활용한다라는 걸 예상해 볼 수 있습니다. 왜냐하면 우리가 "br-eth1"에 물리 NIC(eno1677736) 포트를 바인딩 해 뒀기 때문입니다.

 

여기까지 전체 구조를 아키텍처로 살펴보면 아래 그림과 같습니다.

 

네트워크와 컴퓨트 노드의 네트워크 인터페이스 아키텍처

 

여기까지 오픈스택 초기 네트워크 인터페이스 아키텍처를 살펴보았습니다. 아직은 인스턴스가 없는 상태이기 때문에 별 다른 트래픽이 없으므로 트래픽 분석까지는 진행하지 않았습니다. 다음 포스팅에서는 실제로 네트워크를 구성해보고 VM을 올리면서 실제로 어떻게 인터페이스가 생성되는지 살펴보도록 하겠습니다.

 

TAGS.

Comments