Most of your confusion seems to be related to your other duplicate question, which is the same as 3. above...:
prepend AS path usually running with route-map out to adjust outbound traffic from router which contain this option
I'm sorry, but you are mistaken; prepending your ASN out adjusts traffic inbound to your ASN.
Does prepend work with route-map in at all to adjust inbound traffic?
Yes, it does, but prepending inbound bgp routes influences outbound traffic flow from your BGP router. This is an example prepend in BGP policy to prepend 5 more of the last-as in the received AS path for an eBGP neighbor...
!
route-map FOO_in permit 10
set as-path prepend last-as 5
!
Let's clarify some things...
neighbor x.x.x.x route-map FOO_out out
adjusts traffic inbound to your ASN.
neighbor x.x.x.x route-map FOO_in in
adjusts traffic outbound from your ASN; use local-preference or some other criteria to influence your outbound traffic.
Example configuration:
ip prefix-list MATCH_ALL permit 0.0.0.0/0
!
route-map AS100_out
match ip address prefix-list MATCH_ALL
! --> Prepend so other ASN don't prefer this path
! NOTE: don't do this... 20 prepends is absurd in the real world.
! Five or ten ASN prepends should be sufficient
set ip as-path prepend 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001
!
route-map AS100_in
match ip address prefix-list MATCH_ALL
! --> Set local-pref lower than 100, so we don't prefer this peer
set local-preference 50
!
router bgp 777
! insert other "normal" bgp configuration here, network statement, etc..
!
neighbor 192.0.2.2 remote-as 100
! --> AS100_out adjusts *inbound* traffic
neighbor 192.0.2.2 route-map AS100_out out
! --> AS100_in adjusts *outbound* traffic
neighbor 192.0.2.2 route-map AS100_in in
NOTE: Prepending is deceptive; it might seem like nobody should select a path if you have prepended a lot of ASNs to your announcements, but even if you did that's no guarantee that downstream routers won't send traffic to you over that prepended path. The reality is that internet routing is still a per-hop / per-ASN decision, and you're still somewhat at the mercy of others. See below for an example.
Problems with AS-prepend traffic engineering
Strictly speaking, you loose complete control of inbound routing paths when you announce your prefix to multiple providers because there are independent routing decisions made downstream for return traffic to you. Furthermore, your announcements could even be modified by downstream providers after you send them.
Example
This is one example of what can happen. Continuing with the example configuration shown above...
- Suppose you have AS 777; you got a portable address block (2.2.0.0/22) from AS 100.
- You are dual homed to both AS 100 and AS 200
- You have services that a company with Router A needs to access.
- Assume that AS 100 doesn't have a good link to you (maybe it's intermittently corrupting traffic due to physical-layer problems you haven't been able to fix). So you think to yourself, "I'll just prepend all my announcements to AS100 with a large number of ASNs so nobody will prefer the AS100 link until I can fix this".
The problem is that you only have complete control of your outbound routing decisions. You don't get complete control inbound... so let's suppose Router A's administrator doesn't know your link to AS100 is bad. They are dual-homed to AS200 and AS100, but AS100 offers much cheaper transit, per-Mbps; therefore Router A's engineer takes full routes from AS100 and only uses AS200 as a backup (taking only a default from them).
AS 100's engineering team decides to set a high local-pref for 2.2.2.0/22 announcements from you. As such , the combination of full routes at router A and AS 100’s local pref means that you’ve lost control for ingress traffic through AS 100 to AS 777.
To summarize, As the admin of AS 777, you can force AS 777’s egress traffic to Router A through AS 200, but traffic from Router A to 2.2.0.0/22 would still take AS 100 (because the best route is through AS 100, at Router A).
It's not true that you always need iBGP. Many networks with eBGP run fine without it.
There are two scenarios where iBGP is important.
You are a transit provider. That means you allow traffic to pass through your AS. In your example, you allow AS 200 to reach AS 300 by going through you. In this case, B1 needs to know B2's routes so it can advertise them to AS 200, and vice versa. Your internal routers running OSPF don't need to know all these routes. So B1 talks to B2 using iBGP.
You have multiple border routers and they need to determine the best path out. You many have a default route drawing traffic to your edge, but then you may have several carriers from which to chose. B1 needs to know B2's routes so it can forward traffic to B2 if that's a better path.
This earlier SE question might help you too.
There are several good books on BGP design, and you would be served well by reading them. Look for books by Halabi, Stewart or Zhang.
Best Answer
There are multiple ways to do this.
The other ASes could be sending a default route, or the router in AS100 could just have a default route configured.
The other ASes could just advertise their own routes through BGP.
The other ASes could advertise full BGP routes to AS100.
BGP has many factors which could play into the decision of which way to switch traffic destined to another AS. This is the subject of entire books, and it is beyond the scope of this site. It is far more complicated than IGP routing protocols, and it may involve many steps to determine the best path. Often is just boils down to how many AS hops away it is to get to the other AS.
You may be confused about the role of iBGP. The distinction of iBGP and eBGP is whether or not the neighbor is in the same AS. An AS will almost always have more routers than just the routers connecting to other ASes. The routers internal to the AS would have the same AS number as their neighbors, so they would use iBGP.
It would also be a huge discussion about how design within an AS. Again, you could have default routes, full or partial routing tables, a combination, etc., or a mix of IGP and iBGP (which is involved because you could use a full-mesh, route reflectors, confederations, etc.).
What BGP neighbors send each other can be controlled. It could be full routing tables, or it could be whatever the AS owner decides is appropriate. there is no one answer to this question.