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

List out the basic design components required for the router #14

Open
idjaw opened this issue Feb 11, 2024 · 1 comment
Open

List out the basic design components required for the router #14

idjaw opened this issue Feb 11, 2024 · 1 comment
Labels
architecture core Core architecture of EduNet router The router device

Comments

@idjaw
Copy link
Owner

idjaw commented Feb 11, 2024

Objective

Have a list of basic components required for the router's functionality to help with the design and implementation

Description

To facilitate the design and implementation of the router for phase 2, document the components to have a list of requirements that have to be designed and implemented in to EduNet to support a router device.

Acceptance Criteria

Some type of documentation (can be rough) that helps illustrate what components will be implemented for the router

@idjaw idjaw added core Core architecture of EduNet router The router device architecture labels Feb 11, 2024
@idjaw idjaw added this to the Phase 2 - Router milestone Feb 11, 2024
@idjaw
Copy link
Owner Author

idjaw commented Feb 16, 2024

For this iteration, the focus will be on just the routing path. What will be required most likely:

  • Packet Parsing:

    • Extract required information to pass to the routing decision process
  • Routing Decision (Routing Table):

    • Determine next hop by consulting the routing table
  • Packet Forwarding:

    • At first, it might not require as much implementation, but this is where the link to the destination (aka call to node) will be made

Once the routing decision has been made, the packet forwarding component is responsible for actually transmitting the packet towards its destination. It encapsulates the packet with the appropriate link-layer header (e.g., Ethernet header) containing the MAC address of the next hop or outgoing interface, and sends the packet out of the corresponding network interface.
ARP Resolving: Based on the call, if it is on the LAN, ARP is required for destination IP MAC address. Otherwise ARP is not called.

The idea here for the router is that we can craft a Router by accepting the above as implementations of each component as part of its system

class Router:
    def __init__(
        self, parser: Parser, 
        routing: RoutingDecision, 
        forwarding: PacketForwarding,
        arp: ARPResolver
    ):
        ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
architecture core Core architecture of EduNet router The router device
Projects
None yet
Development

No branches or pull requests

1 participant