Re: [vpp-dev] Update to iOAM using latest IETF draft #vpp
Mauricio, > Justin, > > I too am working on my master thesis, but I'm set to finish in December. Hmm, I see. > Currently, we're looking at video streaming and would like to get telemetry > data for buffer occupancy, queue depth, and transit delays. VPP seems the > best > viable (and free) option for use. Indeed. You can already take a look at M-Anycast [1] which combines IOAM and SRv6. There is a demo with video streaming, so you might be interested. But, again, this is based on the old IOAM implementation inside VPP. If you really want or need to refresh the IOAM implem, feel free to contact me in private and I'll put you in touch with the other student so that you can collaborate. On a side note, I've recently posted a first version of the IOAM patch for the Linux kernel [2]. So hopefully, it may be available soon in the kernel too (this one is up-to-date with drafts). Justin [1] https://github.com/CiscoDevNet/iOAM/tree/master/M-Anycast [2] https://www.mail-archive.com/netdev@vger.kernel.org/msg333936.html > Mauricio > > -Original Message- > From: Justin Iurman > Sent: maandag 3 augustus 2020 17:11 > To: Solis JR, M. (Mauricio) > Cc: vpp-dev ; Shwetha Bhandari (shwethab) > > Subject: Re: [vpp-dev] Update to iOAM using latest IETF draft #vpp > > Mauricio, > >> Justin, >> Do you know the release date for the updated iOAM plugin on the latest >> ietf draft? > > Not really. This is actually a student and he's going to do it for his master > thesis. Who knows for the precise date, but he will start soon... so I'd say > during first 2021 semester (or trimester hopefully). > > Out of curiosity, what are you working on with IOAM so that you want to > refresh > the VPP implem? > > Justin > >> Mauricio >> >> -Original Message- >> From: Justin Iurman >> Sent: woensdag 29 juli 2020 14:26 >> To: Solis JR, M. (Mauricio) >> Cc: vpp-dev ; Shwetha Bhandari (shwethab) >> >> Subject: Re: [vpp-dev] Update to iOAM using latest IETF draft #vpp >> >> Hi Mauricio, >> >> CC'ing Shwetha, she implemented the IOAM plugin. Last time I checked, >> IOAM namespaces were not included, so it is probably based on the -03 >> version of draft-ietf-ippm-ioam-data. Actually, just to let you know, >> there is already someone that is going to rebase the implementation on the >> last >> draft version. >> >> Justin >> >>> Hi, >>> >>> I noticed that the current iOAM plugin implementation is using the >>> first IETF drafts, so I'm thinking about trying to update the iOAM >>> implementation in VPP using the latest. I first just want to make >>> sure there that this update is not in the immediate VPP release >>> pipeline since I do not wish to do work that has already been done. >>> I'm also uncertain about the amount of work it will require to update >>> the plugin, but I have already dug into the code and it doesn't seem "too" >>> bad. >>> >>> Regards, >>> >>> Mauricio >> This message may contain information that is not intended for you. If >> you are not the addressee or if this message was sent to you by >> mistake, you are requested to inform the sender and delete the >> message. TNO accepts no liability for the content of this e-mail, for >> the manner in which you use it and for damage of any kind resulting > > from the risks inherent to the electronic transmission of messages. -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#17135): https://lists.fd.io/g/vpp-dev/message/17135 Mute This Topic: https://lists.fd.io/mt/75861366/21656 Mute #vpp: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vpp Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] Update to iOAM using latest IETF draft #vpp
Mauricio, > Justin, > Do you know the release date for the updated iOAM plugin on the latest ietf > draft? Not really. This is actually a student and he's going to do it for his master thesis. Who knows for the precise date, but he will start soon... so I'd say during first 2021 semester (or trimester hopefully). Out of curiosity, what are you working on with IOAM so that you want to refresh the VPP implem? Justin > Mauricio > > -Original Message- > From: Justin Iurman > Sent: woensdag 29 juli 2020 14:26 > To: Solis JR, M. (Mauricio) > Cc: vpp-dev ; Shwetha Bhandari (shwethab) > > Subject: Re: [vpp-dev] Update to iOAM using latest IETF draft #vpp > > Hi Mauricio, > > CC'ing Shwetha, she implemented the IOAM plugin. Last time I checked, IOAM > namespaces were not included, so it is probably based on the -03 version of > draft-ietf-ippm-ioam-data. Actually, just to let you know, there is already > someone that is going to rebase the implementation on the last draft version. > > Justin > >> Hi, >> >> I noticed that the current iOAM plugin implementation is using the >> first IETF drafts, so I'm thinking about trying to update the iOAM >> implementation in VPP using the latest. I first just want to make sure >> there that this update is not in the immediate VPP release pipeline >> since I do not wish to do work that has already been done. I'm also >> uncertain about the amount of work it will require to update the >> plugin, but I have already dug into the code and it doesn't seem "too" bad. >> >> Regards, >> >> Mauricio > This message may contain information that is not intended for you. If you are > not the addressee or if this message was sent to you by mistake, you are > requested to inform the sender and delete the message. TNO accepts no > liability > for the content of this e-mail, for the manner in which you use it and for > damage of any kind resulting from the risks inherent to the electronic > transmission of messages. -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#17129): https://lists.fd.io/g/vpp-dev/message/17129 Mute This Topic: https://lists.fd.io/mt/75861366/21656 Mute #vpp: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vpp Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] Update to iOAM using latest IETF draft #vpp
Hi Mauricio, CC'ing Shwetha, she implemented the IOAM plugin. Last time I checked, IOAM namespaces were not included, so it is probably based on the -03 version of draft-ietf-ippm-ioam-data. Actually, just to let you know, there is already someone that is going to rebase the implementation on the last draft version. Justin > Hi, > > I noticed that the current iOAM plugin implementation is using the first IETF > drafts, so I'm thinking about trying to update the iOAM implementation in VPP > using the latest. I first just want to make sure there that this update is not > in the immediate VPP release pipeline since I do not wish to do work that has > already been done. I'm also uncertain about the amount of work it will require > to update the plugin, but I have already dug into the code and it doesn't seem > "too" bad. > > Regards, > > Mauricio -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#17107): https://lists.fd.io/g/vpp-dev/message/17107 Mute This Topic: https://lists.fd.io/mt/75861366/21656 Mute #vpp: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vpp Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] P4 INT( Inband Network Telemetry)
Davi, The introduction of IOAM namespaces was the big addition and came with version 4 of the draft. Since then, some other (small) modifications were also added here and there. Last time I talked to Shwetha during IETF, she told me it was planned to update vpp/ioam to a more recent version of the draft (i.e., adding support for IOAM namespaces). Now that the draft is mature, you should see updates soon (both for kernel and vpp). AFAIK, HbH options are already up to date (maybe not all?). Only the very last version of the draft (version 7) introduces a change on Trace Option's bitfield, which causes a reordering of options (mainly for opaque snap and csum complement options). That's the same for my kernel implementation, which is not yet up to date with version 7 (will update it ASAP). Things are evolving from a draft point of view, which will ease interoperability tests between kernel & vpp (it's on the todo list). Cheers, Justin - Mail original - > De: "Davi Scofield" > À: shwet...@cisco.com > Cc: "vpp-dev" > Envoyé: Mardi 17 Septembre 2019 02:20:34 > Objet: Re: [vpp-dev] P4 INT( Inband Network Telemetry) > Hi, Shwetha, > There are many changes in IETF draft [ > https://www.ietf.org/id/draft-ietf-ippm-ioam-data-07.txt. | > https://www.ietf.org/id/draft-ietf-ippm-ioam-data-07.txt. And they also give a > demo on IETF 105# Hackathons, this demo implentented the IPv6 Hop-by-hop > options to support IOAM in Linux kernel. To see > https://github.com/IETF-Hackathon/ietf105-project-presentations/blob/master/ioam-hbh-option.pdf. > ] > Do you have develop plan to update the VPP to the IOAM latest > version,including > IPV6 Hop-by-hop option? > > Thanks, > Davi > > > > > > At 2019-06-06 07:58:22, "Shwetha bhandari via Lists.Fd.Io" > wrote: > > > > > > Hi Davi, > > > > We have an reference implementation of In-situ OAM (IOAM) in VPP - [ > https://docs.fd.io/vpp/18.07/ioam_plugin_doc.html | > https://docs.fd.io/vpp/18.07/ioam_plugin_doc.html ] , that provides Inband > network telemetry being defined at IETF - [ > https://tools.ietf.org/html/draft-ietf-ippm-ioam-data-05 | > https://tools.ietf.org/html/draft-ietf-ippm-ioam-data-05 ] . > > IOAM and P4 INT both are defined to provide a way to add and collect packet > trace and operational state of the nodes that forward the packet. > > > > Thanks, > > Shwetha > > > > > From: on behalf of Davi Scofield > Date: Wednesday, June 5, 2019 at 1:43 PM > To: Davi Scofield > Cc: vpp-dev > Subject: [vpp-dev] P4 INT( Inband Network Telemetry) > > > > > > > > > Hello, > > > How to implement P4 Inband Network Telemetry function in current VPP? Is there > anyone want to use this feature? > > > Thanks ! > > > Davi -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#14002): https://lists.fd.io/g/vpp-dev/message/14002 Mute This Topic: https://lists.fd.io/mt/31935042/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: Re : [vpp-dev] Maintainer router plugin
Hi Jerome, > Regarding multi instance, have you considered running multiple instances of > VPP > in different containers? I did, however this is not an option as I'd like to keep my "entire topology running on the same machine" philosophy. Also, I think this could be a plus for the router plugin to handle multi-instance/memif setups. Though, I don't see how we could do. Cheers, Justin -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11539): https://lists.fd.io/g/vpp-dev/message/11539 Mute This Topic: https://lists.fd.io/mt/28707406/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] Maintainer router plugin
Hi Hongjun, > There is no plan to use memif at present. Welcome your contribution if you > will. Of course, if I find some free time. Anyone interested in working on this ? > In router plugin, we inject links, routes, etc. from different namespace in > Kernel into different VRFs In VPP. > Not support multi-instance mode. How do you determine which namespace(s) to look at ? Or do you take care of all namespaces by default ? Also, would multi-instance mode be feasible ? Cheers, Justin -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11529): https://lists.fd.io/g/vpp-dev/message/11529 Mute This Topic: https://lists.fd.io/mt/16973079/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] Maintainer router plugin
Guys, Any plan to use memif interfaces for router plugin ? Also, is there a plan to implement a multi-instance mode ? Because, for now, "enable tap-inject" only works for one router, and not others, when I run multiples VPP instances on a same machine. Thanks, Justin > Hi Jan, > > A VPP packet trace and the output from “sh ip mfib’ would help diagnose your > multicast packet drops. > > /neale > > From: on behalf of Jan Hugo Prins | BetterBe > > Date: Wednesday, 11 April 2018 at 20:54 > To: Ole Troan > Cc: vpp-dev , Ray Kinsella > Subject: Re: [vpp-dev] Maintainer router plugin > > Hi Ole, > > I really don't mind that you all derailed my discussion. I think a good > design discussion is a good thing. Especially when the end result is a better > product, or in this case, better integration between products. > What I have found with respect to OSPFv3, is that the OSPF multicast packets > are being dropped at the router edge. See my earlier message with the PCAP > file. > > I currently have no idea why my OSPFv2 routers are not properly installed in > the VPP IP FIB, while they are in the Linux IP FIB. > > Jan Hugo Prins > > > On 04/11/2018 07:37 PM, Ole Troan wrote: > Jan Hugo, > > But this basically means that, for now, it won't be possible to create a BGP > router with a combination of FRR and VPP doing both IPv4 and IPv6 with OSPF > and BGP. > Or do you see possibilities to make OSPFv3 work? > Sorry, for derailing your thread and making it into an architectural > discussion. ;-) > If you ask my opinion, I would probably prefer it not to go into the main > repository. > > That said, if it works for OSPFv2, one shouldn't think it would be that hard > to make it work for OSPFv3 either. > Probably some ARP/ND issues? Ray, would you know? > > Best regards, > Ole > > > > Jan Hugo Prins > > > On 04/11/2018 03:20 PM, Ray Kinsella wrote: > Hi Ole, > > I agree - but completely reinventing the wheel is not a the best course > either. These are tried and tested implementations and are worth reusing, I > do agree that integrating through the Linux Kernel is not ideal. > > We developed the router plugin to show that integration was possible we never > claimed that it was the 'best' way to integrate either. > > Plugging a Quagga/FRR/Bird etc into VPP/HC is definitely the better path. > Historically it has been hard with Quagga due to GPL licensing, I understand > that FRR is the easiest path. > > Ray K > > On 11/04/2018 09:33, Ole Troan wrote: > Hi Jan, > > Is someone actively maintaining the router plugin? > I'm not a big fan of the router plugin. > The starting point of the router plugin is "how can you take an unmodified > routing protocol implementation and make it work with VPP". > That leads to all kinds of complexities as the two methods they tried shows. > > If we change the premise does the solution space look better? > > I think we could change the routing protocol implementation to talk directly > with VPP's API for interfaces / interface events, it programs the VPP FIB > directly. > Then it could send and receive packets somewhat similar to what we have for > the punt Unix domain socket. > We might need a better punt path mechanism, where a Linux application can > register for a particular IP protocol (like 89 for OSPF) on a particular > interface. But that should be easy to do. > > I did have a brief chat with David Lamparter of Quagga fame and he had > thought about doing it in a similar way. > > What is your particular use case? Is it just a routing protocol you need? > > Best regards, > Ole > > > > > > > > -- > Kind regards > > Jan Hugo Prins > DevOps Engineer > > Auke Vleerstraat 140 E > 7547 AN Enschede > CC no. 08097527 T +31 (0) 53 48 00 694 > E jpr...@betterbe.com > M +31 (0)6 263 58 951 www.betterbe.com > > > > > -- > Kind regards > > Jan Hugo Prins > DevOps Engineer > > Auke Vleerstraat 140 E > 7547 AN Enschede > CC no. 08097527 > T +31 (0) 53 48 00 694 > E jpr...@betterbe.com > M +31 (0)6 263 58 951 > www.betterbe.com > BetterBe accepts no liability for the content of this email, or for the > consequences of any actions taken on the basis > of the information provided, unless that information is subsequently > confirmed in writing. If you are not the intended > recipient you are notified that disclosing, copying, distributing or taking > any action in reliance on the contents of this > information is strictly prohibited. > ,_._,_ -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11525): https://lists.fd.io/g/vpp-dev/message/11525 Mute This Topic: https://lists.fd.io/mt/16973079/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
[vpp-dev] vpp with router plugin + FRRouting
[Re-sending with attachment .sh -> .txt to avoid being blocked] Hi folks, I'm working with multiple VPP instances on a same (virtual) machine, in order to simulate a topology. Now, I'd like to simulate a topology between ASes with BGP. For that, I followed the process described on this page [1], which is for one single VPP instance running on the virtual machine. The hardest part is to tell FRRouting to run in multiple-instance mode (or something similar, I think). I created namespaces for ASes (including hosts) while routers are VPP instances (with the router plugin from the VPP Sandbox). My question is... Is it possible to use FRR (BGP, actually) with multiple VPP instances on a same machine ? I get the whole thing about VRF etc on FRR/Quagga documentation, but how does it work in order to integrate things with multiple VPP instances ? I can't use VRF (at least, I think so), since VPP instances (my routers) are NOT running in namespaces. Also, how does FRR know how to communicate (do they?) with VPP instances ? The same question could be applied to the VPP+BIRD alternative [2]. In attachment, for those who want (or if it helps understanding the use case), you will find a graphical representation of the topology as well as a script that sets the topology up. Thanks for your help. Cheers, Justin [1] https://github.com/FRRouting/frr/wiki/Alternate-forwarding-planes:-VPP [2] https://wiki.fd.io/view/VPP_Sandbox/router # enable kernel forwarding sudo sysctl -w net.ipv4.ip_forward=1 # VPP Routers sudo vpp unix { cli-listen /run/vpp/cli-r10.sock } api-segment { prefix r10 } sudo vpp unix { cli-listen /run/vpp/cli-r20.sock } api-segment { prefix r20 } sudo vpp unix { cli-listen /run/vpp/cli-r30.sock } api-segment { prefix r30 } sudo vpp unix { cli-listen /run/vpp/cli-r40.sock } api-segment { prefix r40 } sleep 1 # AS10 Namespace sudo ip netns add ns_as10 sudo ip link add name peer_u10 type veth peer name peer_r10 sudo ip link set dev peer_r10 up group 1 sudo ip link set dev peer_u10 up netns ns_as10 sudo ip netns exec ns_as10 \ bash -c " ip link set dev lo up ip addr add 80.5.3.2/24 dev peer_u10 ip route add default via 80.5.3.1 ethtool -K peer_u10 rx off tx off" # AS20 Namespace sudo ip netns add ns_as20 sudo ip link add name peer_u20 type veth peer name peer_r20 sudo ip link set dev peer_r20 up group 1 sudo ip link set dev peer_u20 up netns ns_as20 sudo ip netns exec ns_as20 \ bash -c " ip link set dev lo up ip addr add 76.35.2.2/24 dev peer_u20 ip route add default via 76.35.2.1 ethtool -K peer_u20 rx off tx off" # AS30 Namespace sudo ip netns add ns_as30 sudo ip link add name peer_u30 type veth peer name peer_r30 sudo ip link set dev peer_r30 up group 1 sudo ip link set dev peer_u30 up netns ns_as30 sudo ip netns exec ns_as30 \ bash -c " ip link set dev lo up ip addr add 36.7.1.2/24 dev peer_u30 ip route add default via 36.7.1.1 ethtool -K peer_u30 rx off tx off" # AS40 Namespace sudo ip netns add ns_as40 sudo ip link add name peer_u40_1 type veth peer name peer_r40_1 sudo ip link add name peer_u40_2 type veth peer name peer_r40_2 sudo ip link set dev peer_r40_1 up group 1 sudo ip link set dev peer_r40_2 up group 1 sudo ip link set dev peer_u40_1 up netns ns_as40 sudo ip link set dev peer_u40_2 up netns ns_as40 sudo ip netns exec ns_as40 \ bash -c " ip link set dev lo up ip addr add 18.9.5.2/24 dev peer_u40_1 ip addr add 18.9.4.2/24 dev peer_u40_2 ip route add 18.9.5.0/24 via 18.9.5.1 dev peer_u40_1 ip route add 18.9.4.0/24 via 18.9.4.1 dev peer_u40_2 ethtool -K peer_u40_1 rx off tx off ethtool -K peer_u40_2 rx off tx off" # AS10 <-> R10 sudo vppctl -s /run/vpp/cli-r10.sock create host-interface name peer_r10 sudo vppctl -s /run/vpp/cli-r10.sock set interface state host-peer_r10 up sudo vppctl -s /run/vpp/cli-r10.sock set interface ip address host-peer_r10 80.5.3.1/24 # AS20 <-> R20 sudo vppctl -s /run/vpp/cli-r20.sock create host-interface name peer_r20 sudo vppctl -s /run/vpp/cli-r20.sock set interface state host-peer_r20 up sudo vppctl -s /run/vpp/cli-r20.sock set interface ip address host-peer_r20 76.35.2.1/24 # AS30 <-> R30 sudo vppctl -s /run/vpp/cli-r30.sock create host-interface name peer_r30 sudo vppctl -s /run/vpp/cli-r30.sock set interface state host-peer_r30 up sudo vppctl -s /run/vpp/cli-r30.sock set interface ip address host-peer_r30 36.7.1.1/24 # AS40 <-> R40 sudo vppctl -s /run/vpp/cli-r40.sock create host-interface name peer_r40_1 sudo vppctl -s /run/vpp/cli-r40.sock create host-interface name peer_r40_2 sudo vppctl -s /run/vpp/cli-r40.sock set interface state host-peer_r40_1 up sudo vppctl -s /run/vpp/cli-r40.sock set interface state host-peer_r40_2 up sudo vppctl -s /run/vpp/cli-r40.sock set interface ip address host-peer_r40_1 18.9.5.1/24 sudo vppctl -s /run/vpp/cli-r40.sock set interface ip address host-peer_r40_2 18.9.4.1/24 # R10 <-> R20 sudo vppctl -s /run/vpp/
[vpp-dev] vpp with router plugin + FRRouting
Hi folks, I'm working with multiple VPP instances on a same (virtual) machine, in order to simulate a topology. Now, I'd like to simulate a topology between ASes with BGP. For that, I followed the process described on this page [1], which is for one single VPP instance running on the virtual machine. The hardest part is to tell FRRouting to run in multiple-instance mode (or something similar, I think). I created namespaces for ASes (including hosts) while routers are VPP instances (with the router plugin from the VPP Sandbox). My question is... Is it possible to use FRR (BGP, actually) with multiple VPP instances on a same machine ? I get the whole thing about VRF etc on FRR/Quagga documentation, but how does it work in order to integrate things with multiple VPP instances ? I can't use VRF (at least, I think so), since VPP instances (my routers) are NOT running in namespaces. Also, how does FRR know how to communicate (do they?) with VPP instances ? The same question could be applied to the VPP+BIRD alternative [2]. In attachment, for those who want (or if it helps understanding the use case), you will find a graphical representation of the topology as well as a script that sets the topology up. Thanks for your help. Cheers, Justin [1] https://github.com/FRRouting/frr/wiki/Alternate-forwarding-planes:-VPP [2] https://wiki.fd.io/view/VPP_Sandbox/router setup_topology.sh Description: application/shellscript BGP_simple_topo.pdf Description: Adobe PDF document -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11523): https://lists.fd.io/g/vpp-dev/message/11523 Mute This Topic: https://lists.fd.io/mt/28637428/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] vpp_api_test via socket file
Peter, > …however, are there any other options to full control 2+ instances of VPP via > API (not vppctl)? PythonAPI for example [1]. Ole’s answer to the same question: > r = vpp.connect('vpp1', chroot_prefix='name of shared address segment') Cheers, Justin
Re: [vpp-dev] Python API for specific VPP instance
Ole, > Yes. Set chroot_prefix. > r = vpp.connect('vpp1', chroot_prefix='name of shared address segment') My bad, I didn't thought about looking at the python code of the "connect" method. Thanks a million ! Another related question (see https://lists.fd.io/g/vpp-dev/message/9001 as a reference), is there any documentation on the API grammar ? I mean, I can't find anything about some keywords such as "manual_endian" or "manual_print", even though I can guess their use and how to use them by looking at existing codes. It'd be nice to have such documentation. Thanks again, Justin -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9179): https://lists.fd.io/g/vpp-dev/message/9179 View All Messages In Topic (3): https://lists.fd.io/g/vpp-dev/topic/18138970 Mute This Topic: https://lists.fd.io/mt/18138970/21656 New Topic: https://lists.fd.io/g/vpp-dev/post Change Your Subscription: https://lists.fd.io/g/vpp-dev/editsub/21656 Group Home: https://lists.fd.io/g/vpp-dev Contact Group Owner: vpp-dev+ow...@lists.fd.io Terms of Service: https://lists.fd.io/static/tos Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub -=-=-=-=-=-=-=-=-=-=-=-
[vpp-dev] Python API for specific VPP instance
Hi guys, How can I "connect" to a specific instance of VPP through the python API ? Each instance (together, they form a topology) is run as follow: sudo vpp unix { log /tmp/vpp1.log cli-listen /run/vpp/cli-vpp1.sock } api-segment { prefix vpp1 } plugins { plugin dpdk_plugin.so { disable } } In python, usually, we do: vpp = VPP(jsonfiles) r = vpp.connect("xxx") Is it possible to connect to a "prefix" (eg "vpp1") to only interact with a specific instance ? Let's say, for instance, something like this: r = vpp.connect("vpp1") Thanks, Justin -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9147): https://lists.fd.io/g/vpp-dev/message/9147 View All Messages In Topic (1): https://lists.fd.io/g/vpp-dev/topic/18138970 Mute This Topic: https://lists.fd.io/mt/18138970/21656 New Topic: https://lists.fd.io/g/vpp-dev/post Change Your Subscription: https://lists.fd.io/g/vpp-dev/editsub/21656 Group Home: https://lists.fd.io/g/vpp-dev Contact Group Owner: vpp-dev+ow...@lists.fd.io Terms of Service: https://lists.fd.io/static/tos Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] Plugin API grammar
Ping Dave, as I'm sure he knows what could help here. Justin > Hi folks, > > After having developed a new plugin, I'm now implementing its API in order to > use it from a GUI. > > Is there an official documentation of the API grammar (other than inside > vppapigen) ? By looking at the code, I already found that it's possible to > include a structure in a request/response. Which is good because I'll need it. > But what about some keywords like "manual_endian", "manual_print", etc ? I've > searched everywhere but can't find any explanation about their use. > > Thanks, > > Justin -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9034): https://lists.fd.io/g/vpp-dev/message/9034 View All Messages In Topic (2): https://lists.fd.io/g/vpp-dev/topic/17656579 Mute This Topic: https://lists.fd.io/mt/17656579/21656 New Topic: https://lists.fd.io/g/vpp-dev/post Change Your Subscription: https://lists.fd.io/g/vpp-dev/editsub/21656 Group Home: https://lists.fd.io/g/vpp-dev Contact Group Owner: vpp-dev+ow...@lists.fd.io Terms of Service: https://lists.fd.io/static/tos Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub -=-=-=-=-=-=-=-=-=-=-=-
[vpp-dev] Plugin API grammar
Hi folks, After having developed a new plugin, I'm now implementing its API in order to use it from a GUI. Is there an official documentation of the API grammar (other than inside vppapigen) ? By looking at the code, I already found that it's possible to include a structure in a request/response. Which is good because I'll need it. But what about some keywords like "manual_endian", "manual_print", etc ? I've searched everywhere but can't find any explanation about their use. Thanks, Justin -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9001): https://lists.fd.io/g/vpp-dev/message/9001 View All Messages In Topic (1): https://lists.fd.io/g/vpp-dev/topic/17656579 Mute This Topic: https://lists.fd.io/mt/17656579/21656 New Topic: https://lists.fd.io/g/vpp-dev/post Change Your Subscription: https://lists.fd.io/g/vpp-dev/editsub/21656 Group Home: https://lists.fd.io/g/vpp-dev Contact Group Owner: vpp-dev+ow...@lists.fd.io Terms of Service: https://lists.fd.io/static/tos Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] vppctl exec file (containing own plugin commands)
My bad. After hours of debugging, I figured it out. One of our plugin unformat function was checking for end-of-input, which was not the case when using "exec" command. Indeed, "exec" reads each line of the parsed file and put them next to each other in the (input) buffer. That's why it was silently denying those commands. Justin > Hi everyone, > > Just noticed that my file was not executed with "vppctl exec ". > Actually, > it *is* executed, as long as a line doesn't contain a command for my plugin. > Is > "exec" only for some vpp "core" commands, such as "set" ? I already tried the > alternative solution by calling "vppctl " for each command, but that > leads to a vpp crash when too much commands are involved (around 1 > commands). That's why I thought about the "exec" solution that seems cleaner. > > Any idea ? Any other solution ? Thanks ! > > Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] vppctl exec file (containing own plugin commands)
Hi everyone, Just noticed that my file was not executed with "vppctl exec ". Actually, it *is* executed, as long as a line doesn't contain a command for my plugin. Is "exec" only for some vpp "core" commands, such as "set" ? I already tried the alternative solution by calling "vppctl " for each command, but that leads to a vpp crash when too much commands are involved (around 1 commands). That's why I thought about the "exec" solution that seems cleaner. Any idea ? Any other solution ? Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] Measure plugin performances
Hi Ray, > Suggest adding vpphost and iperfvpp to different network namespaces. > All that is happening at the moment is the kernel is recognizing it owns > both IPs and bypassing everything. > You also need to add vppiperf and vppout to a bridge domain in VPP. Indeed, I thought that could be an issue. Therefore, I already had an alternative using namespaces. Here is what I use to build the topology, with bridge domain addition: _ _ | | host-vpp2 | | | VPP | 10.10.2.1 vpp2 namespace---| veth_vpp2 | |_|| 10.10.2.2 | | |_| host-vpp1 10.10.1.1 | | vpp1 namespace | _|___ | | | veth_vpp1 | | 10.10.1.2 | |_| ## BEGIN ## # create namespaces sudo ip netns add vpp1 sudo ip netns add vpp2 # create and configure first veth pair sudo ip link add name veth_vpp1 type veth peer name vpp1 sudo ip link set dev vpp1 up sudo ip link set dev veth_vpp1 up netns vpp1 sudo ip netns exec vpp1 \ bash -c " ip link set dev lo up ip addr add 10.10.1.2/24 dev veth_vpp1 ip route add 10.10.2.0/24 via 10.10.1.1 " # create and configure second veth pair sudo ip link add name veth_vpp2 type veth peer name vpp2 sudo ip link set dev vpp2 up sudo ip link set dev veth_vpp2 up netns vpp2 sudo ip netns exec vpp2 \ bash -c " ip link set dev lo up ip addr add 10.10.2.2/24 dev veth_vpp2 ip route add 10.10.1.0/24 via 10.10.2.1 " # create and configure vpp instance sudo vpp unix { log /tmp/vpp.log cli-listen /run/vpp/cli-vpp.sock } api-segment { prefix vpp } plugins { plugin dpdk_plugin.so { disable } } sleep 1 sudo vppctl -s /run/vpp/cli-vpp.sock create host-interface name vpp1 sudo vppctl -s /run/vpp/cli-vpp.sock create host-interface name vpp2 sudo vppctl -s /run/vpp/cli-vpp.sock set int state host-vpp1 up sudo vppctl -s /run/vpp/cli-vpp.sock set int state host-vpp2 up sudo vppctl -s /run/vpp/cli-vpp.sock set int ip address host-vpp1 10.10.1.1/24 sudo vppctl -s /run/vpp/cli-vpp.sock set int ip address host-vpp2 10.10.2.1/24 # vpp bridge domain sudo vppctl -s /run/vpp/cli-vpp.sock set interface l2 bridge host-vpp1 1 sudo vppctl -s /run/vpp/cli-vpp.sock set interface l2 bridge host-vpp2 1 ## END ## Without the bridge domain, I'm able to ping from vpp1 to vpp2 namespaces and vice versa and see packets in VPP instance: sudo ip netns exec vpp1 ping 10.10.2.2 -c 5 sudo ip netns exec vpp2 ping 10.10.1.2 -c 5 However, iperf3 client seems to hang and never returns a result, even if "vppctl show run" tells me packets went through VPP. Still don't know why: sudo ip netns exec vpp2 iperf3 -s -D sudo ip netns exec vpp1 iperf3 -c 10.10.2.2 With bridge domain, pings don't work anymore. Are you absolutely sure I need it ? It is not used in the VPP example when connecting two instances. > Take a look at VPP bootstrap in vppsb, it does 98% of what you are > trying to do here. > https://git.fd.io/vppsb/tree/vpp-bootstrap Thanks for that but I'm not sure I need this since I already build my own vpp "box" environment. What's wrong with my topology/configuration ? All I want is to pass packets from vpp1 namespace to vpp2 namespace, and the opposite too (by using iperf3). Packets have to go through my VPP instance. Thanks for your help ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] Measure plugin performances
Oh and by the way, when I say "Pings work" I mean "pings on vpp interfaces" and that's the only way I can see packets in VPP (which is normal after all). But still, pings to 10.10.2.2 work but no trace in VPP (same as iperf packets). Just wanted to clarify this, because it was a bit unclear. Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] Measure plugin performances
Hi everyone, Just wanted to know if there is already something inside VPP to measure some metrics when testing performances of our own plugin ? I know there are some useful info with "vppctl show ..." but is it enough/all ? Actually, based on this link ( https://wiki.fd.io/view/VPP/Progressive_VPP_Tutorial#Exercise:_Connecting_two_vpp_instances ), I was trying to reproduce the almost-the-same topology combined with iperf. Here is how it looks like (hope format doesn't get scratched here): _ __ | |host-vppiperf iperfvpp | | | VPP |--- 10.10.2.1/24 --- 10.10.2.2/24 ---| SERVER | |_| |__| | host-vppout 10.10.1.2/24 | | | vpphost (CLIENT) 10.10.1.1/24 And here is the VPP-topology-building procedure: ## BEGIN ## ## create vpp and connect it to host sudo vpp unix { log /tmp/vpp.log cli-listen /run/vpp/cli-vpp.sock } api-segment { prefix vpp } plugins { plugin dpdk_plugin.so { disable } } # veth interface between host and vpp sudo ip link add name vppout type veth peer name vpphost sudo ip link set dev vppout up sudo ip link set dev vpphost up sudo ip addr add 10.10.1.1/24 dev vpphost # host interface between host and vpp sudo vppctl -s /run/vpp/cli-vpp.sock create host-interface name vppout sudo vppctl -s /run/vpp/cli-vpp.sock set int state host-vppout up sudo vppctl -s /run/vpp/cli-vpp.sock set int ip address host-vppout 10.10.1.2/24 ## create iperf server and connect it to vpp sudo ip link add name vppiperf type veth peer name iperfvpp sudo ip link set dev vppiperf up sudo ip link set dev iperfvpp up sudo ip addr add 10.10.2.2/24 dev iperfvpp sudo vppctl -s /run/vpp/cli-vpp.sock create host-interface name vppiperf sudo vppctl -s /run/vpp/cli-vpp.sock set int state host-vppiperf up sudo vppctl -s /run/vpp/cli-vpp.sock set int ip address host-vppiperf 10.10.2.1/24 #disabled #sudo ip route add 10.10.2.0/24 via 10.10.1.2 #sudo ip route add 10.10.1.0/24 via 10.10.2.1 ## END ## When running iperf: # server bound to iperfvpp (10.10.2.2) iperf3 -s -B 10.10.2.2 -D # client iperf3 -c 10.10.2.2 -B 10.10.1.1 -u -4 -k 10 It works but there is no trace of those packets inside VPP. Note: pings work and I'm able to see them inside VPP. What am I missing ? I think I can guess what the problem is but still don't know how to solve it. Any tips/help ? Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] TCP Options: tcp_header_t and tcp_options_t
Florin, > For discarding options you’ll probably need to write your own function that > first recomputes them and then moves the payload closer to the header. Yep, that's what I had in mind. > tcp_buffer_discard_bytes just chops off payload bytes, as in moves the > buffer’s > current_data pointer. I don’t think it’s enough for what you need. Indeed, it's not enough. > Quick note, for completeness: If you’re planning on discarding all headers up > to > tcp, the other option would be to move the tcp header forward, since it’s > typically smaller than the payload. I don't. Actually, the goal is only to strip off some tcp options that match against some rules. Thanks, Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] TCP Options: tcp_header_t and tcp_options_t
Hi Florin, Sorry for the late response. In fact, you just confirmed what I expected, thank you. I'll go with my own parser to include all options (even the reserved ones), inspired by tcp_options_parse. I'll go with my own rewriter too, inspired by tcp_options_write. But, what about discarded options (the ones I just want to remove) ? How would you free/allocate/resize the buffer containing data (..., ip header, tcp header, payload...) ? I just found a function called tcp_buffer_discard_bytes but I'm not sure it's what I really need. I'm looking for the cleanest vpp-way to do this. Thanks for your help ! Justin > Hi Justin, > > The expectation until now has been that options are not parsed until hitting > the > tcp related nodes. If tcp_options_parse is enough, then make it public and use > it. That function just expects a tcp_options_t struct for outputting the > results so no need for a tcp_connection_t. Now, if you need your special > function to both read, match and update in place the options, then I recommend > you write your own options parser. > > Hope this helps, > Florin > >> On Nov 14, 2017, at 5:13 AM, Justin Iurman wrote: >> >> Hi Dave, >> >> Thanks (again) for your reply. >> >>> Brief commercial: hopefully you added your node to the ip4 unicast feature >>> arc, >>> configured to grab pkts, pre-ip4/6-lookup. >> >> Indeed, I added my node to the ip4-unicast feature arc. >> >>> In feature-arc land, the following one-liner sets next0 so pkts will visit >>> the >>> next enabled feature. The last node in the ip4-unicast feature arc is >>> ip4-lookup... >>> >>> /* Next node in unicast feature arc */ >>> vnet_get_config_data (em->config_main[table_index], >>> &b0->current_config_index, &next0, >>> /* # bytes of config data */ 0); >>> >>> Check the ip protocol and ignore any non-TCP pkts: >>> >>> ip40 = vlib_buffer_get_current (b0); >>> if (ip40->protocol != IP_PROTOCOL_TCP) >>> goto trace0; >>> >>> Then use ip4_next_header() to find the tcp layer, etc. etc. >> >> Actually, I'm already able to access L3 and L4 structures. But, when I have >> the >> following, for instance: >> >> ip40 = vlib_buffer_get_current (b0); >> if (ip40->protocol == IP_PROTOCOL_TCP) >> { >> tcp_header_t *tcp = ip4_next_header(ip40); >> // where are options (tcp_options_t) ? >> } >> >> How am I able to access TCP options for each packet ? I mean, I could >> directly >> parse them by moving the data pointer but I've also seen a function called >> tcp_options_parse (see my previous email) that already does this job. How >> would >> you proceed to do this ? The expected behavior is to match some options and >> strip them. >> >> Thanks, >> >> Justin >> ___ >> vpp-dev mailing list >> vpp-dev@lists.fd.io > > https://lists.fd.io/mailman/listinfo/vpp-dev ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] TCP Options: tcp_header_t and tcp_options_t
Hi Dave, Thanks (again) for your reply. > Brief commercial: hopefully you added your node to the ip4 unicast feature > arc, > configured to grab pkts, pre-ip4/6-lookup. Indeed, I added my node to the ip4-unicast feature arc. > In feature-arc land, the following one-liner sets next0 so pkts will visit the > next enabled feature. The last node in the ip4-unicast feature arc is > ip4-lookup... > > /* Next node in unicast feature arc */ > vnet_get_config_data (em->config_main[table_index], > &b0->current_config_index, &next0, > /* # bytes of config data */ 0); > > Check the ip protocol and ignore any non-TCP pkts: > > ip40 = vlib_buffer_get_current (b0); > if (ip40->protocol != IP_PROTOCOL_TCP) >goto trace0; > > Then use ip4_next_header() to find the tcp layer, etc. etc. Actually, I'm already able to access L3 and L4 structures. But, when I have the following, for instance: ip40 = vlib_buffer_get_current (b0); if (ip40->protocol == IP_PROTOCOL_TCP) { tcp_header_t *tcp = ip4_next_header(ip40); // where are options (tcp_options_t) ? } How am I able to access TCP options for each packet ? I mean, I could directly parse them by moving the data pointer but I've also seen a function called tcp_options_parse (see my previous email) that already does this job. How would you proceed to do this ? The expected behavior is to match some options and strip them. Thanks, Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] TCP Options: tcp_header_t and tcp_options_t
Guys, My node is located right before ip4_lookup. What's the fastest/cleanest way to get options related to a TCP packet, having access to a tcp_header_t structure (which is not directly linked to its options) ? Actually, I'd like to modify or remove some options on the fly. Do I have to call tcp_options_parse function from src/vnet/tcp/tcp_input.c ? But I guess it would duplicate the job, since it is already called at one moment. Or should I get the TCP connection, which connects both tcp_header_t and tcp_options_t ? Or should I directly modify options "in" the packet, by moving the data pointer (a sort-of copy of what tcp_options_parse already does) ? Thanks for your help ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] Packet Generator for TCP traffic
Guys, I'm facing the same problem as explained by someone else in this thread ( https://lists.fd.io/pipermail/vpp-dev/2016-June/001445.html ) which is not solved. Actually, I'm just trying to generate some TCP traffic and it "works" by removing "TCP: sport -> dport" and "SYN" lines. Well... by it "works" I mean it almost works. As mentioned in the thread, checksums are wrong. I deeply investigated src/vnet/tcp/tcp_pg.c and more precisely unformat_pg_tcp_header function. Looking at the code, it seems that both "SYN" and "TCP: sport -> dport" should be accepted, while "TCP saddr -> daddr" shouldn't (can't see any unformat for it in there). I thought it would work the same way as UDP, which seems to be the case or at least the expected behavior. What am I missing here ? The source code I'm looking at is the 17.10 version, while I'm running my test from binaries (v17.10-rc2~14-g116af21~b44). Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] vlib_validate_buffer_enqueue
Dave, Thanks for your (deep) explanation. Same for Chris, thank you :-) Justin > Dear Justin, > > Quad-loops are generally not effective for table-lookup-intensive tasks. At a > certain point, gcc runs out of registers and starts putting hot variables onto > the stack. I've converted a number of dual loops into quad loops, only to > discover that they're no faster than the dual loop version. > > Rather than having the sample plugin propagate a bunch of "fetch me a rock" > coding work, I went with a dual-single loop. When doing new development, I > shut > off the dual loop, make the single loop work, then build the dual (or quad) > loop. > > With experience, building a dual (or quad) loop becomes a mechanical exercise > easily done during a boring meeting. (😉)... > > In viable quad-loop use-cases, it's not worth any performance to also provide > a > dual loop. The dual-loop code will run at most one time; there's no chance of > fixed overhead amortization. > > Thanks… Dave > > -Original Message----- > From: vpp-dev-boun...@lists.fd.io [mailto:vpp-dev-boun...@lists.fd.io] On > Behalf > Of Justin Iurman > Sent: Monday, November 13, 2017 5:51 AM > To: vpp-dev > Subject: [vpp-dev] vlib_validate_buffer_enqueue > > Hey guys, > > In buffer_node.h, there are the following macros: > - vlib_validate_buffer_enqueue_x1 > - vlib_validate_buffer_enqueue_x2 > - vlib_validate_buffer_enqueue_x4 > > In a node, I was just wondering what was the use idea behind that ? Is it for > a > reason of speed ? I mean, you're obviously faster if you process 4 packets > horizontally than one after the other. Why then, in the sample plugin, is the > "x4" version not used ? A "perfect" plugin would use each of them to cover > each > case, right ? Also, why not having a "x8" (or more) version ? I guess it's > either for a performance issue or to stop at a specific ceiling. > > Thanks ! > > Justin > ___ > vpp-dev mailing list > vpp-dev@lists.fd.io > https://lists.fd.io/mailman/listinfo/vpp-dev ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] vlib_validate_buffer_enqueue
Hey guys, In buffer_node.h, there are the following macros: - vlib_validate_buffer_enqueue_x1 - vlib_validate_buffer_enqueue_x2 - vlib_validate_buffer_enqueue_x4 In a node, I was just wondering what was the use idea behind that ? Is it for a reason of speed ? I mean, you're obviously faster if you process 4 packets horizontally than one after the other. Why then, in the sample plugin, is the "x4" version not used ? A "perfect" plugin would use each of them to cover each case, right ? Also, why not having a "x8" (or more) version ? I guess it's either for a performance issue or to stop at a specific ceiling. Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] bug/issue notification
Dave, Thanks for that, I didn't know install.sh was deprecated. What about build.sh ? They both seem to be included for execution in VagrantFile. Anyway, if I follow the link you gave me, where should I start from ? If I start with "Build a VPP Package" section, isn't it a duplicate since, I think, the build process (build.sh) is executed during "vagrant up" ? Indeed, all deb packages are already built in /vpp/build-root/ when I logged into it with "vagrant ssh". So, my guess was to directly start with "Install a VPP Package" section, which is actually what is executed with the now-deprecated install.sh. What should I do ? Justin - Mail original - De: "Dave Wallace" À: "Justin Iurman" , "vpp-dev" Envoyé: Lundi 16 Octobre 2017 16:06:11 Objet: Re: [vpp-dev] bug/issue notification Justin, install.sh has not been used for many releases and should probably just be removed as it has not been maintained with the updating of the packaging. In order to install VPP in the VM, just follow the recipe in https://wiki.fd.io/view/VPP/Build,_install,_and_test_images Thanks, -daw- On 10/16/2017 07:56 AM, Justin Iurman wrote: > Hey guys, > > Here are two issues I faced while installing/running VPP. It would be great > to fix them. > > 1) Install not executed (at least, it seems that it's the case...) - tested > with current version 18.01 (cloned today) but it's the same with previous > versions too. > > git clone https://gerrit.fd.io/r/vpp > cd vpp/build-root/vagrant > vagrant up > > **waiting during the installation of the VM** > Note: install.sh does not seem to be executed during this process (can't see > related outputs). > > In the VM when logged in with vagrant ssh: > > vvp <-- not found > cd /vpp/build-root/vagrant > ./install.sh <- Permission denied > > First problem: need to manually chmod +x install.sh (maybe that's the reason > why ?). > > Then, execute it again. It finishes but tells me there is a dependency error > (second problem): package python-cffi is not installed. To manually fix it, I > do the following: > > sudo apt-get install python-cffi > sudo apt-get -f install > > After that, install goes fine. Also, note that I've a plugin where a > reference to "vlibsocket/api.h" needs to be removed from plugin.c and > plugin_test.c in order to compile (removed/moved in this new version of VPP > ?). > > 2) This bug seems to be gone since last week with vpp 18.01 (cloned today: > Monday 16 October 2017). But I'll mention it, just in case you didn't hear > about it. When running: "sudo vppctl -s /run/vpp/cli-vpp1.sock create > host-interface name vpp1out", an error was returned (sorry, I don't remember > exactly what was said). And this error was not in earlier versions (around > the 25 September 2017 I'd say). > > Thanks ! > > Justin > ___ > vpp-dev mailing list > vpp-dev@lists.fd.io > https://lists.fd.io/mailman/listinfo/vpp-dev ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] bug/issue notification
Hey guys, Here are two issues I faced while installing/running VPP. It would be great to fix them. 1) Install not executed (at least, it seems that it's the case...) - tested with current version 18.01 (cloned today) but it's the same with previous versions too. git clone https://gerrit.fd.io/r/vpp cd vpp/build-root/vagrant vagrant up **waiting during the installation of the VM** Note: install.sh does not seem to be executed during this process (can't see related outputs). In the VM when logged in with vagrant ssh: vvp <-- not found cd /vpp/build-root/vagrant ./install.sh <- Permission denied First problem: need to manually chmod +x install.sh (maybe that's the reason why ?). Then, execute it again. It finishes but tells me there is a dependency error (second problem): package python-cffi is not installed. To manually fix it, I do the following: sudo apt-get install python-cffi sudo apt-get -f install After that, install goes fine. Also, note that I've a plugin where a reference to "vlibsocket/api.h" needs to be removed from plugin.c and plugin_test.c in order to compile (removed/moved in this new version of VPP ?). 2) This bug seems to be gone since last week with vpp 18.01 (cloned today: Monday 16 October 2017). But I'll mention it, just in case you didn't hear about it. When running: "sudo vppctl -s /run/vpp/cli-vpp1.sock create host-interface name vpp1out", an error was returned (sorry, I don't remember exactly what was said). And this error was not in earlier versions (around the 25 September 2017 I'd say). Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] Build/Install new plugin without rebuilding everything
Thank you very much Damjan, it works like a charm. Justin - Mail original - De: "Damjan Marion" À: "Justin Iurman" Cc: "vpp-dev" Envoyé: Mardi 10 Octobre 2017 18:36:47 Objet: Re: [vpp-dev] Build/Install new plugin without rebuilding everything > On 10 Oct 2017, at 18:12, Justin Iurman wrote: > > Hi folks, > > I was just wondering how I could build my own plugin without rebuilding > everything from scratch in vpp ? I mean, here are two ways I found to build a > plugin: > - First technique (long, rebuilds everything): > https://docs.fd.io/vpp/17.07/sample_plugin_doc.html > - Second technique (fast, only builds what needs to be, "sample-plugin" > specific): https://wiki.fd.io/view/VPP/Tutorial_DPDK_and_MacSwap#Compilation > > What's the difference between the two ? Is one of the two obsolete, not > appropriate in that case ? I just don't get it, as it looks like there are > two different notions of plugins. > > I don't like the first one because it rebuilds everything and it takes ages. > > I'd like to use the second one, if possible. For that, I've added a file > called "myown-plugin.mk" in "build-data/packages" with equivalent (but > modified for that specific case) content as "sample-plugin.mk". Anyway, it > doesn't work when running "make V=0 PLATFORM=vpp TAG=vpp > myown-plugin-install", as I receive everytime an error. It says that it can't > find "myown-plugin" source in "/vpp". Which is weird because I've exactly the > same "myown" files (everywhere) as "sample-plugin". > > What am I missing here ? Thanks ! Sample-plugin is exactly the sample of external VPP plugin which can be compiled separately of VPP. Just copy the files to your location and do usual “autoreconf -fis ; ./configure; make” sequence. Before doing that you need to install vpp-dev development package which will install required headers…. -- Justin Iurman Université de Liège (ULg) Bât. B28 Algorithmique des Grands Systèmes Quartier Polytech 1 Allée de la Découverte 10 4000 Liège Phone: +32 4 366 28 09 ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] Build/Install new plugin without rebuilding everything
Hi folks, I was just wondering how I could build my own plugin without rebuilding everything from scratch in vpp ? I mean, here are two ways I found to build a plugin: - First technique (long, rebuilds everything): https://docs.fd.io/vpp/17.07/sample_plugin_doc.html - Second technique (fast, only builds what needs to be, "sample-plugin" specific): https://wiki.fd.io/view/VPP/Tutorial_DPDK_and_MacSwap#Compilation What's the difference between the two ? Is one of the two obsolete, not appropriate in that case ? I just don't get it, as it looks like there are two different notions of plugins. I don't like the first one because it rebuilds everything and it takes ages. I'd like to use the second one, if possible. For that, I've added a file called "myown-plugin.mk" in "build-data/packages" with equivalent (but modified for that specific case) content as "sample-plugin.mk". Anyway, it doesn't work when running "make V=0 PLATFORM=vpp TAG=vpp myown-plugin-install", as I receive everytime an error. It says that it can't find "myown-plugin" source in "/vpp". Which is weird because I've exactly the same "myown" files (everywhere) as "sample-plugin". What am I missing here ? Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] Running multiple instances of VPP as it was allowed with VPP-lite
Ed, Thanks for the update and your good advice. I appreciate it. Justin - Mail original - De: "Ed Warnicke" À: "Justin Iurman" Cc: "vpp-dev" Envoyé: Jeudi 5 Octobre 2017 23:53:17 Objet: Re: [vpp-dev] Running multiple instances of VPP as it was allowed with VPP-lite If you want to take it to the next level, and do a great service to your fellow man, I would encourage you to update the tutorial to use: https://docs.fd.io/vpp/17.10/clicmd_src_plugins_memif.html to interconnect the various vpp instances :) Ed On Thu, Oct 5, 2017 at 2:50 PM, Ed Warnicke wrote: > Justin, > > I've fixed the tutorial in this area: > > https://wiki.fd.io/view/VPP/Progressive_VPP_Tutorial > > Here's the net net. Damjan improved the vppctl, rewriting it in C, and > having it talk over a file socket to vpp. This is goodness. It does mean > you do the multi-vpp instance thing a bit differently though: > > sudo vpp unix {cli-listen /run/vpp/cli-vpp1.sock} api-segment { prefix > vpp1 } > > sudo vppctl -s /run/vpp/cli-vpp1.sock > > Thanks for asking, it prompted me to fix the tutorial :) > > Ed > > On Wed, Oct 4, 2017 at 9:23 AM, Justin Iurman > wrote: > >> Hi all, >> >> Is it still possible to run multiple instances of VPP, just like it was >> done with VPP-lite (see here: https://wiki.fd.io/view/VPP/Pr >> ogressive_VPP_Tutorial) before merging it ? >> >> Actually, my problem is the following. I need to run several instances of >> VPP (eg. vpp1, vpp2, vpp3, etc) to simulate a topology. But, for some >> reason, I'm not able to make it work as expected. I've already disabled >> DPDK plugin to run in "lite" mode. Could it be a configuration issue ? VPP >> startup.conf: >> >> unix { >> nodaemon >> log /tmp/vpp.log >> full-coredump >> cli-listen /run/vpp/cli.sock >> gid vpp >> } >> >> api-trace { >> on >> } >> >> api-segment { >> gid vpp >> } >> >> plugins { >> plugin dpdk_plugin.so { disable } >> } >> >> I tried to compare both VPP and VPP-lite. A first observation showed that >> VPP is installed as a service, which is not the case for VPP-lite. I've >> also compared both config files. Here is VPP-lite startup.conf: >> >> unix { >> nodaemon >> log /tmp/vpp.log >> full-coredump >> } >> >> api-trace { >> on >> } >> >> api-segment { >> gid vpp >> } >> >> Currently, here is how I try to mimic VPP-lite behavior with VPP: >> >> sudo vpp api-segment { prefix vpp1 } unix { cli-listen >> /run/vpp/cli.vpp1.sock } >> sudo vppctl -s /run/vpp/cli.vpp1.sock >> >> It works for one instance, but not for more, even if it does not throw >> any error. Do you have any idea on how to proceed or what is wrong here ? >> >> Thanks ! >> >> Justin >> ___ >> vpp-dev mailing list >> vpp-dev@lists.fd.io >> https://lists.fd.io/mailman/listinfo/vpp-dev >> > > -- Justin Iurman Université de Liège (ULg) Bât. B28 Algorithmique des Grands Systèmes Quartier Polytech 1 Allée de la Découverte 10 4000 Liège Phone: +32 4 366 28 09 ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] Running multiple instances of VPP as it was allowed with VPP-lite
Florin, Thanks for that. What's the difference between my technique and yours using telnet ? Also, what does the 0 correspond to ? Is it an instance index or something else ? Justin > Le 5 oct. 2017 à 17:23, Florin Coras a écrit : > > Justin, > > That looks about right. The other option would be to use telnet. So instead > of > “cli-listen /run/vpp/cli.vpp1.sock” do something like “cli-listen > localhost:5002” and then telnet 0 5002 > > Florin > >> On Oct 5, 2017, at 1:18 AM, Justin Iurman wrote: >> >> Hi Florin, >> >> In fact, that's what I was already trying. Anyway, I found a way to make it >> work but I'm still not sure that's the right/best way to do so. >> >> # vpp1 instance >> sudo vpp unix { log /tmp/vpp1.log full-coredump cli-listen >> /run/vpp/cli.vpp1.sock } api-segment { prefix vpp1 } api-trace { on } >> plugins { plugin dpdk_plugin.so { disable } } >> >> # vpp2 instance >> sudo vpp unix { log /tmp/vpp2.log full-coredump cli-listen >> /run/vpp/cli.vpp2.sock } api-segment { prefix vpp2 } api-trace { on } >> plugins { plugin dpdk_plugin.so { disable } } >> >> # vppctl vpp1 >> sudo vppctl -s /run/vpp/cli.vpp1.sock >> >> # vppctl vpp2 >> sudo vppctl -s /run/vpp/cli.vpp2.sock >> >> Since I build a dynamic topology, I won't use startup config files. That's >> why i'm using parameters in command line. Commands above work good, as it >> mimics the behavior I had with VPP-lite. But again, is it the right/best way >> to do so ? Or would there be anything better suited ? >> >> Justin >> >> - Mail original - >> De: "Florin Coras" >> À: "Justin Iurman" >> Cc: vpp-dev@lists.fd.io >> Envoyé: Mercredi 4 Octobre 2017 18:32:27 >> Objet: Re: [vpp-dev] Running multiple instances of VPP as it was allowed >> with VPP-lite >> >> Hi Justin, >> >> Try api-segment {prefix } >> >> Florin >> >>> On Oct 4, 2017, at 9:23 AM, Justin Iurman wrote: >>> >>> Hi all, >>> >>> Is it still possible to run multiple instances of VPP, just like it was >>> done with VPP-lite (see here: >>> https://wiki.fd.io/view/VPP/Progressive_VPP_Tutorial) before merging it ? >>> >>> Actually, my problem is the following. I need to run several instances of >>> VPP (eg. vpp1, vpp2, vpp3, etc) to simulate a topology. But, for some >>> reason, I'm not able to make it work as expected. I've already disabled >>> DPDK plugin to run in "lite" mode. Could it be a configuration issue ? VPP >>> startup.conf: >>> >>> unix { >>> nodaemon >>> log /tmp/vpp.log >>> full-coredump >>> cli-listen /run/vpp/cli.sock >>> gid vpp >>> } >>> >>> api-trace { >>> on >>> } >>> >>> api-segment { >>> gid vpp >>> } >>> >>> plugins { >>> plugin dpdk_plugin.so { disable } >>> } >>> >>> I tried to compare both VPP and VPP-lite. A first observation showed that >>> VPP is installed as a service, which is not the case for VPP-lite. I've >>> also compared both config files. Here is VPP-lite startup.conf: >>> >>> unix { >>> nodaemon >>> log /tmp/vpp.log >>> full-coredump >>> } >>> >>> api-trace { >>> on >>> } >>> >>> api-segment { >>> gid vpp >>> } >>> >>> Currently, here is how I try to mimic VPP-lite behavior with VPP: >>> >>> sudo vpp api-segment { prefix vpp1 } unix { cli-listen >>> /run/vpp/cli.vpp1.sock } >>> sudo vppctl -s /run/vpp/cli.vpp1.sock >>> >>> It works for one instance, but not for more, even if it does not throw any >>> error. Do you have any idea on how to proceed or what is wrong here ? >>> >>> Thanks ! >>> >>> Justin >>> ___ >>> vpp-dev mailing list >>> vpp-dev@lists.fd.io >>> https://lists.fd.io/mailman/listinfo/vpp-dev > ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
Re: [vpp-dev] Running multiple instances of VPP as it was allowed with VPP-lite
Hi Florin, In fact, that's what I was already trying. Anyway, I found a way to make it work but I'm still not sure that's the right/best way to do so. # vpp1 instance sudo vpp unix { log /tmp/vpp1.log full-coredump cli-listen /run/vpp/cli.vpp1.sock } api-segment { prefix vpp1 } api-trace { on } plugins { plugin dpdk_plugin.so { disable } } # vpp2 instance sudo vpp unix { log /tmp/vpp2.log full-coredump cli-listen /run/vpp/cli.vpp2.sock } api-segment { prefix vpp2 } api-trace { on } plugins { plugin dpdk_plugin.so { disable } } # vppctl vpp1 sudo vppctl -s /run/vpp/cli.vpp1.sock # vppctl vpp2 sudo vppctl -s /run/vpp/cli.vpp2.sock Since I build a dynamic topology, I won't use startup config files. That's why i'm using parameters in command line. Commands above work good, as it mimics the behavior I had with VPP-lite. But again, is it the right/best way to do so ? Or would there be anything better suited ? Justin - Mail original - De: "Florin Coras" À: "Justin Iurman" Cc: vpp-dev@lists.fd.io Envoyé: Mercredi 4 Octobre 2017 18:32:27 Objet: Re: [vpp-dev] Running multiple instances of VPP as it was allowed with VPP-lite Hi Justin, Try api-segment {prefix } Florin > On Oct 4, 2017, at 9:23 AM, Justin Iurman wrote: > > Hi all, > > Is it still possible to run multiple instances of VPP, just like it was done > with VPP-lite (see here: > https://wiki.fd.io/view/VPP/Progressive_VPP_Tutorial) before merging it ? > > Actually, my problem is the following. I need to run several instances of VPP > (eg. vpp1, vpp2, vpp3, etc) to simulate a topology. But, for some reason, I'm > not able to make it work as expected. I've already disabled DPDK plugin to > run in "lite" mode. Could it be a configuration issue ? VPP startup.conf: > > unix { > nodaemon > log /tmp/vpp.log > full-coredump > cli-listen /run/vpp/cli.sock > gid vpp > } > > api-trace { > on > } > > api-segment { > gid vpp > } > > plugins { > plugin dpdk_plugin.so { disable } > } > > I tried to compare both VPP and VPP-lite. A first observation showed that VPP > is installed as a service, which is not the case for VPP-lite. I've also > compared both config files. Here is VPP-lite startup.conf: > > unix { > nodaemon > log /tmp/vpp.log > full-coredump > } > > api-trace { > on > } > > api-segment { > gid vpp > } > > Currently, here is how I try to mimic VPP-lite behavior with VPP: > > sudo vpp api-segment { prefix vpp1 } unix { cli-listen /run/vpp/cli.vpp1.sock > } > sudo vppctl -s /run/vpp/cli.vpp1.sock > > It works for one instance, but not for more, even if it does not throw any > error. Do you have any idea on how to proceed or what is wrong here ? > > Thanks ! > > Justin > ___ > vpp-dev mailing list > vpp-dev@lists.fd.io > https://lists.fd.io/mailman/listinfo/vpp-dev ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev
[vpp-dev] Running multiple instances of VPP as it was allowed with VPP-lite
Hi all, Is it still possible to run multiple instances of VPP, just like it was done with VPP-lite (see here: https://wiki.fd.io/view/VPP/Progressive_VPP_Tutorial) before merging it ? Actually, my problem is the following. I need to run several instances of VPP (eg. vpp1, vpp2, vpp3, etc) to simulate a topology. But, for some reason, I'm not able to make it work as expected. I've already disabled DPDK plugin to run in "lite" mode. Could it be a configuration issue ? VPP startup.conf: unix { nodaemon log /tmp/vpp.log full-coredump cli-listen /run/vpp/cli.sock gid vpp } api-trace { on } api-segment { gid vpp } plugins { plugin dpdk_plugin.so { disable } } I tried to compare both VPP and VPP-lite. A first observation showed that VPP is installed as a service, which is not the case for VPP-lite. I've also compared both config files. Here is VPP-lite startup.conf: unix { nodaemon log /tmp/vpp.log full-coredump } api-trace { on } api-segment { gid vpp } Currently, here is how I try to mimic VPP-lite behavior with VPP: sudo vpp api-segment { prefix vpp1 } unix { cli-listen /run/vpp/cli.vpp1.sock } sudo vppctl -s /run/vpp/cli.vpp1.sock It works for one instance, but not for more, even if it does not throw any error. Do you have any idea on how to proceed or what is wrong here ? Thanks ! Justin ___ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev