π Quick Start Β· π Architecture Β· β Test Results
Built by students, for students. A production-grade enterprise network β fully designed, configured, and verified in Cisco Packet Tracer, with full redundancy (HSRP + dual core), dynamic routing (OSPF), external edge (BGP + NAT/PAT), per-department segmentation (VLANs + ACLs), and hardened access (Port Security, BPDU Guard, SSH v2).
- π― About the Project
- ποΈ Architecture at a Glance
- π Topology Diagram
- π§° Tech Stack
- π IP Addressing Plan
- ποΈ VLAN & Service Plan
- π Traffic Flow
- βοΈ HSRP Failover
- π§© Protocol Stack
- π Repository Layout
- π Quick Start
- β Test Results
- π§ Challenges & Solutions
- π£οΈ Roadmap
- π₯ Authors
- π Acknowledgements
- π License
TechCom is a fictional but realistic mid-sized telecom company whose network we β two IT undergraduates at the University of Ibb, Faculty of Applied Science, Department of Information Technology β designed from a blank canvas as our graduation project.
It is not a toy. Every decision in the design answers a real business question:
| Business need | Network answer |
|---|---|
| "Sales can't go down at 5 PM." | Dual core + HSRP + dual uplinks |
| "Finance data must be isolated." | Dedicated VLAN + trunk allow-list + ACL target |
| "We need phones, not just data." | Separate Voice VLAN 150 with HSRP |
| "We must reach the Internet." | BGP-style edge + NAT/PAT overload |
| "Plugging in a rogue switch must not break us." | PortFast + BPDU Guard on every access port |
| "Configuration must be auditable." | SSH v2, local user database, role-based exec |
π¬ 100% of the test cases passed (see
docs/TEST-RESULTS.md).
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βοΈ Internet / ISP β
β ISP-Router (8.8.8.1) β
ββββββββββββββββ¬βββββββββββββββββββββββββββ¬βββββββββββββββββ
β Se0/0/0 200.100.50.0/30 β Se0/0/1 200.100.50.4/30
β β
ββββββββββββββββΌβββββββ βββββββββββΌβββββββββββββ
β π¦ CORE-R2 β β π¦ CORE-R1 β
β HSRP Standby ββββββββββΊβ HSRP Active β
β NAT Β· BGP Β· OSPF β β NAT Β· BGP Β· OSPF β
ββββ¬βββββββββββββββ¬ββββ ββββ¬ββββββββββββββββ¬ββββ
β Gi0/0 β Gi0/1 β Gi0/0 β Gi0/1
10.10.255.4/30 β 10.10.255.12/30 β 10.10.255.0/30 10.10.255.8/30
β β β β
ββββββββββββΌβββββ βββββββΌββββββββββ βββββΌβββββββββββ ββββΌβββββββββββ
β π© DIST-SW1 β β π© DIST-SW2 β β π© DIST-SW1 β β π© DIST-SW2 β
β HSRP Active β β HSRP Standby β β HSRP Active β β HSRP Standbyβ
β OSPF Β· SVIs β β OSPF Β· SVIs β β OSPF Β· SVIs β β OSPF Β· SVIs β
ββββ¬βββββββββββββ βββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββ¬βββββββ
β Trunk + EtherChannel Po1 β β
β β β
βββββββββ΄βββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββ
β β
β π¨ ACCESS LAYER β One access switch per department β
β β
β ACCESS-SW-IT (VLAN 20 + Voice 150) β
β ACCESS-SW-SUPPORT (VLAN 30 + Voice 150) β
β ACCESS-SW-FINANCE (VLAN 40 + Voice 150) β
β ACCESS-SW-HR (VLAN 50 + Voice 150) β
β ACCESS-SW-SALES (VLAN 60 + Voice 150) β
β ACCESS-SW-MANAGEMENT (VLAN 10 only β isolated) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Reading the diagram: every arrow is a physical link. Logical relationships (HSRP, OSPF adjacency, EtherChannel) are noted on the link.
flowchart TB
Internet(["βοΈ Internet<br/>(ISP Cloud)"])
ISP["π°οΈ ISP-Router<br/>8.8.8.1/24"]
R1["π¦ CORE-R1<br/>(HSRP Active Β· NAT Β· BGP)"]
R2["π¦ CORE-R2<br/>(HSRP Standby Β· NAT Β· BGP)"]
D1["π© DIST-SW1<br/>(L3 Β· HSRP Active)"]
D2["π© DIST-SW2<br/>(L3 Β· HSRP Standby)"]
subgraph ACCESS["π¨ Access Layer β One switch per department"]
SW_IT["ACCESS-SW-IT<br/>VLAN 20 + Voice 150"]
SW_SUP["ACCESS-SW-SUPPORT<br/>VLAN 30"]
SW_FIN["ACCESS-SW-FINANCE<br/>VLAN 40"]
SW_HR["ACCESS-SW-HR<br/>VLAN 50"]
SW_SAL["ACCESS-SW-SALES<br/>VLAN 60"]
SW_MGT["ACCESS-SW-MGMT<br/>VLAN 10 only"]
end
Internet --- ISP
ISP ---|Se0/0/0 200.100.50.0/30| R2
ISP ---|Se0/0/1 200.100.50.4/30| R1
R1 ---|Gi0/0 10.10.255.0/30| D1
R1 ---|Gi0/1 10.10.255.8/30| D2
R2 ---|Gi0/0 10.10.255.4/30| D1
R2 ---|Gi0/1 10.10.255.12/30| D2
D1 ---|Trunk + EC Po1| SW_IT
D2 ---|Trunk + EC Po1| SW_IT
D1 --- SW_SUP
D2 --- SW_SUP
D1 --- SW_FIN
D2 --- SW_FIN
D1 --- SW_HR
D2 --- SW_HR
D1 --- SW_SAL
D2 --- SW_SAL
D1 ---|Trunk VLAN 10 only| SW_MGT
D2 ---|Trunk VLAN 10 only| SW_MGT
classDef core fill:#1f3a8a,stroke:#1e3a8a,color:#fff,stroke-width:2px;
classDef dist fill:#0e7490,stroke:#0e7490,color:#fff,stroke-width:2px;
classDef acc fill:#a16207,stroke:#a16207,color:#fff,stroke-width:2px;
classDef isp fill:#374151,stroke:#374151,color:#fff,stroke-width:2px;
classDef net fill:#16a34a,stroke:#16a34a,color:#fff,stroke-width:2px;
class R1,R2 core;
class D1,D2 dist;
class SW_IT,SW_SUP,SW_FIN,SW_HR,SW_SAL,SW_MGT acc;
class ISP isp;
class Internet net;
π See also:
diagrams/02-traffic-flow.mdΒ·diagrams/03-vlan-broadcast-domains.mdΒ·diagrams/04-hsrp-failover-state.mdΒ·diagrams/05-protocol-stack.md
| Layer | Technology | Where |
|---|---|---|
| Simulation | Cisco Packet Tracer 8.x | packet-tracer/ |
| Routing | OSPF (single-area), static, simulated BGP | Core + Distribution |
| First-hop redundancy | HSRP v1 (priority + preempt) | DIST-SW1/2 |
| Switching | 802.1Q, EtherChannel (LACP active), PVST+ |
All switches |
| Edge services | NAT/PAT overload, ACL 1 | CORE-R1 / CORE-R2 |
| Voice | Voice VLAN 150 + DHCP helper | Access + Distribution |
| Security | SSH v2 (RSA-1024), enable secret, login local |
All devices |
| Hardening | PortFast, BPDU Guard, trunk allow-lists | Every access port |
| Documentation | Markdown, Mermaid, PowerPoint, PDF | docs/ |
Full table lives in docs/IP-PLAN.md. TL;DR:
| Block | Purpose |
|---|---|
10.10.0.0/16 |
All internal traffic |
10.10.10.0/24 β¦ 10.10.150.0/24 |
One /24 per VLAN/department |
10.10.255.0/30 β¦ 10.10.255.12/30 |
Point-to-point core β distribution |
200.100.50.0/30 β¦ 200.100.50.4/30 |
Public edge to ISP |
8.8.8.0/24 |
Simulated Internet on ISP router |
Department gateways (HSRP virtual IPs):
| VLAN | Subnet | Gateway (HSRP) |
|---|---|---|
| 10 β Management | 10.10.10.0/24 |
10.10.10.1 |
| 20 β IT | 10.10.20.0/24 |
10.10.20.1 |
| 30 β Support | 10.10.30.0/24 |
10.10.30.1 |
| 40 β Finance | 10.10.40.0/24 |
10.10.40.1 |
| 50 β HR | 10.10.50.0/24 |
10.10.50.1 |
| 60 β Sales | 10.10.60.0/24 |
10.10.60.1 |
| 99 β Device-plane | 10.10.99.0/24 |
10.10.99.1 |
| 150 β Voice | 10.10.150.0/24 |
10.10.150.1 |
| VLAN ID | Name | Role |
|---|---|---|
| 10 | Management | SVI / management plane (SSH, SNMP) |
| 20 | IT | IT department + Voice |
| 30 | Support | Technical support |
| 40 | Finance | Finance (ACL target) |
| 50 | HR | Human resources |
| 60 | Sales | Sales (QoS-ready) |
| 99 | Device-plane | Router β switch protocol traffic |
| 100 | Native | Trunk native (must match on every link) |
| 150 | Voice (VoIP) | IP phones |
Full breakdown & rationale: docs/VLAN-PLAN.md
sequenceDiagram
autonumber
participant PC as π» Sales PC<br/>(10.10.60.10)
participant ACC as π¨ ACCESS-SW-SALES
participant D1 as π© DIST-SW1 (HSRP Active)
participant R1 as π¦ CORE-R1
participant ISP as π°οΈ ISP-Router
participant NET as βοΈ Internet
PC->>ACC: Ping 8.8.8.8
ACC->>D1: Trunk VLAN 60 (EtherChannel Po1)
D1->>R1: OSPF route via Gi0/0 (10.10.255.0/30)
R1->>R1: PAT overload β 200.100.50.5:port
R1->>ISP: Serial0/0/1
ISP->>NET: Static route 0.0.0.0/0 β Gi0/0
NET-->>PC: ICMP echo reply (no drops)
sequenceDiagram
autonumber
participant PC as π» Sales PC
participant D2 as π© DIST-SW2 (was Standby)
participant R2 as π¦ CORE-R2 (BGP/NAT)
participant ISP as π°οΈ ISP-Router
Note over R1: β CORE-R1 powered off
D2->>D2: HSRP preempt β claim Active
PC->>D2: Ping 8.8.8.8
D2->>R2: OSPF via Gi0/1 (10.10.255.12/30)
R2->>ISP: Serial0/0/0
ISP-->>PC: Reply (zero packet loss observed)
π See
diagrams/02-traffic-flow.mdfor the complete sequence diagrams including Finance β Sales inter-VLAN traffic.
stateDiagram-v2
[*] --> Normal
Normal: π’ DIST-SW1 = Active (prio 110)<br/>DIST-SW2 = Standby (prio 100)
Normal --> Detected: CORE-R1 dies<br/>HSRP hello missed Γ3
Detected --> Switched: Gratuitous ARP
Switched: π DIST-SW2 = Active<br/>DIST-SW1 = Standby
Switched --> Recovered: CORE-R1 back
Recovered --> Normal: Preempt + higher priority
Priority table:
| VLAN | DIST-SW1 | DIST-SW2 |
|---|---|---|
| 10, 20, 30, 40, 50, 60, 150 | 110 (Active) | 100 (Standby) |
| 99 (device-plane) | 110 | 90 (intentionally lowest) |
π― Full state machine:
diagrams/04-hsrp-failover-state.md
flowchart TB
L7["π App/Management β SSH v2 Β· SNMP Β· Syslog"]
L4["π‘οΈ Security β NAT/PAT Β· ACL Β· Port Security"]
L3["π L3 β OSPF Β· BGP Β· HSRP Β· Static"]
L2["π L2 β VLANs Β· 802.1Q Β· PVST+ Β· EtherChannel"]
L7 --> L4 --> L3 --> L2
| Protocol | Where | Why |
|---|---|---|
| OSPF (Area 0) | Core + Distribution | Dynamic internal routing |
| BGP (sim.) | Core β ISP | Realistic edge |
| HSRP v1 | DIST-SW1/2 | Gateway redundancy |
| NAT/PAT | CORE-R1/2 | Internet sharing |
| 802.1Q | All trunks | VLAN tagging |
| EtherChannel | Access β Distribution | Aggregated GigE |
| PortFast + BPDU Guard | Every access port | Edge hardening |
| SSH v2 | All devices | Encrypted mgmt |
TechCom-Network/
βββ π README.md β you are here
βββ π LICENSE
βββ π .gitignore
β
βββ π packet-tracer/
β βββ Network Ayman & Alhareth.pkt β the live lab
β
βββ π configs/
β βββ π configs-Router/
β β βββ CORE-R1.conf
β β βββ CORE-R2.conf
β βββ π configs-Switch/
β β βββ DIST-SW1.conf
β β βββ DIST-SW2.conf
β β βββ ACCESS-SW-IT.conf
β β βββ ACCESS-SW-SUPPORT.conf
β β βββ ACCESS-SW-FINANCE.conf
β β βββ ACCESS-SW-HR.conf
β β βββ ACCESS-SW-SALES.conf
β β βββ ACCESS-SW-MANAGEMENT.conf
β βββ π configs-ISP/
β βββ ISP-Router.conf
β
βββ π diagrams/
β βββ 01-architecture-overview.md (3-tier Mermaid)
β βββ 02-traffic-flow.md (sequence diagrams)
β βββ 03-vlan-broadcast-domains.md (VLAN map)
β βββ 04-hsrp-failover-state.md (HSRP state machine)
β βββ 05-protocol-stack.md (L2βL7 stack)
β
βββ π docs/
βββ π arabic/
β βββ ΨͺΩΨ±ΩΨ± Ψ΄Ψ¨ΩΨ© - TechCom.pdf (original Arabic report)
βββ IP-PLAN.md
βββ VLAN-PLAN.md
βββ TEST-RESULTS.md
βββ CHALLENGES.md
βββ network_topology.pptx (presentation slides)
- Install Cisco Packet Tracer 8.x.
- Clone this repository:
git clone https://github.com/<your-username>/TechCom-Network.git cd TechCom-Network
- Open the lab file:
# Windows start "" "packet-tracer/Network Ayman & Alhareth.pkt" # macOS open "packet-tracer/Network Ayman & Alhareth.pkt" # Linux pktui "packet-tracer/Network Ayman & Alhareth.pkt"
- Wait ~30 s for OSPF to converge, then run:
PC-Sales> ping 8.8.8.8 PC-IT> ping 10.10.60.10
If you have a physical or virtual IOS device, push a single config:
# Example: copy a switch config to a TFTP server first, then merge
# via the device console / VTY.
# 1) From the device:
copy running-config tftp:
# 2) Replace the relevant section with the matching .conf fileOr use the lab as a config reference even on real gear β every command
is copy-pasteable from the configs/ folder.
- Open the lab.
- From a Sales PC, run
ping -t 8.8.8.8. - In Packet Tracer, delete the power connection to CORE-R1.
- Observe: HSRP reconverges in < 5 s, ping stays green.
| # | Test | Expected | Result |
|---|---|---|---|
| 1 | Ping across VLANs | Inter-department reply | β |
| 2 | Ping 8.8.8.1 | Internet via NAT | β |
| 3 | Traceroute | Path: DIST β CORE β ISP | β |
| 4 | HSRP failover | Zero packet loss on CORE-R1 fail | β |
| 5 | BPDU Guard | Port err-disabled on rogue BPDU | β |
| 6 | OSPF neighbors | Full adjacency | β |
π Full breakdown with sample output:
docs/TEST-RESULTS.md
| # | Challenge | Fix |
|---|---|---|
| 1 | Duplicate SVI IPs between DIST-SW1/2 | Split addresses + HSRP virtual IP |
| 2 | HSRP Active/Standby flap | Set priority 110 + preempt, verify failover |
| 3 | Native VLAN mismatch | Standardise on VLAN 100, audit every trunk |
| 4 | Inter-VLAN silently broken | Enable ip routing, build SVIs, validate with ping |
| 5 | NAT inside/outside reversed | Re-tag interfaces, rebuild ACL 1 |
| 6 | VoIP one-way | Unify VLAN 150, HSRP, switchport voice vlan 150 |
| 7 | SPOF on distribution layer | Add DIST-SW2 + EtherChannel, validate failover |
π Full war stories:
docs/CHALLENGES.md
- Three-tier topology with full L2/L3 redundancy
- OSPF + simulated BGP + HSRP
- Per-department VLANs + Voice VLAN 150
- Port Security + BPDU Guard
- EtherChannel access uplinks
- SSH v2 across the fabric
- 100% test pass on failover / inter-VLAN / Internet
- Add real ACL examples for Finance β others
- Add SNMPv3 + NetFlow collector config
- Port to GNS3 / EVE-NG for hypervisor lab
- Add QoS policy template for Voice VLAN 150
- CI workflow: validate
.confsyntax on every PR
|
Alhareth Hayel Al-Dahiah Network Design Β· Routing Β· Switching π§ available on request |
Ayman Bashi Al-Baidhani Architecture Β· Security Β· Documentation π§ https:/github/ayman-albaidahi |
Supervisor: Dr. Salma Hammoud β University of Ibb, Faculty of Applied Science, Department of Information Technology
- University of Ibb β for the lab time and the freedom to break things and rebuild them better.
- Dr. Salma Hammoud β for the steady hand on the steering wheel.
- Cisco Networking Academy β for Packet Tracer.
- The open-source community β for Mermaid, Markdown, and the beautiful shields that make a README shine.
Released under the MIT License. See LICENSE for the full text.
You are free to use, modify, and distribute, provided attribution is kept.