'edge port'에 해당되는 글 2건

  1. 2014.03.06 Nexus - NX-OS 정리 Part 26(FabricPath - 3) (1)
  2. 2014.01.05 Nexus - NX-OS 정리 Part 25(FabricPath - 1)

지난 포스팅에 이어서, 비교적 빠르게 이틀정도만에 새로운 포스팅을 하게되었습니다.

이번 내용은 FabricPath에서의 Packet Flow에 대한 대략적인 사항입니다.

그 동안 포스팅 전 단계로 정리했던 자료들이 있어서, 포스팅을 위해 조금 더 보완하면 그래도 예전보다는 조금이나마

자주 포스팅할 수 있지 않을까? 싶습니다.......만..

다른 것들도 해야할 것들이 있어서.. 어찌될지.. 모르겠네요. ^^;

내용 중에 이상한 점이나, 수정해야할 사항 있으시면 덧글 부탁드립니다.


 

 

 

Broadcast ARP Request

1.  Host AHost B와 같은 Subnet에 존재한 상태에서 통신하고자 할 때, Host AHost B와 통신하기 위해서, Host B IP Address

    ARP Request를 보내게 되고, 이는 Host ASource MACall-ones broadcast destination MAC(FFFF.FFFF.FFFF)로 설정되어

    전송한다.

 

2.  S500FabricPath Edge SwitchFabricPath mode VLAN으로 설정된 e1/13 edge port에서 Frame을 수신한 후에

     source/destination  MAC-AddressTable에서 Lookup한다.

    {VLAN 10, MAC A}에 대한 Source MAC Lookup이 실패하고,  S500Forwarding Engine에서 e1/13에 대한 MAC 정보를

    Local Entry로

    무조건 학습하게 된다

    NX-OS 6.1(2) 혹은 6.2(2) {F2/F2E & F1 모듈) 이전에서는 MAC A는 오직 Frame이 들어오는 Interface,   즉 여기서 e1/13

    Forwarding  Engine ASIC에서만 학습을 하고, 다른 Forwarding Engine 에서는 MAC A에 대해서는 학습을 하지 않는다.

     NX-OS 6.1(2) 혹은 6.2(2) 이후 버전에서는 MAC AFabricPath core port의 모든 Forwarding Engine과 동기화된다.

    Destination MACVLAN 10으로 Flooding 되며, S100FabricPathEncapsulation하여 Multi-destination으로 Flood한다.

 

3. S500Broadcast Frame을 전송하기 위해 Multi-Destination Tree를 선택한다.

  FabricPath Switch에서 broadcast/non-IP multicast, unknown unicast Traffic에 대해 어떤 Tree로 전송을 할지에 대해서 hash 함수에

  의해  결정한다. (HashDefault로 설정은 Source/Destination IP, Layer 4 Port 이다.)

  그러나, F1 Module에서는 항상 broadcast/non-IP multicast, unknown unicast Traffic 대해 Tree 1을 통해서 전송을 한다.

   (VPC+ 예외)

  예제에서 FabricPath Header를 구성하는 Frame은 다음과 같은 구성 요소를 가진다.

     - Outer DA : Broadcast를 전송 시에는 All-ones Broadcast MAC의 동일한 값으로 설정하게 된다.

     - Outer SA : SID-500 / sSID – 0 (vPC+사용안함) / LID – 12 (e1/13 포트. 0부터 13번째 값)

     - FabricPath TAG : EtherType - FabricPath (0x8903) / FTAG – 1 / TTL - 32

 

4. FabricPath-EncapsulationFrameneighbor switch로 전송되고, S10에서는 FrameLookup 한다.

   S10FabricPathHeader 값에 이미 Broadcast로 설정되어 있고 Ftag값도 결정되어 있기 때문에 이를 기준으로 Forwarding을 한다.

   S10에서 Ftag 1(Tree 1)에 대한 경로는 Po 500, 600, 700이 있기 때문에 이 쪽으로 Frame을 전송하면서 TTL 값을 1 낮춘다.

   S10에서는 어떠한 Mac 학습도 하지 않는다.

 

5. S600, S700에서는 각각 S10에서 보내온 FabricPath-EncapsulationFrame을 받게 된다.

   S600에서는 Tree 1 속한 다른 Interface에가 존재하지 않기 때문에 더 이상 FabricPath에 의한 Flood를 하지 않는다. 만약 VLAN 10

  대한 FabricPath Edge Port가 있는 경우에는 FabricPath HeaderDe-capsulation한 후에 Edge PortOriginal Broadcast Ethernet

  FrameFlood 한다.  S200에서는 어떠한 MAC도 학습하지 않는다.

   S700에서는 Tree 1에 속한 Interfacepo 20, 30, 40이 있기 때문에 해당 InterfaceFrameTTL 1 낮춘 이후에 다시 전송을 한다.

   S700도 마찬가지로 이 과정에서 어떠한 MAC도 학습하지 않는다.

   S20, S30, S40Tree 1에 대한 Interface가 존재하지 않기 때문에 S600과 마찬가지로 FabricPath에 의한 Flood를 하지 않으며,

   VLAN 10   대Interface도 없기 때문에 해당 FrameDiscard 된다. 마찬가지로 MAC 학습은 하지 않는다.

 

6. S700Fabricpath HeaderDe-capsulation한 후에 Edge PortOriginal Broadcast Ethernet FrameFlood한다.

   이 예에서는 Host A에 대한 Broadcast ARP에 대해서 Host B가 응답을 하게 되고, S700S500에 대한 MAC을 학습하게 된다

 

 

 

 

 

7. Host A로 부터 Broadcast ARP전송받은 Host BSource MAC은 자신의 MAC, Destination MACHost AMAC으로 하여

   Standard Ethernet frame으로 unicast ARP Reply를 보낸다. 

 

8. S700Fabricpath-mode vlan 10으로 설정된  FabricPath Edge port에서 Frame을 수신 받고, Source/Destination Mac Address

   Table Lookup한다. {VLAN 10, MAC B}에 대한 Source MAC Lookup이 실패하고 ,  S700Forwarding Engine에서 e2/29

    대한 MAC 정보를  Local Entry 정보로 무조건 학습하게 된다

 {VLAN 10, MAC A}에 대한 Destination MAC Lookup도 실패하게 되며, 이는 VLAN 10에 대해 Forwarding Engine

   unknown unicast로  S700Vlan 10 Edge PortMulti-Destination Tree로 각각 Flood한다.

 

9. S700unknown unicast frame을 전송하기 위해서 Tree 1을 선택했다고 가정을 하여, 해당 FrameTree 1Interface

   Po 10, 20, 30, 40 으로 전송을 한다.

  예제에서 FabricPath Header를 구성하는 Frame은 다음과 같은 구성 요소를 가진다.

     - Outer DA :  unknown unicast frame을 위해 reserved multicast MAC Address(010F.FFC1.01C0, MC1이라고도 함)로 설정

     - Outer SA : SID-700 / sSID – 0 (vPC+사용안함) / LID – 64

     - FabricPath TAG : EtherType - FabricPath (0x8903) / FTAG – 1 / TTL - 32

 

10.FabricPath-EncapsulationFrame은 인접 FabricPath SwitchS10, S20, S30, S40으로 전송 된다.

   S20, S30, S40Tree 1으로 구성된 추가적인 Interface도 없으며, Vlan 10에 대한 Interface도 없기 때문에 FrameDiscard되며

  Mac Address도 학습하지 않는다.

   S10에서는 Tree 1에 대한 2개의 Interface (Po500, Po600)이 있기 때문에 TTL1감소 시키고 해당 Interface로 전송한다.

 

11. S500, S600FabricPath-EncapsulationFrame에 대해서 Lookup을 수행한다. S600에서는 더 이상 Tree 1에 속한 Interface

     없기 때문에  Multi-Destination에 대한 전송을 종료된다. 만약 Vlan 10에 대한 Edge Port가 존재할 경우에는 Fabricpath Header

    De-capsulation한 후에  Edge PortOriginal Broadcast Ethernet FrameFlood한다.  S600은 이 과정에서 어떠한 MAC도 학습하지

    않는다.

 

12. S500에도 Tree 1에 속한 Interface없기 때문에 Multi-Destination에 대한 전송을 종료된다.  S500에는 Vlan 10에 대한 Edge Port

    있기 때문에 Fabricpath HeaderDe-capsulation한 후에 해당 Edge PortOriginal Broadcast Ethernet FrameFlood한다.

    Egress Forwarding Engine에서는 DMAC에 대해서 Local MAC Address로 이미 학습되어 있는지 MAC Lookup을 하고,

    만약 존재한다면 Outer SA의 값으로 SMAC 정보를 Remote MAC Entry로 학습하게 된다.  Host AForwarding Engine ASIC에서는

     inner DMAC(MAC A)에 대한 정보가 Local Entry로 이미 학습되어 있기 문에 Inner SMAC(MAC B) 대한 정보는 Outer SA의 정보

    (SID/sSID/LID) 700.0.64 학습하게 된다..

 

 

 

 

 

