Skip to Content.
Sympa Menu

rare-users - Re: [RARE-users] [rare-dev] [freertr] full table in tofnio2?

Subject: RARE user and assistance email list

List archive

Re: [RARE-users] [rare-dev] [freertr] full table in tofnio2?


Chronological Thread 
  • From: mc36 <>
  • To: , ,
  • Cc:
  • Subject: Re: [RARE-users] [rare-dev] [freertr] full table in tofnio2?
  • Date: Thu, 5 Jan 2023 09:58:59 +0100

hi,

On 1/5/23 08:30, wrote:

Hi csaba

Very useful, thanks. The only drawback might be that it's a bit more
tricky to troubleshoot routing issues when the FIB no longer matches
the RIB. Is there a way to display what optimiziations have been done
explicitly?

agree, it could be tricky to tshoot but well, one can always turn it on/off...
or i can introduce a prefixlist easily to limit the prefixes under
optimization...
(it's there already for the routing protocol's autosummary featue...)
((and i recently added a fib filter with prefix-list, route-map or
route-policy))

but unfortunately not much sho for now, except manually comparing the below
mentioned
sho p4 p4 done-routes knob to the sho ipv4 route... :)

Also, while you're at it, did you consider dropping prefixes from the
FIB that have the same next-hop as the default (if one exists) and no
covering prefix?

yesss, i do:

sid#show ipv4 route v1
typ prefix metric iface hop time
L EX 0.0.0.0/0 70/228 bundle1 10.1.123.254 00:00:38
B 10.1.1.48/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.48/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.72/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.72/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.92/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.92/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.120/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.120/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.124/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.124/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.128/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.128/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.144/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.144/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.148/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.148/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.152/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.152/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.156/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.156/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.160/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.160/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.168/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.168/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.172/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.172/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.180/30 200/0 bundle1 10.1.123.254 00:00:37
B 10.1.1.180/30 200/0 bundle1 10.1.123.254 00:00:37
sid#show ipv4 compress v1
typ prefix metric iface hop time
L EX 0.0.0.0/0 70/228 bundle1 10.1.123.254 00:00:42
C 10.1.123.0/24 0/0 bundle1 null 00:00:51
LOC 10.1.123.91/32 0/1 bundle1 null 00:00:51
C 10.10.10.227/32 0/0 loopback0 null 00:00:54
C 192.0.2.0/24 0/0 null0 null 00:00:51
LOC 192.0.2.0/32 0/1 null0 null 00:00:51

sid#

basically it implemented the same as junos' described recently:
https://community.juniper.net/blogs/nicolas-fevrier/2022/09/19/ptx-fib-compression
at least in rare/freerouter one can turn it on and off and it's off by
default... :)

br,
cs




--
Alex

On Thu, 5 Jan 2023 06:03:19 +0100, mc36 <> said:

sorry for the spam again but seemingly we're having the stuff in place:
this night the autosummary (global) knob arrived to all the routing
protocols...
and starting from now, we can do transparent fib compression without altering
the rib:

here is the rib of the v1 vrf:

r1#show ipv4 route v1
typ prefix metric iface hop time
C 1.1.1.0/24 0/0 sdn1 null 00:00:28
LOC 1.1.1.1/32 0/1 sdn1 null 00:00:28
C 1.1.2.0/24 0/0 sdn2 null 00:00:28
LOC 1.1.2.1/32 0/1 sdn2 null 00:00:28
C 1.1.3.0/24 0/0 sdn3 null 00:00:28
LOC 1.1.3.1/32 0/1 sdn3 null 00:00:28
C 1.1.4.0/24 0/0 sdn4 null 00:00:28
LOC 1.1.4.1/32 0/1 sdn4 null 00:00:28
C 2.2.2.101/32 0/0 loopback0 null 00:00:28
S 2.2.2.103/32 1/0 sdn1 1.1.1.2 00:00:28
S 2.2.2.104/32 1/0 sdn2 1.1.2.2 00:00:28
S 2.2.2.105/32 1/0 sdn3 1.1.3.2 00:00:28
S 2.2.2.106/32 1/0 sdn4 1.1.4.2 00:00:28
S 2.2.2.107/32 1/0 sdn4 1.1.4.2 00:00:28

here is the programmed fib, the 2.2.2.106/32 & 2.2.2.107/32 got
autoaggregated to 2.2.2.106/31

