Hi all,

> a significant question is of course how to deal with competing routing protocols Form my understanding we have two distinct directions we can choose to approach the problem:

1. We strictly push it away from the FIB, i.e. only allowing to have unique entries for each global prefix. pro: no handling needed here, the process, e.g. routing protocol, adding next hops to the FIB must care about this. con: we loose the possibility to take link/topology/interface capabilities into account to forward a packet

2. We allow competing entries and apply (sort of) policies to always return a unambiguous next hop from the FIB. pro: we are able to direct data and control plane flows, taking the routing protocol capabilities into account. con: to have a preference on one FIB entry over another competing entry, requires a valuing weighting and decision mechanism. This creates overhead and lowers the lookup/response time on next hop requests.

> Typically, these routing protocols split horizon according to IP address ranges Using a separation on IP address ranges would shift the problem away from the FIB to the RIB. This approach is definitely useful on non-moving routers with an organized and static hierarchy and a good argument for following 1.

But I think in some IoT scenarios with moving routers, this approach might have a poor performance
when the connected networks between the IoT routers periodically change.

> how does the FIB decide which next hop to choose if more than routing protocol made an entry pointing to it? I've built in [1] to the FIB to provide an entry point to handle such conflicts.


Best Regards,
Martin

[1] https://github.com/BytesGalore/RIOT/blob/add_fib/sys/net/network_layer/fib/fib.c#L260

On 19.11.2014 00:47, Thomas C. Schmidt wrote:
Hi Martine,

a FIB always only provides unique forwarding rules. So there are no priorities attached to FIB entries. Priorities of routes may occur in RIBs associated with routing protocols ... and a significant question is of course how to deal with competing routing protocols that feed the FIB. (Typically, these routing protocols split horizon according to IP address ranges.)

Still, a routing protocol either overrides FIB entries or it doesn't.

Cheers,

Thomas

On 18.11.2014 21:56, Martine Lenders wrote:
Hi,
it's me again, dumping my latest brainstorm into the thread :D.

Don't we need some kind of priorities for the routing protocols, too? Or
how does the FIB decide which next hop to choose if more than routing
protocol made an entry pointing to it?

Cheers,
Martine

2014-11-17 8:05 GMT+01:00 Martin <[email protected]
<mailto:[email protected]>>:

    Hi Martine,

    >... Except you mean the routing protocol by this.
    yes, the `prot_id` is the actual used (running) protocol, i.e. RPL.
    This identifier must be unique for the running RIOT on the node,
    i.e. arbitrary but fixed for the lifetime.

    The "binding" of FIB table entries to a specific (running) protocol
    is necessary only for updates on them.

    Probably `kernel_pid_t` for the would be a waste of one byte for
    each FIB table entry.
I will keep it `uint8_t` for now, but test a bit with `kernel_pid_t`.


    Best regards,
    Martin


    On 15.11.2014 02:03, Martine Lenders wrote:
    Hi Martin,

    2014-11-14 15:23 GMT+01:00 Martin <[email protected]
    <mailto:[email protected]>>:

        Hi Martine,

        I will change the interface and protocol IDs to
        `kernel_type_t` as you suggested.
        For the FIB handling perspective this seems also to be the
        best (and easiest) way to have the IDs unique on one RIOT/node.


    For protocol IDs I suggest `netdev_proto_t` [1]. Except you mean
    the routing protocol by this. It aims, at least regarding my
    design, to be the RIOT-global identifier for all network protocol
    RIOT supports.

    Cheers,
    Martine

    [1]
https://github.com/RIOT-OS/RIOT/blob/038beb0f99215207c09fd862ac7712982cedb3ef/drivers/include/netdev/base.h#L57


    _______________________________________________
    devel mailing list
    [email protected]  <mailto:[email protected]>
    http://lists.riot-os.org/mailman/listinfo/devel


    _______________________________________________
    devel mailing list
    [email protected] <mailto:[email protected]>
    http://lists.riot-os.org/mailman/listinfo/devel




_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel

Reply via email to