bgp_in_honeycomb_user_guide.adoc revision 2948cae3
1= Overview
2
3link:release_notes.html[< Home]
4
5Honeycomb uses link:https://wiki.opendaylight.org/view/BGP_LS_PCEP:BGP_Use_Cases[Opendaylight's BGP]
6as a part of default distribution.
7
8Following guide is based on ODL's link:http://docs.opendaylight.org/en/stable-{project-odl-version}/user-guide/bgpcep-guide/bgp/index.html[BGP User Guide].
9
10== Basic configuration
11
12BGP HC modules are disabled by default. To enable it, edit
13
14[subs="+attributes"]
15  modules/io-fd-honeycomb_minimal-distribution_{project-config-version}-module-config
16
17in distribution dir (/opt/honeycomb in case honeycomb was installed from package):
18
19[source]
20----
21[...]
22io.fd.honeycomb.infra.bgp.BgpModule
23io.fd.honeycomb.infra.bgp.BgpReadersModule
24io.fd.honeycomb.infra.bgp.BgpWritersModule
25// io.fd.honeycomb.northbound.bgp.extension.EvpnModule
26io.fd.honeycomb.northbound.bgp.extension.InetModule
27// io.fd.honeycomb.northbound.bgp.extension.L3VpnV4Module
28// io.fd.honeycomb.northbound.bgp.extension.L3VpnV6Module
29// io.fd.honeycomb.northbound.bgp.extension.LabeledUnicastModule
30// io.fd.honeycomb.northbound.bgp.extension.LinkstateModule
31----
32
33NOTE: HC allows to enable selected Multiprotocol BGP extensions. For the purpose of the guide, only InetModule
34extension module was enabled (IPv4 and IPv6 support).
35
36=== BGP server configuration
37
38Use config/bgp.json to configure BGP server:
39
40[source,json]
41----
42{
43  "bgp-binding-address": "127.0.0.1",
44  "bgp-port": 1790,
45  "bgp-as-number": 65000,
46  "bgp-receive-multiple-paths": "false",
47  "bgp-send-max-paths": 0,
48  "bgp-network-instance-name": "global-bgp",
49  "bgp-protocol-instance-name": "hc-bgp-instance",
50  "bgp-netty-threads": 2
51}
52----
53
54NOTE: bgp-binding-address is also used as identifier of BGP speaker.
55
56=== Running BGP
57
58After enabling BGP modules and configuring BGP server,
59link:user_running_honeycomb.html#_starting_honeycomb_agent[start honeycomb].
60
61BGP server configuration can be verified using RESTCONF/NETCONF.
62
63  curl -u admin:admin http://localhost:8183/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance
64
65NOTE: You can format the output using "python -m json.tool" in terminal:
66
67  curl -u admin:admin http://localhost:8183/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance | python -m json.tool
68
69[source,json]
70----
71{
72    "rib": [
73        {
74            "id": "hc-bgp-instance",
75            "loc-rib": {
76                "tables": [
77                    {
78                        "afi": "bgp-types:ipv4-address-family",
79                        "safi": "bgp-types:unicast-subsequent-address-family",
80                        "bgp-inet:ipv4-routes": {},
81                        "attributes": {
82                            "uptodate": true
83                        }
84                    }
85                ]
86            }
87        }
88    ]
89}
90----
91
92== BGP peer configuration
93
94Here is a sample basic neighbor configuration:
95
96*URL:* http://localhost:8183/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols/protocol/openconfig-policy-types:BGP/hc-bgp-instance/bgp/bgp-openconfig-extensions:neighbors/neighbor/127.0.0.2
97
98*Method:* PUT
99
100*Request body:*
101
102[source,json]
103----
104{
105  "neighbor": {
106    "neighbor-address": "127.0.0.2",
107    "config": {
108      "peer-type": "INTERNAL"
109  },
110  "timers": {
111    "config": {
112      "connect-retry": 10,
113      "hold-time": 90
114    }
115  },
116  "transport": {
117    "config": {
118      "remote-port": 17900,
119      "passive-mode": false
120    }
121  },
122  "afi-safis": {
123    "afi-safi": [
124      {
125        "afi-safi-name": "openconfig-bgp-types:IPV4-UNICAST"
126      }
127    ]
128  }
129}
130}
131----
132
133We can use link:http://docs.opendaylight.org/en/stable-{project-odl-version}/user-guide/bgpcep-guide/bgp/bgp-user-guide-test-tools.html[BGP's testtool]
134to simulate remote BGP peer:
135
136  java -jar ./target/bgp-testtool-*-executable.jar -ra 127.0.0.1:1790 -la 127.0.0.2:17900 -pr 2 -ll DEBUG --active true -as 65000 -mp true
137
138After connection is established, testtol will display following message in the log:
139
140  [...]
141  12:13:52.744 [epollEventLoopGroup-5-1] DEBUG o.o.p.b.r.i.p.BGPProtocolSessionPromise - Promise BGPProtocolSessionPromise@750e2b97(incomplete) completed
142  12:13:52.745 [epollEventLoopGroup-5-1] INFO  o.o.p.b.r.i.AbstractBGPSessionNegotiator - BGP Session with peer [id: 0xcab58201, L:/127.0.0.2:17900 - R:127.0.0.1/127.0.0.1:1790] established successfully.
143  12:14:22.716 [epollEventLoopGroup-5-1] DEBUG o.o.p.b.r.i.BGPSessionImpl - Message was received: Keepalive [augmentation=[]]
144  12:14:22.746 [epollEventLoopGroup-5-1] DEBUG o.o.p.b.r.i.BGPMessageToByteEncoder - Message sent to output: Keepalive [augmentation=[]]
145
146
147Once the remote peer is connected and it advertised routes to local BGP system, routes are stored in peer’s RIBs.
148The RIBs can be checked via REST:
149
150*URL:*: http://localhost:8183/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/peer/bgp:%2F%2F127.0.0.2
151
152*Method:* GET
153
154*Response Body:*
155
156[source,json]
157----
158{
159    "peer": [
160        {
161            "peer-id": "bgp://127.0.0.2",
162            "peer-role": "ibgp",
163            "effective-rib-in": {
164                "tables": [
165                    {
166                        "afi": "bgp-types:ipv4-address-family",
167                        "safi": "bgp-types:unicast-subsequent-address-family",
168                        "bgp-inet:ipv4-routes": {
169                            "ipv4-route": [
170                                {
171                                    "path-id": 5,
172                                    "route-key": "1.1.1.2/31",
173                                    "prefix": "1.1.1.2/31",
174                                    "attributes": {
175                                        "origin": {
176                                            "value": "egp"
177                                        },
178                                        "ipv4-next-hop": {
179                                            "global": "127.1.1.1"
180                                        },
181                                        "multi-exit-disc": {
182                                            "med": 0
183                                        },
184                                        "local-pref": {
185                                            "pref": 100
186                                        },
187                                        "as-path": {}
188                                    }
189                                },
190                                {
191                                    "path-id": 5,
192                                    "route-key": "1.1.1.1/31",
193                                    "prefix": "1.1.1.1/31",
194                                    "attributes": {
195                                        "origin": {
196                                            "value": "egp"
197                                        },
198                                        "ipv4-next-hop": {
199                                            "global": "127.1.1.1"
200                                        },
201                                        "multi-exit-disc": {
202                                            "med": 0
203                                        },
204                                        "local-pref": {
205                                            "pref": 100
206                                        },
207                                        "as-path": {}
208                                    }
209                                }
210                            ]
211                        },
212                        "attributes": {
213                            "uptodate": false
214                        }
215                    }
216                ]
217            },
218            "adj-rib-in": {
219                "tables": [
220                    {
221                        "afi": "bgp-types:ipv4-address-family",
222                        "safi": "bgp-types:unicast-subsequent-address-family",
223                        "bgp-inet:ipv4-routes": {
224                            "ipv4-route": [
225                                {
226                                    "path-id": 5,
227                                    "route-key": "1.1.1.2/31",
228                                    "prefix": "1.1.1.2/31",
229                                    "attributes": {
230                                        "origin": {
231                                            "value": "egp"
232                                        },
233                                        "ipv4-next-hop": {
234                                            "global": "127.1.1.1"
235                                        },
236                                        "multi-exit-disc": {
237                                            "med": 0
238                                        },
239                                        "local-pref": {
240                                            "pref": 100
241                                        },
242                                        "as-path": {}
243                                    }
244                                },
245                                {
246                                    "path-id": 5,
247                                    "route-key": "1.1.1.1/31",
248                                    "prefix": "1.1.1.1/31",
249                                    "attributes": {
250                                        "origin": {
251                                            "value": "egp"
252                                        },
253                                        "ipv4-next-hop": {
254                                            "global": "127.1.1.1"
255                                        },
256                                        "multi-exit-disc": {
257                                            "med": 0
258                                        },
259                                        "local-pref": {
260                                            "pref": 100
261                                        },
262                                        "as-path": {}
263                                    }
264                                }
265                            ]
266                        },
267                        "attributes": {
268                            "uptodate": false
269                        }
270                    }
271                ]
272            },
273            "supported-tables": [
274                {
275                    "afi": "bgp-types:ipv4-address-family",
276                    "safi": "bgp-types:unicast-subsequent-address-family",
277                    "send-receive": "both"
278                }
279            ],
280            "adj-rib-out": {
281                "tables": [
282                    {
283                        "afi": "bgp-types:ipv4-address-family",
284                        "safi": "bgp-types:unicast-subsequent-address-family",
285                        "bgp-inet:ipv4-routes": {},
286                        "attributes": {
287                            "uptodate": false
288                        }
289                    }
290                ]
291            }
292        }
293    ]
294}
295----
296
297== RIB programming
298
299The OpenDaylight BGP implementation also supports routes injection via Application Peer.
300Such peer has its own programmable RIB, which can be modified by user.
301This concept allows user to originate new routes and advertise them to all connected peers.
302
303Following configuration sample show a way to configure the Application Peer:
304
305*URL:* http://localhost:8183/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols/protocol/openconfig-policy-types:BGP/hc-bgp-instance/bgp/bgp-openconfig-extensions:neighbors/neighbor/127.0.0.1
306
307*Method:* PUT
308
309*Request body:*
310
311[source,json]
312----
313{
314  "neighbor": {
315    "neighbor-address": "127.0.0.1",
316    "config": {
317      "peer-group": "application-peers"
318    },
319    "afi-safis": {
320      "afi-safi": [
321        {
322          "afi-safi-name": "openconfig-bgp-types:IPV4-UNICAST"
323        }
324      ]
325    }
326  }
327}
328----
329
330The Application Peer presence can be verified via REST:
331
332*URL:* http://localhost:8183/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/peer/bgp:%2F%2F127.0.0.1
333
334*Method:* GET
335
336*Response body:*
337
338[source,json]
339----
340{
341    "peer": [
342        {
343            "peer-id": "bgp://127.0.0.1",
344            "effective-rib-in": {
345                "tables": [
346                    {
347                        "afi": "bgp-types:ipv4-address-family",
348                        "safi": "bgp-types:unicast-subsequent-address-family",
349                        "bgp-inet:ipv4-routes": {},
350                        "attributes": {
351                            "uptodate": false
352                        }
353                    }
354                ]
355            },
356            "peer-role": "internal",
357            "adj-rib-in": {
358                "tables": [
359                    {
360                        "afi": "bgp-types:ipv4-address-family",
361                        "safi": "bgp-types:unicast-subsequent-address-family",
362                        "bgp-inet:ipv4-routes": {},
363                        "attributes": {
364                            "uptodate": false
365                        }
366                    }
367                ]
368            }
369        }
370    ]
371}
372----
373
374=== Programmable RIB
375
376Next example shows how to inject a route into the programmable RIB.
377
378*URL:* http://localhost:8183/restconf/config/bgp-rib:application-rib/127.0.0.1/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv4-routes/ipv4-route/10.0.0.11%2F32/0
379
380*Method:* PUT
381
382*Request body:*
383
384[source,xml]
385----
386<ipv4-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-inet">
387    <route-key>10.0.0.11/32</route-key>
388    <path-id>0</path-id>
389    <prefix>10.0.0.11/32</prefix>
390    <attributes>
391        <as-path></as-path>
392        <origin>
393            <value>igp</value>
394        </origin>
395        <local-pref>
396            <pref>100</pref>
397        </local-pref>
398        <ipv4-next-hop>
399            <global>10.11.1.1</global>
400        </ipv4-next-hop>
401    </attributes>
402</ipv4-route>
403----
404
405Once the remote peer is connected (we used testtool to simulate it)
406and it advertised routes to local BGP system, routes are stored in peer’s RIBs. The RIBs can be checked via REST:
407
408
409*URL:* http://localhost:8183/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/peer/bgp:%2F%2F127.0.0.2
410
411*Method:* GET
412
413*Response body:*
414
415[source,json]
416----
417{
418    "peer": [
419        {
420            "peer-id": "bgp://127.0.0.2",
421            "peer-role": "ibgp",
422            "effective-rib-in": {
423                "tables": [
424                    {
425                        "afi": "bgp-types:ipv4-address-family",
426                        "safi": "bgp-types:unicast-subsequent-address-family",
427                        "bgp-inet:ipv4-routes": {
428                            "ipv4-route": [
429                                {
430                                    "path-id": 5,
431                                    "route-key": "1.1.1.2/31",
432                                    "prefix": "1.1.1.2/31",
433                                    "attributes": {
434                                        "origin": {
435                                            "value": "egp"
436                                        },
437                                        "ipv4-next-hop": {
438                                            "global": "127.1.1.1"
439                                        },
440                                        "multi-exit-disc": {
441                                            "med": 0
442                                        },
443                                        "local-pref": {
444                                            "pref": 100
445                                        },
446                                        "as-path": {}
447                                    }
448                                },
449                                {
450                                    "path-id": 5,
451                                    "route-key": "1.1.1.1/31",
452                                    "prefix": "1.1.1.1/31",
453                                    "attributes": {
454                                        "origin": {
455                                            "value": "egp"
456                                        },
457                                        "ipv4-next-hop": {
458                                            "global": "127.1.1.1"
459                                        },
460                                        "multi-exit-disc": {
461                                            "med": 0
462                                        },
463                                        "local-pref": {
464                                            "pref": 100
465                                        },
466                                        "as-path": {}
467                                    }
468                                }
469                            ]
470                        },
471                        "attributes": {
472                            "uptodate": false
473                        }
474                    }
475                ]
476            },
477            "adj-rib-in": {
478                "tables": [
479                    {
480                        "afi": "bgp-types:ipv4-address-family",
481                        "safi": "bgp-types:unicast-subsequent-address-family",
482                        "bgp-inet:ipv4-routes": {
483                            "ipv4-route": [
484                                {
485                                    "path-id": 5,
486                                    "route-key": "1.1.1.2/31",
487                                    "prefix": "1.1.1.2/31",
488                                    "attributes": {
489                                        "origin": {
490                                            "value": "egp"
491                                        },
492                                        "ipv4-next-hop": {
493                                            "global": "127.1.1.1"
494                                        },
495                                        "multi-exit-disc": {
496                                            "med": 0
497                                        },
498                                        "local-pref": {
499                                            "pref": 100
500                                        },
501                                        "as-path": {}
502                                    }
503                                },
504                                {
505                                    "path-id": 5,
506                                    "route-key": "1.1.1.1/31",
507                                    "prefix": "1.1.1.1/31",
508                                    "attributes": {
509                                        "origin": {
510                                            "value": "egp"
511                                        },
512                                        "ipv4-next-hop": {
513                                            "global": "127.1.1.1"
514                                        },
515                                        "multi-exit-disc": {
516                                            "med": 0
517                                        },
518                                        "local-pref": {
519                                            "pref": 100
520                                        },
521                                        "as-path": {}
522                                    }
523                                }
524                            ]
525                        },
526                        "attributes": {
527                            "uptodate": false
528                        }
529                    }
530                ]
531            },
532            "supported-tables": [
533                {
534                    "afi": "bgp-types:ipv4-address-family",
535                    "safi": "bgp-types:unicast-subsequent-address-family",
536                    "send-receive": "both"
537                }
538            ],
539            "adj-rib-out": {
540                "tables": [
541                    {
542                        "afi": "bgp-types:ipv4-address-family",
543                        "safi": "bgp-types:unicast-subsequent-address-family",
544                        "bgp-inet:ipv4-routes": {
545                            "ipv4-route": [
546                                {
547                                    "path-id": 0,
548                                    "route-key": "10.0.0.11/32",
549                                    "prefix": "10.0.0.11/32",
550                                    "attributes": {
551                                        "origin": {
552                                            "value": "igp"
553                                        },
554                                        "ipv4-next-hop": {
555                                            "global": "10.11.1.1"
556                                        },
557                                        "local-pref": {
558                                            "pref": 100
559                                        },
560                                        "as-path": {}
561                                    }
562                                }
563                            ]
564                        },
565                        "attributes": {
566                            "uptodate": false
567                        }
568                    }
569                ]
570            }
571        }
572    ]
573}
574----
575
576Also the same route should appeared in Loc-RIB now:
577
578*URL:* http://localhost:8183/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/loc-rib
579
580*Method:* GET
581
582*Response body:*
583
584[source,json]
585----
586{
587    "loc-rib": {
588        "tables": [
589            {
590                "afi": "bgp-types:ipv6-address-family",
591                "safi": "bgp-types:unicast-subsequent-address-family",
592                "bgp-inet:ipv6-routes": {},
593                "attributes": {
594                    "uptodate": false
595                }
596            },
597            {
598                "afi": "bgp-types:ipv4-address-family",
599                "safi": "bgp-types:unicast-subsequent-address-family",
600                "bgp-inet:ipv4-routes": {
601                    "ipv4-route": [
602                        {
603                            "path-id": 0,
604                            "route-key": "1.1.1.1/31",
605                            "prefix": "1.1.1.1/31",
606                            "attributes": {
607                                "origin": {
608                                    "value": "egp"
609                                },
610                                "ipv4-next-hop": {
611                                    "global": "127.1.1.1"
612                                },
613                                "multi-exit-disc": {
614                                    "med": 0
615                                },
616                                "local-pref": {
617                                    "pref": 100
618                                },
619                                "as-path": {}
620                            }
621                        },
622                        {
623                            "path-id": 0,
624                            "route-key": "1.1.1.2/31",
625                            "prefix": "1.1.1.2/31",
626                            "attributes": {
627                                "origin": {
628                                    "value": "egp"
629                                },
630                                "ipv4-next-hop": {
631                                    "global": "127.1.1.1"
632                                },
633                                "multi-exit-disc": {
634                                    "med": 0
635                                },
636                                "local-pref": {
637                                    "pref": 100
638                                },
639                                "as-path": {}
640                            }
641                        },
642                        {
643                            "path-id": 0,
644                            "route-key": "10.0.0.11/32",
645                            "prefix": "10.0.0.11/32",
646                            "attributes": {
647                                "origin": {
648                                    "value": "igp"
649                                },
650                                "ipv4-next-hop": {
651                                    "global": "10.11.1.1"
652                                },
653                                "local-pref": {
654                                    "pref": 100
655                                },
656                                "as-path": {}
657                            }
658                        }
659                    ]
660                },
661                "attributes": {
662                    "uptodate": false
663                }
664            }
665        ]
666    }
667}
668----
669
670
671== Integration with VPP
672
673Honeycomb BGP implementation emits notifications on loc-rib modifications.
674Hc2vpp provides BgpInetModule module which translates
675link:http://docs.opendaylight.org/en/stable-{project-odl-version}/user-guide/bgpcep-guide/bgp/bgp-user-guide-ip-unicast-family.html[IP Unicast Family]
676routes from loc-rib into VPP FIB.
677
678The BgpInetModule is disabled by default. To enable it, edit
679
680  modules/io-fd-hc2vpp-integration_vpp-integration-distribution_1-17-07-module-config
681
682in distribution dir (/opt/honeycomb in case honeycomb was installed from package), then restart honeycomb.
683
684Let's add route using Application Peer:
685
686*URL:* http://localhost:8183/restconf/config/bgp-rib:application-rib/127.0.0.1/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv4-routes/ipv4-route/10.0.0.12%2F32/0
687
688*Method:* PUT
689
690*Request body:*
691
692[source,xml]
693----
694<ipv4-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-inet">
695    <route-key>10.0.0.12/32</route-key>
696    <path-id>0</path-id>
697    <prefix>10.0.0.12/32</prefix>
698    <attributes>
699        <as-path></as-path>
700        <origin>
701            <value>igp</value>
702        </origin>
703        <local-pref>
704            <pref>100</pref>
705        </local-pref>
706        <ipv4-next-hop>
707            <global>10.11.1.1</global>
708        </ipv4-next-hop>
709    </attributes>
710</ipv4-route>
711----
712
713Also the same route should appeared in VPP now:
714
715*URL:* http://localhost:8183/restconf/operational/hc2vpp-ietf-routing:routing/control-plane-protocols/control-plane-protocol/hc2vpp-ietf-routing:static/learned-protocol-0/static-routes/ipv4
716
717*Method:* GET
718
719*Response body:*
720
721[source,json]
722----
723{
724    "hc2vpp-ietf-ipv4-unicast-routing:ipv4": {
725        "route": [
726            {
727                "destination-prefix": "1.1.1.2/31",
728                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
729                "next-hop": {
730                    "next-hop-address": "127.1.1.1"
731                }
732            },
733            {
734                "destination-prefix": "255.255.255.255/32",
735                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
736                "next-hop": {
737                    "special-next-hop-enum": "blackhole"
738                }
739            },
740            {
741                "destination-prefix": "1.1.1.1/31",
742                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
743                "next-hop": {
744                    "next-hop-address": "127.1.1.1"
745                }
746            },
747            {
748                "destination-prefix": "10.0.0.12/32",
749                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
750                "next-hop": {
751                    "next-hop-address": "10.11.1.1"
752                }
753            },
754            {
755                "destination-prefix": "127.1.1.1/32",
756                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
757                "next-hop": {
758                    "special-next-hop-enum": "blackhole"
759                }
760            },
761            {
762                "destination-prefix": "224.0.0.0/4",
763                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
764                "next-hop": {
765                    "special-next-hop-enum": "blackhole"
766                }
767            },
768            {
769                "destination-prefix": "0.0.0.0/0",
770                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
771                "next-hop": {
772                    "special-next-hop-enum": "blackhole"
773                }
774            },
775            {
776                "destination-prefix": "0.0.0.0/32",
777                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
778                "next-hop": {
779                    "special-next-hop-enum": "blackhole"
780                }
781            },
782            {
783                "destination-prefix": "240.0.0.0/4",
784                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
785                "next-hop": {
786                    "special-next-hop-enum": "blackhole"
787                }
788            },
789            {
790                "destination-prefix": "10.11.1.1/32",
791                "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
792                "next-hop": {
793                    "special-next-hop-enum": "blackhole"
794                }
795            }
796        ]
797    }
798}
799----
800
801NOTE: Honeycomb persists config state between restarts. So you may also see 10.0.0.11 route that was added first.
802In order to remove persisted configuration, simply rm -rf /var/lib/honeycomb before starting honeycomb.
803
804== Postman collection with examples
805
806All the request examples can be found {project-git-web}/bgp/inet/bgp_inet_postman_collection.json?h={project-branch}[BGP postman collection].