BGP is the protocol that joins your network to everyone else, and it behaves unlike every IGP you learned before it. It does not discover neighbors, it does not advertise anything on its own, and it does not pick paths on bandwidth or delay. You tell it exactly who to peer with, exactly which prefixes to originate, and exactly which policy to apply. That inversion is what makes BGP hard to absorb from a book: the commands are short, but the behavior around them is not. A session sits in Active while the configuration looks perfect. A prefix appears in show ip bgp and never installs in the routing table. A filter applied inbound seems to do nothing at all. None of that becomes intuition until you have watched it happen on a session you built yourself.
These labs run real Cisco IOS in Cisco Modeling Labs and start where the exam does: router bgp 65001, a neighbor statement pointed at the far AS with remote-as 65002, and a network statement with an explicit mask to originate a prefix, which BGP advertises only when that exact prefix and mask already sit in the routing table. You verify with show ip bgp summary, learn to read the State and PfxRcd column properly, then confirm the prefix installed as a B route with show ip route bgp. Later labs add policy: per-neighbor prefix-list filtering, AS-path filtering with an anchored regex in ip as-path access-list applied as a filter-list, and path selection using weight and local preference. Troubleshooting labs hand you a session stuck in Idle or Active, a reversed remote-as, a network mask that does not line up, and an unreachable next hop. Every upload is graded requirement by requirement against the answer key.