A route reflector acts like a DR (for OSPF) or DIS (in IS-IS) where it acts as a central location where multiple BGP routers can peer with it. The Route Reflector is the Server and all other BGP peers are clients.
The benefit of this is that you can by pass the Full Mesh requirement the iBGP requires. Instead a Route Reflector server propagates routes to the peers. A Route Reflector advertises a route learned from one iBGP peer to another iBGP peer. (remember by it's very nature iBGP peers to not forward updates received as it is assumed the network is a Full Mesh. The use of a Route Reflector helps cuts down the admin required for a Full Mesh configuration.
If you had 10 routers, in a full mesh you'd be looking at 100 specific statements across the network. Introducing a Route Reflector cuts this down to 20 statements (11 on the RR and 9 across the remaining 9 routers).
There are rules on how a Route Reflector will propagate routes within the iBGP AS.
1) If a route is received from a non-client peer ( a BGP peer not using a route reflector), reflect to clients only
2) If a route is received from a client peer, refelct to all non-client peers AND client peers, except the originator of the route
3) If a route is received from an eBGP peer, reflect to all client and non-client peers.
Clients require no configuration at all. Process is transparent. Just configure your neighbor statements as usual.
On the Route Reflector:
R1(config)#router bgp 100
R1(config-router)#neighbor 172.16.10.1 route-reflector-client
R1(config-router)#neighbor 172.16.20.1 route-reflector-client
Note that when configuring the neighbor as a route reflector client the adjacency will go down and back up.
That's it. R1 will 'reflect' routes to the clients set out in the neighbor statements.
Verify your route reflector clients using:
R1#sh ip bgp neighbor
The out put will be quite lengthy but there will be a statement in the output highlighting the 'Route Reflector Client'