Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help with NSE Composition #12573

Open
anselmobattisti opened this issue Dec 2, 2024 · 2 comments
Open

Help with NSE Composition #12573

anselmobattisti opened this issue Dec 2, 2024 · 2 comments

Comments

@anselmobattisti
Copy link
Contributor

Question

I am working on creating a network service with the following structure.

image

I reviewed the example at Floating NSE Composition, but it involves many moving parts, and I’m not sure how to adapt it to fit my specific needs.

Is there an example of a composed service with fewer components or a simpler structure? This would help me better understand how to customize it for my use case.

Thanks for any response.

@denis-tingaikin
Copy link
Member

Hi @anselmobattisti,

Is there an example of a composed service with fewer components or a simpler structure?

No, I've just checked, and we indeed don't have an example with just interdomain NSE composition. I think it's possible to deploy it without floating components.

Before we consider that, could you say a bit more about the troubles/challenges that you faced during the use of the floating NSE composition example?

@anselmobattisti
Copy link
Contributor Author

anselmobattisti commented Dec 3, 2024

Thank you for your kind response, @denis-tingaikin, and my apologies for the long reply that follows.

First of all, I have already read the documentation available at Network Service Mesh - Enterprise Users. It provides a solid overview of the key concepts and the main components offered by NSM.

I will break down my questions into 4 topics. Hopefully, with your response, it will help me and others gain a better understanding of NSM.

1 - My Specic Research

I am a PhD student at UFF (Universidade Federal Fluminense, Brazil), conducting research in the MidiaCom lab, where we focus on multimedia streams. My research specifically examines the placement of Service Function Chains (SFCs)—comprising chains of multimedia Virtual Network Functions (VNFs)—in a multi-domain environment.

Currently, our infrastructure comprises multiple clusters running Docker. However, we are moving to a cloud-native approach with K8s to offer a more heterogeneous and scalable solution for our partners. We are thinking that with NSM we can combine our already environment with docker with k8s containers.

I have already reviewed the use cases in your documentation, but I didn’t find anything related to our work. I’d like to share links to some of our published papers; perhaps in the future, the execution of multimedia SFCs could be considered as a use case. We have been working in this field for quite some time (since 2018).

A. L. É. Battisti, D. C. Muchaluat-Saade and F. C. Delicato, "V-PRISM: An Edge-Based IoT Architecture to Virtualize Multimedia Sensors," 2020 IEEE 6th World Forum on Internet of Things (WF-IoT), New Orleans, LA, USA, 2020, pp. 1-6, doi: 10.1109/WF-IoT48130.2020.9221199.

Macedo, E. L., Battisti, A. L., Vieira, J. L., Noce, J., Pires, P. F., Muchaluat-Saade, D. C., ... & Delicato, F. C. (2023). Distributed Auction-Based SFC Placement in a Multi-domain 5G Environment. SN Computer Science, 5(1), 48.

Quico, F., Battisti, A., Muchaluat-Saade, D., & Delicato, F. (2024). A Domain-Specific Language for Multimedia Service Function Chains based on Virtualization of Sensors. In Proceedings of the 30th Brazilian Symposium on Multimedia and the Web, (pp. 11-19). Porto Alegre: SBC. doi:10.5753/webmedia.2024.243129

However, before diving deep into the implementation of our environment, I need to verify if it's possible to use NSM in the way we envision. Therefore, we are creating a simple test scenario composed of:

The elements

a) 1 - iperf client
b) 1 - iperf server
c) n - packets forwarders

How it will work.

a) I will execute an iperf server in the last pod in the chain.

b) I will execute the iperf client in the first pod in the chain.

c) Each pod in the chain will execute a packet forward to the next element in the chain

Now, I will outline our main challenges.

**2 - NSM Client (NSC) **

In the documentation it is described:

A Client is independently authenticated (currently by Spiffe ID), and must be authorized to be attached to attach to a Network Service.

So, if I want to send a multimedia stream through an NSE Composition, do I need to implement code to communicate with Spire to obtain the vWire, or is the client the pod where my code is executed, meaning I only need to annotate the pod with the information about the NSE I want to communicate with?

3 - vWire

In the documentation it is described:

That which connects a Client to an Endpoint is a vWire or Virtual Wire .

What does this effectively mean? I read that NSM will create a new network interface in the client pod. Does this mean I will use this interface to send my packets?

If I understand correctly, how will my application know which network interface to use to send the packet? Is there an endpoint where I can query which interface is used for each pod in the chain of services that comprise the functions?

4 - Instalation Process

I understand that distributed systems are inherently complex, with many moving parts, and that for each cluster, I need to install different software components to make everything work.

For NSM, I see that for each use case, I need to install different apps (as listed in this repository) to set up NSM. However, within each app folder, there is no information explaining what the app does.

Let me clarify with an example: The cluster-info app (link). How should I use this app? I checked the repository for its code, but there isn’t sufficient information about its API or functionality. From the name, I assume it provides information about the cluster, which I would need for executing my SFC placement. Is that correct?

Similarly, reading the examples, I inferred that the vl3-ipam app is responsible for enabling the creation of the vWire and dynamically assigning IPs across the environment. However, I am not sure if this assumption is correct.

The installation process seems quite challenging for me. I believe that once I understand how each component works, it will become easier to integrate NSM into my use case. However, the current documentation for each component is not very user-friendly.

Could you clarify which components I need to install in each cluster to execute my use case? Any guidance on understanding the functionality of these apps would be greatly appreciated.

Thank you, @denis-tingaikin, for your kind responses.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants