Re: [c-nsp] MTU and PMTUD

Marcin Kurek via cisco-nsp <[email protected]>
Newsgroups gmane.network.nsp.cisco
Message-ID <CAFEJfj1Ae9fT_hDmtZzDj5fE2A3q3emvOuWq12KcRas4oNe0Qw@mail.gmail.com>
Hi Saku,

> To handle NIC received packets you can do two things
>
> a) CPU can get interrupt, and handle the interrupt
> b) Interrupts can be disabled, and CPU can poll to see if there are
> packets to process
>
> The mechanism a) is the norm and the mechanism b) is modernish. To
> improve PPS performance under heavy rate, at cost of increasing jitter
> and latency because it takes variable time to pick up packet. In
> software based routers, like VXR, if you had precise enough (thanks
> Creanord!) measurements of network performance, you could observe
> jitter during rancid (Thanks Heas!) collections, because 'show run'
> and 'write' raises interrupts, which stops packet forwarding.

Interesting, but why would 'sh run' or 'write' raise an interrupt?
Isn't this a branch in code that handles the CLI?
I'm not sure if I'm reading it right - on the one hand, the interrupts are
disabled, but on the other hand, some CLI commands actually raise them?

> So less PPS, less interrupt, might be one contributing factor. I don't
> know what the overhead cost of processing packets is, but intuitively
> I don't expect much improvement with large MTU BGP packets. And at any
> rate, going above 4k would mean newish features you don't have. But I
> don't have high confidence in being right.

Would you mind elaborating on why going above 4k would mean "newish
features" and what are they?

>MSS is 'negotiated' to the smallest. Much like BGP timers are
>'negotiated' to the smallest (so your customer controls your BGP
>timers, not you). Does this help to explain what you saw?

Right, MSS should be 'negotiated' to the smallest. But what I'm referring
to is a situation where negotiated MSS value depends on who is initiating
the BGP session.

Scenario:

CSR1kv (12.0.0.13) ----------(iBGP)----------------- ASR9006 (12.0.0.7)

If I clear the BGP session on CSR1kv, resulting MSS is 1240.

Logs from CSR1kv:

*Dec  8 11:17:15.453: TCB7FFB9A6D64C0 bound to 12.0.0.13.20794
*Dec  8 11:17:15.453: Reserved port 20794 in Transport Port Agent for TCP
IP type 1
*Dec  8 11:17:15.453: TCP: pmtu enabled,mss is now set to 8936
*Dec  8 11:17:15.453: TCP: sending SYN, seq 1638888268, ack 0
*Dec  8 11:17:15.453: TCP0: Connection to 12.0.0.7:179, advertising MSS 8936
*Dec  8 11:17:15.453: TCP0: state was CLOSED -> SYNSENT [20794 ->
12.0.0.7(179)]
*Dec  8 11:17:15.456: TCP0: state was SYNSENT -> ESTAB [20794 ->
12.0.0.7(179)]
*Dec  8 11:17:15.456: TCP: tcb 7FFB9A6D64C0 connection to 12.0.0.7:179,
peer MSS 1240, MSS is 1240
*Dec  8 11:17:15.456: TCB7FFB9A6D64C0 connected to 12.0.0.7.179
*Dec  8 11:17:15.456: TCB7FFB9A6D64C0 setting property TCP_NO_DELAY (0)
7FFBF2CCED7C
*Dec  8 11:17:15.456: TCB7FFB9A6D64C0 setting property TCP_RTRANSTMO (36)
7FFBF2CCED7C
*Dec  8 11:17:18.081: TCP0: RETRANS timeout timer expired
*Dec  8 11:17:18.081: 12.0.0.13:20794 <---> 12.0.0.7:179   congestion
window changes
*Dec  8 11:17:18.081: cwnd from 1240 to 1240, ssthresh from 65535 to 2480
*Dec  8 11:17:18.081: TCP0: timeout #1 - timeout is 5250 ms, seq 1638888269
*Dec  8 11:17:18.081: TCP: (20794) -> 12.0.0.7(179)
*Dec  8 11:17:18.084: %BGP_SESSION-5-ADJCHANGE: neighbor 12.0.0.7 IPv4
Unicast topology base removed from session  Capability changed
*Dec  8 11:17:18.084: %BGP-5-ADJCHANGE: neighbor 12.0.0.7 Up
CSR1000v#show bgp vpnv4 unicast all neighbors 12.0.0.7 | i segment
Maximum output segment queue size: 50
Datagrams (max data segment is 1240 bytes):

So here CSR1kv is initiating the connection to XR box advertising MSS 8936
(as expected).
However, peer MSS is 1240, which is not quite expected, considering XR
config:

neighbor 12.0.0.13
  remote-as 12
  tcp mss 8936
  update-source Loopback0
  address-family vpnv4 unicast
  !
  address-family ipv4 rt-filter
  !
  address-family l2vpn evpn
  !

If I clear the BGP session on XR, resulting MSS is 8936.

Again, logs from CSR1kv:

*Dec  8 11:20:22.918: TCB7FFB9A6CF7A8 created
*Dec  8 11:20:22.918: TCP0: state was LISTEN -> SYNRCVD [179 ->
12.0.0.7(38087)]
*Dec  8 11:20:22.918: TCP: tcb 7FFB9A6CF7A8 connection to 12.0.0.7:38087,
peer MSS 8936, MSS is 516
*Dec  8 11:20:22.918: TCP: pmtu enabled,mss is now set to 8936
*Dec  8 11:20:22.918: TCP: sending SYN, seq 1440899137, ack 3532544296
*Dec  8 11:20:22.918: TCP0: Connection to 12.0.0.7:38087, advertising MSS
8936
*Dec  8 11:20:22.921: TCP0: state was SYNRCVD -> ESTAB [179 ->
12.0.0.7(38087)]
*Dec  8 11:20:22.921: TCB7FFBF25C07E0 accepting 7FFB9A6CF7A8 from
12.0.0.7.38087
*Dec  8 11:20:22.921: TCB7FFB9A6CF7A8 setting property TCP_VRFTABLEID (20)
7FFB9A0B9820
*Dec  8 11:20:22.921: TCB7FFB9A6CF7A8 setting property TCP_PMTU (45)
7FFBF2CCED00
*Dec  8 11:20:22.921: TCB7FFB9A6CF7A8 setting property TCP_NO_DELAY (0)
7FFBF2CCED60
*Dec  8 11:20:22.921: TCB7FFB9A6CF7A8 setting property TCP_ACK_RATE (37)
7FFBF2CCED5C
*Dec  8 11:20:22.921: TCB7FFB9A6CF7A8 setting property TCP_RTRANSTMO (36)
7FFBF2CCED60
*Dec  8 11:20:22.922: %BGP_SESSION-5-ADJCHANGE: neighbor 12.0.0.7 IPv4
Unicast topology base removed from session  Capability changed
*Dec  8 11:20:22.926: %BGP-5-ADJCHANGE: neighbor 12.0.0.7 Up

CSR1000v#show bgp vpnv4 unicast all neighbors 12.0.0.7 | i segment
Maximum output segment queue size: 50
Datagrams (max data segment is 8936 bytes):

Here it's the other way around, XR is the client, and XE is the server and
apparently XR has advertised MSS=8936.

But maybe I don't understand how this command 'tcp mss' is supposed to work
:)


Kind regards,
Marcin
_______________________________________________
cisco-nsp mailing list  [email protected]
https://puck.nether.net/mailman/listinfo/cisco-nsp
archive at http://puck.nether.net/pipermail/cisco-nsp/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.