r1#show p4lang p4 done-route4 1
typ prefix metric iface hop time
C 1.1.1.0/24 0/0 sdn1 null 00:00:41
LOC 1.1.1.1/32 0/1 sdn1 null 00:00:41
C 1.1.2.0/24 0/0 sdn2 null 00:00:41
LOC 1.1.2.1/32 0/1 sdn2 null 00:00:41
C 1.1.3.0/24 0/0 sdn3 null 00:00:41
LOC 1.1.3.1/32 0/1 sdn3 null 00:00:41
C 1.1.4.0/24 0/0 sdn4 null 00:00:41
LOC 1.1.4.1/32 0/1 sdn4 null 00:00:41
C 2.2.2.101/32 0/0 loopback0 null 00:00:41
S 2.2.2.103/32 1/0 sdn1 1.1.1.2 00:00:41
S 2.2.2.104/32 1/0 sdn2 1.1.2.2 00:00:41
S 2.2.2.105/32 1/0 sdn3 1.1.3.2 00:00:41
S 2.2.2.106/31 1/0 sdn4 1.1.4.2 00:00:41

here you can spot that the dataplane does not report nor byte not packet
counters to the 2.2.2.106/32 and 2.2.2.107/32
simply because these two prefixes get compressed to 2.2.2.106/31, and the
dataplane reports to that but that prefix is
not in the rib, only in the fib:

r1#show ipv4 counter v1
transmit receive
prefix pack byte pack byte time
1.1.1.0/24 10+0 640+0 0+0 0+0 00:00:53
1.1.1.1/32 0+8 0+624 0+0 0+0 00:00:53
1.1.2.0/24 10+0 640+0 0+0 0+0 00:00:53
1.1.2.1/32 0+9 0+702 0+0 0+0 00:00:53
1.1.3.0/24 10+0 640+0 0+0 0+0 00:00:53
1.1.3.1/32 0+9 0+702 0+0 0+0 00:00:53
1.1.4.0/24 10+0 640+0 0+0 0+0 00:00:53
1.1.4.1/32 0+9 0+702 0+0 0+0 00:00:53
2.2.2.101/32 40+40 2560+3120 0+0 0+0 00:00:53
2.2.2.103/32 10+30 640+2340 0+0 0+0 00:00:53
2.2.2.104/32 10+30 640+2340 0+0 0+0 00:00:53
2.2.2.105/32 10+1141 640+1252215 0+0 0+0 00:00:53
2.2.2.106/32 10 640 0 0 00:00:53
2.2.2.107/32 0 0 0 0 00:00:53

and finally the config knobs of the p4lang server:

r1#show running-config server p4lang p4
server p4lang p4
export-vrf v1
export-compress4 v1
export-compress6 v1
export-port sdn1 1 10 0 0 0
export-port sdn2 2 10 0 0 0
export-port sdn3 3 10 0 0 0
export-port sdn4 4 10 0 0 0
interconnect ethernet2
vrf v9
exit
!

r1#

br,
cs


On 1/5/23 05:18, mc36 wrote:
sorry for the spam, while added the test cases i found a bug that prevented
proper compression,
so the final numbers are 900k-->261k for v4 and 160k-->52k for v6, see
attached...
with this boost, we have plenty of headroom for both v4 and v6 in an nren
fib...
(we're a tier3 isp mostly default routing to the geant, the only exception is
bix (with
120k prefixes, mostly from he.net) and some private peerings to local bigger
isps....
br,
cs

On 1/4/23 18:42, mc36 wrote:
not again! i forgot the commit url:
https://github.com/rare-freertr/freeRtr/commit/d76a255b26b2ad3ade8de3a1124e21a1c32c2bcf
the whole algo fits the screen... :)

On 1/4/23 18:04, mc36 wrote:
hi,
i've just implemented fib compression based on the following two ideas:
-two consecutive prefixes with the same nexthop...
-subnets of a supernet with the same nexthop...
it reduced the niif v6 fib from 160968 to 72298 (44%) and the v4 fib from
901199 to482847 (53%)
for the
https://bitbucket.software.geant.org/projects/RARE/repos/rare/browse/profiles/9.10.0/tofino2/profile-rawip.p4
profile we have a plenty of headroom for v6 and some headroom for v4...
for now only show commands are there but nothing holds back from adding
auto-summary knob
to the routing protocols and/or export-compress knob to the p4lang server...
or both...:)
br,
cs












-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#922): https://groups.io/g/freertr/message/922
Mute This Topic: https://groups.io/mt/96068232/6006518
Group Owner:
Unsubscribe: https://groups.io/g/freertr/unsub []
-=-=-=-=-=-=-=-=-=-=-=-





Archive powered by MHonArc 2.6.19.

Top of Page