Last time we looked at the snaproute BGP code, we discovered the peer bringup process is a finite state machine. With this in mind, let’s try to unravel the state machine into a set of calls, beginning from our original starting point, a debug message that prints on the screen when a new peering relationship is established. The key word in the debug message was ConnEstablished,
which led to:
func (fsm *FSM) ConnEstablished() {
fsm.logger.Info(fmt.Sprintln("Neighbor:", fsm.pConf.NeighborAddress, "FSM", fsm.id, "ConnEstablished - start"))
fsm.Manager.fsmEstablished(fsm.id, fsm.peerConn.conn)
fsm.logger.Info(fmt.Sprintln("Neighbor:", fsm.pConf.NeighborAddress, "FSM", fsm.id, "ConnEstablished - end"))
}
From here, we searched for calls to ConnEstablished,
and found—
func (fsm *FSM) ChangeState(newState BaseStateIface) {
...
if oldState == BGPFSMEstablished && fsm.State.state() != BGPFSMEstablished {
fsm.ConnBroken()
} else if oldState != BGPFSMEstablished && fsm.State.state() == BGPFSMEstablished {
fsm.ConnEstablished()
}
}
Looking for ChangeState
leads us to a lot of different calls, but only one that seems to relate to establishing a new peer, as evidenced by a state that relates to established in some way. This, in turn, leads to—
func (st *OpenConfirmState) processEvent(event BGPFSMEvent, data Continue reading
The post Worth Reading: How Facebook makes you miss out on life appeared first on 'net work.
The post On the ‘Net: Big thinkers leave Cisco appeared first on 'net work.
The post On the ‘Net: You keep using that SDN word… appeared first on 'net work.
The post Worth Reading: Protecting your assets appeared first on 'net work.
The post Worth Reading: Microsoft’s Bid for LinkedIn appeared first on 'net work.
The post Worth Reading: Open Internet access on the line appeared first on 'net work.
This is a recent round table discussion I participated in over at LightReading. My friends over at ECI put this together.
The post Worth Watching: Has SDN lived up to the hype? appeared first on 'net work.
The post On the ‘net: What does a control plane do? appeared first on 'net work.
The post Worth Reading: Navigating EU safe harbor appeared first on 'net work.
The post Worth Reading: All the Apache streaming projects appeared first on 'net work.
This is coming out of the architecture team at LinkedIn—it’s really interesting for mid-tier scalers, large financials, and the like, so I thought I’d share it here as well.
The post Open19: A New Vision for the Data Center appeared first on 'net work.
The overall design of Ambry should look fairly familiar. There are frontend servers that handle incoming requests (there are just three operations: put, get, and delete) and route them to backend data nodes which store the actual data. A ZooKeeper-based cluster manager looks after the state of the cluster itself. —the morning paper (the full paper is here)
The post Worth Reading: LinkedIn’s Ambry appeared first on 'net work.
The post Worth Reading: Hyperties appeared first on 'net work.
The post Worth Reading: Sharing your password is illegal appeared first on 'net work.
Y’all—I’m in Berlin at the IETF this week, so I won’t be posting as many “long articles” as usual. I will have my usual slate of worth reading/etc. If anyone has questions about the IETF they’d like answered, feel free to comment here… I should be back to some state closer to normal next week, but between Live last week and the IETF this week, I’ve just not had my normal dose of “writing time” to work with.
The post Light Posting Week—IETF in Berlin appeared first on 'net work.
The post Worth Reading: Real time data processing at Facebook appeared first on 'net work.
In the last three episodes of this series, we discussed getting a copy of SnapRoute’s BGP code using Git, we looked at the basic structure of the project, and then we did some general housekeeping. At this point, I’m going to assume you have the tools you need installed, and you’re ready to follow along as we ask the code questions about how BGP actually works.
Now, let’s start with a simple question: how does BGP bring a new peer up?
It seems like we should be able to look for some file that’s named something with peering in it, but, looking at the files in the project, there doesn’t seem to be any such thing (click to show a larger version of the image below if you can’t read it).
Hmmm… Given it’s not obvious where to start, what do we do? There are a number of options, of course, but three options stand out as the easiest.
The post Worth Reading: Digital intoxication appeared first on 'net work.