138 Commits
Author SHA1 Message Date
Wataru Ishida d46da74d4f policy: support large-community match/action
close #1133

Signed-off-by: Wataru Ishida <[email protected]>
2016-10-10 05:18:17 +00:00
Wataru IshidaandFUJITA Tomonori 614746ca11 *: support long lived graceful restart
Signed-off-by: Wataru Ishida <[email protected]>
2016-10-09 07:18:13 -07:00
FUJITA Tomonori d79b23967a server: add vrf support to bestpath watch
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-09-30 20:44:12 -07:00
Wataru Ishida c790472dad server/table: don't modify/delete path attributes for route server client
RFC7947 2.2 says

Optional recognized and unrecognized BGP attributes, whether transitive
or non-transitive, SHOULD NOT be updated by the route server
(unless enforced by local IXP operator configuration) and SHOULD be passed
on to other route server clients

Signed-off-by: Wataru Ishida <[email protected]>
2016-09-16 09:45:24 +00:00
Wataru IshidaandFUJITA Tomonori 3235c0618c api/cli: kill cmd package custom path/destination structs
reuse table package

Signed-off-by: Wataru Ishida <[email protected]>
2016-08-25 15:53:14 +09:00
Peng XiaoandFUJITA Tomonori b0bead46c8 fixed some misspell error
Signed-off-by: Peng Xiao <[email protected]>
2016-08-21 08:29:42 +09:00
FUJITA Tomonori 43dc07d723 move gRPC-related code for REQ_ADD_PATH and REQ_DELETE_PATH to grpc_server.go
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-07-21 13:23:15 +09:00
FUJITA Tomonori f27afac154 move gRPC-related code in path.go and destination.go to grpc_server.go
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-07-20 04:25:25 +09:00
FUJITA Tomonori b8f83f8ede drop unknown optional non-transitive attributes
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-06-13 20:41:40 +09:00
ISHIDA WataruandFUJITA Tomonori 5c7df67266 server/table: support bgp multipath
This patch adds multiPathList field to watcherEventBestPathMsg and
fills it when global.use-multiple-paths.config.enable = true

Following patches add support injecting multipath to zebra and
monitoring it via gRPC

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-06-06 12:43:20 +09:00
ISHIDA WataruandFUJITA Tomonori 222d4dba8e table: return default value(100) when local-pref attr doesn't exist
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-06-06 12:43:20 +09:00
FUJITA Tomonori ebb2c9727a table: fix to compare new best path with old best path
The current code uses Path.Equal(), which just check out if pathes are
idential. However, it doesn't work for two cloned pathes of a path
(soft update in case).

Signed-off-by: FUJITA Tomonori <[email protected]>
2016-05-29 19:42:47 +09:00
ISHIDA Wataru 0dbf1d87cb policy: add local-pref action
$ gobgp policy statement st01 add action local-pref 110

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-05-25 02:53:42 +00:00
FUJITA Tomonori 7c42e295e2 add collector feature
dump the update messages and the state change of peers into influxdb:

[collector.config]
  url = "http://localhost:8086"
  db-name = "gobgp"

Signed-off-by: FUJITA Tomonori <[email protected]>
2016-05-23 20:32:47 +09:00
ISHIDA WataruandFUJITA Tomonori 31342564c9 table: fix UpdatePathAttrs() to obey RFC4684
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-05-23 09:46:53 +09:00
ISHIDA Wataru 43f3d009d6 server: fix not to modify Transport.Config
modify Transport.State instead

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-04-27 10:32:42 +00:00
ISHIDA WataruandFUJITA Tomonori 2b60347cfd path: improve Path.String()
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-04-20 13:14:09 +09:00
FUJITA Tomonori 311324fab8 move packet/*.go to packet/bgp/*.go for Go's convention
Later, we move non-bgp protocol stuff like mrt under their own
direcotries.

Signed-off-by: FUJITA Tomonori <[email protected]>
2016-03-31 13:19:17 +09:00
ISHIDA Wataru 77f0e6acf1 table: support advertising local route with specified nexthop via eBGP
we support this for iBGP. why not for eBGP.

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-03-15 22:44:14 +09:00
FUJITA Tomonori c46d6be52f table: use raw data for age instead of duration
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-03-02 08:44:39 +09:00
ISHIDA WataruandFUJITA Tomonori a45bd1f290 api: add neighbor-ip field to grpc Path message
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-03-02 03:22:28 -08:00
FUJITA Tomonori d6998affcf cli: delete duplicated code
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-02-29 16:53:01 -08:00
ISHIDA WataruandFUJITA Tomonori 0b78f57ccd config/server: support per-peer asn
you can override `global.config.as` by `neighbor.config.local-as`

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-02-29 15:59:42 -08:00
Naoto HanaueandFUJITA Tomonori a53d194505 ops: fix and integration the attribute name that indicates the route received from an external resource 2016-02-27 03:47:00 -08:00
FUJITA Tomonori ae41a9f07e table: sort path attributes
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-02-25 05:55:28 -08:00
FUJITA Tomonori b387a7b29c cli: sort Flowspec components
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-02-24 04:31:21 -08:00
FUJITA Tomonori 00a592ef3a table: sort Flowspec components
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-02-24 14:13:22 +09:00
Naoto HanaueandFUJITA Tomonori b67befc30a ops: maintenance of two-way route exchange 2016-02-19 21:14:59 -08:00
FUJITA Tomonori 9f54df2208 table: fix gracefull restart regression
eor path needs a filter map. Otherwise gobgpd crashes.

Signed-off-by: FUJITA Tomonori <[email protected]>
2016-02-12 10:18:13 +09:00
ISHIDA WataruandFUJITA Tomonori 023a498e4a server: support graceful-restart helper-speaker behavior
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-02-10 23:41:44 -08:00
ISHIDA WataruandFUJITA Tomonori 36f8911cee table: support sending/receiving EOR msg
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-02-10 22:15:04 -08:00
ISHIDA Wataru c9959836a6 table: add source-asn and source-id to api struct
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-02-07 06:31:48 +09:00
ISHIDA Wataru 21b7301e04 server: fix soft-reset-in to handle in-policy change properly
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-02-01 23:11:12 +09:00
FUJITA Tomonori 1e564f2d30 table: fix NewBitmap's size calculation
Signed-off-by: FUJITA Tomonori <[email protected]>
2016-01-17 06:01:49 -08:00
ISHIDA Wataru 6403c80663 server: reduce number of path.Clone() call to reduce memory footprint
the result of memory profile (500 route-server-clients each of them
advertises 100 routes)

before:
(pprof) top5
3913.02MB of 3978.69MB total (98.35%)
Dropped 148 nodes (cum <= 19.89MB)
Showing top 10 nodes out of 11 (cum >= 21MB)
flat       flat%   sum%        cum   cum%
2970.30MB 74.66% 74.66%  2975.80MB 74.79% github.com/osrg/gobgp/server.filterpath
810.09MB  20.36% 95.02%   810.59MB 20.37% github.com/osrg/gobgp/table.(*AdjRib).Update
115.60MB   2.91% 97.92%   119.10MB  2.99% github.com/osrg/gobgp/table.createUpdateMsgFromPath
10MB       0.25% 98.17%  1878.02MB 47.20% github.com/osrg/gobgp/server.(*BgpServer).propagateUpdate
4.50MB     0.11% 98.29%   144.60MB  3.63% github.com/osrg/gobgp/table.CreateUpdateMsgFromPaths

after:
(pprof) top5
1259.49MB of 1284.27MB total (98.07%)
Dropped 175 nodes (cum <= 6.42MB)
Showing top 10 nodes out of 26 (cum >= 36.51MB)
flat     flat%  sum%        cum   cum%
975.81MB 75.98% 75.98%   976.31MB 76.02% github.com/osrg/gobgp/table.(*AdjRib).Update
198.67MB 15.47% 91.45%   208.17MB 16.21% github.com/osrg/gobgp/table.createUpdateMsgFromPath
22MB      1.71% 93.16%       22MB  1.71% github.com/osrg/gobgp/packet.(*IPAddrPrefix).Serialize
20MB      1.56% 94.72%   707.19MB 55.07% github.com/osrg/gobgp/server.(*BgpServer).propagateUpdate
13.50MB   1.05% 95.77%    13.50MB  1.05% github.com/osrg/gobgp/table.NewPath

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-01-16 18:25:35 +09:00
ISHIDA Wataru 40ce51137a table: remove unnecessary copy of path attributes
the result of memory profile (500 route-server-clients each of them advertises
100 routes)

before:
(pprof) top5
9330.48MB of 9367.53MB total (99.60%)
Dropped 157 nodes (cum <= 46.84MB)
Showing top 10 nodes out of 17 (cum >= 9334.17MB)
flat       flat%   sum%        cum   cum%
6163.04MB 65.79% 65.79%  6163.04MB 65.79% github.com/osrg/gobgp/table.NewPath
1155.05MB 12.33% 78.12%  7302.59MB 77.96% github.com/osrg/gobgp/table.(*Path).Clone
986.31MB  10.53% 88.65%  1388.81MB 14.83% github.com/osrg/gobgp/table.(*AdjRib).Update
402.51MB   4.30% 92.95%   402.51MB  4.30%  fmt.Sprintf
402.51MB   4.30% 97.24%   402.51MB  4.30% net.parseIPv4

after:
(pprof) top
3913.02MB of 3978.69MB total (98.35%)
Dropped 148 nodes (cum <= 19.89MB)
Showing top 10 nodes out of 11 (cum >= 21MB)
flat       flat%   sum%        cum   cum%
2970.30MB 74.66% 74.66%  2975.80MB 74.79% github.com/osrg/gobgp/server.filterpath
810.09MB  20.36% 95.02%   810.59MB 20.37% github.com/osrg/gobgp/table.(*AdjRib).Update
115.60MB   2.91% 97.92%   119.10MB  2.99% github.com/osrg/gobgp/table.createUpdateMsgFromPath
10MB       0.25% 98.17%  1878.02MB 47.20% github.com/osrg/gobgp/server.(*BgpServer).propagateUpdate
4.50MB     0.11% 98.29%   144.60MB  3.63% github.com/osrg/gobgp/table.CreateUpdateMsgFromPaths

Signed-off-by: ISHIDA Wataru <[email protected]>
2016-01-16 18:22:13 +09:00
ISHIDA Wataru b344eb3777 table: kill unused field medSetByTargetNeighbor
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-01-16 16:25:24 +09:00
ISHIDA WataruandFUJITA Tomonori b0fbcc6b1b config: change enum value type to string for ease of configuration
Signed-off-by: ISHIDA Wataru <[email protected]>
2016-01-09 05:17:57 -08:00
ISHIDA Wataru d01c1586b9 config: use viper and support multiple configuration formats
// toml by default
$ gobgpd -f gobgpd.toml

// use -t to change configuration type
$ gobgpd -t yaml -f gobgpd.yaml

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-12-29 14:47:06 +09:00
ISHIDA Wataru 58946b7924 config: make config/state variable name simple
Signed-off-by: ISHIDA Wataru <[email protected]>
2015-12-28 21:02:03 +09:00
FUJITA Tomonori 7a2b395116 add MOD_PATH API
Handle only one route unlike MOD_PATHS API. When the API returns an
uuid when a route is created. The uuid can be used to remove the route
later.

Signed-off-by: FUJITA Tomonori <[email protected]>
2015-12-26 19:24:46 -08:00
ISHIDA Wataru d6148c75a3 api: refactor afisafi api
remove unused fields

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-12-15 18:26:32 +09:00
ISHIDA WataruandFUJITA Tomonori a719a3de6e server/table: use only one rib for multiple route server clients
speed up and reduce memory footprint

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-12-08 14:45:37 +09:00
ISHIDA WataruandFUJITA Tomonori 093945ee30 table: sort all known paths instead of just selecting best
this is a preparation for add-path recv/send feature

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-12-02 09:53:38 +09:00
ISHIDA WataruandFUJITA Tomonori d53a5d11d9 table: fix local-pref handling for external peer
remove a local-pref path attribute when peer is external and
not a confederation member.

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-11-08 05:05:36 -08:00
ISHIDA WataruandFUJITA Tomonori 2db916a4d3 table: use a local configured med/local-pref path-attr if exists
If a path is generated locally and it has a med/local-pref path attribute,
don't remove or alter that.

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-11-08 05:05:36 -08:00
FUJITA Tomonori d6360e2b32 server: fix RPKI verification to handle ASPATH ATTR TYPE properly
Signed-off-by: FUJITA Tomonori <[email protected]>
2015-10-27 23:10:55 +09:00
ISHIDA Wataru bb881467bc policy: modify path.GetAsSeqList() to insert 0 for non-seq-as-elems
GetAsSeqList() is used for AsPathSet matching and AsPathPrepend action.
Just eliminating non-seq-as-elems from what GetAsSeqList() returns cause
wrong results for these two match/action.

e.g path A's as-path: {100, 200} 300

currently, action 'as-path-prepend left-most repeat 2' will alter
as-path to 300 300 {100, 200} 300, which is not expected behavior.

To fix this, insert 0 for non-seq-as-elems.

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-10-24 21:51:54 +09:00
ISHIDA WataruandFUJITA Tomonori 7937d8ddb6 policy: clean up
remove redundant api structures and shorten valiable names
re-implement *ToApiStruct functions as a method of each structures

Signed-off-by: ISHIDA Wataru <[email protected]>
2015-10-20 10:33:10 +09:00
ISHIDA WataruandFUJITA Tomonori 473f5b6ff3 table: fix to handle doReplace flag
Signed-off-by: ISHIDA Wataru <[email protected]>
2015-10-20 10:33:09 +09:00