1. 03 May, 2018 2 commits
    • Ondřej Zajíček's avatar
      Babel: Add option to randomize router ID · 70fab178
      Ondřej Zajíček authored
      When a Babel node restarts, it loses its sequence number, which can cause
      its routes to be rejected by peers until the state is cleared out by other
      nodes in the network (which can take on the order of minutes).
      
      There are two ways to fix this: Having stable storage to keep the sequence
      number across restarts, or picking a different router ID each time.
      
      This implements the latter, by introducing a new option that will cause
      BIRD to randomize a high 32 bits of router ID every time it starts up.
      This avoids the problem at the cost of not having stable router IDs in
      the network.
      
      Thanks to Toke Hoiland-Jorgensen for the patch.
      70fab178
    • Ondřej Zajíček's avatar
      Babel: Fix type of route entry router ID · 23b07904
      Ondřej Zajíček authored
      The router ID being assigned to routes was a uint, which discards the
      upper 32 bits. This also has the nice side effect of echoing the wrong
      router ID back to other routers.
      
      Thanks to Toke Hoiland-Jorgensen for the patch.
      23b07904
  2. 07 Mar, 2018 1 commit
  3. 13 Feb, 2018 2 commits
    • Ondřej Zajíček's avatar
      Babel: Fix accidental bitwise or assignment · 5ce7adfc
      Ondřej Zajíček authored
      Fix an accidental bitwise or assignment that was supposed to be a
      comparison.
      
      Thanks to Toke Hoiland-Jorgensen for the patch.
      5ce7adfc
    • Ondřej Zajíček's avatar
      Babel: Add source-specific routing support · 185a0a51
      Ondřej Zajíček authored
      This patch adds support for source-specific routing to the Babel protocol.
      It changes the protocol to support both NET_IP6 and NET_IP6_SADR channels
      for IPv6 addresses. If only a NET_IP6 channel is configured,
      source-specific updates are ignored. Otherwise, non-source-specific
      routes are simply treated as source-specific routes with SADR prefix 0.
      
      Thanks to Toke Hoiland-Jorgensen for the original patch.
      Minor changes by Ondrej Santiago Zajicek.
      185a0a51
  4. 07 Dec, 2017 13 commits
  5. 28 Nov, 2017 1 commit
    • Ondřej Zajíček's avatar
      Babel: Parse flags in Hello TLV · 1e8721e2
      Ondřej Zajíček authored
      RFC6126bis introduces a flags field for the Hello TLV, and adds a unicast flag
      that is used to signify that a hello was sent as unicast. This adds parsing of
      the flags field and ignores such unicast hellos, which preserves compatibility
      until we can add a proper implementation of the unicast hello mechanism.
      
      Thanks to Toke Hoiland-Jorgensen for the patch.
      1e8721e2
  6. 17 Oct, 2017 1 commit
  7. 19 Sep, 2017 1 commit
    • Ondřej Zajíček's avatar
      BGP: Shutdown communication (RFC 8203) · cd1d9961
      Ondřej Zajíček authored
      The patch implements BGP Administrative Shutdown Communication (RFC 8203)
      allowing BGP operators to pass messages related to BGP session
      administrative shutdown/restart. It handles both transmit and receive of
      shutdown messages. Messages are logged and may be displayed by show
      protocol all command.
      
      Thanks to Job Snijders for the basic patch.
      cd1d9961
  8. 06 Sep, 2017 1 commit
    • Ondřej Zajíček's avatar
      Basic VRF support · 943478b0
      Ondřej Zajíček authored
      Add basic VRF (virtual routing and forwarding) support. Protocols can be
      associated with VRFs, such protocols will be restricted to interfaces
      assigned to the VRF (as reported by Linux kernel) and will use sockets
      bound to the VRF. E.g., different multihop BGP instances can use diffent
      kernel routing tables to handle BGP TCP connections.
      
      The VRF support is preliminary, currently there are several limitations:
      
      - Recent Linux kernels (4.11) do not handle correctly sockets bound
      to interaces that are part of VRF, so most protocols other than multihop
      BGP do not work. This will be fixed by future kernel versions.
      
      - Neighbor cache ignores VRFs. Breaks config with the same prefix on
      local interfaces in different VRFs. Not much problem as single hop
      protocols do not work anyways.
      
      - Olock code ignores VRFs. Breaks config with multiple BGP peers with the
      same IP address in different VRFs.
      
      - Incoming BGP connections are not dispatched according to VRFs.
      Breaks config with multiple BGP peers with the same IP address in
      different VRFs. Perhaps we would need some kernel API to read VRF of
      incoming connection? Or probably use multiple listening sockets in
      int-new branch.
      
      - We should handle master VRF interface up/down events and perhaps
      disable associated protocols when VRF goes down. Or at least disable
      associated interfaces.
      
      - Also we should check if the master iface is really VRF iface and
      not some other kind of master iface.
      
      - BFD session request dispatch should be aware of VRFs.
      
      - Perhaps kernel protocol should read default kernel table ID from VRF
      iface so it is not necessary to configure it.
      
      - Perhaps we should have per-VRF default table.
      943478b0
  9. 14 Jun, 2017 1 commit
  10. 09 Jun, 2017 2 commits
    • Ondřej Zajíček's avatar
      Babel: Parse sub-TLVs and skip TLVs with mandatory sub-TLV · 145ebfa1
      Ondřej Zajíček authored
      RFC6126bis formally introduces sub-TLVs to the Babel protocol, including
      mandatory sub-TLVs. This adds support for parsing sub-TLVs to the Babel
      protocol and skips TLVs that contain mandatory sub-TLVs, as per the spec.
      
      For details, see section 4.4 of
      https://tools.ietf.org/html/draft-ietf-babel-rfc6126bis-02
      
      Thanks to Toke Høiland-Jørgensen <toke@toke.dk> for the patch.
      145ebfa1
    • Ondřej Zajíček's avatar
      Babel: Implement IPv6 prefix compression on outgoing updates · b3c6273e
      Ondřej Zajíček authored
      Previously, the Babel protocol would never use prefix compression on outgoing
      updates (but would parse it on incoming ones). This adds compression of IPv6
      addresses of outgoing updates.
      
      The compression only works to the extent that the FIB is walked in lexicographic
      order; i.e. a prefix is only compressed if it shares bytes with the previous
      prefix in the same packet.
      
      Thanks to Toke Høiland-Jørgensen <toke@toke.dk> for the patch.
      b3c6273e
  11. 08 Jun, 2017 1 commit
    • Ondřej Zajíček's avatar
      Babel: Add support for dual-stack IPv4/IPv6 operation · 4324025f
      Ondřej Zajíček authored
      This adds support for dual-stack v4/v6 operation to the Babel protocol.
      Routing messages will be exchanged over IPv6, but IPv4 routes can be
      carried in the messages being exchanged. This matches how the reference
      Babel implementation (babeld) works.
      
      The nexthop address for v4 can be configured per interface, and will
      default to the first available IPv4 address on the given interface. For
      symmetry, a configuration option to configure the IPv6 nexthop address
      is also added.
      
      Thanks to Toke Høiland-Jørgensen <toke@toke.dk> for the patch.
      4324025f
  12. 22 Feb, 2017 1 commit
  13. 13 Dec, 2016 1 commit
  14. 10 Dec, 2016 1 commit
  15. 07 Dec, 2016 2 commits
  16. 01 Nov, 2016 1 commit
  17. 20 Jul, 2016 1 commit
  18. 19 Jul, 2016 5 commits
  19. 12 May, 2016 1 commit
  20. 28 Apr, 2016 1 commit
    • Ondřej Zajíček's avatar
      Add the Babel routing protocol (RFC 6126) · 937e75d8
      Ondřej Zajíček authored
      This patch implements the IPv6 subset of the Babel routing protocol.
      Based on the patch from Toke Hoiland-Jorgensen, with some heavy
      modifications and bugfixes.
      
      Thanks to Toke Hoiland-Jorgensen for the original patch.
      937e75d8