Age | Commit message (Collapse) | Author |
|
Currently, the result of Route Target Constraint filter is unexpectedly
ignored when Route Reflector reflecting the VPN routes because "ignore"
flag can be overwritten without evaluated.
This patch fixes to return "nil" before "ignore" flag overwritten and
enable to filter outgoing VPN routes based on RTC.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
When GoBGP dropped adj-Rib-out per Peer, we fixed to send the same Route
Target Membership (RTM) NLRI even if it is already sent. This can cause
the infinite UPDATE loop when Route Reflector(RR) reflects RTM NLRI to
its clients.
For example, the following situation causes the infinite UPDATE loop.
Topology:
+----- RR -----+
| |
Client1 Client2
When Client1 has VRF with RT 65000:1 and sends a RTM NLRI to RR, then RR
reflects the NLRI to Client2. If a new VRF with the same RT 65000:1 on
Client2 is created, Client2 will notify it to RR, then RR calculates the
best, but RR will send the NLRI from Client2 to Client1 even if it is
not the best. Client1 receives the NLRI again, calculates the best and
re-sends the best. Then, RR reflects the received NLRI ... (infinite
loop).
This patch fixes to compare the candidate path to be sent with the old
path and assume the given candidate path was already sent before if the
candidate path and the old path is the same path. Then avoids the
infinite UPDATE loop.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, globalRib is always set to dynamic neighbors
even if they are route server clients.
This patch fixes to set rsRib when the neighbor is
a route server client.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Note: When this option is specified, no path will be redistributed to
any peer, because there is no best path.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
close #1575
if L854 is executed before L924, we hit a crash because of closing a
channel twice. This fixes the isseu but We had better to refactor the
code to delete a peer.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
"cli-command-syntax.md" describes "rib del all" command should delete
all locally generated paths, but currently this command deletes all paths
including received path from neighbors unexpectedly.
This patch fixes the DeletePath API to delete only locally generated
paths and solves this problem.
Current:
$ gobgp global rib -a ipv4
Network Next Hop AS_PATH Age Attrs
*> 10.12.1.0/24 0.0.0.0 00:00:00 [{Origin: ?}]
* 10.12.1.0/24 10.0.0.1 65001 00:00:00 [{Origin: ?}]
$ gobgp global rib -a ipv4 del all
$ gobgp global rib -a ipv4
Network not in table
With this patch:
$ gobgp global rib -a ipv4
Network Next Hop AS_PATH Age Attrs
*> 10.12.1.0/24 0.0.0.0 00:00:00 [{Origin: ?}]
* 10.12.1.0/24 10.0.0.1 65001 00:00:00 [{Origin: ?}]
$ gobgp global rib -a ipv4 del all
$ gobgp global rib -a ipv4
Network Next Hop AS_PATH Age Attrs
*> 10.12.1.0/24 10.0.0.1 65001 00:00:10 [{Origin: ?}]
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, MonitorRib API with ADJ_IN type and "current" flag returns
the initial response with an empty path list when gRPC client connecting
to GoBGP daemon.
This causes the client can not receive the current paths which GoBGP
daemon already has.
This patch fixes to compose the initial MonitorRib response with the
current paths.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
For code readability, this commit make some arguments
to receivers.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
This fixes the ae7e572550df919c1b9990da8787fc1e860bc20d commit
regression. gobgp neighbor command takes a bogus neighbor name like
the following:
fujita@ubuntu:~/go/src/github.com/osrg/gobgp/gobgp$ ./gobgp n 1
BGP neighbor is 172.17.0.2, remote AS 65001
BGP version 4, remote router ID unknown
BGP state = active, up for 17496d 14:21:50
BGP OutQ = 0, Flops = 0
Hold time is 0, keepalive interval is 0 seconds
Configured hold time is 60, keepalive interval is 20 seconds
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
According to RFC7432, the ES-Import RT can be derived automatically
when using the ESI Types 1, 2 and 3.
This patch enables to derive automatically the ES-Import RT for the
given path from BgpServer's API.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Currently, the config of PeerGroup members are not set properly.
For example, if LocalAs of the neighbor is not set in the config file,
LocalAs will be set to Global.As as a default value.
After this, however, if the neighbor is a member of a peer group,
LocalAs will be unexpectedly overwritten by the peer group config.
This commit fixes this by setting default values after
applying the peer group config.
Adding to this, this commit avoids unnecessary applying
the peer group config.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
In neighbor config, there are some parameters whose
default value can be changed depending on the global config.
This commit modifies the argument of config.SetDefaultNeighborConfigValues()
to pass the global config. It enables to change the default
settings of neighbor depending on the global config.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Currently, with iBGP peering, the CLI injected path will not be withdrawn
when the deletion if any other path exists on RIB, then the CLI injected
path will be left on iBGP peers even if the route is deleted on the
originator router.
This problem can cause routing loops in some case.
This patch fixes to withdraw the old best path when it was the CLI (or
gRPC) injected path.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
The function for notifying WATCH_EVENT_TYPE_PRE_UPDATE event hasn't been
defined yet, this patch defines a function for it.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
After Shutdown() is called, the main goroutine waits for peers'
goroutines to stop then dies. But if no peer is configured, the main
goroutines never dies.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Currently, UpdatePath() of BgpServer will apply policy multiply, and
this causes the unexpected result of policy configurations.
This patch avoids this multiple policy application.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch adds a field of config.Neighbor into WatchEventUpdate in
order to get config/state info of the neighbor which sent the UPDATE
message.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
To reduce the translations of "AfiSafiName" into "bgp.RouteFamily", this
patch introduces "Family" field into "AfiSafiState" and stores the
translated value.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
RS peers and non RS peers uses different tables so no need to filter
paths from rs clients for non rs clients.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
|
|
With Destination struct, multiple Paths can be moved from the table
package to the server package in a cleaner way; for features such as
add-path.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
currently, route server peers and non route server peers use the
single global rib. To support deterministic-med for non route server
peers, this splits the rib into two; easier to handle the best path
selection in different ways.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
By introducing dynamic neighbor feature,
GoBGP can have dynamic neighbors,
and corresponding Config.NeighboAddress can be empty.
This patch sets State.NeighborAddress for all neighbors,
and gets the neighbor's address from them.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
The usage of "github.com/sirupsen/logrus" is recommended.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
This patch enables to create peer-groups,
also supports dynamic configuration to peer-groups.
Manually set fields in neighbor configs have priority over its peer-group's config,
except some fields, like "peer-as", or "minimum-advertisement-interval" and so on.
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
|
|
This patch enables to watch events for monitoring received BGP messages
before the state comparison.
Note: Currently, this event nortifies UPDATE message only, because the
other messages will be handled in FSMHandler and not received at
BgpServer, so BgpServer cannot send event for these messages.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
|
|
when the old best was from iBGP, we don't need to send withdrawals
to iBGP peers.
Signed-off-by: Wataru Ishida <ishida.wataru@lab.ntt.co.jp>
|
|
RFC4271 9.1.2 Phase 2: Route Selection
If the AS_PATH attribute of a BGP route contains an AS loop, the BGP
route should be excluded from the Phase 2 decision function. AS loop
detection is done by scanning the full AS path (as specified in the
AS_PATH attribute), and checking that the autonomous system number of
the local system does not appear in the AS path. Operations of a BGP
speaker that is configured to accept routes with its own autonomous
system number in the AS path are outside the scope of this document.
Also this commit adds support for allow-own-as option to relax this.
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
|
|
Signed-off-by: Wataru Ishida <ishida.wataru@lab.ntt.co.jp>
|
|
established
currently gobgpd continues to handle update messages even if
becomedidle state from establised.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
avoid calculation of the number of adjout that will not be used.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
This patch fixes a bug of export policy and implicit withdrawal.
When a path is filtered by export policy, we need to check whether the
old path (implicit withdrawn path) was sent before the new path.
If it has been sent, we need to send a withdrawal message.
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
|
|
since BGP unnumbered peers are typically trusted, skip asn negotiation
for easy configuration.
from configuration file:
```toml
[[neighbors]]
[[neighbors.config]]
neighbor-interface = "eth0"
```
from cli:
```
$ gobgp neighbor add interface eth0
```
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
|
|
config.TransportState.LocalAddress may have zone info with ipv6 address
like "fe80::x%eth0".
In this case, net.ParseIP() returns <nil>, which leads to set <nil> to
PeerInfo.LocalAddress.
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
|
|
fix a bug that GetRib() doesn't return an error even if an error
happens.
|
|
This patch implents dampening for the Nexthop Tracking as Cisco's
routers doing.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
This patch enables server/zclient to update the metric or the reachability
state to the nexthop for implementing the Nexthop Tracking features.
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
|
|
with two ibgp peers (a and b), when peer a advertizes one route and
then withdraw it, there are two bugs:
- gobgp sends withdrawal to peer a.
- gobgp sends withdrawal to peer b.
this fixes both.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|