MP_BGP - Multiprotocol BGP
What is MP_BGP?
MP-BGP (Multiprotocol BGP) is an extension of the Border Gateway Protocol (BGP) that allows it to carry routing information for multiple network layer protocols, not just IPv4 unicast.
Why was MP-BGP introduced?
Standard BGP only supports IPv4 unicast. MP-BGP was introduced to support: * IPV6 routing * Multicast routing * MPLS VPNs (VPNv4/VPNv6) * Layer 2 VPNs (L2VPN) * Ethernet VPNs (EVPN)
What are Address Families (AFI/SAFI)?
MP-BGP uses AFI (Address Family Identifier) and SAFI (Subsequent Address Family Identifier) to distinguish between different types of routing information, such as: * IPv4 unicast: AFI=1, SAFI=1 * IPv6 unicast: AFI=2, SAFI=1 * VPNv4: AFI=1, SAFI=128 * L2VPN: AFI=25, SAFI=70
Is MP-BGP backward compatible with BGP?
Yes. MP-BGP is an extension, so routers that support MP-BGP can still interoperate with routers running standard BGP for IPv4 unicast.
Where is MP-BGP commonly used?
Service Provider Networks: For MPLS Layer 3 VPNs
Data Centers: For EVPN and VXLAN overlays
Multicast Networks: To distribute multicast routing information
IPv6 Deployments: To support IPv6 routing alongside IPv4
What are the benefits of MP-BGP?
Flexibility: Supports multiple protocols in a single BGP session
Scalability: Efficient for large-scale VPN and data center deployments
Separation of control planes: Keeps different routing domains logically isolated
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
Version & RFC Details |
|||
---|---|---|---|
MP-BGP Version |
RFC Version |
Year |
Core Idea / Contribution |
MP-BGP |
|||
RFC 4760 |
2007 |
Defines MP-BGP extensions to support multiple address families (AFI/SAFI). |
|
RFC 2858 |
2000 |
Original MP-BGP extension (now obsolete, replaced by RFC 4760). |
|
RFC 2545 |
1999 |
Use of MP-BGP for IPv6 inter-domain routing. |
|
RFC 3107 |
2001 |
Carrying MPLS labels in BGP for MPLS VPNs. |
|
RFC 4364 |
2006 |
BGP/MPLS IP VPNs using MP-BGP with VPNv4/v6 address families. |
|
RFC 8277 |
2017 |
Updates RFC 3107 to support multiple label bindings per prefix. |
|
RFC 4761 |
2007 |
VPLS using BGP for auto-discovery (Layer 2 VPNs). |
|
RFC 4762 |
2007 |
VPLS using LDP signaling, complements RFC 4761. |
|
RFC 8955 |
2020 |
Dissemination of FlowSpec rules using MP-BGP. |
|
RFC 9012 |
2021 |
BGP FlowSpec for IPv6 networks. |
Setup
Setup
MP_BGP OPEN Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
1 |
OPEN |
Initiates a BGP session between peers. |
2960 |
Marker |
All 1s for compatibility |
16 |
|
Length |
Total message length |
2 |
|
Type |
Message type (1 = OPEN) |
1 |
|
Version |
BGP version (usually 4) |
1 |
|
My Autonomous System |
Senders AS number |
2 |
|
Hold Time |
Max time before expecting a KEEPALIVE |
2 |
|
BGP Identifier |
Unique router ID (usually an IP address) |
4 |
|
Optional Parameters Length |
Length of optional parameters |
1 |
|
Optional Parameters |
Capabilities (e.g., MP-BGP support via AFI/SAFI) |
Variable |
MP_BGP UPDATE Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
2 |
UPDATE |
Advertises new routes or withdraws existing ones. |
601500 |
Marker |
All 1s |
16 |
|
Length |
Total message length |
2 |
|
Type |
Message type (2 = UPDATE) |
1 |
|
Withdrawn Routes Length |
Length of withdrawn routes field |
2 |
|
Withdrawn Routes |
List of withdrawn prefixes |
Variable |
|
Total Path Attribute Length |
Length of path attributes |
2 |
|
Path Attributes |
Attributes like ORIGIN, AS_PATH, NEXT_HOP, MP_REACH_NLRI |
Variable |
|
NLRI |
List of new prefixes (for IPv4 unicast only) |
Variable |
MP_BGP KEEPALIVE Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
3 |
KEEPALIVE |
Keeps the BGP session alive (sent periodically). |
19 |
Marker |
All 1s |
16 |
|
Length |
Always 19 |
2 |
|
Type |
Message type (4 = KEEPALIVE) |
1 |
MP_BGP NOTIFICATION Packet
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
4 |
NOTIFICATION |
Indicates an error and terminates the session. |
21-50 |
Marker |
All 1s |
16 |
|
Length |
Total message length |
2 |
|
Type |
Message type (3 = NOTIFICATION) |
1 |
|
Error Code |
General error category |
1 |
|
Error Subcode |
Specific error type |
1 |
|
Data |
Optional diagnostic data |
Variable |
MP-BGP - Use Cases |
||
---|---|---|
S.no |
Use Case |
Description |
1 |
IPv6 Routing |
MP-BGP enables the exchange of IPv6 routes over existing IPv4 BGP sessions. |
2 |
MPLS Layer 3 VPN (L3VPN) |
Uses VPNv4/VPNv6 address families to support customer VPNs over MPLS backbones. |
3 |
Multicast Routing |
Separates unicast and multicast routing tables using different AFI/SAFI pairs. |
4 |
Layer 2 VPN (L2VPN) |
Supports services like VPLS and EVPN using MP-BGP for auto-discovery and signaling. |
5 |
Internet Routing Table Separation |
Allows ISPs to maintain separate routing tables for different services or tenants. |
6 |
Flow Specification (FlowSpec) |
Distributes traffic filtering rules (e.g., DDoS mitigation) using MP-BGP. |
7 |
Route Target Distribution |
Distributes VPN route targets dynamically using MP-BGP extensions. |
8 |
Segment Routing with BGP |
Carries Segment Routing information for traffic engineering and service chaining. |
9 |
Inter-AS MPLS VPNs |
Facilitates VPN connectivity across multiple autonomous systems. |
10 |
Service Provider Backbone |
Enables scalable and flexible routing for large-scale service provider networks. |
MP-BGP - Basic Features |
||
---|---|---|
S.no |
Features |
Description |
1 |
Multiprotocol Support |
Allows BGP to carry routing information for multiple network protocols (e.g., IPv6, VPN). |
2 |
AFI/SAFI Mechanism |
Uses Address Family Identifier (AFI) and Subsequent AFI (SAFI) to distinguish route types. |
3 |
MP_REACH_NLRI Attribute |
Introduces a new BGP attribute to advertise reachable routes for different protocols. |
4 |
MP_UNREACH_NLRI Attribute |
Allows withdrawal of routes for specific address families. |
5 |
Backward Compatibility |
Compatible with legacy BGP routers that do not support MP-BGP extensions. |
6 |
Separate Routing Tables |
Maintains independent routing tables for each address family (e.g., IPv4, IPv6, VPNv4). |
7 |
Flexible Transport |
Can exchange IPv6 routes over IPv4 sessions and vice versa. |
8 |
Scalability |
Supports large-scale deployments like MPLS VPNs and service provider backbones. |
9 |
Policy Control |
Enables fine-grained control over route advertisement and filtering per address family. |
10 |
Extensibility |
Easily extendable to support new address families and services (e.g., FlowSpec, EVPN). |
Multiprotocol Support - Testcases
Multiprotocol Support - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Basic Internet Access |
Private host accesses public website |
NAT translates IP and allows access |
2 |
Multiple Hosts Access Internet |
Multiple private hosts browse internet |
NAT handles all translations |
3 |
PAT with Single Public IP |
Multiple hosts share one public IP |
All sessions are uniquely translated |
4 |
Dynamic NAT Pool |
Use pool of public IPs for internet access |
Hosts are dynamically assigned IPs |
5 |
Static NAT for Server |
Internal server accesses internet |
Static mapping allows access |
6 |
DNS Resolution |
Private host resolves domain name |
DNS query and response are translated |
7 |
HTTP Access |
Access HTTP website from private host |
NAT translates TCP port 80 traffic |
8 |
HTTPS Access |
Access HTTPS website from private host |
NAT translates TCP port 443 traffic |
9 |
FTP Access |
Access FTP server from private host |
NAT handles control and data channels |
10 |
Email Access |
Send/receive email via SMTP/IMAP |
NAT translates email protocol ports |
11 |
Streaming Access |
Stream video from public service |
NAT handles continuous media flow |
12 |
Gaming Access |
Connect to online game server |
NAT translates game-specific ports |
13 |
VPN Access |
Establish VPN tunnel from private host |
NAT-T encapsulation used if needed |
14 |
IPsec Tunnel |
Create IPsec tunnel from private host |
NAT-T allows tunnel establishment |
15 |
NAT with DHCP |
Assign private IP via DHCP |
NAT translates traffic for DHCP clients |
16 |
NAT with Static IP |
Use static private IP |
NAT translates traffic normally |
17 |
NAT with IPv4 |
Access internet using IPv4 |
NAT translates IPv4 traffic |
18 |
NAT with IPv6 |
Access IPv6 internet via NAT64 |
IPv6 translated to IPv4 |
19 |
NAT with DNS Proxy |
Use DNS proxy for resolution |
NAT handles DNS traffic |
20 |
NAT with Web Proxy |
Use web proxy for browsing |
NAT translates proxy traffic |
21 |
NAT with ACL |
Restrict internet access via ACL |
Only allowed traffic is translated |
22 |
NAT with QoS |
Apply QoS to internet-bound traffic |
QoS markings are preserved |
23 |
NAT with Logging |
Log internet access via NAT |
Logs show translated sessions |
24 |
NAT with SNMP Monitoring |
Monitor NAT usage via SNMP |
Internet access stats are visible |
25 |
NAT with CLI Monitoring |
Use CLI to check NAT status |
Internet-bound sessions are listed |
26 |
NAT with Port Forwarding |
Allow inbound traffic to internal host |
Specific ports are forwarded |
27 |
NAT with Hairpinning |
Internal host accesses public IP of peer |
Traffic is looped back correctly |
28 |
NAT with Loopback |
Access own public IP from inside |
Traffic is translated and routed |
29 |
NAT with Redundant Links |
Use multiple WAN links |
Internet access works across links |
30 |
NAT with Failover |
Failover to backup NAT device |
Internet access resumes automatically |
31 |
NAT with Load Balancing |
Distribute internet traffic |
Load is balanced across public IPs |
32 |
NAT with VRF |
Internet access per VRF |
NAT operates per routing instance |
33 |
NAT with Static Route |
Route internet traffic via NAT |
Traffic is routed and translated |
34 |
NAT with Dynamic Routing |
Use OSPF/BGP for internet traffic |
Routing and NAT coexist |
35 |
NAT with DNSSEC |
Access DNSSEC-enabled domains |
NAT handles secure DNS traffic |
36 |
NAT with WebRTC |
Use WebRTC for video calls |
NAT handles STUN/TURN/ICE protocols |
37 |
NAT with STUN |
Discover public IP via STUN |
NAT allows STUN messages |
38 |
NAT with TURN |
Relay media via TURN server |
NAT allows relay traffic |
39 |
NAT with ICE |
Negotiate media path via ICE |
NAT supports candidate exchange |
40 |
NAT with Cloud Services |
Access cloud APIs from private host |
NAT translates traffic to cloud endpoints |
41 |
NAT with Container Networks |
Containers access internet |
Host NATs container traffic |
42 |
NAT with Kubernetes |
Pods access internet via node IP |
NAT translates pod traffic |
43 |
NAT with IoT Devices |
IoT devices access cloud services |
NAT translates traffic securely |
44 |
NAT with Mobile Devices |
Mobile clients access internet |
NAT handles dynamic sessions |
45 |
NAT with Guest Network |
Guest users browse internet |
NAT isolates and translates traffic |
46 |
NAT with Endpoint Protection |
Secure internet access |
NAT works with endpoint security tools |
47 |
NAT with Threat Intelligence |
Block malicious destinations |
NAT enforces security policies |
48 |
NAT with Compliance Logging |
Log internet access for audit |
Logs meet compliance standards |
49 |
NAT with Time-Based Rules |
Allow internet access during specific hours |
NAT enforces schedule |
50 |
NAT with User Authentication |
Authenticate users before access |
NAT translates traffic post-authentication |
AFI_SAFI Mechanism - Testcases
AFI/SAFI Mechanism - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
AFI/SAFI Capability Exchange |
Verify AFI/SAFI in BGP OPEN message |
Correct capabilities are advertised |
2 |
IPv4 Unicast AFI/SAFI |
Configure AFI=1, SAFI=1 |
IPv4 unicast routes are exchanged |
3 |
IPv6 Unicast AFI/SAFI |
Configure AFI=2, SAFI=1 |
IPv6 unicast routes are exchanged |
4 |
VPNv4 AFI/SAFI |
Configure AFI=1, SAFI=128 |
VPNv4 routes are exchanged |
5 |
VPNv6 AFI/SAFI |
Configure AFI=2, SAFI=128 |
VPNv6 routes are exchanged |
6 |
EVPN AFI/SAFI |
Configure AFI=25, SAFI=70 |
EVPN routes are exchanged |
7 |
L2VPN AFI/SAFI |
Configure AFI=25, SAFI=65 |
L2VPN routes are exchanged |
8 |
IPv4 Multicast AFI/SAFI |
Configure AFI=1, SAFI=2 |
IPv4 multicast routes are exchanged |
9 |
IPv6 Multicast AFI/SAFI |
Configure AFI=2, SAFI=2 |
IPv6 multicast routes are exchanged |
10 |
FlowSpec IPv4 AFI/SAFI |
Configure AFI=1, SAFI=133 |
IPv4 FlowSpec rules are exchanged |
11 |
FlowSpec IPv6 AFI/SAFI |
Configure AFI=2, SAFI=133 |
IPv6 FlowSpec rules are exchanged |
12 |
Labeled IPv4 Unicast |
Configure AFI=1, SAFI=4 |
Labeled IPv4 routes are exchanged |
13 |
Labeled IPv6 Unicast |
Configure AFI=2, SAFI=4 |
Labeled IPv6 routes are exchanged |
14 |
SRv6 AFI/SAFI |
Configure AFI=2, SAFI=73 |
SRv6 routes are exchanged |
15 |
AFI/SAFI Negotiation Success |
Match AFI/SAFI on both peers |
Session established, routes exchanged |
16 |
AFI/SAFI Negotiation Failure |
Mismatch AFI/SAFI between peers |
No route exchange occurs |
17 |
AFI/SAFI with Route Reflector |
Use AFI/SAFI in RR setup |
Routes are reflected correctly |
18 |
AFI/SAFI with Confederation |
Use AFI/SAFI in confed setup |
Routes are exchanged within confed |
19 |
AFI/SAFI with Graceful Restart |
Restart BGP with AFI/SAFI enabled |
Routes are preserved |
20 |
AFI/SAFI with Add-Path |
Enable Add-Path for AFI/SAFI |
Multiple paths are advertised |
21 |
AFI/SAFI with Route Target |
Use RTs in VPN AFI/SAFI |
Route import/export works |
22 |
AFI/SAFI with Route Distinguisher |
Use RDs in VPN AFI/SAFI |
Routes are uniquely identified |
23 |
AFI/SAFI with Route Filtering |
Apply filters to AFI/SAFI |
Only permitted routes are exchanged |
24 |
AFI/SAFI with Route Aggregation |
Aggregate routes in AFI/SAFI |
Aggregated routes are advertised |
25 |
AFI/SAFI with Route Dampening |
Enable dampening |
Flapping routes are suppressed |
26 |
AFI/SAFI with Next-Hop Self |
Configure next-hop-self |
Next-hop is updated correctly |
27 |
AFI/SAFI with Next-Hop Unchanged |
Configure next-hop-unchanged |
Original next-hop is preserved |
28 |
AFI/SAFI with BGP Community |
Use standard community |
Tags are preserved |
29 |
AFI/SAFI with Extended Community |
Use extended community |
Tags are preserved |
30 |
AFI/SAFI with Large Community |
Use large community |
Tags are preserved |
31 |
AFI/SAFI with BGP Monitoring Protocol |
Monitor AFI/SAFI via BMP |
Updates are visible |
32 |
AFI/SAFI with Route Server |
Use AFI/SAFI in route server setup |
Routes are distributed |
33 |
AFI/SAFI with Static Route Redistribution |
Redistribute static routes |
Routes appear in BGP table |
34 |
AFI/SAFI with OSPF Redistribution |
Redistribute OSPF routes |
Routes are advertised |
35 |
AFI/SAFI with IS-IS Redistribution |
Redistribute IS-IS routes |
Routes are advertised |
36 |
AFI/SAFI with BGP Confederation |
Use AFI/SAFI across sub-AS |
Routes are exchanged |
37 |
AFI/SAFI with Route Map |
Apply route map to AFI/SAFI |
Routes are modified as expected |
38 |
AFI/SAFI with Prefix List |
Apply prefix list |
Only matching prefixes are advertised |
39 |
AFI/SAFI with Policy-Based Routing |
Use PBR with AFI/SAFI |
Traffic follows policy routes |
40 |
AFI/SAFI with MPLS VPN |
Use AFI/SAFI for MPLS VPN |
Labels and routes are exchanged |
41 |
AFI/SAFI with Segment Routing |
Use AFI/SAFI for SR |
SR routes are exchanged |
42 |
AFI/SAFI with EVPN Type 2 |
Advertise MAC/IP routes |
Type 2 routes are exchanged |
43 |
AFI/SAFI with EVPN Type 5 |
Advertise IP prefix routes |
Type 5 routes are exchanged |
44 |
AFI/SAFI with Route Leaking |
Leak routes between AFIs |
Routes are visible across VRFs |
45 |
AFI/SAFI with VRF Lite |
Use AFI/SAFI in VRF Lite |
Routes are exchanged per VRF |
46 |
AFI/SAFI with Dual Stack |
Enable IPv4 and IPv6 |
Both route types are exchanged |
47 |
AFI/SAFI with BFD |
Use BFD with AFI/SAFI |
Session stability is monitored |
48 |
AFI/SAFI with Authentication |
Use MD5/auth for BGP |
Secure session with AFI/SAFI |
49 |
AFI/SAFI with Route Refresh |
Send route refresh |
Routes are re-advertised |
50 |
AFI/SAFI with Soft Reconfiguration |
Enable soft reconfig |
Routes are retained for policy changes |
MP_REACH_NLRI Attribute - Testcases
MP_REACH_NLRI Attribute - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
MP_REACH_NLRI with IPv4 Unicast |
Advertise IPv4 unicast prefix |
Prefix is received and installed |
2 |
MP_REACH_NLRI with IPv6 Unicast |
Advertise IPv6 unicast prefix |
Prefix is received and installed |
3 |
MP_REACH_NLRI with VPNv4 |
Advertise VPNv4 prefix |
Prefix is received with RD and RT |
4 |
MP_REACH_NLRI with VPNv6 |
Advertise VPNv6 prefix |
Prefix is received with RD and RT |
5 |
MP_REACH_NLRI with EVPN |
Advertise EVPN route |
EVPN route is received and processed |
6 |
MP_REACH_NLRI with FlowSpec IPv4 |
Advertise FlowSpec IPv4 rule |
Rule is received and enforced |
7 |
MP_REACH_NLRI with FlowSpec IPv6 |
Advertise FlowSpec IPv6 rule |
Rule is received and enforced |
8 |
MP_REACH_NLRI with L2VPN |
Advertise L2VPN route |
Route is received and processed |
9 |
MP_REACH_NLRI with SRv6 |
Advertise SRv6 route |
SRv6 route is received |
10 |
MP_REACH_NLRI with Labeled IPv4 |
Advertise labeled IPv4 route |
Label and prefix are received |
11 |
MP_REACH_NLRI with Labeled IPv6 |
Advertise labeled IPv6 route |
Label and prefix are received |
12 |
MP_REACH_NLRI with Next-Hop IPv4 |
Use IPv4 next-hop |
Next-hop is correctly parsed |
13 |
MP_REACH_NLRI with Next-Hop IPv6 |
Use IPv6 next-hop |
Next-hop is correctly parsed |
14 |
MP_REACH_NLRI with Multiple NLRIs |
Advertise multiple prefixes |
All prefixes are received |
15 |
MP_REACH_NLRI with Invalid AFI |
Use unsupported AFI |
Update is rejected |
16 |
MP_REACH_NLRI with Invalid SAFI |
Use unsupported SAFI |
Update is rejected |
17 |
MP_REACH_NLRI with Invalid Next-Hop |
Use malformed next-hop |
Update is rejected |
18 |
MP_REACH_NLRI with Empty NLRI |
Send update with no NLRI |
Update is ignored |
19 |
MP_REACH_NLRI with Route Distinguisher |
Include RD in VPNv4 |
RD is parsed and route is installed |
20 |
MP_REACH_NLRI with Route Target |
Include RT in VPNv4 |
RT is used for import/export |
21 |
MP_REACH_NLRI with Add-Path |
Send multiple paths |
All paths are received |
22 |
MP_REACH_NLRI with Route Aggregation |
Send aggregated prefix |
Aggregated route is installed |
23 |
MP_REACH_NLRI with Route Reflector |
Receive from RR |
Route is accepted |
24 |
MP_REACH_NLRI with Confederation |
Receive from confed peer |
Route is accepted |
25 |
MP_REACH_NLRI with Graceful Restart |
Receive during restart |
Route is retained |
26 |
MP_REACH_NLRI with Route Refresh |
Send refresh request |
New MP_REACH_NLRI is received |
27 |
MP_REACH_NLRI with Soft Reconfiguration |
Enable soft reconfig |
Route is stored in Adj-RIB-In |
28 |
MP_REACH_NLRI with BGP Monitoring |
Monitor via BMP |
MP_REACH_NLRI is visible |
29 |
MP_REACH_NLRI with BFD |
Use BFD for peer |
Route is withdrawn on failure |
30 |
MP_REACH_NLRI with Authentication |
Use MD5 auth |
Route is accepted securely |
31 |
MP_REACH_NLRI with Invalid Length |
Send incorrect length |
Update is rejected |
32 |
MP_REACH_NLRI with Invalid Prefix |
Send malformed prefix |
Update is rejected |
33 |
MP_REACH_NLRI with Loopback Prefix |
Advertise loopback |
Route is installed |
34 |
MP_REACH_NLRI with Null Next-Hop |
Send null next-hop |
Update is rejected |
35 |
MP_REACH_NLRI with IPv6 Link-Local |
Use link-local next-hop |
Update is accepted if valid |
36 |
MP_REACH_NLRI with IPv4-Mapped IPv6 |
Use mapped address |
Update is parsed correctly |
37 |
MP_REACH_NLRI with Route Policy |
Apply policy to received route |
Policy is enforced |
38 |
MP_REACH_NLRI with Prefix List |
Filter received prefixes |
Only allowed prefixes are installed |
39 |
MP_REACH_NLRI with Community |
Include BGP community |
Community is preserved |
40 |
MP_REACH_NLRI with Extended Community |
Include extended community |
Attributes are preserved |
41 |
MP_REACH_NLRI with Large Community |
Include large community |
Attributes are preserved |
42 |
MP_REACH_NLRI with AS Path |
Include AS path |
Path is parsed and stored |
43 |
MP_REACH_NLRI with MED |
Include MED attribute |
MED is honored in best path |
44 |
MP_REACH_NLRI with Local Preference |
Include local-pref |
Preference is applied |
45 |
MP_REACH_NLRI with Origin |
Include origin attribute |
Origin is parsed |
46 |
MP_REACH_NLRI with Atomic Aggregate |
Include atomic aggregate |
Attribute is preserved |
47 |
MP_REACH_NLRI with Aggregator |
Include aggregator |
Attribute is preserved |
48 |
MP_REACH_NLRI with Unknown Attribute |
Include unknown optional transitive |
Attribute is preserved and forwarded |
49 |
MP_REACH_NLRI with Optional Non-Transitive |
Include optional non-transitive |
Attribute is ignored by non-supporting peers |
50 |
MP_REACH_NLRI with Route Withdrawal |
Withdraw previously advertised prefix |
Route is removed from RIB |
MP_UNREACH_NLRI Attribute - Testcases
MP_UNREACH_NLRI Attribute - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Withdraw IPv4 Unicast Prefix |
Send MP_UNREACH_NLRI for IPv4 unicast |
Prefix is removed from RIB |
2 |
Withdraw IPv6 Unicast Prefix |
Send MP_UNREACH_NLRI for IPv6 unicast |
Prefix is removed from RIB |
3 |
Withdraw VPNv4 Prefix |
Send MP_UNREACH_NLRI for VPNv4 |
VPNv4 route is withdrawn |
4 |
Withdraw VPNv6 Prefix |
Send MP_UNREACH_NLRI for VPNv6 |
VPNv6 route is withdrawn |
5 |
Withdraw EVPN Route |
Send MP_UNREACH_NLRI for EVPN |
EVPN route is withdrawn |
6 |
Withdraw FlowSpec IPv4 Rule |
Send MP_UNREACH_NLRI for FlowSpec IPv4 |
Rule is removed |
7 |
Withdraw FlowSpec IPv6 Rule |
Send MP_UNREACH_NLRI for FlowSpec IPv6 |
Rule is removed |
8 |
Withdraw L2VPN Route |
Send MP_UNREACH_NLRI for L2VPN |
Route is removed |
9 |
Withdraw SRv6 Route |
Send MP_UNREACH_NLRI for SRv6 |
SRv6 route is removed |
10 |
Withdraw Labeled IPv4 Route |
Send MP_UNREACH_NLRI for labeled IPv4 |
Route is removed |
11 |
Withdraw Labeled IPv6 Route |
Send MP_UNREACH_NLRI for labeled IPv6 |
Route is removed |
12 |
Withdraw Multiple Prefixes |
Withdraw multiple NLRIs in one update |
All prefixes are removed |
13 |
Withdraw with Invalid AFI |
Use unsupported AFI |
Update is rejected |
14 |
Withdraw with Invalid SAFI |
Use unsupported SAFI |
Update is rejected |
15 |
Withdraw with Empty NLRI |
Send MP_UNREACH_NLRI with no prefixes |
Update is ignored |
16 |
Withdraw with Invalid Prefix Format |
Send malformed prefix |
Update is rejected |
17 |
Withdraw with Route Distinguisher |
Withdraw VPN route with RD |
Route is removed correctly |
18 |
Withdraw with Route Target |
Withdraw route with RT |
Route is removed from matching VRFs |
19 |
Withdraw with Add-Path |
Withdraw specific path |
Only that path is removed |
20 |
Withdraw Aggregated Route |
Withdraw aggregated prefix |
Aggregated route is removed |
21 |
Withdraw from Route Reflector |
Receive withdrawal from RR |
Route is removed |
22 |
Withdraw from Confederation Peer |
Receive withdrawal from confed peer |
Route is removed |
23 |
Withdraw During Graceful Restart |
Withdraw route during restart |
Route is marked stale or removed |
24 |
Withdraw After Route Refresh |
Withdraw route after refresh |
Route is removed |
25 |
Withdraw with Soft Reconfiguration |
Enable soft reconfig |
Route is removed from Adj-RIB-In |
26 |
Withdraw with BMP Monitoring |
Monitor withdrawal via BMP |
Withdrawal is logged |
27 |
Withdraw with BFD Failure |
Trigger BFD down |
Route is withdrawn |
28 |
Withdraw with Authentication |
Use MD5 auth |
Route is securely withdrawn |
29 |
Withdraw with Invalid Length |
Send incorrect length |
Update is rejected |
30 |
Withdraw with Loopback Prefix |
Withdraw loopback route |
Route is removed |
31 |
Withdraw with Null Next-Hop |
Not applicable (no next-hop in MP_UNREACH) |
Update is valid |
32 |
Withdraw with IPv6 Link-Local |
Withdraw route with link-local next-hop |
Route is removed |
33 |
Withdraw with IPv4-Mapped IPv6 |
Withdraw mapped address |
Route is removed |
34 |
Withdraw with Route Policy |
Apply policy to withdrawal |
Policy is enforced |
35 |
Withdraw with Prefix List |
Filter withdrawn prefixes |
Only matching prefixes are removed |
36 |
Withdraw with Community |
Withdraw route with community |
Route is removed |
37 |
Withdraw with Extended Community |
Withdraw route with extended community |
Route is removed |
38 |
Withdraw with Large Community |
Withdraw route with large community |
Route is removed |
39 |
Withdraw with AS Path |
Withdraw route with AS path |
Route is removed |
40 |
Withdraw with MED |
Withdraw route with MED |
Route is removed |
41 |
Withdraw with Local Preference |
Withdraw route with local-pref |
Route is removed |
42 |
Withdraw with Origin |
Withdraw route with origin attribute |
Route is removed |
43 |
Withdraw with Atomic Aggregate |
Withdraw route with atomic aggregate |
Route is removed |
44 |
Withdraw with Aggregator |
Withdraw route with aggregator |
Route is removed |
45 |
Withdraw with Unknown Attribute |
Withdraw route with unknown attr |
Route is removed, attr ignored |
46 |
Withdraw with Optional Non-Transitive |
Withdraw route with non-transitive attr |
Route is removed |
47 |
Withdraw with Route Leak |
Withdraw leaked route |
Route is removed from target VRF |
48 |
Withdraw with VRF Lite |
Withdraw route in VRF Lite |
Route is removed from VRF |
49 |
Withdraw with Dual Stack |
Withdraw IPv4 and IPv6 routes |
Both are removed |
50 |
Withdraw with Route Server |
Withdraw route via route server |
Route is removed from clients |
Backward Compatibility - Testcases
Backward Compatibility - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
MP-BGP to Legacy BGP Peer |
Establish session with non-MP-BGP peer |
Session established, only IPv4 unicast exchanged |
2 |
MP-BGP with IPv4 Unicast Only |
Disable MP extensions |
IPv4 unicast routes exchanged normally |
3 |
MP-BGP with AFI/SAFI Disabled |
Disable all AFI/SAFI |
Session established, no multiprotocol routes |
4 |
Legacy BGP Peer Ignores MP Attributes |
Send MP_REACH_NLRI to legacy peer |
Peer ignores unknown attributes |
5 |
MP-BGP Peer Sends MP_REACH_NLRI |
Legacy peer receives MP_REACH_NLRI |
Attribute is ignored, session remains stable |
6 |
MP-BGP Peer Sends MP_UNREACH_NLRI |
Legacy peer receives MP_UNREACH_NLRI |
Attribute is ignored, session remains stable |
7 |
MP-BGP with Graceful Restart |
Restart MP-BGP peer |
Legacy peer continues with IPv4 unicast |
8 |
MP-BGP with Route Refresh |
Send route refresh to legacy peer |
Legacy peer ignores or rejects |
9 |
MP-BGP with Add-Path |
Send multiple paths |
Legacy peer accepts only best path |
10 |
MP-BGP with Extended Next-Hop |
Use IPv6 next-hop with legacy peer |
Legacy peer rejects or ignores |
11 |
MP-BGP with IPv6 Disabled |
Disable IPv6 AFI/SAFI |
IPv4 routes exchanged with legacy peer |
12 |
MP-BGP with VPNv4 Disabled |
Disable VPNv4 |
Legacy peer unaffected |
13 |
MP-BGP with EVPN Disabled |
Disable EVPN |
Legacy peer unaffected |
14 |
MP-BGP with FlowSpec Disabled |
Disable FlowSpec |
Legacy peer unaffected |
15 |
MP-BGP with Unsupported AFI |
Send unsupported AFI |
Legacy peer ignores update |
16 |
MP-BGP with Unsupported SAFI |
Send unsupported SAFI |
Legacy peer ignores update |
17 |
MP-BGP with Optional Transitive Attribute |
Send unknown optional transitive |
Legacy peer forwards it |
18 |
MP-BGP with Optional Non-Transitive Attribute |
Send unknown non-transitive |
Legacy peer drops attribute |
19 |
MP-BGP with Community Attribute |
Send standard community |
Legacy peer processes it |
20 |
MP-BGP with Extended Community |
Send extended community |
Legacy peer may ignore |
21 |
MP-BGP with Large Community |
Send large community |
Legacy peer ignores |
22 |
MP-BGP with AS4 Capability |
Send 4-byte ASN |
Legacy peer with 2-byte ASN handles gracefully |
23 |
MP-BGP with AS_PATH Compatibility |
Send AS_PATH with 4-byte ASN |
Legacy peer interprets correctly |
24 |
MP-BGP with Aggregator Attribute |
Send aggregator |
Legacy peer processes it |
25 |
MP-BGP with MED Attribute |
Send MED |
Legacy peer processes it |
26 |
MP-BGP with Local Preference |
Send local-pref |
Legacy peer processes it |
27 |
MP-BGP with Origin Attribute |
Send origin |
Legacy peer processes it |
28 |
MP-BGP with Atomic Aggregate |
Send atomic aggregate |
Legacy peer processes it |
29 |
MP-BGP with Route Reflector |
Use RR with legacy peer |
IPv4 routes reflected |
30 |
MP-BGP with Confederation |
Use confed with legacy peer |
IPv4 routes exchanged |
31 |
MP-BGP with Static Route Redistribution |
Redistribute static routes |
Legacy peer receives IPv4 routes |
32 |
MP-BGP with OSPF Redistribution |
Redistribute OSPF routes |
Legacy peer receives IPv4 routes |
33 |
MP-BGP with IS-IS Redistribution |
Redistribute IS-IS routes |
Legacy peer receives IPv4 routes |
34 |
MP-BGP with Prefix List |
Apply prefix list |
Legacy peer receives filtered routes |
35 |
MP-BGP with Route Map |
Apply route map |
Legacy peer receives modified routes |
36 |
MP-BGP with Policy-Based Routing |
Use PBR |
Legacy peer receives routed traffic |
37 |
MP-BGP with BFD |
Use BFD for session |
Legacy peer unaffected |
38 |
MP-BGP with Authentication |
Use MD5 auth |
Legacy peer authenticates successfully |
39 |
MP-BGP with Route Refresh Capability |
Enable route refresh |
Legacy peer ignores capability |
40 |
MP-BGP with Soft Reconfiguration |
Enable soft reconfig |
Legacy peer unaffected |
41 |
MP-BGP with BMP Monitoring |
Enable BMP |
Legacy peer unaffected |
42 |
MP-BGP with Logging Enabled |
Enable logging |
Legacy peer unaffected |
43 |
MP-BGP with SNMP Monitoring |
Enable SNMP |
Legacy peer unaffected |
44 |
MP-BGP with IPv4-Mapped IPv6 |
Send mapped address |
Legacy peer ignores |
45 |
MP-BGP with Loopback Prefix |
Advertise loopback |
Legacy peer installs route |
46 |
MP-BGP with Route Withdrawal |
Withdraw IPv4 route |
Legacy peer removes route |
47 |
MP-BGP with Route Aggregation |
Send aggregated route |
Legacy peer installs route |
48 |
MP-BGP with Route Dampening |
Enable dampening |
Legacy peer unaffected |
49 |
MP-BGP with Route Server |
Use route server |
Legacy peer receives IPv4 routes |
50 |
MP-BGP with Dual Stack |
Enable IPv4 and IPv6 |
Legacy peer receives only IPv4 |
Separate Routing Tables - Testcases
Separate Routing Tables - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
IPv4 Unicast Routing Table |
Verify IPv4 unicast routes are stored separately |
Only IPv4 unicast routes appear in the table |
2 |
IPv6 Unicast Routing Table |
Verify IPv6 unicast routes are stored separately |
Only IPv6 unicast routes appear in the table |
3 |
VPNv4 Routing Table |
Verify VPNv4 routes are isolated |
VPNv4 routes are not mixed with global IPv4 |
4 |
VPNv6 Routing Table |
Verify VPNv6 routes are isolated |
VPNv6 routes are not mixed with global IPv6 |
5 |
EVPN Routing Table |
Verify EVPN routes are stored separately |
EVPN routes are not visible in other AFIs |
6 |
FlowSpec IPv4 Table |
Verify FlowSpec IPv4 rules are isolated |
Rules are not mixed with unicast routes |
7 |
FlowSpec IPv6 Table |
Verify FlowSpec IPv6 rules are isolated |
Rules are not mixed with unicast routes |
8 |
L2VPN Routing Table |
Verify L2VPN routes are stored separately |
L2VPN routes are isolated |
9 |
SRv6 Routing Table |
Verify SRv6 routes are stored separately |
SRv6 routes are not mixed with IPv6 unicast |
10 |
Labeled IPv4 Routing Table |
Verify labeled IPv4 routes are isolated |
Label information is preserved |
11 |
Labeled IPv6 Routing Table |
Verify labeled IPv6 routes are isolated |
Label information is preserved |
12 |
Route Import Between Tables |
Import route from one table to another |
Route appears only after import policy |
13 |
Route Export Between Tables |
Export route to another table |
Route appears only after export policy |
14 |
Route Leak Between VRFs |
Leak route from one VRF to another |
Route appears in target VRF table |
15 |
Route Leak Prevention |
Prevent route leak between tables |
Route does not appear in unintended table |
16 |
Route Policy Per Table |
Apply policy to one table |
Policy affects only that table |
17 |
Prefix List Per Table |
Apply prefix list to one table |
Filtering applies only to that table |
18 |
Route Map Per Table |
Apply route map to one table |
Modifications apply only to that table |
19 |
BGP Community Per Table |
Apply community to one table |
Community tags are isolated |
20 |
Extended Community Per Table |
Apply extended community |
Tags are not shared across tables |
21 |
Large Community Per Table |
Apply large community |
Tags are isolated per table |
22 |
Next-Hop Self Per Table |
Configure next-hop-self |
Affects only selected table |
23 |
Next-Hop Unchanged Per Table |
Configure next-hop-unchanged |
Affects only selected table |
24 |
Route Aggregation Per Table |
Aggregate routes in one table |
Aggregation does not affect others |
25 |
Route Dampening Per Table |
Enable dampening in one table |
Flapping routes suppressed only there |
26 |
Route Reflector Per Table |
Reflect routes in one table |
Other tables are unaffected |
27 |
Confederation Per Table |
Use confed in one table |
Routes are isolated |
28 |
Graceful Restart Per Table |
Restart BGP with one AFI |
Other tables are unaffected |
29 |
Add-Path Per Table |
Enable Add-Path for one table |
Multiple paths appear only there |
30 |
Route Target Filtering |
Enable RT filtering in VPN table |
Only matching RTs are imported |
31 |
Route Distinguisher Isolation |
Use RD in VPN tables |
Routes are uniquely identified |
32 |
Static Route Redistribution |
Redistribute static into one table |
Other tables are unaffected |
33 |
OSPF Redistribution |
Redistribute OSPF into one table |
Other tables are unaffected |
34 |
IS-IS Redistribution |
Redistribute IS-IS into one table |
Other tables are unaffected |
35 |
BFD Monitoring Per Table |
Enable BFD for one peer |
Affects only that tables routes |
36 |
Authentication Per Table |
Use MD5 auth for one session |
Routes are isolated |
37 |
Route Refresh Per Table |
Send refresh for one AFI |
Only that table is updated |
38 |
Soft Reconfiguration Per Table |
Enable soft reconfig |
Applies to selected table only |
39 |
BMP Monitoring Per Table |
Monitor one table via BMP |
Other tables are not logged |
40 |
SNMP Monitoring Per Table |
Monitor one table via SNMP |
Other tables are not visible |
41 |
Logging Per Table |
Enable logging for one table |
Logs show only that tables updates |
42 |
Loopback Prefix Per Table |
Advertise loopback in one table |
Prefix appears only in that table |
43 |
Route Withdrawal Per Table |
Withdraw route from one table |
Other tables are unaffected |
44 |
Route Aggregation Conflict |
Aggregate same prefix in two tables |
Aggregation is handled independently |
45 |
Route Preference Per Table |
Set local-pref in one table |
Preference applies only there |
46 |
MED Per Table |
Set MED in one table |
Other tables are unaffected |
47 |
Origin Attribute Per Table |
Set origin in one table |
Attribute is isolated |
48 |
Atomic Aggregate Per Table |
Use atomic aggregate |
Applies only to selected table |
49 |
Aggregator Attribute Per Table |
Set aggregator |
Applies only to selected table |
50 |
Dual Stack Routing Tables |
Enable IPv4 and IPv6 |
Each has its own routing table |
Flexible Transport - Testcases
Flexible Transport - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
TCP Transport Default |
Establish MP-BGP session over TCP |
Session is successfully established |
2 |
TCP-AO Enabled |
Use TCP Authentication Option |
Session is authenticated and established |
3 |
TCP-AO with Invalid Key |
Use incorrect TCP-AO key |
Session fails to establish |
4 |
TCP-AO Key Rotation |
Rotate TCP-AO keys |
Session remains stable |
5 |
TLS Transport Enabled |
Establish MP-BGP over TLS |
Secure session is established |
6 |
TLS with Certificate Validation |
Use valid certificates |
Session is authenticated |
7 |
TLS with Expired Certificate |
Use expired certificate |
Session fails to establish |
8 |
TLS with Mutual Authentication |
Use client and server certs |
Session is mutually authenticated |
9 |
TLS with Cipher Suite Restriction |
Restrict cipher suites |
Only allowed ciphers are used |
10 |
QUIC Transport Enabled |
Establish MP-BGP over QUIC |
Session is established over UDP |
11 |
QUIC with Packet Loss |
Simulate packet loss |
QUIC handles retransmission |
12 |
QUIC with Encryption |
Use encrypted QUIC session |
Data is securely transmitted |
13 |
QUIC with NAT Traversal |
Establish session behind NAT |
Session is successfully established |
14 |
SCTP Transport Enabled |
Use SCTP instead of TCP |
Session is established over SCTP |
15 |
SCTP with Multi-Homing |
Use multiple IPs for SCTP |
Session remains stable on failover |
16 |
SCTP with Stream Isolation |
Use multiple streams |
Routes are exchanged independently |
17 |
UDP Transport Attempt |
Attempt MP-BGP over raw UDP |
Session fails (unsupported) |
18 |
Transport Failover TCP to TLS |
Switch from TCP to TLS |
Session re-establishes securely |
19 |
Transport Failover TLS to QUIC |
Switch from TLS to QUIC |
Session re-establishes over QUIC |
20 |
Transport Failover SCTP to TCP |
Switch from SCTP to TCP |
Session re-establishes |
21 |
Transport with IPv4 |
Use IPv4 for transport |
Session is established |
22 |
Transport with IPv6 |
Use IPv6 for transport |
Session is established |
23 |
Transport with Dual Stack |
Use both IPv4 and IPv6 |
Session uses preferred stack |
24 |
Transport with MTU Variation |
Change MTU size |
Session adapts without fragmentation |
25 |
Transport with Fragmentation |
Simulate IP fragmentation |
Session remains stable |
26 |
Transport with Jumbo Frames |
Use jumbo frames |
Session handles large packets |
27 |
Transport with QoS Marking |
Apply QoS to transport packets |
QoS tags are preserved |
28 |
Transport with DSCP |
Use DSCP marking |
Traffic is prioritized correctly |
29 |
Transport with Firewall Rules |
Allow transport ports |
Session is established |
30 |
Transport Blocked by Firewall |
Block transport port |
Session fails to establish |
31 |
Transport with NAT |
Establish session behind NAT |
Session is established |
32 |
Transport with PAT |
Use port address translation |
Session is established |
33 |
Transport with VPN Tunnel |
Use VPN for transport |
Session is encrypted and stable |
34 |
Transport with IPsec Tunnel |
Use IPsec for transport |
Session is secure |
35 |
Transport with GRE Tunnel |
Use GRE for transport |
Session is encapsulated and stable |
36 |
Transport with VXLAN |
Use VXLAN overlay |
Session is established over overlay |
37 |
Transport with MPLS |
Use MPLS transport |
Session is established |
38 |
Transport with Segment Routing |
Use SR-MPLS or SRv6 |
Session is established |
39 |
Transport with High Latency |
Simulate high latency |
Session remains stable |
40 |
Transport with Packet Reordering |
Simulate reordering |
Session handles out-of-order packets |
41 |
Transport with Packet Duplication |
Simulate duplication |
Session remains stable |
42 |
Transport with Packet Corruption |
Simulate corruption |
Session detects and drops invalid packets |
43 |
Transport with BGP Graceful Restart |
Restart transport layer |
Session resumes without route loss |
44 |
Transport with BGP Fast External Failover |
Simulate link failure |
Session fails over quickly |
45 |
Transport with BGP Session Protection |
Enable session protection |
Session is resilient to transport issues |
46 |
Transport with Logging Enabled |
Log transport events |
Logs show session details |
47 |
Transport with SNMP Monitoring |
Monitor transport via SNMP |
Transport stats are visible |
48 |
Transport with BMP Monitoring |
Monitor transport via BMP |
Updates are captured |
49 |
Transport with Authentication Failure |
Fail auth mechanism |
Session is rejected |
50 |
Transport with Encryption Disabled |
Use plaintext transport |
Session is established but insecure |
Scalability - Testcases
Scalability - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
1,000 IPv4 Routes |
Inject 1,000 IPv4 routes |
All routes are processed and installed |
2 |
10,000 IPv4 Routes |
Inject 10,000 IPv4 routes |
System handles routes without performance degradation |
3 |
100,000 IPv4 Routes |
Inject 100,000 IPv4 routes |
Routes are processed with acceptable CPU/memory usage |
4 |
1,000 IPv6 Routes |
Inject 1,000 IPv6 routes |
All routes are processed and installed |
5 |
10,000 IPv6 Routes |
Inject 10,000 IPv6 routes |
System handles routes efficiently |
6 |
1,000 VPNv4 Routes |
Inject 1,000 VPNv4 routes |
Routes are installed in VRF tables |
7 |
10,000 VPNv4 Routes |
Inject 10,000 VPNv4 routes |
System scales with VRF isolation |
8 |
1,000 EVPN Routes |
Inject 1,000 EVPN MAC/IP routes |
Routes are processed and installed |
9 |
100 Peers |
Establish sessions with 100 peers |
All sessions are stable |
10 |
500 Peers |
Establish sessions with 500 peers |
System handles peer scale |
11 |
1,000 Peers |
Establish sessions with 1,000 peers |
System remains responsive |
12 |
10 Address Families |
Enable 10 AFI/SAFI combinations |
All tables are maintained separately |
13 |
100 VRFs |
Configure 100 VRFs with MP-BGP |
Routes are isolated per VRF |
14 |
1,000 Route Updates/sec |
Simulate 1,000 updates/sec |
System processes updates in real-time |
15 |
10,000 Route Updates/sec |
Simulate 10,000 updates/sec |
System remains stable |
16 |
1,000 Route Withdrawals/sec |
Simulate 1,000 withdrawals/sec |
Withdrawals are processed correctly |
17 |
10,000 Route Withdrawals/sec |
Simulate 10,000 withdrawals/sec |
System remains responsive |
18 |
1,000 Prefixes per Peer |
Each peer advertises 1,000 prefixes |
All routes are received and installed |
19 |
10,000 Prefixes per Peer |
Each peer advertises 10,000 prefixes |
System handles load |
20 |
1,000 Route Reflectors |
Use 1,000 RRs in topology |
Routes are reflected correctly |
21 |
1,000 Confederation Peers |
Use confederation with 1,000 peers |
Routes are exchanged correctly |
22 |
1,000 Route Policies |
Apply 1,000 route policies |
Policies are evaluated efficiently |
23 |
1,000 Prefix Lists |
Apply 1,000 prefix lists |
Filtering is accurate and fast |
24 |
1,000 Route Maps |
Apply 1,000 route maps |
Routes are modified correctly |
25 |
1,000 Communities |
Use 1,000 unique communities |
Tags are preserved and processed |
26 |
1,000 Extended Communities |
Use 1,000 extended communities |
Tags are preserved and processed |
27 |
1,000 Large Communities |
Use 1,000 large communities |
Tags are preserved and processed |
28 |
1,000 Route Aggregations |
Aggregate 1,000 prefixes |
Aggregation is handled efficiently |
29 |
1,000 Route Dampening Events |
Simulate flapping routes |
Dampening suppresses correctly |
30 |
1,000 Graceful Restarts |
Restart 1,000 peers |
Routes are preserved and reinstalled |
31 |
1,000 Add-Path Routes |
Use Add-Path for 1,000 prefixes |
Multiple paths are handled |
32 |
1,000 Route Refresh Requests |
Send 1,000 refreshes |
System responds correctly |
33 |
1,000 Soft Reconfigurations |
Enable soft reconfig on 1,000 peers |
Memory usage remains within limits |
34 |
1,000 BMP Sessions |
Monitor 1,000 peers via BMP |
Updates are captured |
35 |
1,000 SNMP Polls |
Poll 1,000 BGP objects |
System responds accurately |
36 |
1,000 Logging Events/sec |
Log 1,000 events/sec |
Logs are written without loss |
37 |
1,000 BFD Sessions |
Monitor 1,000 peers with BFD |
Failures are detected quickly |
38 |
1,000 Authentication Sessions |
Use MD5 for 1,000 peers |
Sessions are authenticated |
39 |
1,000 Route Target Imports |
Import 1,000 RTs |
Routes are imported correctly |
40 |
1,000 Route Target Exports |
Export 1,000 RTs |
Routes are exported correctly |
41 |
1,000 Route Distinguisher Entries |
Use 1,000 RDs |
VPN routes are uniquely identified |
42 |
1,000 Label Allocations |
Allocate 1,000 MPLS labels |
Labels are assigned correctly |
43 |
1,000 EVPN MACs |
Learn 1,000 MACs via EVPN |
MACs are installed in tables |
44 |
1,000 FlowSpec Rules |
Install 1,000 FlowSpec rules |
Rules are enforced |
45 |
1,000 SRv6 Prefixes |
Advertise 1,000 SRv6 routes |
Routes are installed |
46 |
1,000 Route Leaks |
Leak 1,000 routes between VRFs |
Routes are visible in target VRFs |
47 |
1,000 Route Withdrawals |
Withdraw 1,000 prefixes |
Routes are removed correctly |
48 |
1,000 Path Changes |
Change best path for 1,000 prefixes |
Best path is recalculated |
49 |
1,000 Peer Flaps |
Flap 1,000 peers |
System recovers and re-establishes |
50 |
1,000 Converged Routes |
Converge 1,000 routes after failure |
Convergence is completed quickly |
Policy Control - Testcases
Policy Control - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Inbound Route Map |
Apply route map on inbound routes |
Only permitted routes are accepted |
2 |
Outbound Route Map |
Apply route map on outbound routes |
Only permitted routes are advertised |
3 |
Prefix List Filtering |
Use prefix list to filter routes |
Only matching prefixes are accepted |
4 |
AS Path Filtering |
Filter routes based on AS path |
Routes with matching AS path are filtered |
5 |
Community Filtering |
Filter routes using standard community |
Only routes with matching community are accepted |
6 |
Extended Community Filtering |
Filter routes using extended community |
Routes are filtered based on extended attributes |
7 |
Large Community Filtering |
Use large community for filtering |
Routes are filtered accordingly |
8 |
Local Preference Setting |
Set local-pref via policy |
Local-pref is applied to matching routes |
9 |
MED Setting |
Set MED via route map |
MED is applied to outbound routes |
10 |
AS Path Prepending |
Prepend AS path for specific routes |
AS path is modified as configured |
11 |
Next-Hop Modification |
Change next-hop in route map |
Next-hop is updated |
12 |
Route Tagging |
Tag routes with community |
Community is attached to matching routes |
13 |
Route Untagging |
Remove community from routes |
Community is stripped as configured |
14 |
Match on Prefix Length |
Match routes by prefix length |
Only routes with specified length are accepted |
15 |
Match on Origin |
Match routes based on origin type |
Routes are filtered accordingly |
16 |
Match on BGP Attributes |
Match routes using multiple attributes |
Routes are filtered based on all conditions |
17 |
Set Weight |
Set BGP weight for selected routes |
Weight is applied locally |
18 |
Match on Route Type |
Match internal vs external routes |
Policy applies based on route type |
19 |
Match on Route Source |
Match routes from specific peer |
Policy applies only to that peer |
20 |
Policy Per AFI/SAFI |
Apply different policies per address family |
Each AFI/SAFI has its own policy |
21 |
Policy Per VRF |
Apply policy in specific VRF |
Routes are filtered within that VRF |
22 |
Policy Per Peer Group |
Apply policy to peer group |
All peers in group inherit policy |
23 |
Policy Per Neighbor |
Apply policy to individual peer |
Policy affects only that peer |
24 |
Policy with Route Aggregation |
Apply policy to aggregated routes |
Aggregated routes are filtered or modified |
25 |
Policy with Route Reflector |
Apply policy on RR |
Routes are filtered before reflection |
26 |
Policy with Confederation |
Apply policy within confed |
Routes are filtered within sub-AS |
27 |
Policy with Route Redistribution |
Apply policy during redistribution |
Only permitted routes are redistributed |
28 |
Policy with Static Routes |
Apply policy to static routes |
Static routes are filtered or modified |
29 |
Policy with OSPF Redistribution |
Apply policy to OSPF routes |
Only selected routes are redistributed |
30 |
Policy with IS-IS Redistribution |
Apply policy to IS-IS routes |
Routes are filtered accordingly |
31 |
Policy with Route Leaking |
Control route leak between VRFs |
Only permitted routes are leaked |
32 |
Policy with Route Target Import |
Filter routes by RT |
Only matching RTs are imported |
33 |
Policy with Route Target Export |
Control RTs on export |
Only selected RTs are attached |
34 |
Policy with Route Distinguisher |
Match routes by RD |
Routes are filtered by RD |
35 |
Policy with Add-Path |
Apply policy to multiple paths |
Each path is evaluated separately |
36 |
Policy with Graceful Restart |
Apply policy during restart |
Routes are filtered on re-advertisement |
37 |
Policy with Route Refresh |
Apply policy after refresh |
New routes are filtered |
38 |
Policy with Soft Reconfiguration |
Apply policy to stored routes |
Routes are re-evaluated |
39 |
Policy with BMP Monitoring |
Monitor policy impact via BMP |
Policy changes are visible in BMP logs |
40 |
Policy with Logging |
Log policy matches |
Matching routes are logged |
41 |
Policy with SNMP Monitoring |
Monitor policy counters |
SNMP shows policy hit counts |
42 |
Policy with BFD |
Apply policy to BFD-monitored peers |
Routes are withdrawn on failure |
43 |
Policy with Authentication |
Apply policy to authenticated peers |
Routes are filtered post-authentication |
44 |
Policy with Route Withdrawal |
Apply policy to withdrawn routes |
Logging or actions are triggered |
45 |
Policy with Route Aggregation |
Filter or modify aggregated routes |
Policy applies to summary routes |
46 |
Policy with EVPN |
Apply policy to EVPN routes |
MAC/IP routes are filtered |
47 |
Policy with FlowSpec |
Apply policy to FlowSpec rules |
Only permitted rules are installed |
48 |
Policy with SRv6 |
Apply policy to SRv6 routes |
Routes are filtered or modified |
49 |
Policy with MPLS Labels |
Match or set MPLS labels |
Labels are modified as per policy |
50 |
Policy with Dual Stack |
Apply IPv4 and IPv6 policies separately |
Each stack has independent control |
Extensibility - Testcases
Extensibility - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Add New AFI/SAFI |
Introduce a new AFI/SAFI |
BGP session remains stable and supports new routes |
2 |
Add Custom AFI |
Define a custom AFI |
BGP accepts and processes new AFI |
3 |
Add Custom SAFI |
Define a custom SAFI |
BGP accepts and processes new SAFI |
4 |
Extend MP_REACH_NLRI |
Add new NLRI format |
BGP processes new format correctly |
5 |
Extend MP_UNREACH_NLRI |
Add new withdrawal format |
BGP processes withdrawal correctly |
6 |
Add New Optional Attribute |
Introduce new optional transitive attribute |
Attribute is preserved and propagated |
7 |
Add New Non-Transitive Attribute |
Introduce new optional non-transitive attribute |
Attribute is ignored by non-supporting peers |
8 |
Add New Well-Known Attribute |
Introduce new well-known attribute |
Attribute is recognized and enforced |
9 |
Extend BGP OPEN Message |
Add new capability code |
Capability is negotiated successfully |
10 |
Extend BGP UPDATE Message |
Add new encoding |
Update is parsed and processed |
11 |
Add New Capability Code |
Define new capability |
Capability is advertised and understood |
12 |
Add New Error Code |
Define new error code |
Error is handled gracefully |
13 |
Add New Notification Type |
Introduce new notification |
Notification is processed correctly |
14 |
Add New Route Family |
Support new route family (e.g., SRv6) |
Routes are exchanged successfully |
15 |
Add New Address Encoding |
Use new address encoding format |
BGP processes it correctly |
16 |
Add New Path Attribute Flags |
Use new flags in path attributes |
Flags are interpreted correctly |
17 |
Add New Community Type |
Define new community format |
Community is parsed and applied |
18 |
Add New Extended Community Subtype |
Introduce new subtype |
Subtype is recognized and used |
19 |
Add New Large Community Format |
Extend large community |
Format is accepted and processed |
20 |
Add New Route Target Format |
Use extended RT format |
RT is parsed and matched |
21 |
Add New Route Distinguisher Format |
Use new RD format |
RD is parsed and routes are isolated |
22 |
Add New Label Format |
Use new MPLS label encoding |
Label is processed correctly |
23 |
Add New Encapsulation Type |
Support new tunnel type |
Encapsulation is handled |
24 |
Add New SAFI for Multicast |
Extend multicast SAFI |
Multicast routes are exchanged |
25 |
Add New SAFI for Segment Routing |
Extend SAFI for SR |
SR routes are exchanged |
26 |
Add New SAFI for FlowSpec |
Extend FlowSpec SAFI |
New rules are processed |
27 |
Add New SAFI for EVPN |
Extend EVPN SAFI |
New route types are supported |
28 |
Add New EVPN Route Type |
Define new EVPN route type |
Route is parsed and installed |
29 |
Add New FlowSpec Component |
Define new FlowSpec match type |
Rule is enforced correctly |
30 |
Add New BGP Monitoring Capability |
Extend BMP support |
New telemetry is captured |
31 |
Add New Transport Protocol |
Use new transport (e.g., QUIC) |
Session is established |
32 |
Add New Authentication Method |
Use new auth (e.g., TLS) |
Session is secure |
33 |
Add New Encryption Method |
Use new encryption (e.g., post-quantum) |
Session is encrypted |
34 |
Add New Route Policy Language |
Support new policy syntax |
Policies are parsed and applied |
35 |
Add New Route Filtering Mechanism |
Introduce new filtering logic |
Routes are filtered correctly |
36 |
Add New Route Aggregation Logic |
Extend aggregation behavior |
Aggregates are computed correctly |
37 |
Add New Route Selection Criteria |
Use new best path logic |
Best path is selected correctly |
38 |
Add New Route Redistribution Source |
Redistribute from new protocol |
Routes are imported |
39 |
Add New Route Export Target |
Export to new protocol |
Routes are exported |
40 |
Add New Logging Format |
Use new log schema |
Logs are generated correctly |
41 |
Add New SNMP MIB |
Extend SNMP support |
New objects are monitored |
42 |
Add New BMP Message Type |
Define new BMP message |
Message is captured and logged |
43 |
Add New BGP Role |
Define new peer role |
Role is enforced in policy |
44 |
Add New Route Leak Control |
Introduce new leak prevention |
Routes are isolated |
45 |
Add New Graceful Restart Behavior |
Extend restart logic |
Routes are preserved |
46 |
Add New Route Reflector Behavior |
Extend RR logic |
Routes are reflected correctly |
47 |
Add New Confederation Behavior |
Extend confed logic |
Routes are exchanged correctly |
48 |
Add New BGP Session Type |
Define new session type |
Session is established |
49 |
Add New BGP Peer Group Type |
Define new peer group |
Group policies are applied |
50 |
Add New BGP Update Compression |
Use compressed updates |
Updates are transmitted efficiently |
Reference links