BGP is a path-vector routing protocol used between autonomous systems (ASes) on the internet to exchange routing and reachability information. It works by having each AS share information about available routes and their paths through other ASes with their neighboring ASes. This document provides an overview of how BGP operates, including how routes are selected and exported based on policies, the use of attributes to share routing information, and some common issues with BGP like convergence and security concerns that can arise from policy routing.