Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
antoinerime committed Aug 27, 2019
1 parent a4cb534 commit 7641326
Show file tree
Hide file tree
Showing 25 changed files with 1,492 additions and 1,566 deletions.
80 changes: 72 additions & 8 deletions launch_net.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,78 @@
import ipmininet
from ipmininet.ipnet import IPNet
from ipmininet.cli import IPCLI
from mininet.log import lg, LEVELS

importlib.import_module('simple_bgp_network')
from simple_bgp_network import SimpleBGPTopo
from simple_topo_2rr import SimpleBGPTopo2RR
from simple_topo_as import SimpleBGPTopoAS
from simple_topo_err import SimpleBGPTopoErr
from simple_topo_local_pref import SimpleBGPTopoLocalPref
from simple_topo_med import SimpleBGPTopoMed
from simple_topo_missing1 import SimpleBGPTopoMissing1
from simple_topo_missing2 import SimpleBGPTopoMissing2
from simple_topo_missing3 import SimpleBGPTopoMissing3
from simple_topo import SimpleBGPTopo
from simple_topo_routes import SimpleBGPTopoRoutes
from simple_topo_rr import SimpleBGPTopoRR
from topo_2rr_1 import BGPTopo2RR1
from topo_2rr_2 import BGPTopo2RR2
from topo_2rr_3 import BGPTopo2RR3
from topo_2rr_4 import BGPTopo2RR4
from topo_2rr_5 import BGPTopo2RR5
from topo_3rr_1 import BGPTopo3RR1
from topo_3rr_2 import BGPTopo3RR2
from topo_3rr_3 import BGPTopo3RR3
from topo_med import MedBGPTopo
from topo_te_1 import BGPTopoTE1
from topo_te_2 import BGPTopoTE2

net = IPNet(topo=SimpleBGPTopoErr())
ipmininet.DEBUG_FLAG = True
try:
net.start()
IPCLI(net)
finally:
net.stop()
import argparse

TOPOS = {'simple_bgp_network': SimpleBGPTopo,
'simple_topo_2rr': SimpleBGPTopo2RR,
'simple_topo_as': SimpleBGPTopoAS,
'simple_topo_err': SimpleBGPTopoErr,
'simple_topo_local_pref': SimpleBGPTopoLocalPref,
'simple_topo_med': SimpleBGPTopoMed,
'simple_topo_missing1': SimpleBGPTopoMissing1,
'simple_topo_missing2': SimpleBGPTopoMissing2,
'simple_topo_missing3': SimpleBGPTopoMissing3,
'simple_topo': SimpleBGPTopo,
'simple_topo_rr': SimpleBGPTopoRR,
'topo_2rr_1': BGPTopo2RR1,
'topo_2rr_2': BGPTopo2RR2,
'topo_2rr_3': BGPTopo2RR3,
'topo_2rr_4': BGPTopo2RR4,
'topo_2rr_5': BGPTopo2RR5,
'topo_med': MedBGPTopo,
'topo_te_1': BGPTopoTE1,
'simple_topo_routes': SimpleBGPTopoRoutes,
'topo_3rr_1': BGPTopo3RR1,
'topo_3rr_2': BGPTopo3RR2,
'topo_3rr_3': BGPTopo3RR3,
'topo_te_2': BGPTopoTE2
}


def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--topo', choices=TOPOS.keys(), default='simple_bgp_network',
help='the topology that you want to start')
parser.add_argument('--log', choices=LEVELS.keys(), default='info',
help='The level of details in the logs')
return parser.parse_args()


if __name__ == '__main__':
args = parse_args()
lg.setLogLevel(args.log)
if args.log == 'debug':
ipmininet.DEBUG_FLAG = True
kwargs = {}
net = IPNet(topo=TOPOS[args.topo](**kwargs))
try:
net.start()
IPCLI(net)
finally:
net.stop()
2 changes: 1 addition & 1 deletion simple_bgp_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def build(self, *args, **kwargs):
super(SimpleBGPTopo, self).build(*args, **kwargs)

def bgp(self, name):
r = self.addRouter(name, config=RouterConfig)
r = self.addRouter(name)
r.addDaemon(BGP, address_families=(
_bgp.AF_INET(redistribute=('connected',)),
_bgp.AF_INET6(redistribute=('connected',))))
Expand Down
89 changes: 43 additions & 46 deletions simple_topo.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@


class SimpleBGPTopo(IPTopo):
"""This topology is composed of two AS connected in dual homing with different local pref"""
"""This topology is composed of two AS connected in dual homing with different local pref"""

