2014년 첫 포스팅입니다.
FabricPath에 대한 포스팅입니다. 이 주제에 대해서 몇 번에 걸쳐서 정리를 진행하게 될지는 모르겠지만..
차근 차근... 정리를 시작해보려고 합니다.
물론 기존의 정리하고 있던 주제들도 함께 추가적으로 정리 및 포스팅 될 예정입니다.
제가 정리된 부분에서 잘못되서 수정해야 할 부분, 업데이트 해야할 부분 등이 있으면 알려주시면 업데이트 하도록 하겠습니다.
FabricPath
• 하나의 Ethernet Fabric구조를 만들어 주는 기술
• Network 구성이 Flat하게 구성된다.
• Fabric은 외부 관점에서는 하나의 Switch처럼 인식된다.
• Layer2의 Mobility & Flexible의 장점과 L3의 Loop Prevention의 장점을 동시에 가져옴
• MAC in MAC : MAC을 또 다른 MAC으로 Encapsulation.
- IP Address는 미 변경되어, 어디서나 바로 사용 가능 (Plug & Play)
• STP를 사용하지 않음 : IS-IS로 대체 (내부적으로 동작하기 때문에 설정할 필요는 없음)
• Fabric 내에서의 통신은 STP가 아닌 Shortest path로 Switching되기 때문에 Optimal하고 Low Latency Switching이 가능하다.
• ECMP 및 Multi-topology Forwarding으로 통해서 Bandwidth를 충분히 활용할 수 있다.
Fabric Path 지원 하드웨어/License
• N7K F1 Linecard : 5.1.1 • N7K F2 Linecard : 6.0.1
• N7K F2E Linecard : 6.1.2 • N5500 : 5.1.3 (no L3 module required)
• License : Enhanced L2
Fabric Path의 이점.
• Conversational learning을 통한 MAC Address의 확장성을 가져옴.
- 필요한 Mac Address만을 학습하여, 동일한 공간에 저장 가능한 Mac-addres를 늘려주는 효과를 가져옴.
• 설정이 매우 간단하다. (Fabric로 사용할 Port의 Mode를 단순히 Fabric mode로만 설정하면 된다.)
• ECMP가 가능하기 때문에 High Bandwidth와 High Resiliency를 가져온다.
• STP에 의존하지 않고 독립적으로 동작. 각각의 Switch들은 Layer 2 Topology로 운영되지만, 실제 동작은 Shortest-pathfirst
기반으로 Layer 2 forwarding을 한다.
• STP에 상관없이 동작되기 때문에 FabricPath를 구성하는 장비간에 보다 더 직접적인 통신 경로로 통신하게 된다.
• Multicast Traffic이 2개의 Multi-destination Tree를 통해 분산된다.
• FabricPath에서 Frame 전송 시에, TTL Filed를 사용하여 Layer 2 loop을 완화시킨다.
Fabric Path 구성 요소
• leaf (Edge) Device
- CE(Classic Ethernet) Device와 연결하면서, Fabric Path Port와도 연결
- Edge Device는 목적지를 Mac-Address와 Switch-id를 Mapping하여 확인
- Locally Mac은 Port로 Mapping되며, Remote Mac은 Switch-id로 Mapping.
• Spine (Core) Device
- FabricPath Edge Device간의 연결을 하는 Device.
- Spine Device는 오직 Switch-id를 통해서 목적지와 통신
- Mac-address Learning을 하지 않음. 오직 Switch-id를 기반으로만 동작
- Spanning-Tree가 동작하지 않음
- Topology 정보는 Layer ISIS Adjacency를 통해서 교환
- 송/수신 Traffic은 FabricPath Header와 함께 이동.
• Edge Switch는 CE Port를 통해서 Local Source Mac-addres뿐 아니라, Switch-id로의 Mapping도 Mac-address Table에 유지한다.
FabricPath Interface
• FabricPath Edge Port
- FabricPath Domain의 Edge에 있는 Port로 일반 CE(Classic Ethernet)에 연결된 Interface
- Edge Port는 Mac Learning을 하며, 일반 Ethernet Frame을 전송을 한다.
- Access 혹은 Trunk로 설정 가능.
• FabricPath Core Port
- Core Port는 Ethernet Frame을 캡슐화하여 FabricPath Header를 붙여서 FabricPath을 통해 전송을 한다
FabricPath 동작
• FabricPath 동작 순서
1. Edge port에서 Frame이 Ingress FabricPath switch로 수신된다.
2. Ingress FabricPath switch는 Destination Mac Address을 찾아가기 위한 SID를 위해 MAC address를 Lookup 하며,
어떤 Interface로 전송을 할지에 대해서, 결정한 후 전송한다.
3. Core FabricPath switch는 FabricPath core port로부터 Frame을 수신하고, FabricPath Header에 있는 SID를 통해서,
Next-Hop을 결정하여 Frame을 전송한다.
4. Egress FabricPath switch는 FabricPath Header를 제거하고 적절한 CE Port로 Frame을 전송한다.
.
FabricPath Encapsulation
• FabricPath에서는 CE Port에서 FE Port로 전송되는 모든 Ethernet Frame들이 16Byte의 FabricPath Header로 붙여서 캡슐화한
후에 전송을 하게 된다.
• FabricPath의 캡슐화는 MAC-in-MAC 캡슐화 포맷을 사용한다.
• 캡슐화 시에는 802.1Q tag를 포함한 기본 Ethernet Frame에 48bit의 Outer Source Address와 48bit의 Outer Destination Address,
32bit의 FabricPath Tag를 추가하게 된다. (총 16Byte = 128bit)
FabricPath Header [Outer Address]
• Endnode ID
- NX-OS 6.2(2)에서는 현재 이 Filed에 대해서는 구현되어 있지 않다.
• U/L (1bit)
- 모든 Unicast의 OSA와 ODA field에 설정
• I/G (1bit)
- Multi-destination Address인 경우에 설정
• OOO/DL (1bit)
- NX-OS 6.2(2)에서는 현재 이 Filed에 대해서는 구현되어 있지 않다.
- 향후 ECMP시에, 패킷별 Load-Sharing이 기능을 제공할 수 있다.
• Switch ID [SID] (12bit)
- FabricPath Domain에 있는 모든 Switch에 할당되는 ID.
- DARP를 이용하여 자동할당 받거나, 수동으로 직접 입력 가능. 단, 유일한 값으로 설정해야 함.
※ 동일한 ID를 갖는 경우에는 DARP에 의해서 한 쪽의 Switch ID 값을 유일한 값으로 변경
- FabricPath MAC-in-MAC Frame의 "Outer MAC Address"이다.
• Sub-Switch ID
- NX-OS 6.1(2)이전 버전에서는 Source 또는 Destination vPC+ PortChannel Interface를 식별하기 위해서 사용.
이 bit를 통해서 최대 244개의 vPC+ PortChannel을 구분할 수 있다.
- NX-OS 6.1(2)부터는 "no port-channel limit" 명령을 사용하여 개수의 제한을 없앨 수 있다. (F2/F2E만 가능 / F1 불가)
- vPC+를 사용하지 않는 경우에는 이 Filed는 0으로 설정된다.
• LID (Local ID / Port ID)
- Source / Destination에 대한 Physical 혹은 Logical Interface
- Outer DA에 있는 LID 값은 Egress Switch가 Frame을 Forwarding할 때, 별도의 MAC-Address Table을 Lookup하지 않게 해준다.
FabricPath Header [ FP Tag ]
• FabricPath packet은 0x8903 이다.
• TTL은 초기 32이며, 매 FabricPath Switch를 지날 때마다(hop) 1씩 감소하며 이 Field를 통해서 Looping을 예방.
- NX-OS 5.2(1) 에서는 모든 Frame에 대해서 32가 초기값
- NX-OS 6.2(2) 부터는 ‘ fabricpath ttl ’ 명령으로 Unicast와 Multicast frame을 구분하여 변경 가능하다.
* Broadcast와 Unknown Frame은 Unicast TTL 값을 사용
* IPv4/v6, non-IP Multicast Frame은 Multicast TTL 값을 사용
• FTAG(Forwarding TAG)
- Topology 나, Distribution Tree의 Unique한 ID.
- Unicast에서는 FabricPath IS-IS Topology를 식별하기 위해 사용하고, Multidestination에서는 Distribution tree를 식별하기 위
해 사용한다.
STP & FabricPath
• FabricPath Network 내부에서는 STP가 없다.
• TCN을 제외한 BPDU는 FabricPath Network 애서 전달되지 않고 FabricPath edge에서 Drop된다.
• FabricPath network는 1대의 Swtich처럼 보이기 위해서 모든 BPDU는 같은 Bridge ID를 가지고 BPDU를 전송한다.
c84c.75fa.60XX : XX는 Domain ID의 Hex 값이며, default 값은 00 이다
• FabricPath Port가 Upe되기 전까지 Switch는 기존 STP에서 사용하는 Bridge ID를 사용한다.