GL LC G • 9BC IJ GL LC G N J • C @ / / • / G J E L I @ J L JLCGA / / ML JN J • 9BC IJ GL LC G 9 N J • I C@C DG OE A OBC B O A L LBJ MAB MJ IJ M LC G M • L CE @ J B @MG LC G J G@CAMJ LC G • . J @MJLB J C M C G • 1 CG E D G F GLC G A L J BM • BLLI A AI E D F
,1 • ,1 FH GBHBIN NF I LFNNBI FI 1 G ID • :: ABPBG BA S : - 4 M • ENN M DFNEO H MLD D D • 2FDE BLC LH I B • BR G FNM HOGNF LBM I NFPBGS • ON H NF I CLFBIAGS • CFLMN LFI F GB ( D D A -4 D D OL : CN LB D9 -
GL MI L • F N # • C E L L D N # • 5 L DL GA F L LC F GLD N D GDGB • I L 72 L M LM • B 7- 72 G 1 G LDN 72 G O I L • G O D L P E P ML L I L B E GB! L G • D M A L DE • -C GB 2 CDL LM A ML 9 N • MII L DGBE 2 L M LM GEP A ML 9 N LMI • FMELD 2 L M LM C G E L • DFI N F F P G MFILD G • L
FDGFE E I • • D9AE 9 DFE G F II M A ADGC D E I / • 9E FE FCC LA9 6 ) 0 • • CC 9 10 • FEL D9E A E CN FDD9E I AE F 6 ) 0 9CC • 9E LA L I9 • FG AFE9C • GFG C9 M9N F AE 9LAF F F G • M A E AE FDC N9DC BIFE C
K 9 GLK IM I • NBDD N:DC KAIGL A • F K:DD:KBGF G G • G : EBFB KI:KBGF MB: P K E • G BF • IBKBF GF B LI:KBGF BD • BF I • DPBF GLK IM I GDB B • E GIK GDB P • O GIK GDB P • . KL
LION M LP L • IO H DHMN HNF ODF NC GI NI IFIB OMDHB 9 BL HN • 9 BL HNADF DM P DF F N .DN/O • CNN M BDNCO ! IG HMNBN BI B LION M LP L • -IFFI NC DHMNLO NDIHM DH 2 !G • P L NCDHB R N NC AIL .I . DH DFF M N O • : LHDHB • CDM GI M NO L DHM IOL NN L OD EF • 0 L IGG H IO NI NL NC GI C H IOTL DH IOL CIOM DNC MIG MH EM!!!
-F - • 9L MF FG FEI F EI 9CC -F - • 2G FE FMECF9 : E9 I • 9IN 9E I DGC M9N F I 9 • E9 I 9 GF 9:C • / : 9 I 9 I 9 9CCN C EB E F : E9 N • FMECF9 FD GI : FD FI F: G C 9I I ### download binaried rs $ wget https://github.com/osrg/gobgp/releases/download/v2.2.0/gobgp_2.2.0_linux_ amd64.tar.gz rs $ tar zxf gobgp_2.2.0_linux_amd64.tar.gz ### copy them to somewhere under $PATH rs $ cp gobgp gobgpd /usr/local/sbin/ 9C 9 N 21 E DF 9 9E EL FED E EI F: G F I L
• E SE TM MN IMLP M ILP 3M.39 • N IML(! .RI D BIL OIEP • 2MO DESE MNEO PM EMLE T M T L M OU PNECIFIC CM I • MR LEED M PE RN 3M LG SEOPIML -, ! BEFMOE • E CM N E IML S I B E FMO BM MN IMLP ) ### build binaried rs $ EXPORT GO111MODULE=on rs $ git clone git://github.com/osrg/gobgp rs $ cd gobgp && go mod download rs $ cd cmd && go install ./... ### copy them to somewhere under $PATH rs $ cp $GOPATH/bin/gobgp* /usr/local/sbin/ ### optional: install shell completion for gobgp command rs $ cp $GOPATH/src/github.com/osrg/gobgp/tools/completion/*.bash /etc/bash_completion.d/ OE DU 0 1 IL DE M > GO L ELSIOML EL LP G GMBGN OMR EPEOSEO :ECM ELDED
• C 6F9 )I9 1F6DF E9 F A A A F 9 F F D A99 E • 6A EC9 6A D9E 6AF F E9 Application Options: -f, --config-file= specifying a config file -t, --config-type= specifying config type (toml, yaml, json) (default: toml) -l, --log-level= specifying log level -p, --log-plain use plain format for logging (json by default) -s, --syslog= use syslogd --syslog-facility= specify syslog facility --disable-stdlog disable standard logging --cpus= specify the number of CPUs to be used --api-hosts= specify the hosts that gobgpd listens on (default: :50051) -r, --graceful-restart flag restart-state in graceful-restart capability -d, --dry-run check configuration --pprof-host= specify the host that gobgpd listens on for pprof (default: localhost:6060) --pprof-disable disable pprof profiling --sdnotify use sd_notify protocol --tls enable TLS authentication for gRPC API --tls-cert-file= The TLS cert file --tls-key-file= The TLS key file --version show version number
CM ( N DMP I • IN LCINF? IM M 5 A I FD DINL ? D I D M LL MI I ? • 9C M O ?I) • L --tls I MDI • MI F 70 NMC MD MDI AI 5 D M MDI • LIF M I ? ? ADFM I MDI • FI E LL MI I M ? A NFM M A I IMC CILML P FPD L N ? D M F L NF L
L CFDO • 1FII F PEB I L CFD N PFL FO R FI IB F PEB B L • .LMU F FPF I L CFD U I CLN P! PEB B FP FP • 2L-28 O MMLNPO PL I U I GOL E I CLN P • L B M NPO E RB INB U BB CFIIB • BT ! BFDE LN L CFD CLN N( N) • • EBNB NB F OPN PFL L B PO SEBNB UL M P L CFD N PFL ### copy fill-in-the-blank config file rs $ cp /vagrant/configs/rs/gobgpd.yaml /etc/gobgp/gobgpd.yaml ### edit to fill it according to instructions rs $ vim /etc/gobgp/gobgpd.yaml ### global setting: from global: config: as: 64686 router-id: 10.173.176.211 ### global setting: to , 8 P UL N L CFD CNL EBNB , PL EBNB EFO FO L CFD O MIB
: • F • F C : E :D F E E 9E F D : : 9 • 1 E I D9 D : 9 I F 9 9EE D D F9D • 1 9 C 9E :D EF9C EF9C • : F 9 C 9F9 9DE : : : 9 ### copy source is here! rs $ less /vagrant/configs/rs/step-by-step.yaml ### answer is here! rs $ less /vagrant/configs/rs/gobgpd.yaml.complete
) I IE E IF I D A ED E C I • M E :ECF I • 9 I E C D 1 • E : D I: IE F D I LI CE 9M F D -p/--log-plain • E 9 E D D I E I • : D 9 9 9M --disable-stdlog • M E E FFE I • L :I M I C E 9 F E :
HG C M , I • G C B H IHEC O HG C M LCHG G OG FC EEO IIEC O G CG ., LH LB H I I H • CG reload LH G ., CG O L F MGCL CE • . LB C OGL N H CG HG C M LCHG CE H I DM L H L EH CG CL G F CG HG LB M GL L L • 9HM G G N L EH LCHG H M CG H CG EH rs $ systemctl reload gobgpd
gobgp neighbor 10.173.176.101 BGP neighbor is 10.173.176.101, remote AS 65001, route-server-client BGP version 4, remote router ID 10.1.0.101 BGP state = ESTABLISHED, up for 00:01:53 BGP OutQ = 0, Flops = 0 Hold time is 90, keepalive interval is 30 seconds Configured hold time is 90, keepalive interval is 30 seconds Neighbor capabilities: multiprotocol: ipv4-unicast: advertised and received route-refresh: advertised and received graceful-restart: received Remote: notification flag set 4-octet-as: advertised and received long-lived-graceful-restart: received cisco-route-refresh: received Message statistics: Sent Rcvd Opens: 1 1 Notifications: 0 0 Updates: 3 1 Keepalives: 4 5 : (snip)
D 9 IL D 3- D .- • gobgp neighbor xxxx adj-in • EL E I EC D 9E D A 3- -D • gobgp neighbor xxxx adj-out • EL E I I F D I E MFE I 2EB N I D IE I D 9E • A 3- 1 I DEI D C CE N D I I BBN N I C I ECC D M I • gobgp neighbor xxxx local • EL E I D BE B I 9B E I D 9E • .E B 3- DEI D C CE N D I I BBN N I C I ECC D M I
6IFD ADHDMDIH LM N MN • 6IFD IHLDLML IA LM M HML • . C LM M HM C L IH DMDIH L H MDIH L • IH DMDIH L DAD L MC LM M IA 2 1L MI M C • P ADP H D C I 6 90 I NHDM S • MDIH L DAD L OC M MI I ODMC MC 2 1L • M E M • I DA MC MM D NM L • I NHDM 3.- FI F A 6 90 H PM CI • I IH DMDIH A L MI ADH L ML • P ADP L M H D C I L M I NHDM L M S ()
9 9 D7F 7E 9E • DEF : policy-definitions’ • 7 : defined-sets’ : : F 79 D :E • 7FF79 F F D 9 I F apply-policy • F 9 , I7F F E F C 9 E 2 F 3 D D E F C E F F F 7 9 • D 9 E 7 7 7 2 F 3 D D E F C ### example policy-definitions: - name: MY-IMPORT-POLICY1 statements: - actions: ... - conditions: ... ### example neighbors: - config: neighbor-addr: x.x.x.x ... apply-policy: config: import-policy-list: - MY-IMPORT-POLICY1
I 9 9 D ED defined-sets: prefix-sets: ### prefix list for AS65001 setting: from - prefix-set-name: AS65001-PREFIX prefix-list: - ip-prefix: 10.1.0.0/16 ### prefix list for AS65001 setting: to : (snip) bgp-defined-sets: as-path-sets: ### as path list for AS65001 setting: from - as-path-set-name: AS65001-PEER as-path-list: - ^65001_ - as-path-set-name: AS65001-ORIGIN as-path-list: - _65001$ ### as path list for AS65001 setting: to C D EA E 9 F CA ,11 AC DE E AC 2 AC 2 EA E 9 F CA ,11 AC DE E
previous page) community-sets: ### community list for AS65001 setting: from - community-set-name: NOT-EXPORT-TO-AS65001 community-list: - 0:65001 - community-set-name: EXPORT-TO-AS65001 community-list: - 64686:65001 ### community list for AS65001 setting: to : (snip) large-community-sets: ### large community list for AS65001 setting: from - large-community-set-name: NOT-EXPORT-TO-AS65001 large-community-list: - 64686:0:65001 - large-community-set-name: EXPORT-TO-AS65001 large-community-list: - 64686:1:65001 ### large community list for AS65001 setting: to F C D AC C 0 1 2 F C D AC C 0 1 2 F D AC C 0 1 2 F D AC C 0 1 2
TSU TSPNH V F R V • FH NSR, U S 1S RN C RKSU F NSRFP FLVD • HSRIN NSR, NK ! E= . * * * • FH NSR, FII 9FUL 1S RN C> FVSR, TF M SS PSRLD U O H • HSRIN NSR, RP VV !P K SV - R NLMGSU V • FH NSR, FII 9FUL 1S RN C> FVSR, FV TF M KNUV - T UFVD U O H • HSRIN NSR, NK !TU KN[ NR 0 5 • FH NSR, FII 9FUL 1S RN C> FVSR, 0SLSR =U KN[D U O H • HSRIN NSR, RP VV !SUNLNR NR • FH NSR, FII 9FUL 1S RN C> FVSR, UNLNR RS NR T U D U O H • HSRIN NSR, RP VV !TU KN[ NR • FH NSR, FII 9FUL 1S RN C> FVSR, >>20 =U KN[ RS KS RI NR SU F R D U O H • FH NSR, FII 9FUL 1S RN C RKSU F NSRFP FLV, >>20 B 9 2D • HSRIN NSR, NK !>= R FPNI • FH NSR, FII 9FUL 1S RN C> FVSR, =U KN[ NV >= B 9 2D U O H • !I KF P FH NSR, FHH T )( 4PS
L R ) .PI L I EC L L F L • CLC C N , FFM CL :- L N LC L .. 7 • LC D L • CLC C N 1 A , FFM CL :- L N LC L .. 7 • LC D L • CLC C N , FFM CL : N LC L .. 7 • LC F N :4I LC E 1 A , FFM CL IL • CLC C N 1 A , FFM CL : N LC L .. 7 • LC F N :4I LC E 1 A , FFM CL IL • CLC C N , FFM CL :- L N LC L EE I • LC D L • CLC C N 1 A , FFM CL :- L N LC L EE I • LC D L • LC F N 1 A , FFM CL :4I LC E • MEL LC IL ( E O
E D C F CE ( - actions: bgp-actions: set-community: options: remove set-community-method: communities-list: - ^(0|64686):[0-9]+$ set-large-community: options: remove set-large-community-method: communities-list: - ^64686:[0-9]{1}:[0-9]*$ - ^64686:[0-9]{3}:[0-9]*$ ### export policy for AS65001 setting: to
, CAF DA A I N ICAF • I DOAF DA A F C L LII F I L M I A E F • 3 I L M I A 6( 9default-export-policy9 A I B • 3 I L M I A I E 6( 6( 9default-import-policy9 A I B ### check received routes from AS65001 rs $ gobgp neighbor 10.173.176.101 adj-in ID Network Next Hop AS_PATH Age Attrs N 0 10.1.0.0/16 10.173.176.101 65001 00:32:26 [{Origin: i}] N 0 10.1.1.0/24 10.173.176.101 65001 65001 65001 65001 65001 65001 00:32:26 [{Origin: i}] N 0 10.1.2.0/24 10.173.176.101 65111 65001 00:32:26 [{Origin: i}] N 0 10.1.3.0/24 10.173.176.101 65001 00:32:26 [{Origin: i}] ### check advertised routes to AS65001 rs $ gobgp neighbor 10.173.176.101 adj-out Network not in table ### check advertised routes to AS65002, from AS65001 rs $ neighbor 10.173.176.102 adj-out | grep 10.173.176.101 rs $
O AE FCA A I : MF AE • CNAE FCA A I :E I : I • 2FM F I FD 5 :E 5 : : L AI F 5 MA E F D: AFE:C FDD EA N 8 9 rs $ systemctl reload gobgpd ### check advertised routes to AS65001 rs $ gobgp neighbor 10.173.176.101 adj-out ID Network Next Hop AS_PATH Attrs N 1 10.2.0.0/16 10.173.176.102 65002 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.3.0.0/16 10.173.176.103 65003 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}]
CAF DA A I N ICAF • DOAF DA A F C L • I L I E 6( A M I A 6( F D 6( • 910.1.0.0/169 A FDO F I L I DD NAF I L I I AF E I DA O D N • 910.1.1.0/249 • 910.1.2.0/249 • 910.1.3.0/249 ### check advertised routes to AS65002, from AS65001 rs $ gobgp neighbor 10.173.176.102 adj-out ID Network Next Hop AS_PATH Attrs N 1 10.1.0.0/16 10.173.176.101 65001 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.3.0.0/16 10.173.176.103 65003 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}]
: FE:C FDD E N • 5A F 910.23.0.0/169 I L FD I EF IAFM E : L I D E I F F 2 : FE:C FDD E N 8 • MA A D :EI O F EF : L I F ### check received routes from AS65002 rs $ gobgp neighbor 10.173.176.102 adj-in ID Network Next Hop AS_PATH Age Attrs N 0 10.2.0.0/16 10.173.176.102 65002 09:15:55 [{Origin: i}] N 0 10.23.0.0/16 10.173.176.102 65002 09:15:55 [{Origin: i} {LargeCommunity: [ 64686:0:65001]}] ### check advertised routes to AS65001 rs $ gobgp neighbor 10.173.176.101 adj-out ID Network Next Hop AS_PATH Attrs N 1 10.2.0.0/16 10.173.176.102 65002 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.3.0.0/16 10.173.176.103 65003 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}]
FE C FDD E N • 5E A F A A E A F I L I F ,7 • 5 FE C FDD E N : M I I ### check advertised routes to AS65003 rs $ gobgp neighbor 10.173.176.103 adj-out ID Network Next Hop AS_PATH Attrs N 1 10.1.0.0/16 10.173.176.101 65001 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.2.0.0/16 10.173.176.102 65002 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.23.0.0/16 10.173.176.102 65002 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}]
A 9 AFE F 39 A AE • DA A 9 AFE F 39 A AE • 6 HF 810.23.0.0/168 AI H AL HFD EF FECM 5 9CIF 5 ### login to r3 and advertise route r3> configure r3# set policy-options prefix-list my-prefixes 10.23.0.0/16 r3# show | compare r3# commit check r3# commit ### advertised routes from AS65003 rs $ gobgp neighbor 10.173.176.103 adj-in ID Network Next Hop AS_PATH Age Attrs N 0 10.3.0.0/16 10.173.176.103 65003 09:28:29 [{Origin: i}] N 0 10.23.0.0/16 10.173.176.103 65003 00:00:02 [{Origin: i}]
H 9H DC D 9H C • 6 F 9F H D 9C 9H FDIH DF 10.23.0.0/16 • .H D H 9H H DC FDB 5 A H 9 H 9H D F H DC CDH 9 FH 9 HI9AAL ### check local RIB for AS65001 rs $ gobgp neighbor 10.173.176.101 local Network Next Hop AS_PATH Age Attrs N*>10.2.0.0/16 10.173.176.102 65002 06:17:49 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N*>10.3.0.0/16 10.173.176.103 65003 06:18:38 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N*>10.23.0.0/16 10.173.176.102 65002 06:17:49 [{Origin: i} {LargeCommunity: [ 64686:0:65001, 64686:1001:1]}] N* 10.23.0.0/16 10.173.176.103 65003 00:00:40 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}]
3 A F • F A I L 9 10.23.0.0/16 9 I E 5 M I 5 • 6A P A NA F I L I C F OH I 3 D P A DD N F F I L N DD M DL F OH I 3 D P F M I A I L H ### check advertised routes to AS65001 rs $ gobgp neighbor 10.173.176.101 adj-out ID Network Next Hop AS_PATH Attrs N 1 10.2.0.0/16 10.173.176.102 65002 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.3.0.0/16 10.173.176.103 65003 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}] N 1 10.23.0.0/16 10.173.176.103 65003 [{Origin: i} {LargeCommunity: [ 64686:1001:1]}]
K N E FECO K I F 2 : : IM I • I N L F E 2 : : IM I F I K 9O 1 1 06/ 2 • KK NNN D A E I • : E I HL I KF I K IK F9 ### rpki setting: from rpki-servers: - config: address: 210.173.170.254 port: 323 ### rpki setting: to rs $ systemctl restart gobgpd
E D= 3. 9 9 DC F I • 1D : DI C D D =L F M :DC= D DI EI C 9 1 1D =DIC 9 ### check RPKI validation result rs $ gobgp neighbor 10.173.176.101 adj-in ID Network Next Hop AS_PATH Age Attrs I 0 1.0.0.0/24 10.173.176.101 7521 00:02:04 [{Origin: i}] N 0 10.1.0.0/16 10.173.176.101 7521 00:14:22 [{Origin: i}] V 0 210.173.160.0/24 10.173.176.101 7521 00:14:22 [{Origin: i}]
NE E D M • CF EL NE FE N D ED • I ?D FE I E NE 3E 4 L I L C D I D I I D? O • F EN 2L • E 9D D ED ? 9 ED 9 D 2L I D?I • O 9L 9 9 N D ED ? rs $ cp /vagrant/configs/rs/gobgpd.yaml.ipv6 /etc/gobgpd/gobgpd.yaml rs $ systemctl reload gobgpd
N ? I JO J I PN • 1JEI ?F • DNN M CJ C M ?F ?J • 0 JO EI OC! J I EMMO I M I 6 JI CENDO • JO ? I EI OLND L EI JL NEJI EI J E?E J?M • DNN M CENDO ?J JMLC CJ C NL MN L J?M MJOL? M