Ok I was working through the first part above. I created my own GNS3 lab to follow.
I got to the part where you state that you can just add the network 3.3.3.0 mask 255.255.255.0 to R2 to allow R1 to see the network. Sure enough this worked.
See below a picture of my lab its the same except I used 3.3.3.1 for my loopback instead of 3.3.3.3 and I also used one different interface on R2 but that was just mistake on my part that did not effect the lab so I left it.
My question was even though all the BGP networks and routes show up I still cannot ping the address of 3.3.3.1 from R1 to R3. Why is that? can you not ping over BGP? how can you not ping over it but the network traffic and routes work just fine?
Should they not have had IGP or static routes underneath the BGP or was it not needed because both IBGP routers are directly connected and then the R3 and R2 are connected directly over EBGP. if I run a capture you can tell the IP are getting there but just no reply and that’s because R3 does not know how to get back to R1 which makes sense as there is no IGP or static route. However, back to the question in bold about how come BGP can get back and forth but the ping cannot.
Sure enough if I add a static route the ping works so its just as I said above.

after adding static route:
So if this was a real world scenarios for an ISP it does not seem like BGP could help with any transit data because it certainly didn’t help with the ping. So is this lab an incomplete lab that is not really a working model because there is no underlying routing protocols or static routes?
In other words it seems to me that BGP lies to us when it says its connected because if it was connected we should be able to ping. OH well I am getting off topic maybe when you answer my question in bold it will explain everything.
wireshark after I added static route:
I went ahead and removed the static route to watch the wireshark traffic. I still see traffic but I just have to wonder if any payload data would be transmitted over BGP for example SIP, or IP traffic regular PC stuff. Why would ICMP(pings) be blocked but the rest of the traffic make it or would none of the traffic make it and just the BGP and management traffic only be transmitted??? Which if that was the case then BGP really does nothing but send its own crap over the network which I don’t see how that helps move data over the internet.
I have been just sitting and watching wireshark racking my brain. I finally highlighted all the Internet p[rotocol version 4, which should be the IP correct? all of the traffic is just the 192.168.23.0 /24 network nothing from the 192.168.12.0 /24 network.
That tells me the following if we don’t see any IP traffic from the 192.168.12.0/24 network that means no payload or transit data would ever get to us from the 192.168.12.0 /24.
Maybe I am wrong but it seems to me that BGP then cannot work without underlying routing protocol or static route because you would never receive information from another subnet that was not directly connected.
So if John Smith on his PC was on 192.168.12.0/12 and he was trying to get to the internet which was the 192.168.23.0 /24 network he would never reach it. which makes bgp worthless without a IGP or static route of some type? correct? Even the BGP its receiving is only from the 192.168.23.0 /24 network.
I setup a wireshark on the IBGP link between R1 and R2 and I don’t even see BGP keep alives there:
I am unsure why there are no BGP keep alives between R1 and R2.
wait I see why… there is no network command on R1, or R2 its on R3 only. Let me add one to the other two and test it.
!
router bgp 12
no synchronization
bgp log-neighbor-changes
neighbor 192.168.12.1 remote-as 12
neighbor 192.168.12.1 next-hop-self
neighbor 192.168.23.3 remote-as 3
no auto-summary
!
R2#
-----------------------------------------------------
!
router bgp 12
no synchronization
bgp log-neighbor-changes
neighbor 192.168.12.2 remote-as 12
no auto-summary
!
R#1
-------------------------------------------------------
!
router bgp 3
no synchronization
bgp log-neighbor-changes
network 3.3.3.0 mask 255.255.255.0
neighbor 192.168.23.2 remote-as 12
no auto-summary
!
R3#
Ok maybe NEVER MIND… when I added the network 192.168.12.0 mask 255.255.255.0 command to R2 I can now ping 3.3.3.1 on R3.
So the problem was me not BGP. BGP is behaving normally it will work with traffic as the ping worked… I just had not advertised the 192.168.12.0 /24 through BGP.
So I just have to ask this how does the BGP 3.3.3.0 /24 route show up in R1 BGP table even though I could not previously ping it? The other stuff now makes sense but that question remains.
Oh and a second question. How come I don’t see BGP Keep alives betgween R1 and R2 on the IBGP side and I do see them between R2 and R3 which is a EBGP connection. does IBGP not use keep alives. not sure what the TCP are for I guess just “ACK”?