HOME P4 PROJECT DEVELOPMENT DEMO

WHAT IS P4 LANGUAGE?

Programming Protocol-independent Packet Processors

P4 is a high-level programming language designed for describing how network packets are processed by network devices such as switches, routers, and network interface cards (NICs). P4 is protocol-independent, meaning that it is not tied to any particular network protocol, and instead provides a way to program the packet processing behavior of network devices at a high level.

With P4, network designers can define the way in which packets are processed and forwarded through a network, providing greater flexibility and control over network behavior. P4 programs can be used to define how packets are matched and modified, how routing decisions are made, and how quality of service (QoS) policies are implemented. This allows network operators to optimize their networks for specific use cases and to adapt to changing network requirements.

WHAT ARE SOME USES FOR P4 LANGUAGE?

Network Function Virtualization

P4 language can be used to program the packet processing behavior of virtual network functions in NFV architectures. This allows network operators to deploy and manage network functions in a more flexible and scalable manner.

Software-Defined Networking

P4 can be used to program the packet processing behavior of SDN switches and controllers. This allows network operators to define and manage network policies in a more granular and programmatic way.

Traffic Engineering

P4 can be used to optimize traffic engineering in large-scale networks, allowing network operators to control traffic routing and forwarding based on traffic patterns, network topology, and other factors.

WHAT IS THIS PROJECT?

What are we doing here?


The Problem

The limitations of big traditional networks have become apparent as their success has grown. They lack the flexibility needed to adapt to changing circumstances, making them cumbersome to manage and prone to outages. Furthermore, tracing issues throughout the network topology can be challenging, leading to lengthy downtime and frustrated users. Making rapid alterations to the network is nearly impossible, as it requires extensive planning and can often lead to preventative rather than reactive solutions. To address these challenges, a network designed using the P4 language is being developed.

The Project

This project aims to create a more dynamic and adaptable network infrastructure, which can be easily reconfigured to meet the demands of modern business environments. With its ability to quickly adapt and respond to changing conditions, this new network promises to revolutionize the way we think about traditional networking.

Components

To ensure the success of our network project, we have divided it into three parts, each designed by a different team member.

Controlling APIs

By: David Araújo

Backend

By: João Machado

Dashboard

By: Guilherme Craveiro

×

Controlling APIs

The controlling APIs section provides an overview of two critical APIs that offer comprehensive control over the network environment.

The first API translates HTTP requests into effective communication with P4 devices via the P4Runtime, which uses gRPC. The P4Runtime provides a standard and programmatic interface between control-plane applications and the underlying P4-based data plane devices. This API facilitates the control of a variety of P4-based devices, including switches, routers, network interface cards (NICs), and other devices. With P4Runtime, network operators can achieve fine-grained control over network behavior, including packet forwarding and processing.

The second API enables programmatic control over a Mininet network environment using HTTP requests. Mininet is a popular open-source network emulator that enables rapid prototyping and testing of complex network scenarios. With this API, network operators can dynamically create, configure, and destroy network topologies on-demand. This API provides an intuitive and easy-to-use interface for network operators to control network behavior and experiment with different network topologies, routing schemes, and traffic patterns.

Controlling APIs
×

Backend

Backend

Our backend is built with a flexible data model using MongoDB, allowing for easy scalability and customization based on your needs. Whether you're handling large amounts of data or require specific data structures, our backend can accommodate it.

We understand the importance of security and privacy when it comes to handling user data. Our backend provides built-in authentication and authorization mechanisms to ensure only authorized users have access to specific data. Additionally, we provide user metadata storage to support user-level customization and personalization of your application.

We provide seamless integration with Prometheus and Grafana for metric visualization and monitoring. Our backend generates metric data to help you make informed decisions and provide insights into your application's performance.

Our backend provides a service broker to enable easy communication between microservices, ensuring smooth and efficient communication between different parts of your application.

Our backend is built using a microservice architecture, allowing for the creation and deployment of independent services that can be scaled and modified as needed. This architecture ensures flexibility, resilience, and scalability, making it an ideal choice for modern applications.

×

Dashboard

A dashboard is a powerful tool that provides a user-friendly interface to display critical information about a network topology.

A well-designed dashboard generates tables that display available network topologies, including details about hosts, switches, and the links that connect them.

This information helps network administrators identify issues and quickly troubleshoot problems. In addition, the dashboard includes information about the team responsible for managing the network and provides assistance to non-experienced users.

Controlling APIs

By presenting all relevant information in a clear and concise manner, a well-designed dashboard enhances network visibility and helps ensure that the network operates efficiently and effectively.

PROJECT DEVELOPMENT

This section will cover the development process of a project that was divided into four distinct milestones: inception and project planning, elaboration, construction, and release. Each milestone represents a crucial phase in the project's development, with specific goals and deliverables to achieve before progressing to the next stage.

DEMO

Video Demo