13. Host B로부터 unicast ARP Reply를 받게 되면, Host A Host B로 바로 Unicast를 전송할 수 있다.  이러한 Unicast 전송은 기존과

    마찬가지로 Standard Ethernet frame으로 Host A source MAC (SMAC)으로, Host BDestination MAC(DMAC)으로 설정한다.

 

14. S500 FabricPath-mode Vlan 10Edge port에서 frame을 수신 받고, Frame에 대해서 Source/Destination MAC Address

    대해서 MAC-Address TableLookup한다.

      {VLAN 10, MAC A}에 대한 Source MAC lookup 시에는 이미 기존 Table에 학습되어 있기 때문에 Lookup 되면서, Mac A에 대한

     Aging Timer Update하게 된다.

      {VLAN 10, MAC B}에 대한 Destination MAC Lookup 또한 기존의 SID,sSID, LID로 구성된 Remote 정보(700.0.64)Lookup을 한다.

 

15. Forwarding Engine에서는 목적지 Host B로 전송하기 위해 Lookup정보를 기반으로 Switch 700에 대한 Routing Lookup을 한다.  

      S500에서 S700으로 가기 위한 Next-hop Interface로는 S10, S20, S30, S40가 있으며 이들은 모두 동일한 Cost로 구성되어 있기

     문에  Hash  통해서 4개의 경로 중에 선택해서 전송하게 된다. 

      가령, S700을 가기 위한 경로로 Interface po30Hash에 대한 결과로 선택되었다고 가정하게 되면, 해당 Frame은 아래와 같은

     FabricPath Header 값을 가지고 Encapsulation한 후에  po30으로 전송한다.

     - Outer DA :  Lookup에서 확인된, SID,sSID, LID 값인 700.0.64로 설정된다.  

     - Outer SA :  500.0.12 설정된다.

     - FabricPath TAG : EtherType - FabricPath (0x8903) / FTAG – 1 / TTL - 32

 

16. S30에서는 수신받은 Frame에 대해서 outer SA에서의 Destination SID값을 가지고, Routing Lookup을 하고 S700으로 가는 경로를

    찾는다 현재 S700으로 가는 경로는 po700  있기 떄문에 po700으로 전송된다.

 

17. S700 FabricPathEncapsulationFrame을 수신 받고, Outer DADestination SIDRouting Lookup을 하면 S700

     FabricPath switch 외부라는 것을 알게된다. 이후의 동작은 Software Version에 따라서 다른데, FabricPath HeaderLID 값을

    사용하거나 Mac-Address TableLookup하여 Physical Edge Interface로 전송되게 된다.  ( 두 가지 경우의 결과는 동일하다)

 

18. Host B가 연결된 Forwarding Engine ASIC에서는 FabricPathinner DMAC(MAC B)에 대해서 이미 Local Entry에 가지고 있으며,

      inner SMAC(MAC A)에 대해서도 (500.0.12)라는 값으로 학습된 상태이다.

     여기서 핵심은 Unicast Data로 전송 시에는 다른 어떤 FabricPath switch에서 Source/Destination MAC을 학습하지 않는다는 것이다.

Posted by 네떡지기

2014년 첫 포스팅입니다.

FabricPath에 대한 포스팅입니다.  이 주제에 대해서 몇 번에 걸쳐서 정리를 진행하게 될지는 모르겠지만..

차근 차근... 정리를 시작해보려고 합니다.

물론 기존의 정리하고 있던 주제들도 함께 추가적으로 정리 및 포스팅 될 예정입니다.

 

제가 정리된 부분에서 잘못되서 수정해야 할 부분, 업데이트 해야할 부분 등이 있으면 알려주시면 업데이트 하도록 하겠습니다.


 

FabricPath

하나의 Ethernet Fabric구조를 만들어 주는 기술

Network 구성이 Flat하게 구성된다.

• Fabric 외부 관점에서는 하나의 Switch처럼 인식된다.

• Layer2Mobility & Flexible의 장점과 L3Loop Prevention의 장점을 동시에 가져옴

MAC in MAC : MAC을 또 다른 MAC으로 Encapsulation.

    - IP Address는 미 변경되어, 어디서나 바로 사용 가능 (Plug & Play)

• STP를 사용하지 않음 : IS-IS로 대체 (내부적으로 동작하기 때문에 설정할 필요는 없음)

• Fabric 내에서의 통신은 STP가 아닌 Shortest pathSwitching되기 때문에 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로 사용할 PortMode를 단순히 Fabric mode로만 설정하면 된다.)

• ECMP가 가능하기 때문에 High BandwidthHigh Resiliency를 가져온다.

