80 lines
1.3 KiB
Plaintext
80 lines
1.3 KiB
Plaintext
@startuml
|
|
|
|
' ===========================
|
|
' Abstract base class
|
|
' ===========================
|
|
|
|
abstract class Device {
|
|
- name : String
|
|
- mgmtIP : String
|
|
- interfaces : Interface[*]
|
|
}
|
|
|
|
Device "1" o-- "0..*" Interface : has >
|
|
|
|
' ===========================
|
|
' Device Types
|
|
' ===========================
|
|
|
|
class Host {
|
|
- operatingSystem : String
|
|
}
|
|
|
|
class Router {
|
|
- routingTable : Map
|
|
- routingProtocols : List
|
|
}
|
|
|
|
class Switch {
|
|
- macTable : Map
|
|
- vlanDatabase : Map
|
|
}
|
|
|
|
Device <|-- Host
|
|
Device <|-- Router
|
|
Device <|-- Switch
|
|
|
|
' ===========================
|
|
' Interfaces
|
|
' ===========================
|
|
|
|
class Interface {
|
|
- name : String
|
|
- ipAddress : String
|
|
- macAddress : String
|
|
- speed : String
|
|
- duplex : String
|
|
}
|
|
|
|
class VirtualInterface {
|
|
- vlanId : Integer
|
|
- parentPhysical : Interface
|
|
}
|
|
|
|
Interface <|-- VirtualInterface
|
|
|
|
' ===========================
|
|
' Physical Links
|
|
' ===========================
|
|
|
|
class Wire {
|
|
- type : String
|
|
- endpoints : Interface[2]
|
|
- bandwidth : String
|
|
}
|
|
|
|
Wire "1" -- "2" Interface : connects >
|
|
|
|
' ===========================
|
|
' Optional: Networks / Subnets
|
|
' ===========================
|
|
|
|
class Network {
|
|
- cidr : String
|
|
- gateway : String
|
|
}
|
|
|
|
Network "1" o-- "0..*" Interface : membership >
|
|
|
|
@enduml
|