def build(self, *args, **kwargs):
"""
def build(self, *args, **kwargs):
"""
TODO
+----------+ +--------+
| |
Expand All @@ -22,51 +22,48 @@ def build(self, *args, **kwargs):
| |
+------------+ +--------+
"""
# Add all routers
as1r1 = self.addRouter('as1r1')
as1r1.addDaemon(BGP)
as1r2 = self.addRouter('as1r2')
as1r2.addDaemon(BGP)
as1r3 = self.addRouter('as1r3')
as1r3.addDaemon(BGP)
as1r4 = self.addRouter('as1r4')
as1r4.addDaemon(BGP)
as1r5 = self.addRouter('as1r5')
as1r5.addDaemon(BGP)
as1r6 = self.addRouter('as1r6')
as1r6.addDaemon(BGP)
as4r1 = self.addRouter('as4r1')
as4r1.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
as4r2 = self.addRouter('as4r2')
as4r2.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
# Add all routers
as1r1 = self.bgp('as1r1')
as1r2 = self.bgp('as1r2')
as1r3 = self.bgp('as1r3')
as1r4 = self.bgp('as1r4')
as1r5 = self.bgp('as1r5')
as1r6 = self.bgp('as1r6')
as4r1 = self.addRouter('as4r1')
as4r1.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
as4r2 = self.addRouter('as4r2')
as4r2.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
h1 = self.addHost('h1')

# Add Links
self.addLink(as1r1, as1r6)
self.addLink(as1r1, as1r3)
self.addLink(as1r3, as1r2)
self.addLink(as1r3, as1r6)
self.addLink(as1r2, as1r4)
self.addLink(as1r4, as1r5)
self.addLink(as1r5, as1r6)
self.addLink(as4r1, as1r6)
self.addLink(as4r2, as1r5)
# Add Links
self.addLink(as1r1, as1r6)
self.addLink(as1r1, as1r3)
self.addLink(as1r3, as1r2)
self.addLink(as1r3, as1r6)
self.addLink(as1r2, as1r4)
self.addLink(as1r4, as1r5)
self.addLink(as1r5, as1r6)
self.addLink(as4r1, as1r6)
self.addLink(as4r2, as1r5)
self.addLink(as4r1, h1, params1={"ip": "dead:beef::/48"}, params2={"ip": "dead:beef::1/48"})
self.addLink(as4r2, h1, params1={"ip": "dead:beef::2/48"}, params2={"ip": "dead:beef::3/48"})

# Add full mesh
self.addAS(4, (as4r1, as4r2))
self.addiBGPFullMesh(1, (as1r1, as1r2, as1r3, as1r4, as1r5, as1r6))
# Add full mesh
self.addAS(4, (as4r1, as4r2))
self.addiBGPFullMesh(1, (as1r1, as1r2, as1r3, as1r4, as1r5, as1r6))

# Add eBGP session
ebgp_session(self, as1r6, as4r1)
ebgp_session(self, as1r5, as4r2)
# Add eBGP session
ebgp_session(self, as1r6, as4r1)
ebgp_session(self, as1r5, as4r2)

# Add test hosts ?
# for r in self.routers():
# self.addLink(r, self.addHost('h%s' % r))
super(SimpleBGPTopo, self).build(*args, **kwargs)
# Add test hosts ?
# for r in self.routers():
# self.addLink(r, self.addHost('h%s' % r))
super(SimpleBGPTopo, self).build(*args, **kwargs)

def bgp(self, name):
r = self.addRouter(name, config=RouterConfig)
r.addDaemon(BGP, address_families=(
_bgp.AF_INET(redistribute=('connected',)),
_bgp.AF_INET6(redistribute=('connected',))))
return r
def bgp(self, name):
r = self.addRouter(name)
r.addDaemon(BGP, address_families=(
_bgp.AF_INET(redistribute=('connected',)),
_bgp.AF_INET6(redistribute=('connected',))))
return r
96 changes: 47 additions & 49 deletions simple_topo_2rr.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
from ipmininet.iptopo import IPTopo
from ipmininet.router.config import RouterConfig, BGP, ebgp_session, bgp_peering, set_rr
import ipmininet.router.config.bgp as _bgp


class SimpleBGPTopo2RR(IPTopo):
"""This topology is composed of two AS connected in dual homing with different local pref"""
"""This topology is composed of two AS connected in dual homing with different local pref"""

def build(self, *args, **kwargs):
"""
def build(self, *args, **kwargs):
"""
TODO slide 39 iBGP
+----------+ +--------+
| |
Expand All @@ -21,53 +22,50 @@ def build(self, *args, **kwargs):
| |
+------------+ +--------+
"""
# Add all routers
as1r1 = self.addRouter('as1r1')
as1r1.addDaemon(BGP)
as1r2 = self.addRouter('as1r2')
as1r2.addDaemon(BGP)
as1r3 = self.addRouter('as1r3')
as1r3.addDaemon(BGP)
as1r4 = self.addRouter('as1r4')
as1r4.addDaemon(BGP)
as1r5 = self.addRouter('as1r5')
as1r5.addDaemon(BGP)
as1r6 = self.addRouter('as1r6')
as1r6.addDaemon(BGP)
as4r1 = self.addRouter('as4r1')
as4r1.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
as4r2 = self.addRouter('as4r2')
as4r2.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
# Add all routers
as1r1 = self.bgp('as1r1')
as1r2 = self.bgp('as1r2')
as1r3 = self.bgp('as1r3')
as1r4 = self.bgp('as1r4')
as1r5 = self.bgp('as1r5')
as1r6 = self.bgp('as1r6')
as4r1 = self.addRouter('as4r1')
as4r1.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
as4r2 = self.addRouter('as4r2')
as4r2.addDaemon(BGP, address_families=(_bgp.AF_INET6(networks=('dead:beef::/32',)),))
h1 = self.addHost('h1')

