EGP - Exterior Gateway Protocol
What is EGP?
EGP (Exterior Gateway Protocol) is a routing protocol used to exchange routing information between different autonomous systems (AS) on the internet. It was one of the earliest protocols designed for inter-domain routing and was formally defined in RFC 904 (1984).
How does EGP work?
EGP operates by: * Establishing neighbor relationships between routers in different ASes. * Exchanging reachability information (i.e., which networks are reachable). * Using a polling mechanism to request updates from neighbors. * Sending update messages to share routing information.
What are the main message types in EGP?
Neighbor Acquisition - Establishes or ends neighbor relationships.
Neighbor Reachability - Checks if neighbors are alive.
Poll - Requests routing updates.
Routing Update - Shares reachability information.
Error - Reports issues in communication.
What are the advantages of EGP?
Simplicity: Easy to implement and understand.
Stability: Routing tables change infrequently.
Historical significance: It laid the foundation for modern inter-domain routing.
What are the limitations of EGP?
Limited to tree-like topologies (no support for loops or multipath).
No path metrics: Cannot determine the best route.
Not scalable: Designed for a centrally controlled internet.
Obsolete: Replaced by BGP (Border Gateway Protocol) due to its limitations.
Which OSI Layer does EGP operate at?
EGP operates at the Network Layer (Layer 3) of the OSI model.
It is responsible for exchanging routing information between different autonomous systems.
It enables packet forwarding decisions based on routing tables.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
Version & RFC Details |
|||
---|---|---|---|
EGP Version |
RFC Version |
Year |
Core Idea / Contribution |
EGP Version 1 |
|||
RFC 827 |
1982 |
Introduced the concept of EGP as a protocol for exchanging routing information between autonomous systems (ASes) on the ARPANET. |
|
EGP Version 2 |
|||
RFC 888 |
1983 |
Provided a deployment and implementation timeline for EGP across the ARPANET. |
|
RFC 904 |
1984 |
Delivered the formal specification of EGP, making it a standard protocol for inter-AS routing. |
Setup
Setup
EGP Hello (Neighbor Acquisition) Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
1 |
EGP Hello (Neighbor Acquisition) |
Initiates or maintains a neighbor relationship. |
~1220 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Hello = 1) |
1 |
|
Code |
Subtype or code (usually 0) |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
|
Hello Interval |
Time between Hello messages |
2 |
|
Poll Interval |
Time between Poll messages |
2 |
EGP Hello-Ack Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
2 |
EGP Hello-Ack |
Acknowledges receipt of a Hello packet. |
~1220 |
Version |
EGP version number |
1 |
|
Type |
Packet type (I-H-U = 2) |
1 |
|
Code |
Subtype or code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
EGP Poll Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
3 |
EGP Poll |
Requests routing information from a neighbor. |
~1224 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Poll = 3) |
1 |
|
Code |
Subtype or code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
|
Source Network |
Network requesting update |
4 |
EGP Update Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
4 |
EGP Update |
Provides reachability information in response to a Poll. |
Variable (up to 8192) |
Version |
EGP version number |
1 |
|
Type |
Packet type (Update = 4) |
1 |
|
Code |
Subtype or code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
|
Number of Gateways |
Count of gateway entries |
1 |
|
Gateway Entries |
List of gateways and reachable networks |
Variable |
EGP Error Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
5 |
EGP Error |
Reports errors in EGP communication. |
~1240 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Error = 8) |
1 |
|
Code |
Error code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
|
Error Info |
Offending packet or reason |
Variable |
EGP Request Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
6 |
Request |
Starts neighbor acquisition (session initiation). |
10 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Request = 10) |
1 |
|
Code |
Subtype or code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
EGP Confirm Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
7 |
Confirm |
Confirms neighbor acquisition. |
10 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Confirm = 11) |
1 |
|
Code |
Subtype or code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
EGP Refuse Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
8 |
Refuse |
Denies neighbor acquisition (e.g., due to resource limits). |
10 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Refuse = 12) |
1 |
|
Code |
Reason code for refusal |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
EGP Cease Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
9 |
Cease |
Requests termination of the EGP session. |
10 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Cease = 13) |
1 |
|
Code |
Reason for termination |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
EGP Cease-Ack Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
10 |
Cease-Ack |
Acknowledges the Cease request. |
10 |
Version |
EGP version number |
1 |
|
Type |
Packet type (Cease-Ack = 14) |
1 |
|
Code |
Subtype or code |
1 |
|
Status |
Status of the sender |
1 |
|
Checksum |
Error-checking value |
2 |
|
Autonomous System |
Sender’s AS number |
2 |
|
Sequence Number |
Packet sequence number |
2 |
EGP - Use Cases |
||
---|---|---|
S.no |
Use Case |
Description |
1 |
Inter-AS Routing |
EGP was used to exchange routing information between different autonomous systems (ASes) on the early Internet. |
2 |
ARPANET Gateway Communication |
Enabled communication between core ARPANET gateways and external networks. |
3 |
Reachability Advertisement |
Allowed routers to advertise which networks were reachable from their AS. |
4 |
Policy Enforcement |
Provided basic support for routing policies by controlling which routes were advertised. |
5 |
Network Monitoring |
Helped monitor the status and reachability of neighboring routers. |
6 |
Transition to BGP |
Served as a stepping stone for the development and deployment of BGP. |
7 |
Simplified Topologies |
Worked well in tree-like topologies where routing loops were not a concern. |
EGP - Basic Features |
||
---|---|---|
S.no |
Features |
Description |
1 |
Inter-AS Communication |
Facilitates routing information exchange between different autonomous systems. |
2 |
Reachability-Based Routing |
Determines whether a network is reachable, without calculating optimal paths. |
3 |
Polling Mechanism |
Uses Poll and Update messages to request and share routing data. |
4 |
Finite-State Machine Model |
Operates based on defined states for neighbor acquisition and reachability. |
5 |
Simple Packet Structure |
Uses a limited set of packet types for control and data exchange. |
6 |
Tree-Like Topology Support |
Designed for hierarchical, loop-free network topologies. |
7 |
Limited Scalability |
Suitable for small-scale networks; not ideal for large, complex topologies. |
Inter-AS Communication - Testcases
Inter-AS Communication - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Establish EGP session between ASes |
Two ASes initiate EGP session |
Session established |
2 |
EGP neighbor reachability |
Neighbor router is reachable |
Hello/Update messages exchanged |
3 |
EGP neighbor unreachable |
Neighbor router is down |
Session not established |
4 |
EGP Hello message exchange |
Hello messages sent/received |
Keepalive maintained |
5 |
EGP Update message exchange |
Routing information shared |
Routes learned |
6 |
EGP Poll message sent |
Request for routing info |
Update message received |
7 |
EGP Update with valid routes |
Valid prefixes advertised |
Routes added to routing table |
8 |
EGP Update with invalid routes |
Malformed prefixes |
Update rejected |
9 |
EGP Update with unreachable routes |
Metric = unreachable |
Route ignored |
10 |
EGP session timeout |
No Hello received |
Session terminated |
11 |
EGP session restart |
After timeout |
Session re-established |
12 |
EGP with valid AS number |
Correct AS number used |
Session accepted |
13 |
EGP with invalid AS number |
AS number mismatch |
Session rejected |
14 |
EGP with duplicate AS number |
Same AS on both ends |
Session rejected |
15 |
EGP with loopback interface |
Source IP is loopback |
Session rejected |
16 |
EGP with valid interface |
Physical interface used |
Session established |
17 |
EGP with TTL = 1 |
TTL expired |
Packet dropped |
18 |
EGP with TTL = 255 |
Valid TTL |
Packet accepted |
19 |
EGP with valid IP prefix |
Proper format |
Route accepted |
20 |
EGP with invalid IP prefix |
Invalid format |
Route rejected |
21 |
EGP with classful route |
Class A/B/C |
Route accepted |
22 |
EGP with classless route |
CIDR format |
Route rejected (EGP doesnt support CIDR) |
23 |
EGP with route to private IP |
10.0.0.0/8 |
Route accepted |
24 |
EGP with route to public IP |
8.8.8.0/24 |
Route accepted |
25 |
EGP with route to loopback |
127.0.0.0/8 |
Route ignored |
26 |
EGP with route to multicast |
224.0.0.0/4 |
Route ignored |
27 |
EGP with route to broadcast |
255.255.255.255 |
Route ignored |
28 |
EGP with default route |
0.0.0.0 |
Route accepted |
29 |
EGP with duplicate routes |
Same prefix repeated |
Last route used |
30 |
EGP with inconsistent metrics |
Same prefix, different metrics |
Lowest metric used |
31 |
EGP with valid checksum |
Packet integrity verified |
Packet accepted |
32 |
EGP with invalid checksum |
Corrupted packet |
Packet discarded |
33 |
EGP with valid authentication |
If supported by implementation |
Session accepted |
34 |
EGP with invalid authentication |
Wrong key |
Session rejected |
35 |
EGP with valid port |
Port 179 (if implemented over TCP) |
Packet accepted |
36 |
EGP with invalid port |
Port ? 179 |
Packet ignored |
37 |
EGP with valid neighbor config |
Correct IP and AS |
Session established |
38 |
EGP with misconfigured neighbor |
Wrong IP or AS |
Session not established |
39 |
EGP with route filtering |
Apply prefix filter |
Only allowed routes accepted |
40 |
EGP with no route filtering |
All routes accepted |
Full table received |
41 |
EGP with route aggregation |
Summarized routes |
Aggregated route accepted |
42 |
EGP with route flapping |
Route changes frequently |
Route stability affected |
43 |
EGP with stable routes |
No changes |
Routing table remains stable |
44 |
EGP with high latency link |
Delayed Hello/Update |
Session may timeout |
45 |
EGP with low latency link |
Fast Hello/Update |
Session stable |
46 |
EGP with route to same AS |
Internal route advertised |
Route ignored |
47 |
EGP with route to external AS |
Valid external prefix |
Route accepted |
48 |
EGP with max prefix limit |
Exceeds configured limit |
Excess routes dropped |
49 |
EGP with minimal prefix set |
Few routes advertised |
All accepted |
50 |
EGP with policy-based routing |
Routes filtered by policy |
Only matching routes accepted |
Reachability-Based Routing - Testcases
Reachability-Based Routing - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Reachable neighbor AS |
Neighbor responds to Hello |
Routes exchanged |
2 |
Unreachable neighbor AS |
No Hello response |
No routes exchanged |
3 |
Poll message sent |
Request for reachability info |
Update message received |
4 |
Poll message not acknowledged |
No response from neighbor |
Session timeout |
5 |
Update with reachable network |
Valid network advertised |
Route added |
6 |
Update with unreachable network |
Network marked unreachable |
Route removed |
7 |
Update with invalid network |
Malformed prefix |
Route ignored |
8 |
Update with valid metric |
Metric indicates reachability |
Route accepted |
9 |
Update with invalid metric |
Metric out of range |
Route ignored |
10 |
Update with loopback IP |
127.0.0.0/8 |
Route ignored |
11 |
Update with multicast IP |
224.0.0.0/4 |
Route ignored |
12 |
Update with broadcast IP |
255.255.255.255 |
Route ignored |
13 |
Update with private IP |
10.0.0.0/8 |
Route accepted |
14 |
Update with public IP |
8.8.8.0/24 |
Route accepted |
15 |
Update with default route |
0.0.0.0 |
Route accepted |
16 |
Update with duplicate routes |
Same prefix repeated |
Last route used |
17 |
Update with inconsistent metrics |
Same prefix, different metrics |
Lowest metric used |
18 |
Update with valid checksum |
Packet integrity verified |
Packet accepted |
19 |
Update with invalid checksum |
Corrupted packet |
Packet discarded |
20 |
Update with TTL = 255 |
Valid TTL |
Packet accepted |
21 |
Update with TTL = 1 |
TTL expired |
Packet dropped |
22 |
Update with valid AS number |
Correct AS used |
Route accepted |
23 |
Update with invalid AS number |
AS mismatch |
Route rejected |
24 |
Update with valid source IP |
Known router |
Packet accepted |
25 |
Update with spoofed source IP |
Fake IP |
Packet ignored |
26 |
Update with valid port |
EGP port used |
Packet accepted |
27 |
Update with invalid port |
Wrong port |
Packet ignored |
28 |
Update with valid version |
EGP version supported |
Packet processed |
29 |
Update with invalid version |
Unsupported version |
Packet ignored |
30 |
Update with reachable prefix |
Prefix is routable |
Route accepted |
31 |
Update with unreachable prefix |
Prefix not routable |
Route ignored |
32 |
Update with stable reachability |
No change in status |
Route retained |
33 |
Update with flapping reachability |
Frequent status change |
Route stability affected |
34 |
Update with long reachability timeout |
Delayed Hello |
Session reset |
35 |
Update with short reachability timeout |
Fast Hello loss |
Session terminated |
36 |
Update with valid neighbor config |
Correct IP and AS |
Reachability confirmed |
37 |
Update with misconfigured neighbor |
Wrong IP or AS |
Reachability failed |
38 |
Update with route to same AS |
Internal route |
Route ignored |
39 |
Update with route to external AS |
Valid external prefix |
Route accepted |
40 |
Update with route filtering |
Prefix filter applied |
Only allowed routes accepted |
41 |
Update with no route filtering |
All routes accepted |
Full table received |
42 |
Update with route aggregation |
Summarized routes |
Aggregated route accepted |
43 |
Update with minimal prefix set |
Few routes advertised |
All accepted |
44 |
Update with max prefix limit |
Exceeds configured limit |
Excess routes dropped |
45 |
Update with policy-based routing |
Routes filtered by policy |
Only matching routes accepted |
46 |
Update with valid Hello interval |
Hello received on time |
Session maintained |
47 |
Update with missed Hello |
Hello not received |
Session dropped |
48 |
Update with valid Poll interval |
Poll sent periodically |
Update received |
49 |
Update with missed Poll response |
No update received |
Route marked unreachable |
50 |
Update with consistent reachability |
Stable neighbor |
Route remains in table |
Polling Mechanism - Testcases
Polling Mechanism - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Send Poll message |
Initiate reachability check |
Neighbor responds with Update |
2 |
No Poll message sent |
Polling disabled |
No Update received |
3 |
Poll interval = 30 sec |
Standard polling frequency |
Updates received every 30 sec |
4 |
Poll interval = 60 sec |
Custom polling frequency |
Updates received every 60 sec |
5 |
Poll interval too short |
Poll every 1 sec |
May cause congestion |
6 |
Poll interval too long |
Poll every 5 min |
Updates delayed |
7 |
Poll with valid neighbor |
Neighbor reachable |
Update received |
8 |
Poll with unreachable neighbor |
No response |
Session timeout |
9 |
Poll with valid AS number |
Correct AS configured |
Poll accepted |
10 |
Poll with invalid AS number |
AS mismatch |
Poll ignored |
11 |
Poll with valid IP |
Correct neighbor IP |
Poll accepted |
12 |
Poll with invalid IP |
Wrong neighbor IP |
Poll ignored |
13 |
Poll with valid TTL |
TTL = 255 |
Poll accepted |
14 |
Poll with TTL = 1 |
TTL expired |
Poll dropped |
15 |
Poll with valid checksum |
Packet integrity verified |
Poll accepted |
16 |
Poll with invalid checksum |
Corrupted packet |
Poll discarded |
17 |
Poll with valid version |
Supported EGP version |
Poll processed |
18 |
Poll with invalid version |
Unsupported version |
Poll ignored |
19 |
Poll with valid port |
EGP port used |
Poll accepted |
20 |
Poll with invalid port |
Wrong port |
Poll ignored |
21 |
Poll with authentication |
If supported |
Poll accepted |
22 |
Poll with invalid authentication |
Wrong key |
Poll rejected |
23 |
Poll with valid sequence number |
In-order sequence |
Poll accepted |
24 |
Poll with duplicate sequence number |
Replayed message |
Poll ignored |
25 |
Poll with valid header |
Proper format |
Poll accepted |
26 |
Poll with malformed header |
Incorrect format |
Poll rejected |
27 |
Poll with valid neighbor state |
Neighbor in idle state |
Poll initiates session |
28 |
Poll during active session |
Session ongoing |
Poll triggers update |
29 |
Poll with route filtering |
Prefix filter applied |
Only allowed routes returned |
30 |
Poll with no route filtering |
All routes returned |
Full table received |
31 |
Poll with route aggregation |
Summarized routes |
Aggregated update received |
32 |
Poll with minimal prefix set |
Few routes advertised |
All accepted |
33 |
Poll with max prefix limit |
Exceeds configured limit |
Excess routes dropped |
34 |
Poll with valid Hello exchange |
Hello received before poll |
Poll accepted |
35 |
Poll without Hello exchange |
No Hello received |
Poll ignored |
36 |
Poll with valid response time |
Update received promptly |
Session stable |
37 |
Poll with delayed response |
Update delayed |
Session may timeout |
38 |
Poll with route to private IP |
10.0.0.0/8 |
Route accepted |
39 |
Poll with route to public IP |
8.8.8.0/24 |
Route accepted |
40 |
Poll with route to loopback |
127.0.0.0/8 |
Route ignored |
41 |
Poll with route to multicast |
224.0.0.0/4 |
Route ignored |
42 |
Poll with route to broadcast |
255.255.255.255 |
Route ignored |
43 |
Poll with default route |
0.0.0.0 |
Route accepted |
44 |
Poll with duplicate routes |
Same prefix repeated |
Last route used |
45 |
Poll with inconsistent metrics |
Same prefix, different metrics |
Lowest metric used |
46 |
Poll with valid neighbor config |
Correct IP and AS |
Poll accepted |
47 |
Poll with misconfigured neighbor |
Wrong IP or AS |
Poll ignored |
48 |
Poll with stable neighbor |
No changes in reachability |
Same routes returned |
49 |
Poll with flapping neighbor |
Frequent reachability changes |
Routes updated frequently |
50 |
Poll with unreachable network |
Network marked unreachable |
Route removed from table |
Finite-State Machine Model - Testcases
Finite-State Machine Model - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Start in Idle state |
Router boots up |
FSM enters Idle state |
2 |
Send Hello in Idle state |
Initiate neighbor discovery |
FSM transitions to Acquisition |
3 |
Receive Hello in Acquisition state |
Neighbor responds |
FSM transitions to Down state |
4 |
Receive Update in Down state |
Reachability confirmed |
FSM transitions to Up state |
5 |
No Update in Down state |
No reachability info |
FSM remains in Down state |
6 |
Timer expires in Up state |
No Hello received |
FSM transitions to Down state |
7 |
Receive Hello in Up state |
Keepalive maintained |
FSM remains in Up state |
8 |
Receive invalid message in any state |
Malformed packet |
FSM ignores message |
9 |
Receive Poll in Up state |
Request for update |
FSM sends Update |
10 |
Receive Update in Up state |
Valid routing info |
Routing table updated |
11 |
Receive Update in Idle state |
Unexpected message |
FSM ignores message |
12 |
Receive Hello in Up state |
Valid neighbor |
FSM remains in Up state |
13 |
Receive Hello from unknown AS |
AS mismatch |
FSM ignores message |
14 |
Receive Hello with invalid checksum |
Corrupted packet |
FSM ignores message |
15 |
Receive Hello with TTL = 1 |
TTL expired |
FSM ignores message |
16 |
Receive Hello with TTL = 255 |
Valid TTL |
FSM processes message |
17 |
Receive Hello with valid version |
Supported version |
FSM processes message |
18 |
Receive Hello with invalid version |
Unsupported version |
FSM ignores message |
19 |
Receive Hello with valid port |
EGP port used |
FSM processes message |
20 |
Receive Hello with invalid port |
Wrong port |
FSM ignores message |
21 |
FSM in Acquisition state |
Waiting for Hello |
FSM transitions on Hello receipt |
22 |
FSM in Down state |
Waiting for Update |
FSM transitions on Update receipt |
23 |
FSM in Up state |
Normal operation |
Routes exchanged |
24 |
FSM in Idle state |
No neighbor configured |
FSM remains in Idle |
25 |
FSM transitions from Up to Down |
Hello timeout |
Session marked down |
26 |
FSM transitions from Down to Up |
Update received |
Session marked up |
27 |
FSM transitions from Acquisition to Down |
Hello received |
Session initialized |
28 |
FSM transitions from Idle to Acquisition |
Poll sent |
FSM waits for Hello |
29 |
FSM transitions from Acquisition to Idle |
No Hello received |
FSM resets |
30 |
FSM transitions from Up to Idle |
Manual reset |
FSM returns to Idle |
31 |
FSM handles duplicate Hello |
Same Hello received again |
FSM remains in current state |
32 |
FSM handles delayed Hello |
Hello received late |
FSM transitions if valid |
33 |
FSM handles malformed Update |
Invalid format |
FSM ignores message |
34 |
FSM handles valid Update |
Proper format |
FSM updates routing table |
35 |
FSM handles Update with unreachable route |
Metric = unreachable |
Route removed |
36 |
FSM handles Update with valid route |
Reachable prefix |
Route added |
37 |
FSM handles Update with duplicate route |
Same prefix repeated |
Last route used |
38 |
FSM handles Update with inconsistent metrics |
Same prefix, different metrics |
Lowest metric used |
39 |
FSM handles Update with invalid IP |
IP = 300.0.0.0 |
Route ignored |
40 |
FSM handles Update with valid IP |
IP = 192.168.1.0 |
Route accepted |
41 |
FSM handles Update with route to loopback |
127.0.0.0 |
Route ignored |
42 |
FSM handles Update with route to multicast |
224.0.0.0 |
Route ignored |
43 |
FSM handles Update with route to broadcast |
255.255.255.255 |
Route ignored |
44 |
FSM handles Update with default route |
0.0.0.0 |
Route accepted |
45 |
FSM handles Update with private IP |
10.0.0.0 |
Route accepted |
46 |
FSM handles Update with public IP |
8.8.8.0 |
Route accepted |
47 |
FSM handles Update with valid AS number |
Correct AS |
Route accepted |
48 |
FSM handles Update with invalid AS number |
AS mismatch |
Route ignored |
49 |
FSM handles Update with valid authentication |
If supported |
Route accepted |
50 |
FSM handles Update with invalid authentication |
Wrong key |
Route rejected |
Simple Packet Structure - Testcases
Simple Packet Structure - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Valid EGP header |
Properly formatted header |
Packet accepted |
2 |
Invalid EGP header |
Corrupted or missing fields |
Packet rejected |
3 |
Valid version field |
Version = 2 |
Packet processed |
4 |
Invalid version field |
Version ? 2 |
Packet ignored |
5 |
Valid opcode field |
Opcode = Hello, Update, etc. |
Packet processed |
6 |
Invalid opcode field |
Opcode not defined |
Packet ignored |
7 |
Valid autonomous system number |
AS number matches config |
Packet accepted |
8 |
Invalid autonomous system number |
AS mismatch |
Packet rejected |
9 |
Valid sequence number |
Correct sequence |
Packet accepted |
10 |
Duplicate sequence number |
Replayed packet |
Packet ignored |
11 |
Valid status field |
Status = 0 (OK) |
Packet accepted |
12 |
Invalid status field |
Status undefined |
Packet ignored |
13 |
Valid checksum |
Header checksum correct |
Packet accepted |
14 |
Invalid checksum |
Header checksum incorrect |
Packet discarded |
15 |
Valid length field |
Matches actual packet size |
Packet accepted |
16 |
Invalid length field |
Length mismatch |
Packet rejected |
17 |
Valid EGP ID field |
Unique identifier |
Packet accepted |
18 |
Missing EGP ID field |
Field omitted |
Packet rejected |
19 |
Valid neighbor field |
Correct neighbor IP |
Packet accepted |
20 |
Invalid neighbor field |
Unknown neighbor |
Packet ignored |
21 |
Valid Hello message |
Proper format |
Session initiated |
22 |
Invalid Hello message |
Malformed format |
Packet ignored |
23 |
Valid Update message |
Proper format |
Routing table updated |
24 |
Invalid Update message |
Missing fields |
Packet rejected |
25 |
Valid Poll message |
Proper format |
Update expected |
26 |
Invalid Poll message |
Opcode mismatch |
Packet ignored |
27 |
Valid NR message |
Network reachability info |
Packet accepted |
28 |
Invalid NR message |
Incorrect format |
Packet ignored |
29 |
Valid IP prefix in NR |
Proper IP format |
Route accepted |
30 |
Invalid IP prefix in NR |
Malformed IP |
Route ignored |
31 |
Valid metric in NR |
Metric within range |
Route accepted |
32 |
Invalid metric in NR |
Metric out of range |
Route ignored |
33 |
Valid TTL |
TTL = 255 |
Packet accepted |
34 |
TTL expired |
TTL = 0 or 1 |
Packet dropped |
35 |
Valid port |
EGP port used |
Packet accepted |
36 |
Invalid port |
Port ? EGP standard |
Packet ignored |
37 |
Valid source IP |
Known router |
Packet accepted |
38 |
Spoofed source IP |
Unknown or fake IP |
Packet ignored |
39 |
Valid destination IP |
Correct neighbor IP |
Packet accepted |
40 |
Invalid destination IP |
Wrong target |
Packet ignored |
41 |
Valid packet size |
Within MTU |
Packet accepted |
42 |
Oversized packet |
Exceeds MTU |
Packet dropped |
43 |
Valid padding |
Proper alignment |
Packet accepted |
44 |
Missing padding |
Misaligned structure |
Packet rejected |
45 |
Valid message type |
Recognized opcode |
Packet processed |
46 |
Unknown message type |
Opcode not defined |
Packet ignored |
47 |
Valid response to Poll |
Update received |
Session maintained |
48 |
No response to Poll |
No Update received |
Session timeout |
49 |
Valid session state |
FSM in correct state |
Packet accepted |
50 |
Invalid session state |
FSM not ready |
Packet ignored |
Tree-Like Topology Support - Testcases
Tree-Like Topology Support - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Single parent AS |
One AS connected to multiple child ASes |
Topology supported |
2 |
Linear AS chain |
AS1 ? AS2 ? AS3 |
Topology supported |
3 |
Star topology |
Central AS with multiple leaf ASes |
Topology supported |
4 |
Binary tree structure |
AS hierarchy in binary tree form |
Topology supported |
5 |
Deep tree structure |
5+ levels of AS hierarchy |
Topology supported |
6 |
Wide tree structure |
One AS with 10+ children |
Topology supported |
7 |
Loop in topology |
AS1 ? AS2 ? AS1 |
Not supported (EGP does not support loops) |
8 |
Mesh topology |
Multiple inter-AS links |
Not supported |
9 |
Tree with unreachable leaf |
Leaf AS not responding |
Routes not propagated |
10 |
Tree with unreachable root |
Root AS down |
Entire tree loses connectivity |
11 |
Tree with valid Hello exchange |
All ASes respond |
Tree formed successfully |
12 |
Tree with missing Hello |
One AS silent |
That AS excluded from tree |
13 |
Tree with valid Update flow |
Updates flow from root to leaves |
Routes propagated |
14 |
Tree with invalid Update |
Malformed packet |
Update ignored |
15 |
Tree with valid Polling |
Polls sent from root |
Updates received |
16 |
Tree with missing Poll response |
One AS does not respond |
That AS marked unreachable |
17 |
Tree with valid AS numbers |
All AS numbers unique |
Tree formed |
18 |
Tree with duplicate AS numbers |
Conflict in AS IDs |
Tree formation fails |
19 |
Tree with valid IP prefixes |
All routes valid |
Routing table updated |
20 |
Tree with invalid IP prefix |
Malformed prefix |
Route ignored |
21 |
Tree with valid metrics |
Reachability metrics correct |
Routes accepted |
22 |
Tree with inconsistent metrics |
Conflicting metrics |
Lowest metric used |
23 |
Tree with valid TTL |
TTL = 255 |
Packets accepted |
24 |
Tree with TTL = 1 |
TTL expired |
Packet dropped |
25 |
Tree with valid checksum |
Packet integrity verified |
Packet accepted |
26 |
Tree with invalid checksum |
Corrupted packet |
Packet discarded |
27 |
Tree with valid port |
EGP port used |
Packet accepted |
28 |
Tree with invalid port |
Wrong port |
Packet ignored |
29 |
Tree with valid version |
Version = 2 |
Packet processed |
30 |
Tree with invalid version |
Version ? 2 |
Packet ignored |
31 |
Tree with route to private IP |
10.0.0.0/8 |
Route accepted |
32 |
Tree with route to public IP |
8.8.8.0/24 |
Route accepted |
33 |
Tree with route to loopback |
127.0.0.0/8 |
Route ignored |
34 |
Tree with route to multicast |
224.0.0.0/4 |
Route ignored |
35 |
Tree with route to broadcast |
255.255.255.255 |
Route ignored |
36 |
Tree with default route |
0.0.0.0 |
Route accepted |
37 |
Tree with duplicate routes |
Same prefix repeated |
Last route used |
38 |
Tree with route flapping |
Route status changes frequently |
Route stability affected |
39 |
Tree with stable routes |
No changes |
Routing table remains stable |
40 |
Tree with valid neighbor config |
Correct IP and AS |
Tree formed |
41 |
Tree with misconfigured neighbor |
Wrong IP or AS |
Node excluded |
42 |
Tree with route aggregation |
Summarized routes |
Aggregated route accepted |
43 |
Tree with minimal prefix set |
Few routes advertised |
All accepted |
44 |
Tree with max prefix limit |
Exceeds configured limit |
Excess routes dropped |
45 |
Tree with policy-based routing |
Routes filtered by policy |
Only matching routes accepted |
46 |
Tree with authentication |
If supported |
Tree formed securely |
47 |
Tree with invalid authentication |
Wrong key |
Node excluded |
48 |
Tree with Hello timeout |
No Hello received |
Node marked unreachable |
49 |
Tree with Poll timeout |
No Update received |
Node marked unreachable |
50 |
Tree with full convergence |
All nodes reachable and updated |
Tree routing stable |
Limited Scalability - Testcases
Limited Scalability - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Small number of ASes (?5) |
Basic EGP deployment |
Protocol functions normally |
2 |
Moderate number of ASes (1020) |
Mid-sized topology |
Protocol functions with minor delays |
3 |
Large number of ASes (>50) |
Large-scale topology |
Performance degrades |
4 |
Very large number of ASes (>100) |
Stress test |
Protocol fails to scale |
5 |
Multiple child ASes under one parent |
Star topology |
Supported |
6 |
Multiple parent ASes |
Mesh-like structure |
Not supported |
7 |
Loop in AS topology |
AS1 ? AS2 ? AS1 |
Not supported |
8 |
Tree-like hierarchy |
AS1 ? AS2 ? AS3 |
Supported |
9 |
Full mesh of ASes |
All ASes interconnected |
Not supported |
10 |
Redundant links between ASes |
Backup paths |
Not utilized |
11 |
Route propagation delay in large AS set |
50+ ASes |
Noticeable delay |
12 |
Route convergence time in small AS set |
?5 ASes |
Fast convergence |
13 |
Route convergence time in large AS set |
>50 ASes |
Slow convergence |
14 |
Update size with 10 routes |
Small routing table |
Efficient |
15 |
Update size with 1000 routes |
Large routing table |
Inefficient |
16 |
Polling overhead in small network |
Few neighbors |
Minimal overhead |
17 |
Polling overhead in large network |
Many neighbors |
High overhead |
18 |
CPU usage in small topology |
Few ASes |
Low CPU load |
19 |
CPU usage in large topology |
Many ASes |
High CPU load |
20 |
Memory usage with small routing table |
Few routes |
Efficient |
21 |
Memory usage with large routing table |
Many routes |
High memory usage |
22 |
Bandwidth usage in small network |
Few updates |
Low bandwidth |
23 |
Bandwidth usage in large network |
Frequent updates |
High bandwidth |
24 |
Duplicate route entries |
Same prefix from multiple ASes |
Last route used |
25 |
Conflicting route metrics |
Same prefix, different metrics |
Lowest metric used |
26 |
Route flapping in large network |
Frequent changes |
Instability increases |
27 |
Route stability in small network |
Stable links |
Stable routing |
28 |
Neighbor discovery in small AS set |
Few neighbors |
Fast discovery |
29 |
Neighbor discovery in large AS set |
Many neighbors |
Slower discovery |
30 |
Session maintenance in small network |
Few sessions |
Stable |
31 |
Session maintenance in large network |
Many sessions |
Unstable |
32 |
Hello message handling in small AS set |
Few neighbors |
Efficient |
33 |
Hello message handling in large AS set |
Many neighbors |
Congestion risk |
34 |
Poll message handling in small AS set |
Few neighbors |
Efficient |
35 |
Poll message handling in large AS set |
Many neighbors |
Delays expected |
36 |
Update message handling in small AS set |
Few routes |
Efficient |
37 |
Update message handling in large AS set |
Many routes |
Processing delay |
38 |
Timer synchronization in small network |
Few routers |
Accurate |
39 |
Timer synchronization in large network |
Many routers |
Inconsistent |
40 |
Route filtering in small AS set |
Few policies |
Easy to manage |
41 |
Route filtering in large AS set |
Many policies |
Complex to manage |
42 |
Policy enforcement in small network |
Simple rules |
Effective |
43 |
Policy enforcement in large network |
Complex rules |
Difficult to enforce |
44 |
Fault isolation in small network |
Easy to trace |
Quick recovery |
45 |
Fault isolation in large network |
Hard to trace |
Slow recovery |
46 |
Topology changes in small network |
Few changes |
Quickly adapted |
47 |
Topology changes in large network |
Frequent changes |
Slow adaptation |
48 |
Route summarization in small network |
Few prefixes |
Not needed |
49 |
Route summarization in large network |
Many prefixes |
Not supported |
50 |
Overall scalability test |
100+ ASes, 1000+ routes |
EGP fails to scale efficiently |
Reference links