• STP에 의존하지 않고 독립적으로 동작. 각각의 Switch들은 Layer 2 Topology로 운영되지만, 실제 동작은 Shortest-pathfirst

 기반으로 Layer 2 forwarding을 한다.

• STP에 상관없이 동작되기 때문에 FabricPath를 구성하는 장비간에 보다 더 직접적인 통신 경로로 통신하게 된다.

• Multicast Traffic2개의 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-AddressSwitch-idMapping하여 확인

    - Locally MacPortMapping되며, Remote MacSwitch-idMapping.

 

Spine (Core) Device

    - FabricPath Edge Device간의 연결을 하는 Device.

    - Spine Device는 오직 Switch-id를 통해서 목적지와 통신

    - Mac-address Learning을 하지 않음. 오직 Switch-id를 기반으로만 동작

    - Spanning-Tree가 동작하지 않음

    - Topology 정보는 Layer ISIS Adjacency를 통해서 교환

    - /수신 TrafficFabricPath Header와 함께 이동.

 

• Edge SwitchCE Port를 통해서 Local Source Mac-addres뿐 아니라, Switch-id로의 MappingMac-address Table에 유지한다.

 

 

FabricPath Interface

FabricPath Edge Port

    - FabricPath DomainEdge에 있는 Port로 일반 CE(Classic Ethernet)에 연결된 Interface

    - Edge PortMac Learning을 하며, 일반 Ethernet Frame을 전송을 한다.

    - Access 혹은 Trunk로 설정 가능.

FabricPath Core Port

    - Core PortEthernet Frame을 캡슐화하여 FabricPath Header  붙여서  FabricPath을 통해 전송을 한다

 

 

 

 

FabricPath 동작

• FabricPath 동작 순서

    1. Edge port에서 FrameIngress FabricPath switch로 수신된다.

    2. Ingress FabricPath switchDestination Mac Address을 찾아가기 위한 SID 위해 MAC addressLookup 하며,

       어떤 Interface로 전송을 할지에 대해서, 결정한 후 전송한다.

    3. Core FabricPath switchFabricPath core port로부터 Frame 수신하고, FabricPath Header에 있는 SID를 통해서,

       Next-Hop을 결정하여 Frame을 전송한다.

    4. Egress FabricPath switchFabricPath Header를 제거하고 적절한 CE PortFrame을 전송한다.

.

 

 

 

FabricPath Encapsulation

FabricPath에서는 CE Port에서 FE Port로 전송되는 모든 Ethernet Frame들이 16ByteFabricPath Header로 붙여서 캡슐화한

  후에 전송을 하게 된다.

FabricPath의 캡슐화는 MAC-in-MAC 캡슐화 포맷을 사용한다.

캡슐화 시에는 802.1Q tag를 포함한 기본 Ethernet Frame48bitOuter Source Address48bitOuter Destination Address,

  32bitFabricPath Tag를 추가하게 된다.  (16Byte = 128bit)

 

 

 

 

FabricPath Header [Outer Address]

Endnode ID

    - NX-OS 6.2(2)에서는 현재 이 Filed에 대해서는 구현되어 있지 않다.

 

• U/L (1bit)

    - 모든 UnicastOSAODA 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+를 사용하지 않는 경우에는 이 Filed0으로 설정된다.

 

LID (Local ID / Port ID)

  - Source / Destination에 대한 Physical 혹은 Logical Interface

  - Outer DA에 있는 LID 값은 Egress SwitchFrame Forwarding할 때, 별도의 MAC-Address TableLookup하지 않게 해준다.

 

 

 

 

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을 구분하여 변경 가능하다.

         * BroadcastUnknown FrameUnicast TTL 값을 사용

         * IPv4/v6, non-IP Multicast FrameMulticast TTL 값을 사용

 

• FTAG(Forwarding TAG)

    - Topology , Distribution TreeUniqueID.

    - Unicast에서는 FabricPath IS-IS Topology를 식별하기 위해 사용하고, Multidestination에서는 Distribution tree를 식별하기 위

      해 사용한다.

 

 

 

 

 

STP & FabricPath

• FabricPath Network 내부에서는 STP가 없다.

• TCN을 제외한 BPDUFabricPath Network 애서 전달되지 않고 FabricPath edge에서 Drop된다.

• FabricPath network 1대의 Swtich처럼 보이기 위해서 모든 BPDU는 같은 Bridge ID를 가지고 BPDU를 전송한다.

  c84c.75fa.60XX : XXDomain IDHex 값이며, default 값은 00 이다

• FabricPath Port Upe되기 전까지 Switch 기존 STP에서 사용하는 Bridge ID를 사용한다.

 

 

 

Posted by 네떡지기

티스토리 툴바