# Add Links
self.addLink(as1r1, as1r6)
self.addLink(as1r1, as1r3)
self.addLink(as1r3, as1r2)
self.addLink(as1r3, as1r6)
self.addLink(as1r2, as1r4)
self.addLink(as1r4, as1r5)
self.addLink(as1r5, as1r6)
self.addLink(as4r1, as1r6)
self.addLink(as4r2, as1r5)
self.addLink(as4r1, h1, params1={"ip": "dead:beef::/48"}, params2={"ip": "dead:beef::1/48"})
self.addLink(as4r2, h1, params1={"ip": "dead:beef::2/48"}, params2={"ip": "dead:beef::3/48"})
set_rr(self, as1r3, peers=[as1r1, as1r2, as1r4, as1r5, as1r6])
set_rr(self, as1r5, peers=[as1r1, as1r2, as1r4, as1r3, as1r6])

# Add Links
self.addLink(as1r1, as1r6)
self.addLink(as1r1, as1r3)
self.addLink(as1r3, as1r2)
self.addLink(as1r3, as1r6)
self.addLink(as1r2, as1r4)
self.addLink(as1r4, as1r5)
self.addLink(as1r5, as1r6)
self.addLink(as4r1, as1r6)
self.addLink(as4r2, as1r5)
set_rr(self, as1r3, peers=[as1r1, as1r2, as1r4, as1r5, as1r6])
set_rr(self, as1r5, peers=[as1r1, as1r2, as1r4, as1r3, as1r6])
# Add full mesh
self.addAS(4, (as4r1, as4r2))
self.addAS(1, (as1r1, as1r2, as1r3, as1r4, as1r5, as1r6))

# Add full mesh
self.addAS(4, (as4r1, as4r2))
self.addAS(1, (as1r1, as1r2, as1r3, as1r4, as1r5, as1r6))

# Add eBGP session
ebgp_session(self, as1r6, as4r1)
ebgp_session(self, as1r5, as4r2)
# Add eBGP session
ebgp_session(self, as1r6, as4r1)
ebgp_session(self, as1r5, as4r2)

# Add test hosts ?
# for r in self.routers():
# self.addLink(r, self.addHost('h%s' % r))
super(SimpleBGPTopo2RR, self).build(*args, **kwargs)
# Add test hosts ?
# for r in self.routers():
# self.addLink(r, self.addHost('h%s' % r))
super(SimpleBGPTopo2RR, self).build(*args, **kwargs)

def bgp(self, name):
r = self.addRouter(name, config=RouterConfig)
r.addDaemon(BGP, address_families=(
_bgp.AF_INET(redistribute=('connected',)),
_bgp.AF_INET6(redistribute=('connected',))))
return r
def bgp(self, name):
r = self.addRouter(name)
r.addDaemon(BGP, address_families=(
_bgp.AF_INET(redistribute=('connected',)),
_bgp.AF_INET6(redistribute=('connected',))))
return r
Loading

0 comments on commit 7641326

Please sign in to comment.