Girish Gowdra | 267e25e | 2022-08-20 20:03:58 -0700 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | |
| 3 | # SPDX-FileCopyrightText: 2022-present Intel Corporation |
| 4 | # SPDX-License-Identifier: Apache-2.0 |
| 5 | |
| 6 | import argparse |
| 7 | |
| 8 | from mininet.cli import CLI |
| 9 | from mininet.log import setLogLevel |
| 10 | from mininet.net import Mininet |
| 11 | from mininet.topo import Topo |
| 12 | from stratum import StratumBmv2Switch |
| 13 | |
| 14 | from mn_lib import IPv4Host |
| 15 | from mn_lib import TaggedIPv4Host |
| 16 | |
| 17 | CPU_PORT = 255 |
| 18 | |
| 19 | |
| 20 | class TutorialTopo(Topo): |
| 21 | """Single leaf switch with two hosts attached""" |
| 22 | |
| 23 | def __init__(self, *args, **kwargs): |
| 24 | Topo.__init__(self, *args, **kwargs) |
| 25 | |
| 26 | # Leaves |
| 27 | # gRPC port 50001 |
| 28 | leaf1 = self.addSwitch('leaf1', cls=StratumBmv2Switch, cpuport=CPU_PORT) |
| 29 | |
| 30 | # IPv4 hosts attached to leaf 1 |
| 31 | h1a = self.addHost('h1a', cls=IPv4Host, mac="00:00:00:00:00:1A", |
| 32 | ip='172.16.1.1/24', gw='172.16.1.254') |
| 33 | h1b = self.addHost('h1b', cls=IPv4Host, mac="00:00:00:00:00:1B", |
| 34 | ip='172.16.1.2/24', gw='172.16.1.254') |
Andrea Campanella | a32c930 | 2022-09-01 13:03:13 +0200 | [diff] [blame] | 35 | hVa = self.addHost('hVa', cls=IPv4Host, mac="AA:BB:CC:DD:EE:FE", |
| 36 | ip='172.16.1.101/24', gw='172.16.1.254') |
| 37 | hVb = self.addHost('hVb', cls=TaggedIPv4Host, mac="AA:BB:CC:DD:EE:FF", |
| 38 | ip='172.16.1.102/24', gw='172.16.1.254', vlan=15) |
| 39 | hVc = self.addHost('hVc', cls=IPv4Host, mac="AA:BB:CC:DD:EE:EE", |
| 40 | ip='172.16.1.103/24', gw='172.16.1.254') |
| 41 | hVd = self.addHost('hVd', cls=TaggedIPv4Host, mac="AA:BB:CC:DD:EE:EF", |
| 42 | ip='172.16.1.104/24', gw='172.16.1.254', vlan=15) |
Girish Gowdra | 267e25e | 2022-08-20 20:03:58 -0700 | [diff] [blame] | 43 | self.addLink(h1a, leaf1) # port 1 |
| 44 | self.addLink(h1b, leaf1) # port 2 |
Andrea Campanella | a32c930 | 2022-09-01 13:03:13 +0200 | [diff] [blame] | 45 | self.addLink(hVa, leaf1) # port 3 |
| 46 | self.addLink(hVb, leaf1) # port 4 |
| 47 | self.addLink(hVc, leaf1) # port 5 |
| 48 | self.addLink(hVd, leaf1) # port 6 |
Girish Gowdra | 267e25e | 2022-08-20 20:03:58 -0700 | [diff] [blame] | 49 | |
| 50 | |
| 51 | def main(): |
| 52 | net = Mininet(topo=TutorialTopo(), controller=None) |
| 53 | net.start() |
Andrea Campanella | a32c930 | 2022-09-01 13:03:13 +0200 | [diff] [blame] | 54 | net.staticArp() |
Girish Gowdra | 267e25e | 2022-08-20 20:03:58 -0700 | [diff] [blame] | 55 | CLI(net) |
| 56 | net.stop() |
| 57 | |
| 58 | |
| 59 | if __name__ == "__main__": |
| 60 | parser = argparse.ArgumentParser( |
| 61 | description='Mininet topology script for single leaf having two hosts with stratum_bmv2') |
| 62 | args = parser.parse_args() |
| 63 | setLogLevel('info') |
| 64 | |
| 65 | main() |