06-19-2014 06:19 PM
Hi everybody
Please consider the following example:
R1-------R2 s1------R3
s2------
R1 ( lo:1.1.1.1) has IBGP with R3(3.3.3.3)
R2 is our core router. LDP is on all interfaces on all routers. Assume this BGP free core scenario . R3 is advertising 30.30.30.0 via BGP to R1
R3 has no knowledge of 30.30.30.0/24
R2 has following mpls forwarding table:
Local outgoing prefix int
16 POP 3.3.3.3/32 s1
3.3.3.3 /32 s2
Let suppose R1 has a packet to send to 30.30.30.1
R1 sends the packet with label 16, R2 receives it checks the LFIB and forwards it to R3
In CEF load balancing, an operation is performed on the src ip and dest ip which yeilds a hex a value. This hax value then determines which interface a router will use to forward packet.
Above in our example, how does R2 determine which links to forward the packet out to R3 ?
1)Will R2 use source ip and dest ip to determine that though R2 has no knowledgeof dest ip 30.30.30.1 ?
2) How about if labelled packet is not IP packet we see in our example, rather it is ATOM, carrying Ethernet frame as a payload ?
How does R2 choose link in such case ?
Thanks
Solved! Go to Solution.
06-20-2014 06:09 AM
Hi,
1)Will R2 use source ip and dest ip to determine that though R2 has no knowledgeof dest ip 30.30.30.1 ?
<Nagendra> Yes. If I remember it right, the hardware ASIC are capable of looking upto 5 label size stack and use hashing based on label/IP src/dst to identify the egress interface (from ECMP path).
2) How about if labelled packet is not IP packet we see in our example, rather it is ATOM, carrying Ethernet frame as a payload ?
How does R2 choose link in such case ?
<Nagendra> If the payload is non IP, it relies only on the label stack. Infact that is why FAT label was introduced.
There is also a special purpose label as "Entropy Label" that is used to hash the input and include it as label in the stack so any transit nodes doesnt need to perform deep stack lookup for load balancing hashing. This is currently not supported in CIsco devices and not sure about the support plan.
-Nagendra
06-21-2014 10:12 AM
Hi Sarah,
Per my understanding, the hash bucket is not a fixed size table but supports a maximum of 16 (and so 16 ECMP paths). It depends per prefix entry in CEF table. In your case, the egress interfaces are 3 and the hash bucket will be 15 for the entry. It is not 16 with 1 bucket unassigned, but the prefix ith 3 ECMP apth will only have 15 buckets assigned.
You can try creating a topology with 3 ECMP paths between R1 and R2 and 4 ECMP paths between R2 and R3.
Now use "show ip cef <prefix> internal" and you will see 15 hash buckets assigned from R2 to R1 while 16 buckets assigned from R2 for R3.
Hope this clarifies.
BTW, your queries always shows that you try to learn a technology in a very detailed manner. Keep it up..Really appreciate it :)
Thanks,
Nagendra
06-20-2014 06:09 AM
Hi,
1)Will R2 use source ip and dest ip to determine that though R2 has no knowledgeof dest ip 30.30.30.1 ?
<Nagendra> Yes. If I remember it right, the hardware ASIC are capable of looking upto 5 label size stack and use hashing based on label/IP src/dst to identify the egress interface (from ECMP path).
2) How about if labelled packet is not IP packet we see in our example, rather it is ATOM, carrying Ethernet frame as a payload ?
How does R2 choose link in such case ?
<Nagendra> If the payload is non IP, it relies only on the label stack. Infact that is why FAT label was introduced.
There is also a special purpose label as "Entropy Label" that is used to hash the input and include it as label in the stack so any transit nodes doesnt need to perform deep stack lookup for load balancing hashing. This is currently not supported in CIsco devices and not sure about the support plan.
-Nagendra
06-20-2014 10:30 PM
Hi Nagendra
Another question just came to my mind
Here is quote from my book ( MPLS FUNDAMENTALS) about CEF bucket values:
Sixteen hash buckets exist. These hash buckets distribute the load of traffic among all possible outgoing paths in the best possible way. For example, in the case of two outgoing paths, eight hash buckets are assigned to each outgoing path. In the case of three outgoing paths, five hash buckets are assigned to each outgoing path, and one hash bucket is unassigned. In short, if 16 is not divisible by the number of paths, the remainder hash buckets are not used and are disabled
Lets suppose our router ( R1) has three equal cost links, after R1 perform the hashing algorithm on src ip and dest ip, R1 finds the hashing bucket 16 be used to forward the packet out . But Bucket 16 is not mapped to any outgoing interface as there is only three links; bucket 16 value is not being used.
What action will R1 take ?
Thanks
06-21-2014 10:12 AM
Hi Sarah,
Per my understanding, the hash bucket is not a fixed size table but supports a maximum of 16 (and so 16 ECMP paths). It depends per prefix entry in CEF table. In your case, the egress interfaces are 3 and the hash bucket will be 15 for the entry. It is not 16 with 1 bucket unassigned, but the prefix ith 3 ECMP apth will only have 15 buckets assigned.
You can try creating a topology with 3 ECMP paths between R1 and R2 and 4 ECMP paths between R2 and R3.
Now use "show ip cef <prefix> internal" and you will see 15 hash buckets assigned from R2 to R1 while 16 buckets assigned from R2 for R3.
Hope this clarifies.
BTW, your queries always shows that you try to learn a technology in a very detailed manner. Keep it up..Really appreciate it :)
Thanks,
Nagendra
06-21-2014 04:20 PM
Thanks Nagendra for your kind words and for helping me learn the ropes in MPLS.
Have a great weekend!!
06-20-2014 07:09 AM
Thanks Nagendra
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide