Hi Iwase I have started by updating the Nexthop structure and its serialization and decoding in zebra/zapi.go file.
Will keep you posted. aman -----Original Message----- From: Iwase Yusuke [mailto:iwase.yusu...@gmail.com] Sent: Monday, March 12, 2018 10:12 PM To: SHAIKH, AMAN (AMAN) <asha...@research.att.com> Cc: gobgp-devel@lists.sourceforge.net Subject: Re: [GoBGP-devel] MPLS label issue with VPNv4 routes Hi Aman, > Some update on this front. I had discussion about this with FRR/Zebra. See > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FRRouting_frr_issues_1839&d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4_JM0AhcKK4Y&m=L-ZNkWOyCdQLM8o1BBrdogzqE44x9z8ZbJt2GWhLdM4&s=7_-zJFmwWinZODdWKNGdxs1zdtfwWTnHHM9U_hdbho0&e= > . The upshot is that one could add > a VPNv4 route of this form " > prefix=172.16.0.1/32 label=80 > next-hop=192.168.10.3" via Zebra's > ZEBRA_ROUTE_ADD message to a VRF table. The > next-hop can belong to > another VRF (usually default), and Zebra can handle > recursive look-up of > the next-hop. However, this requires usage of ZAPI > version 5. Thanks for your information! I understood with ZAPI version 5, Zebra can resolve recursive next-hop and GoBGP does not require to resolve it itself. > I can go ahead and add this functionality in my ZAPI_5 branch. However, > > looking through the code, I wasn't sure where I'd add a call to Zebra since > my > understanding of GoBGP code is limited. Since you are more familiar > with the > code, can you suggest where the required changes should go? Hmmmm... it is depending on what exactly you want to know though, most of functionalities as a Zebra Client are implemented on "server/zclient.go", and the ZAPI message parsers are on "zebra/zapi.go". Others, like "config" and "server" packages, do passing options or validating version range for example. I hope the pull request #1462 will be of some help for you. https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_osrg_gobgp_pull_1462&d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4_JM0AhcKK4Y&m=L-ZNkWOyCdQLM8o1BBrdogzqE44x9z8ZbJt2GWhLdM4&s=vI86K3JczHwtRJEO5uBhvVBZeDftdLpvP1D1IlcEhBk&e= Thanks, Iwase On 2018年03月10日 04:40, SHAIKH, AMAN (AMAN) wrote: > > Hi Iwase > > Some update on this front. I had discussion about this with FRR/Zebra. See > https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FRRouting_frr_issues_1839&d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4_JM0AhcKK4Y&m=L-ZNkWOyCdQLM8o1BBrdogzqE44x9z8ZbJt2GWhLdM4&s=7_-zJFmwWinZODdWKNGdxs1zdtfwWTnHHM9U_hdbho0&e= > . The upshot is that one could add a VPNv4 route of this form " > prefix=172.16.0.1/32 label=80 next-hop=192.168.10.3" via Zebra's > ZEBRA_ROUTE_ADD message to a VRF table. The next-hop can belong to another > VRF (usually default), and Zebra can handle recursive look-up of the > next-hop. However, this requires usage of ZAPI version 5. > > I can go ahead and add this functionality in my ZAPI_5 branch. However, > looking through the code, I wasn't sure where I'd add a call to Zebra since > my understanding of GoBGP code is limited. Since you are more familiar with > the code, can you suggest where the required changes should go? > > thx > aman > > > > -----Original Message----- > From: SHAIKH, AMAN (AMAN) > Sent: Friday, March 2, 2018 7:59 PM > To: 'iwase.yusu...@gmail.com' <iwase.yusu...@gmail.com> > Cc: 'gobgp-devel@lists.sourceforge.net' > <gobgp-devel@lists.sourceforge.net> > Subject: RE: [GoBGP-devel] MPLS label issue with VPNv4 routes > > > Hi Iwase > > I heard back from the person who'd promised to look into patching Linux > kernel. He found that Linux kernel in general does not allow recursive > look-up of next-hops. So, the fix required is much bigger than he'd > originally thought, and could take several months before he is able to > prepare the fix. > > I think we'll have to try to make this work through FRR/Zebra. I will think > some more about this. > > aman > > -----Original Message----- > From: SHAIKH, AMAN (AMAN) > Sent: Wednesday, February 14, 2018 11:50 AM > To: gobgp-devel@lists.sourceforge.net > Subject: RE: [GoBGP-devel] MPLS label issue with VPNv4 routes > > > Hi Iwase > > As I mentioned, I sent an e-mail to someone about this error: > >> [ashaikh@vsp-vpe-west ~]$ sudo ip route add vrf blue 172.16.0.1 encap >> mpls 80 via 192.168.10.3 RTNETLINK answers: Network is unreachable > > Here's his response: > > "Looks like the MPLS code is not handling recursive lookups - which it should. > > I'll work on patch when I get a few minutes; should be able to get to it by > the end of this week" > > So, I'd suggest let's wait till I get his patch and get to try it out in my > test-bed. If it works, things will be considerably simpler. > > aman > > -----Original Message----- > From: Iwase Yusuke [mailto:iwase.yusu...@gmail.com] > Sent: Tuesday, February 13, 2018 7:31 PM > To: SHAIKH, AMAN (AMAN) <asha...@research.att.com> > Cc: gobgp-devel@lists.sourceforge.net > Subject: Re: [GoBGP-devel] MPLS label issue with VPNv4 routes > > Hi Aman, > > I really appreciate! > I will also try them through sending message to FRR/Zebra. > > Thanks, > Iwase > > > On 2018年02月14日 04:10, SHAIKH, AMAN (AMAN) wrote: >> >> Hi Iwase >> >> I tried the following, but got an error: >> [ashaikh@vsp-vpe-west ~]$ sudo ip route add vrf blue 172.16.0.1 encap >> mpls 80 via 192.168.10.3 RTNETLINK answers: Network is unreachable >> >> I'm going to ask someone who knows more about how MPLS and VRFs work on >> Linux to see if there is some other way to make this work. >> >> aman >> >> -----Original Message----- >> From: Iwase Yusuke [mailto:iwase.yusu...@gmail.com] >> Sent: Tuesday, February 13, 2018 12:54 AM >> To: SHAIKH, AMAN (AMAN) <asha...@research.att.com> >> Cc: gobgp-devel@lists.sourceforge.net >> Subject: Re: [GoBGP-devel] MPLS label issue with VPNv4 routes >> >> Hi Aman, >> >> Thank you for your confirmation! >> >> > --> This is definitely a possibility except you will have to consult >> FRR/Zebra > to determine 'dev ens8' part, right? In any case, I will try >> this out in my > testbed and let you know what happens. >> >> Oops, I mistook. I want to remove 'dev ens8' part too, because GoBGP is not >> maintaining the info (or list) of the interfaces. Ideally, I want to push >> routes with only BGP's next-hop like; >> $ ip route show vrf blue ...<snip> >> 172.16.0.1 encap mpls 80 via 192.168.10.3 >> 192.168.1.0/24 encap mpls 80 via 192.168.10.3 >> >> If possible, I guess we can make the ZClient implementation keep >> (relatively) simple. >> >> Thanks, >> Iwase >> >> >> On 2018年02月13日 11:17, SHAIKH, AMAN (AMAN) wrote: >>> >>> Hi Iwase >>> >>> Comments inline ... >>> >>> > This is perhaps a complicated transaction with FRR/Zebra. GoBGP will >>> have to > do this transaction when it imports a VPNv4 route into a VRF. It >>> will have to > instruct FRR/Zebra with two things: >>> > - Encapsulate the route with label associated with it. >>> > - Resolve the BGP next-hop in the default forwarding table even >>> though the > route is installed in the blue VRF. >>> > >>> > Let me know what your thoughts are. >>> >>> Let me clear my head, first. >>> You mean the current GoBGP "additionally" need to install two route; >>> >>> 1. forwarding MPLS labeled traffic to VRF; >>> $ ip -f mpls route show ...<snip> >>> 80 dev blue >>> >>> --> Without this route, MPLS labeled traffic coming from the backbone will >>> be dropped by the PE. This route tells PE to pop VRF-label (80) from the >>> packet and consult the forwarding table of blue VRF for the IP destination >>> address stored in the IP portion of the packet. >>> >>> 2. pushing traffic from ECs to MPLS backbone; >>> $ ip route show vrf blue ...<snip> >>> 172.16.0.1 encap mpls 19/80 via 10.202.0.8 dev ens8 >>> 192.168.1.0/24 encap mpls 19/80 via 10.202.0.8 dev ens8 >>> >>> For the "1." route, I guess we can install it when creating VRF, but not >>> yet implemented. >>> >>> --> Yes, agree with you. >>> >>> For the "2." route, related to the latter point you mentioned, can we >>> specify them like the following? >>> $ ip route show vrf blue ...<snip> >>> 172.16.0.1 encap mpls 80 via 192.168.10.3 dev ens8 >>> 192.168.1.0/24 encap mpls 80 via 192.168.10.3 dev ens8 >>> >>> --> This is definitely a possibility except you will have to consult >>> FRR/Zebra to determine 'dev ens8' part, right? In any case, I will try this >>> out in my testbed and let you know what happens. >>> >>> In other words, I want to avoid resolving the outer label and MPLS's >>> next-hop from the BGP's next-hop (if we can). I guess it helps the >>> implementation simple. >>> >>> --> Yes, I understand. >>> >>> I took a (little) look at FRRouting implementation, bgpd does not seem to >>> resolve the outer label and MPLS's next-hop from the BGP's next-hop, >>> because it does not call "*_NEXTHOP_LOOKUP" messages. >>> >>> --> I'm not surprised FRR's bgpd does not handle this. It's fairly >>> complicated given multi-step resolution of BGP next-hop along with multiple >>> VRFs. >>> >>> aman >>> -------------------------------------------------------------------- >>> - >>> - >>> -------- Check out the vibrant tech community on one of the world's >>> most engaging tech sites, Slashdot.org! >>> https://urldefense.proofpoint.com/v2/url?u=http-3A__sdm.link_slashdo >>> t >>> & >>> d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4 >>> _ >>> J >>> M0AhcKK4Y&m=rp0W2LFXGi63VxNF9MB34SGLxRD2n_CAypR-qqMoDEI&s=f1tsvXH69A >>> r >>> 9 >>> Y3qVCi94zCmOGEzTWyBFLH31rrZEscY&e= >>> _______________________________________________ >>> gobgp-devel mailing list >>> gobgp-devel@lists.sourceforge.net >>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.sourcefor >>> g >>> e >>> .net_lists_listinfo_gobgp-2Ddevel&d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg& >>> r >>> = >>> I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4_JM0AhcKK4Y&m=rp0W2LFXGi63VxNF9MB34S >>> G >>> L >>> xRD2n_CAypR-qqMoDEI&s=uHUJBsM7DRJzTnA7T41g0oWQE0Ovu50Pq7gSubJdrCs&e= >>> >> --------------------------------------------------------------------- >> - >> -------- Check out the vibrant tech community on one of the world's >> most engaging tech sites, Slashdot.org! >> https://urldefense.proofpoint.com/v2/url?u=http-3A__sdm.link_slashdot >> & >> d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4_ >> J >> M0AhcKK4Y&m=i8vqRael0CLkyTAEGntuf6N-vnFvflmoA6h5_g7Pnn4&s=_jBM2i2ugJ9 >> t >> ATuGK_BKOc7kG33o7HRIbaLO43S3v6o&e= >> _______________________________________________ >> gobgp-devel mailing list >> gobgp-devel@lists.sourceforge.net >> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.sourceforg >> e >> .net_lists_listinfo_gobgp-2Ddevel&d=DwIDaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r >> = >> I_2UmL83HQfOEoCVzChS_fiJdy8vxHF4_JM0AhcKK4Y&m=i8vqRael0CLkyTAEGntuf6N >> - >> vnFvflmoA6h5_g7Pnn4&s=ID_j23zA8zV3aMKpozvGWGF6OWVHDmNHhIvr89tma9o&e= >> ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ gobgp-devel mailing list gobgp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gobgp-devel