VXLAN 2번째 정리입니다. 뭔가 아직 정리가 되지 않은 듯하여 포스팅을 미루려 하였으나.. 미루기만하면... 계속 미루기만 할 것 같아서... 우선 先 포스팅... 後 업데이트로 갑니다.
VXLAN이 필요한 배경
1. Limitations imposed by Spanning Tree & VLAN Ranges
- 현재의 Layer 2 Network는 중복된 경로에 대해서 Loop를 예방하기 위해 STP를 사용한다.
- STP를 사용하게 되면, Blocking Point가 생기면서 모든 경로에 대해서 다 사용할 수가 없게 된다.
따라서, STP 모델은 Multipathing에서의 Resiliency로써는 적합하지 않다.
- 최근에는 TRILL이나 SPB로써 STP의 이러한 제약사항을 해소하도록 제안되고 있다.
이러한 기술은 동일한 Layer 3 Network에서의 Rack간의 서버들의 통신에서는 STP의 제약사항을 해결하지만,
Inter-VM 통신을 위한 Layer 2 Model로는 적합하지 않다.
- VLAN은 Broadcast Domain을 나누는 역할을 하는 데, 12bit로 VLAN을 구분하게 되며 이는 총 4094개의 VLAN을 생성하여
사용할 수 있다. 하지만, 가상화가 채택되면서 보다 많은 VLAN 사용이 필요로 하게 된다.
2. Multitenant Environments
- Cloud Computing은 Multi-tenant 환경을 위해 탄력적인 Resource의 Provisioning을 포함한다.
- 대표적인 Cloud Computing의 예는 Public Cloud 인데, Cloud Service 사업자는 이러한 탄력적인 서비스를 제공하여
동일한 물리적인 인프라에서 다수의 고객/Tenants을 수용하게 된다.
- Tenant의 독립적인 Network Traffic 분리는 Layer 2 혹은 Layer 3 Network를 통해 가능하다.
- Layer 2 Network VLAN을 통해서 Traffic을 분리할 수 있는 , 이를 통해 Tenant간에 구분이 가능하다.
- Cloud Provider은 다수의 Tenant를 구분해야 하기 때문에, 기존 VLAN에서의 최대 값인 4094개는 서비스를 제공하는 데,
부족할 수 있다. 더욱이 하나의 Tenant(Customer)에서 다수의 VLAN이 필요한 경우도 발생하게 된다.
3. Inadequate Table Sizes at ToR Switch
- 오늘날 가상화 환경에서는 기존의 Server와 연결된 Link에 대해서 하나의 Mac-Address 학습했던 것과는 달리 각 개별 VM 단위로
Mac-Address를 학습하게 된다.
- 이는 VM과 다른 물리적인 서버로 통신하기 위해 필요로 하다. 일반적인 ToR Switch는 24개 혹은 48개의 서버에 연결될 수 있고,
이러한 랙들로 DataCenter가 구성되게 된다.
- 그래서 각각의 ToR Switch는 VM들이 다수의 서버들과 통신하기 위해 Mac-Address Table을 유지해야 한다.
이러한 환경은 기존의 비가상화 환경보다 더 많은 수의 Table용량이 필요로 하게 된다.
VXLAN
- VXLAN은 Layer 2와 Multi-tenant 환경에 VM동작하는 Layer 3 DataCenter Network 인프라에서 위의 요구사항들을 해결한다. - - VXLAN은 기존 Network 인프라에서 Layer 2 Network를 확장하도록 제공해준다.
- 즉, VXLAN은 Layer 3를 통한 Layer 2의 Overlay 방식이다. 각 Overlay를 VXLAN segment라고 하며,
- 동일한 VXLAN segment내의 Device간에만 통신이 가능하게 된다.
- 각 VXLAN segment는 24bit의 Segment ID라는 식별자를 통해서 식별되며, 이를 VXLAN Network Identifier(VNI)라고 한다.
- 이 VNI는 동일한 Domain 내에서 최대 1600만개의 VXLAN Segment를 가질 수 있다.
- VNI는 개별 VM이 만든 내부 MAC frame의 범위를 식별한다.
- 따라서, VNI로 구분된 Segment간에는 서로 MAC Address가 중복이 되어도 문제가 없다.
- VNI 정보는 개별 VM이 만든 내부 MAC frame을 캡슐화한 Outer header에 있다.
- 이러한 캡슐화 때문에, VXLAN을 Tunnel 방식이라고 할 수 있다.
- 이 Tunnel은 Stateless이며, 각 Frame는 일련의 규칙에 의해서 캡슐화된다.
- Tunnel의 End-Point(종단/VXLAn Tunnel End Point-VTEP)은 VM을 호스팅하는 Server의 Hypervisor내에서 위치한다.
(Hypervisor이외에 물리적인 별도의 스위치에서 VTEP역할을 할 수도 있다.)
- 따라서 VNI와 VXLAN은 tunnel/outer header 캡슐화 정보이기 때문에 VTEP에서만 알고 있으며, VM에서는 이 정보를
알 수 없다.
VXLAN Deployment Scenarios
VXLAN은 일반적으로 여러 랙의 흩어져있는 가상화 Host들이 있는 Data Center에 Deploy되어 있다.
각각의 랙은 서로 다른 Layer 3 Network에 있거나 혹은 하나의 Layer 2 Network에 있을 수 있다.
VXLAN Segments/overlay network은 이러한 Layer 3 혹은 Layer 2 Network의 상단에 놓여있게 된다.
다음의 VXLAN의 Deployment 시나리오를 위한 가상의 구성이다.
2대의 가상화 서버가 Layer 3 인프라를 통해서 연결되어 있다. 이 서버는 동일 랙 일 수도 있으며, 혹은 서로 다른 랙이거나
다른 데이터센터에 각각 구축되어 있을 수 있으나 동일한 관리 Domain내에 있다.
가상화 서버 내의 4개의 VM은 4개의 VXLAN Overlay Network로 구성되며 22, 34, 74, 98의 VNI 값을 가지고 있다.
하나의 Deployment 시나리오는 Tunnel 종단 지점의 서버에서 VXLAN을 이해할 수 있는, 즉 VTEP 기능을 수행 할 수 있는 경우이다.
또 다른 시나리오는 VXLAN Overlay network에 있는 Node가 기존 VLAN기반의 Legacy Network와 통신하고자 하는 경우이다.
이러한 Node는 Physical Node이거나 혹은 VM일 수 있다. 이 둘 간의 통신을 하기 위해서 Network에 VXLAN과 Non-VXLAN 사이의 Traffic을 전송하는 VXLAN Gateway가 필요하다.
다음은 VXLAN과 Non-VXLAN간의 통신을 하는 경우에 대한 것이다.
VXLAN 연결 Interface에 들어온 Frame을 Gateway에서는 VXLAN header을 제거하고, Inner Ethernet Frame의 Destination Mac Address로 Physical Port로 전송을 하게 된다.
명시적으로 Non-VXLAN interface로 전달하기 위한 설정이 되어있지 않으면, Inner VLAN ID와 함께 디캡슐화된 Frame은 폐기된다.
반대로, Non-VXLAN Interface로부터 들어온 Frame은 내부의 VLAN ID를 기반으로 특정 VXLAN Overlay network로 Mapping된다.
이 경우에 명시적으로 캡슐화된 VXLAN Frame으로 전달하는 설정을 하지 않으며, VLAN ID는 VXLAN으로 캡술화 되기 전에 제거된다.
VXLAN Tunnel 종단 기능을 하는 Gateway들은 ToR/Access Switch 혹은 Core 심지어 WAN edge Device가 될 수 있다.
WAN Edge Device가 이러한 Gateway 역할을 하는 경우에 Hybrid Cloud 환경에서 VXLAN Tunnel 종단인 Provider Edge Route를 포함할 수 있다. 이러한 모든 경우에 Gateway 기눙은 Software나 Hardware 모두 구현될 수 있다.
Inner VLAN Tag 처리
VTEP와 VXLAN Gateway는 Inner VLAN Tag 처리를 위하여 다음과 같이 해야 한다.
- 설정이 되어 있지 않으면, 디캡슐화된 VXLAN Frame은 Inner VLAN Tag과 함께 Dircard 된다.
- 설정이 되어 있지 않으면, 캡슐화 시에 Tunnel Packet에 VTEP는 Inner VLAN tag를 포함하지 않는다.
- VLAN-tagged Packet이 VXLAN Tunnel을 해야 하는 경우에 별도의 설정이 되어 있지 않으면,
VTEP는 VLAN Tag를 제거하고 캡슐화한다.