aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-plugin/src/pcs.h
AgeCommit message (Collapse)AuthorFilesLines
2022-08-04feat: Due to the deep modifications related to names and packet format,Luca Muscariello1-2/+2
this task cover a large part of the codebase and involves several changes: - the library provides a name data structure (hicn_name_t ), which is composed of a name prefix (hicn_name_prefix_t) and a name suffix (hicn_name_suffix_t), and it has been extended to provide all support functions required for name manipulation, including common prefix computation, as required for the Longest Prefix Match (LPM)in the forwarder, in addition to Exact Prefix Match (EPM). - all code has been rewritten to use this data structure instead of having for instance the forwarder define its own name class (used to be Name and NameBitVector) the code has been refactored to minimize name allocations and copies, one remaining aspect is the difference of name storage between PIT and CS entries (respectively in the PIT entry, and in the message buffer), which causes the packet cache index to be updated when a PIT entry is converted into a CS entry. By storing the name in the PIT/CS entry everytime, we might save on this operation). - hicn-light FIB has been rewritten : code has been refactored and should now be shorter and documented; unit tests have been drafted but more would be required to cover all cases and match the algorithms to add/remove nodes, as specified in the doc. all protocol details and hICN header formats are now abstracted by the library for the forwarder (and thus header.h and  protocols/*.h have been removed from public includes, and replaced by packet.h providing protocol agnostic packet level functions, completely replacing the compat.h header that used to provide similar functions. - this works by exposing a opaque buffer to the application (a kind of socket buffer) which is used by the lib to cache the packet format and offsets of the different layers in the buffer and provider efficient operations (the packet format is either defined for packet construction, or guessed at ingress, and this structure is updated accordingly only once). Co-authored-by: Jordan Augé <jordan.auge+fdio@cisco.com> Signed-off-by: Luca Muscariello <muscariello@ieee.org> Change-Id: I31e321897f85f0267fe8ba4720363c180564492f
2022-07-01Revision and refactor of the VPP plugin with fixes for theLuca Muscariello1-545/+570
packet generator. Hash table for the packet cache has been changed with the bihash. Co-authored-by: Mauro Sardara <msardara@cisco.com> Signed-off-by: Luca Muscariello <muscariello@ieee.org> Change-Id: I0e0191a9f109d37081d32cc55d577ea43533f8c0 Signed-off-by: Mauro Sardara <msardara@cisco.com>
2022-03-31feat: boostrap hicn 22.02Luca Muscariello1-51/+13
The current patch provides several new features, improvements, bug fixes and also complete rewrite of entire components. - lib The hicn packet parser has been improved with a new packet format fully based on UDP. The TCP header is still temporarily supported but the UDP header will replace completely the new hicn packet format. Improvements have been made to make sure every packet parsing operation is made via this library. The current new header can be used as header between the payload and the UDP header or as trailer in the UDP surplus area to be tested when UDP options will start to be used. - hicn-light The portable packet forwarder has been completely rewritten from scratch with the twofold objective to improve performance and code size but also to drop dependencies such as libparc which is now removed by the current implementation. - hicn control the control library is the agent that is used to program the packet forwarders via their binary API. This component has benefited from significant improvements in terms of interaction model which is now event driven and more robust to failures. - VPP plugin has been updated to support VPP 22.02 - transport Major improvement have been made to the RTC protocol, to the support of IO modules and to the security sub system. Signed manifests are the default data authenticity and integrity framework. Confidentiality can be enabled by sharing the encryption key to the prod/cons layer. The library has been tested with group key based applications such as broadcast/multicast and real-time on-line meetings with trusted server keys or MLS. - testing Unit testing has been introduced using GoogleTest. One third of the code base is covered by unit testing with priority on critical features. Functional testing has also been introduce using Docker, linux bridging and Robot Framework to define test with Less Code techniques to facilitate the extension of the coverage. Co-authored-by: Mauro Sardara <msardara@cisco.com> Co-authored-by: Jordan Augé <jordan.auge+fdio@cisco.com> Co-authored-by: Michele Papalini <micpapal@cisco.com> Co-authored-by: Angelo Mantellini <manangel@cisco.com> Co-authored-by: Jacques Samain <jsamain@cisco.com> Co-authored-by: Olivier Roques <oroques+fdio@cisco.com> Co-authored-by: Enrico Loparco <eloparco@cisco.com> Co-authored-by: Giulio Grassi <gigrassi@cisco.com> Change-Id: I75d0ef70f86d921e3ef503c99271216ff583c215 Signed-off-by: Luca Muscariello <muscariello@ieee.org> Signed-off-by: Mauro Sardara <msardara@cisco.com>
2021-02-10[HICN-682] Fix hicn-plugin to be compatible with version 21.01Mauro Sardara1-187/+177
Signed-off-by: Mauro Sardara <msardara@cisco.com> Change-Id: Ia116ad74ce78e2ca2d7ee624eea75a38936d27f8 Signed-off-by: Mauro Sardara <msardara@cisco.com>
2020-09-18Revert to [HICN-638] Check if systemd is running before enabling hicn-light ↵Mauro Sardara1-0/+839
service Signed-off-by: Mauro Sardara <msardara@cisco.com> Change-Id: I1810d96e001a4e6e097e1efa331b682af750925d
2020-09-14[HICN-574] Host stack plugin for VPP.Mauro Sardara1-839/+0
Signed-off-by: Mauro Sardara <msardara@cisco.com> Change-Id: I8d8fdffef31a7013265d6529c5f52f3d5ec70d18 Signed-off-by: Mauro Sardara <msardara@cisco.com> Signed-off-by: Mauro <you@example.com> Signed-off-by: Mauro Sardara <msardara@cisco.com>
2020-05-06[HICN-606] Added doxygen documentationAlberto Compagno1-15/+15
Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com> Change-Id: If2bf7f4f310adf6adbbb9ea29eafcb2a0ee40d54
2020-05-04[HICN-590] Removed andjacency type specific face implementationAlberto Compagno1-96/+26
Changes in the new implementation are: - the adjacency index is replaced with a dpo that allows the single face node to dispatch the packet to the right vlib node. - local and remote address in the face are replaced with a single nat address which is used to perform the nat operation when rewriting an interest or a data (in case of tunnels the nat address will be equal to 0) - the list of next hop in the load balance is no longer a list of dpos but a list of face id (this makes the code easier and increases the number of next hop we supports) Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com> Change-Id: I4ac2b4eb09425bfe1b3ca9f82d7d0ff564297b0d
2020-03-19[HICN-547] Removing punting through acl for interestsAlberto Compagno1-58/+61
Change-Id: I71767f732ec6ede1efc66e5a99f09c3207367dcb Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-10-22[HICN-342] No need to take a lock on the hash entry if the lookup forAlberto Compagno1-6/+22
a data hit the CS. Data packets coming from the network are dropped, data packets coming from an application face are either dropped or sent to the push node (which does not require a lock on the hash entry) Change-Id: Icf662dffa33b9dda2e2a69fc2104a69a82ef19fd Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-10-09[HICN-169] Fixed counters that were decrementing or negative.Alberto Compagno1-1/+1
Change-Id: I9165a863ac29e9386f49fdbc09da85e2fcc57750 Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-06-05[HICN-211] Missing parentesis on vlib_validate_buffer_enqueue_x2 was causing ↵Alberto Compagno1-2/+0
a priority problem between * and [] Change-Id: I423e58bc91db9dc16a75bdc8065a2740d0160c1d Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-05-24[HICN-197] Supporting multiple local faces for the same prefix. Fixed buffer ↵Alberto Compagno1-10/+56
deallocation when data are pushed from the application. Change-Id: Ibc9625e420d0c8579be3d7f1310a08a5e37f765a Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-05-19[HICN-197] Reworked PIT/CS entry initialization to correctly initialize it ↵Alberto Compagno1-0/+8
when data are pushed to the CS from a local application. Change-Id: I64a2bab413e74460b048f7c716630d9fcd5200cc Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-05-16[HICN-197] Fixed missing deallocation when data was pushed from a local ↵Alberto Compagno1-2/+4
application Change-Id: I9f7d8bf0ffbebd43ee82112407da39473fa2ad7c Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-02-20[HICN-71]Alberto Compagno1-1/+1
- Handling the case in which a pushed data hit an existing pit entry (created after the data has gone through the data_pcslookup_node). In this case the data packet is forwarded to the data_fwd_node - Handling the case in which the hash table (in pcs) is full and it is not possible to allocate another bucket. In this case the packet is dropped. - Copying packets whose length is less than 128B. VPP prevents to create a chain of vlib_buffer where the first, or middle, vlib_buffer are holding less then 128B. [HICN-72] - Assign a /128 subnet to the producer app face. Change-Id: I6c19d6d127774a7f59ac69ac965d4bcd6a72becc Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-01-30[HICN-18] first commit of libtransport for windowsAngelo Mantellini1-0/+0
Change-Id: I3a43b22194aa13ae5de1746e3d4bd9a275070261 Signed-off-by: Angelo Mantellini <manangel@cisco.com>
2019-01-19Improved performance on data-fwd node:Alberto Compagno1-3/+3
- Removed full pit entry initialization in favor of a lighter initialization on few fields - Squeezed pit entry size in order to store only the number of incomplete faces (as set in HICN_PARAM_PIT_ENTRY_PHOPS_MAX). The bitmap size is now determined by HICN_PARAM_FACES_MAX and optimized to do a fast lookup Replaced the field is_appface with the field flags in the hicn_buffer_t: - is_appface is now a flag with value 0x01 (HICN_BUFFER_FLAGS_FACE_IS_APP) - Added flag HICN_BUFFER_FLAGS_PKT_LESS_TWO_CL (0x02) to handle the copy of pkt with length < than 2*CACHE_LINES (in this case cloning is prevented by the cloning function in vpp). Such flag is initialized by the incoming face of the pkt. Change-Id: Ia956fd5719a28ee29f7fa2fd23d283964743efd8 Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
2019-01-17This is the first commit of the hicn projectv19.01Luca Muscariello1-0/+836
Change-Id: I6f2544ad9b9f8891c88cc4bcce3cf19bd3cc863f Signed-off-by: Luca Muscariello <lumuscar+fdio@cisco.com>