# Configuration Example ```toml [global.config] as = 1 router-id = "1.1.1.1" # listen port (by default 179) port = 1790 # to disable listening # port = -1 # listen address list (by default "0.0.0.0" and "::") local-address-list = ["192.168.10.1", "2001:db8::1"] [global.apply-policy.config] import-policy-list = ["policy1"] default-import-policy = "reject-route" export-policy-list = ["policy2"] default-export-policy = "accept-route" [[rpki-servers]] [rpki-servers.config] address = "210.173.170.254" port = 323 [[bmp-servers]] [bmp-servers.config] address = "127.0.0.1" port = 11019 route-monitoring-policy = "pre-policy" statistics-timeout = 3600 [[vrfs]] [vrfs.config] name = "vrf1" # If id is omitted, automatically assigned. id = 1 rd = "65000:100" # Each configuration for import and export RTs; # import-rt-list # export-rt-list # are preferred than both-rt-list. both-rt-list = ["65000:100"] [[mrt-dump]] [mrt-dump.config] dump-type = "updates" file-name = "/tmp/log/2006/01/02.1504.dump" dump-interval = 180 [zebra] [zebra.config] enabled = true url = "unix:/var/run/quagga/zserv.api" redistribute-route-type-list = ["connect"] version = 2 # version used in Quagga on Ubuntu 16.04 [[neighbors]] [neighbors.config] peer-as = 2 auth-password = "password" neighbor-address = "192.168.10.2" # override global.config.as value local-as = 1000 remove-private-as = "all" # To enable peer group setting, uncomment the following #peer-group = "my-peer-group" [neighbors.as-path-options.config] allow-own-as = 1 replace-peer-as = true [neighbors.timers.config] connect-retry = 5 hold-time = 9 keepalive-interval = 3 [neighbors.transport.config] passive-mode = true local-address = "192.168.10.1" remote-port = 2016 ttl = 64 # default value on Linux [neighbors.ebgp-multihop.config] enabled = true multihop-ttl = 100 [neighbors.route-reflector.config] route-reflector-client = true route-reflector-cluster-id = "192.168.0.1" [neighbors.add-paths.config] send-max = 8 receive = true [neighbors.graceful-restart.config] enabled = true notification-enabled = true long-lived-enabled = true # graceful restart restart time restart-time = 20 [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv4-unicast" [neighbors.afi-safis.prefix-limit.config] max-prefixes = 1000 shutdown-threshold-pct = 80 [neighbors.afi-safis.mp-graceful-restart.config] enabled = true [neighbors.afi-safis.long-lived-graceful-restart.config] enabled = true # long lived graceful restart restart time restart-time = 100000 [neighbors.afi-safis.add-paths.config] # override neighbors.add-paths.config receive = true send-max = 8 [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv6-unicast" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv4-labelled-unicast" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv6-labelled-unicast" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "l3vpn-ipv4-unicast" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "l3vpn-ipv6-unicast" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "l2vpn-evpn" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "rtc" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv4-encap" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv6-encap" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv4-flowspec" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "ipv6-flowspec" [[neighbors.afi-safis]] [neighbors.afi-safis.config] afi-safi-name = "opaque" [neighbors.apply-policy.config] import-policy-list = ["policy1"] default-import-policy = "reject-route" export-policy-list = ["policy2"] default-export-policy = "accept-route" in-policy-list = ["policy3"] default-in-policy = "reject-route" [neighbors.route-server.config] route-server-client = true # To enable TTL Security, uncomment the following. # Please note that this feature is mututally exclusive with # "neighbors.ebgp-multihop.config". #[neighbors.ttl-security.config] # enabled = true # ttl-min = 255 # 255 means directly connected [[peer-groups]] [peer-groups.config] peer-group-name = "my-peer-group" peer-as = 65000 [[peer-groups.afi-safis]] [peer-groups.afi-safis.config] afi-safi-name = "ipv4-unicast" [[dynamic-neighbors]] [dynamic-neighbors.config] prefix = "20.0.0.0/24" peer-group = "my-peer-group" [[defined-sets.prefix-sets]] prefix-set-name = "ps0" [[defined-sets.prefix-sets.prefix-list]] ip-prefix = "10.0.0.0/8" masklength-range = "24..32" [[defined-sets.neighbor-sets]] neighbor-set-name = "ns0" neighbor-info-list = ["192.168.10.2", "172.13.0.0/24"] [[defined-sets.bgp-defined-sets.community-sets]] community-set-name = "cs0" community-list = ["100:100"] [[defined-sets.bgp-defined-sets.ext-community-sets]] ext-community-set-name = "es0" ext-community-list = ["rt:100:100", "soo:200:200"] [[defined-sets.bgp-defined-sets.as-path-sets]] as-path-set-name = "as0" as-path-list = ["^100", "200$"] [[defined-sets.bgp-defined-sets.large-community-sets]] large-community-set-name = "ls0" large-community-list = ["100:100:100", "200:200:200"] [[policy-definitions]] name = "policy1" [[policy-definitions.statements]] [policy-definitions.statements.conditions.match-prefix-set] prefix-set = "ps0" match-set-options = "any" [policy-definitions.statements.conditions.match-neighbor-set] neighbor-set = "ns0" match-set-options = "invert" [policy-definitions.statements.conditions.bgp-conditions.match-community-set] community-set = "cs0" match-set-options = "all" [policy-definitions.statements.conditions.bgp-conditions.match-large-community-set] large-community-set = "ls0" match-set-options = "all" [policy-definitions.statements.actions.bgp-actions.set-as-path-prepend] as = "last-as" repeat-n = 5 [policy-definitions.statements.actions] route-disposition = "accept-route" [[policy-definitions.statements]] [policy-definitions.statements.conditions.bgp-conditions.match-ext-community-set] ext-community-set = "es0" [policy-definitions.statements.actions] route-disposition = "reject-route" [[policy-definitions]] name = "policy2" [[policy-definitions.statements]] [policy-definitions.statements.conditions.bgp-conditions.match-as-path-set] as-path-set = "as0" [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-community] options = "add" [policy-definitions.statements.actions.bgp-actions.set-community.set-community-method] communities-list = ["100:200"] [[policy-definitions]] name = "policy3" [[policy-definitions.statements]] [policy-definitions.statements.conditions.bgp-conditions.match-as-path-set] as-path-set = "as0" [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-community] options = "add" [policy-definitions.statements.actions.bgp-actions.set-community.set-community-method] communities-list = ["100:200"] [[policy-definitions.statements]] [policy-definitions.statements.conditions.match-prefix-set] prefix-set = "ps0" match-set-options = "invert" [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-ext-community] options = "replace" [policy-definitions.statements.actions.bgp-actions.set-ext-community.set-ext-community-method] communities-list = ["soo:100:200", "rt:300:400"] [[policy-definitions.statements]] [policy-definitions.statements.conditions.match-neighbor-set] neighbor-set = "ns0" [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-ext-community] options = "remove" [policy-definitions.statements.actions.bgp-actions.set-ext-community.set-ext-community-method] communities-list = ["soo:500:600", "rt:700:800"] [[policy-definitions.statements]] [policy-definitions.statements.conditions.bgp-conditions] next-hop-in-list = [ "10.0.100.1/32" ] [policy-definitions.statements.actions] route-disposition = "accept-route" [[policy-definitions]] name = "route-type-policy" [[policy-definitions.statements]] # this statement matches with locally generated routes [policy-definitions.statements.conditions.bgp-conditions] route-type = "local" [policy-definitions.statements.actions] route-disposition = "accept-route" [[policy-definitions.statements]] # this statement matches with routes from iBGP peers [policy-definitions.statements.conditions.bgp-conditions] route-type = "internal" [policy-definitions.statements.actions] route-disposition = "accept-route" [[policy-definitions.statements]] # this statement matches with routes from eBGP peers [policy-definitions.statements.conditions.bgp-conditions] route-type = "external" [policy-definitions.statements.actions] route-disposition = "accept-route" [[policy-definitions]] name = "large-communty-policy" [[policy-definitions.statements]] # this statement adds specified large communities [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-large-community] options = "add" [policy-definitions.statements.actions.bgp-actions.set-large-community.set-large-community-method] communities-list = ["100:200:300"] [[policy-definitions.statements]] # this statement adds specified large communities [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-large-community] options = "replace" [policy-definitions.statements.actions.bgp-actions.set-large-community.set-large-community-method] communities-list = ["100:200:300"] [[policy-definitions.statements]] # this statement removes specified large communities # regular expression is also supported [policy-definitions.statements.actions] route-disposition = "accept-route" [policy-definitions.statements.actions.bgp-actions.set-large-community] options = "remove" [policy-definitions.statements.actions.bgp-actions.set-large-community.set-large-community-method] communities-list = ["100:200:300", "^200:"] ```