PyCon Australia 2013

Diseñando y configurando redes de comunicaciones con Python

Simon Knight  · 

Transcripción

Extracto de la transcripción automática del vídeo realizada por YouTube.

our next presenter is a software engineer in the chief architects office at Cisco Systems where he is working on network virtualization and orchestration technologies his technical interests include network engineering configuration automation system architecture

and data visualization - tell us about working with large scale networks in Python please welcome Simon Knight thank you um so this is continuing some work that I started as a PhD student at the University of Adelaide and yetzer Python open source project

and continuing on at Cisco continuing the open source side of it so what we've been looking at is basically router configuration so routers are most people probably seen them before essentially just a computer with lots of network cards in and we can be

represented by this symbol plug them into each other and then they run routing protocols that then talk to each other and find the path and then you build them into a big network and you essentially have the internet and by grouping these routers with different

properties such as an autonomous system we can form yet different configurations so here we could have three networks talking to each other the essential thing is that the protocols in configuration running inside one network is slightly different to inside

a different companies network and then the protocols between them need to incorporate all the configuration the protocols between them needs to include information such as business relationships so it's just a lot of complexity once we start building them

into bigger networks so this is slightly bigger network but still extremely small in terms of the scale of the incident which is like 40 50 thousand router kind of deal with plenty of networks so what we're looking at is the configuration of these devices

and basically each of these is configured if they configure directly is in a low-level vendor specific syntax which is essentially fairly similar between each device but slightly different and that gets really tedious and error-prone and yeah and just takes

time consuming to do and to repeat that across lots of networks with slightly different properties so if a router is only talking to other routers inside the same network that's slightly different to if it's talking to routers in a different network

and getting all those properties right is important for the performance or for the network to actually work so each of these yet is very similar but just slightly different which is essentially really time-consuming and tedious and boring and really doesn't

scale when we get to big networks so in terms of trying to do the configuration one approach is to have like a data base and push that into templates and the problem then becomes how do we specify these properties in the data base because we've raised

the abstraction then from typing it into each device individually we can put the properties and data base push them into templates push them out to the network but we still have that the problem of making sure the properties talking about this router is the

correct ones and this one here and getting them the device level properties correct across the network wide context is the challenging bit and that's what we've been looking at so we took a step back and trying to look at how someone would ideally

design a network so in extremely simple Network here for instance you'd start on a whiteboard and draw up your routers which are the circles here and then draw something like the the circles around them to have some sort of attribute like the a s and then

you might use different colors of different tags to start describing how it goes from there it's pretty hard to capture from a whiteboard I guess you could do some image processing but we didn't so the next thing that's slightly more computable

is drawing something like Visio so we use yet which is a freeware such a Java program but I'm free we're a multi-platform program that you can draw diagrams in we've sort of used it to draw networks which were essentially a graph and one of the

key things here is that we have the attributes up here so what we can do is instead of drawing with a different color or different label on the whiteboard drawing the attributes so where I had the squiggle cloud around a group of routers to represent autonomous

system such as belonging to Telstra Net Orion - no - a different company we can actually put these attributes on the nodes here so for instance we have this route this one set as a router and the ASN is - so for a different group it might be a nascent of one

and I'll show you those in a few slides and then we can add some other properties like a route reflected to designate its role in a network and some other things which I'll get to the problem is though that we could capture and draw it at a higher

level but if that's just a GUI that we present to the end-user every network is slightly different in terms of how they want to configure their protocols or the links are using where they're optimizing to be low latency or low cost so try to capture

all these different requirements we can't just do draw your network add some attributes and then we'll build it for you because it's not really going to work so this is where the Python comes in so one of the nice things that we've yet is that

Visio and OmniGraffle don't do is that it connects port natively to a graph interchange format so it describes this network here that we draw up as a list of nodes and edges in the classic computer science graph sense and the attributes on them which means

that we can use something and network X is really nice a Python package for graph manipulation and analysis which can read natively graph ml so we can draw up our network in yet and that wasn't meant to use it again and import it directly into Network

X and start to do some things so we can then iterate over the nodes just native standard Python iteration and get the attributes there so we can see the nodes and then these attributes that were set so the x and y the ASN value which are set before and then

the upload things like the route reflected which might be a boolean that we can do some stuff with and yeah so that's the the attributes which suggests it we could draw it up and then do some Python type operations to start building up these configs we

[ ... ]

Nota: se han omitido las otras 3.095 palabras de la transcripción completa para cumplir con las normas de «uso razonable» de YouTube.