rtbrick / bngblaster

The BNG Blaster is an open-source network tester for access and routing protocols.
https://rtbrick.github.io/bngblaster/
BSD 3-Clause "New" or "Revised" License
202 stars 32 forks source link

CGNAT: Scaled Traffic Streams/Flows say ~4 Million are not getting resolved completely #220

Closed DharmendraShetty closed 6 months ago

DharmendraShetty commented 7 months ago

Description: With NAT enabled, UDP/TCP Scaled Traffic Streams/Flows say ~4 Million Scenario with 24K Subscribers. All the Traffic flows are not getting resolved completely

To Reproduce Steps:

  1. We are trying to bring up 24K Subscribers with 180 Flows(traffic streams snippet json is below)
  2. Wait for all 24K subscribers to get established.
  3. Look for all the scaled traffic (say around 3Million) flows are getting resolved
  4. Even after 10mins of waiting, didnot see all traffic flows got resolved.

Version (bngblaster -v):

root@SN-STD-25-421167005:/home/supervisor # bngblaster -v Version: 0.8.34 Compiler: GNU (9.4.0) IO Modes: packet_mmap_raw (default), packet_mmap, raw root@SN-STD-25-421167005:/home/supervisor #

JSON configuration: { "interfaces": { "network": [ { "comment": "For Instance: vrf1",
"interface": "SN-8-B1", "address": "13.1.1.2/24", "gateway": "13.1.1.1", "address-ipv6": "13:1:1::2/64", "gateway-ipv6": "13:1:1::1" } ], "access": [ { "interface": "SN-7-B1", "agent-remote-id": "CBNG1.RTBRICK.{session-global}", "stream-group-id": 1, "outer-vlan-min": 1002, "outer-vlan-max": 1016, "inner-vlan-min": 85, "inner-vlan-max": 4084 } ] }, "sessions": { "count": 24000, "max-outstanding": 800, "start-rate": 400, "stop-rate": 400 }, "pppoe": { "reconnect": true, "discovery-timeout": 3, "discovery-retry": 10, "host-uniq": true, "vlan-priority": 6 }, "access-line": { "agent-remote-id": "DEU.RTBRICK.{session-global}", "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}", "rate-up": 2000, "rate-down": 16384, "dsl-type": 5 }, "ppp": { "mru": 1492, "authentication": { "username": "user{session-global}@rtbrick.com", "password": "test", "timeout": 240, "retry": 30, "protocol": "PAP" }, "lcp": { "conf-request-timeout": 20, "conf-request-retry": 40, "keepalive-interval": 255, "keepalive-retry": 100 }, "ipcp": { "enable": true, "conf-request-timeout": 20, "conf-request-retry": 40 }, "ip6cp": { "enable": true, "conf-request-timeout": 20, "conf-request-retry": 40 } }, "dhcp": { "enable": true }, "dhcpv6": { "enable": true, "rapid-commit": true },
"bgp": [ { "comment": "RR1-C1-IPv4", "network-interface": "SN-8-B1", "local-ipv4-address": "13.1.0.1", "peer-ipv4-address": "13.1.1.1", "raw-update-file": "/home/supervisor/ipv4_nlri_nh1.bgp", "local-as": 65004, "peer-as": 65004 }, { "comment": "RR1-C1-IPv6", "network-interface": "SN-8-B1", "local-ipv4-address": "13.1.0.2", "peer-ipv4-address": "13.1.1.1", "raw-update-file": "/home/supervisor/ipv6_nlri_nh1.bgp",
"local-as": 65004, "peer-as": 65004 } ]
}

TRAFFIC FLOWS: supervisor@SN-STD-25-421167005:~ $ sudo cat flowstest_180.json { "streams": [ { "name": "STREAM1", "stream-group-id": 1, "type": "ipv4", "direction": "both", "priority": 64, "source-port": 64001, "length": 100, "raw-tcp": true, "nat": true, "pps": 0.3 }, { "name": "STREAM2", "stream-group-id": 1, "type": "ipv4", "direction": "upstream", "priority": 64, "source-port": 64002, "length": 100, "raw-tcp": true, "nat": true, "pps": 0.3 },

... ... ...

    {
        "name": "STREAM179",
        "stream-group-id": 1,
        "type": "ipv4",
        "direction": "upstream",
        "priority": 64,
        "source-port": 65179,
        "length": 100,
        "nat": true,
        "pps": 0.3
    },
    {
        "name": "STREAM180",
        "stream-group-id": 1,
        "type": "ipv4",
        "direction": "upstream",
        "priority": 64,
        "source-port": 65180,
        "length": 100,
        "nat": true,
        "pps": 0.3
    }
]

} supervisor@SN-STD-25-421167005:~ $ supervisor@SN-STD-25-421167005:~ $ sudo cat flowstest_180.json | grep STREAM | wc -l 180 supervisor@SN-STD-25-421167005:~ $



Steps to reproduce the behavior:
1. ...

**Expected behavior**
All Traffic flows are to be resolved in scaled case, as we should not see any limitation here.

**Screenshots**
Blaster Snapshot showing all traffic streams not resolved 

**Additional context**
Thanks,
Dharmendra
![image (2)](https://github.com/rtbrick/bngblaster/assets/58907955/ddab0a8f-20ec-4885-a76c-246da4a0d972)
GIC-de commented 6 months ago

Fixed with version 0.8.36!