BIRD/OSPF HUB and Spoke topology (IPv6)

arno.odermatt at ch.schindler.com arno.odermatt at ch.schindler.com
Wed Feb 19 15:43:27 CET 2014


Dear all,

I am using Bird6 (rel. 1.3.11) on Fedora20 and try to build up a HUB and 
Spoke topology with IPv6:

we want to have 60-70 spokes, all in area 0, to propagate their 
/dev/eth0's IPv6 address (eg.:fed0:1:e005::1/64 -> eg.:fed0:1:e0xy::1/64 
->)  through an GRE-tunnel (IPv6-address 
fed0:1:ffff:ffff:ffff:ffff:x:0/124 ) to the HUB, but the HUB must not 
propagate any such spokes IPv6 address to any other Spoke.

HUB-IPv6 address:       on dev/eth0          fed0:1:a001::1

Spoke1-IPv6 address:      on dev/eth0          fed0:1:e005::1

 
Spoke2-IPv6 address:      on dev/eth0          fed0:1:e006::1


Spokex-IPv6 address:      on dev/eth0          fed0:1:e0xy::1


In order to full-fil this citerias, I tried to only export "directly 
connected" IPv6 addresses out of the HUB, but failed completely.
Pls. find 2 tested configuration alternatives of the HUB below:

Any idea or working config-examples, how a HUBnSpoke topology with BIRD 
can be implemented, is very much appreciated

thx

Ar


Config-alternative 1)


# Configure logging
log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug 
};

# Override router ID
router id 172.16.128.10;

# Define a route filter...
filter ospf_rt_export {
       if net = fed0:1:a001::/64 then accept;
       else reject;
}

# The direct protocol automatically generates device routes to
# all network interfaces. Can exist in as many instances as you wish
# if you want to populate multiple routing tables with device routes.
protocol direct {
        interface "GRE*-ETH6", "tap*";  # Restrict network interfaces it 
works with
}

# This pseudo-protocol performs synchronization between BIRD's routing
# tables and the kernel. If your kernel supports multiple routing tables
# (as Linux 2.2.x does), you can run multiple instances of the kernel
# protocol and synchronize different kernel tables with different BIRD 
tables.
protocol kernel {
        learn;                  # Learn all alien routes from the kernel
        persist;                # Don't remove routes on bird shutdown
        scan time 20;           # Scan kernel routing table every 20 
seconds
#       import none;            # Default is import all
        export all;             # Default is export none
#       kernel table 5;         # Kernel table to synchronize with 
(default: main)
}

# This pseudo-protocol watches all interface up/down events.
protocol device {
        scan time 10;           # Scan interfaces every 10 seconds
}

# Static routes (again, there can be multiple instances, so that you
# can disable/enable various groups of static routes on the fly).
protocol static {
#       disabled;               # Disable by default
#       table testable;         # Connect to a non-default table
}

protocol ospf OIPv6 {
        tick 2;
#       rfc1583compat yes;
        export filter ospf_rt_export;
        import all;
        area 0.0.0.0 {
#               stub no;
                 interface "GRE*-ETH6" {
                        hello 9;
                        retransmit 6;
                        cost 10;
                        transmit delay 5;
                        dead count 5;
                        wait 50;
                        type broadcast;
#                       authentication simple;
#                       password "pass";
                };
                };
        };



Config-alternative 2)


# Configure logging
log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug 
};

# Override router ID
router id 172.16.128.10;

# Define a route filter...

filter ospf_redistconn_export {
# redistribute connected
    if ( source = RTS_DEVICE ) then {
         print "net accepted:", net;
        ospf_metric2 = 20;
        accept;
    }

    else reject;
}

#filter sink { reject; }
#filter okay { accept; }

# The direct protocol automatically generates device routes to
# all network interfaces. Can exist in as many instances as you wish
# if you want to populate multiple routing tables with device routes.
protocol direct {
        interface "GRE*-ETH6", "tap*";  # Restrict network interfaces it 
works with
}

# This pseudo-protocol performs synchronization between BIRD's routing
# tables and the kernel. If your kernel supports multiple routing tables
# (as Linux 2.2.x does), you can run multiple instances of the kernel
# protocol and synchronize different kernel tables with different BIRD 
tables.
protocol kernel {
        learn;                  # Learn all alien routes from the kernel
        persist;                # Don't remove routes on bird shutdown
        scan time 20;           # Scan kernel routing table every 20 
seconds
#       import none;            # Default is import all
        export all;             # Default is export none
#       kernel table 5;         # Kernel table to synchronize with 
(default: main)
}

# This pseudo-protocol watches all interface up/down events.
protocol device {
        scan time 10;           # Scan interfaces every 10 seconds
}

# Static routes (again, there can be multiple instances, so that you
# can disable/enable various groups of static routes on the fly).
protocol static {
#       disabled;               # Disable by default
}

protocol ospf OIPv6 {
        tick 2;
#       rfc1583compat yes;
        export filter ospf_redistconn_export;
        import all;
        area 0.0.0.0 {
#               stub no;
                interface "GRE*-ETH6" {
                        hello 9;
                        retransmit 6;
                        cost 10;
                        transmit delay 5;
                        dead count 5;
                        wait 50;
                        type broadcast;
#                       authentication simple;
#                       password "pass";
                };
                };
        };


******************************************************
Notice: The information contained in this message is intended only for use of the individual(s) named above and may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you are not the intended recipient of this message you are hereby notified that you must not use, disseminate , copy it in any form or take any action in reliance of it. If you have received this message in error please delete it and any copies of it and notify the sender immediately.
*******************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20140219/0849193c/attachment.html>


More information about the Bird-users mailing list