Adding support for an experimental IPv6 Hop By Hop Extension header to a Router

paulmac

New Member
Joined
Feb 18, 2024
Messages
3
Reaction score
1
Credits
27
I am a Phd Researcher at Lancaster university researching the security of the UK Internet infrastructure.

I need to add support for a proposed experimental IPv6 Hop By Hop Extension Header to a routers Kernel to test my theories. I am more a server/network engineer and researcher than I am a programmer but I am able to write in Python and use scripting languages. Can anyone recommend tools and Router emulation software where one could add support for an experimental IPv6 Hop By Hop Extension Header in order to test the methodology ? The new extension header requires changes to the IFindex table (an additional field) and a new ACL to make routing decisions on the new field within the IFindex table.
 


From CoPilot.

Adding support for an experimental IPv6 Hop-By-Hop Extension Header (HBH) involves diving into the intricacies of network protocols and kernel-level programming.

Here are some steps and tools you might find useful:

  1. Understanding IPv6 Extension Headers:
  2. Router Emulation Software:
    • To experiment with your proposed HBH extension header, consider using router emulation software. These tools allow you to simulate network environments and test your theories without deploying physical routers.
    • Some popular router emulation software includes:
      • GNS3: GNS3 is a powerful network simulation platform that allows you to create complex network topologies using virtual routers and switches. You can run real router images (such as Cisco IOS) in GNS3.
      • Packet Tracer: Cisco Packet Tracer is another tool for network simulation. While it’s primarily designed for educational purposes, it can be useful for testing network configurations.
      • Quagga: Quagga is an open-source routing software suite that provides implementations of various routing protocols. It can be used for testing and experimenting with routing decisions.
      • FRRouting (FRR): FRR is an open-source routing stack that supports multiple routing protocols. It’s suitable for testing and development.
      • Bird Internet Routing Daemon: Bird is a lightweight routing daemon that supports both IPv4 and IPv6. It’s commonly used for testing and small-scale deployments.
  3. Kernel-Level Programming:
    • Since you’re comfortable with scripting languages, consider writing a kernel module or modifying existing kernel code to add support for your HBH extension header.
    • C/C++ is the primary language for kernel development. You’ll need to understand Linux networking internals, netfilter hooks, and how to manipulate routing tables.
    • Look into the Linux kernel’s netfilter framework for intercepting and modifying packets at various points in the networking stack.
  4. Testing Methodology:
    • Create a testbed using the router emulation software. Set up virtual routers and configure them to handle your experimental HBH header.
    • Use Wireshark or similar packet capture tools to analyze the behavior of packets with your extension header.
    • Validate that your changes to the IFindex table and ACLs are correctly affecting routing decisions based on the new field within the IFindex table.
 
I am a Phd Researcher at Lancaster university researching the security of the UK Internet infrastructure.

I need to add support for a proposed experimental IPv6 Hop By Hop Extension Header to a routers Kernel to test my theories. I am more a server/network engineer and researcher than I am a programmer but I am able to write in Python and use scripting languages. Can anyone recommend tools and Router emulation software where one could add support for an experimental IPv6 Hop By Hop Extension Header in order to test the methodology ? The new extension header requires changes to the IFindex table (an additional field) and a new ACL to make routing decisions on the new field within the IFindex table.
Here are some tools and router emulation software options that might be helpful, considering your programming abilities. Below are the names of Router Emulation tools.

GNS3

This is a graphical network simulator that build complex network topologies using virtual router and switches. It is accessible on Python web framework.

FRRouting (FRR)

FRR is an open-source routing stack which includes Quagga, providing flexible and modular components. It is easy to integrate with C language.

Bird Internet Routing Daemon

It is an open-source routing daemon which supports both IPv4 and IPv6. But one limitation is that it does not offer direct kernel modification.

For the easier development task, here are some tools to consider.
  • Linux Kernel Modules: For deeper integration with the kernel, you might consider developing a custom kernel module. This requires C programming skills, but there are resources and tutorials available online.
  • PF_RING Packet Capture Library: This high-performance library allows capturing and manipulating packets at the kernel level. It integrates with Python through bindings, enabling scripting for header processing, manipulation, and analysis.
 
Here are some tools and router emulation software options that might be helpful, considering your programming abilities. Below are the names of Router Emulation tools.

GNS3

This is a graphical network simulator that build complex network topologies using virtual router and switches. It is accessible on Python web framework.

FRRouting (FRR)

FRR is an open-source routing stack which includes Quagga, providing flexible and modular components. It is easy to integrate with C language.

Bird Internet Routing Daemon

It is an open-source routing daemon which supports both IPv4 and IPv6. But one limitation is that it does not offer direct kernel modification.

For the easier development task, here are some tools to consider.
  • Linux Kernel Modules: For deeper integration with the kernel, you might consider developing a custom kernel module. This requires C programming skills, but there are resources and tutorials available online.
  • PF_RING Packet Capture Library: This high-performance library allows capturing and manipulating packets at the kernel level. It integrates with Python through bindings, enabling scripting for header processing, manipulation, and analysis.
yep, the AI answer above agrees with your AI answer.
 

Staff online

Members online


Top