diff --git a/internal/quic/config_test.go b/internal/quic/config_test.go
new file mode 100644
index 0000000..cec57c5
--- /dev/null
+++ b/internal/quic/config_test.go
@@ -0,0 +1,32 @@
+// Copyright 2023 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build go1.21
+
+package quic
+
+import "testing"
+
+func TestConfigTransportParameters(t *testing.T) {
+	const (
+		wantInitialMaxStreamData = int64(2)
+	)
+	tc := newTestConn(t, clientSide, func(c *Config) {
+		c.StreamReadBufferSize = wantInitialMaxStreamData
+	})
+	tc.handshake()
+	if tc.sentTransportParameters == nil {
+		t.Fatalf("conn didn't send transport parameters during handshake")
+	}
+	p := tc.sentTransportParameters
+	if got, want := p.initialMaxStreamDataBidiLocal, wantInitialMaxStreamData; got != want {
+		t.Errorf("initial_max_stream_data_bidi_local = %v, want %v", got, want)
+	}
+	if got, want := p.initialMaxStreamDataBidiRemote, wantInitialMaxStreamData; got != want {
+		t.Errorf("initial_max_stream_data_bidi_remote = %v, want %v", got, want)
+	}
+	if got, want := p.initialMaxStreamDataUni, wantInitialMaxStreamData; got != want {
+		t.Errorf("initial_max_stream_data_uni = %v, want %v", got, want)
+	}
+}
diff --git a/internal/quic/conn.go b/internal/quic/conn.go
index ee8f011..04dcd7b 100644
--- a/internal/quic/conn.go
+++ b/internal/quic/conn.go
@@ -111,11 +111,17 @@
 	c.loss.init(c.side, maxDatagramSize, now)
 	c.streamsInit()
 
+	// TODO: initial_source_connection_id, retry_source_connection_id
 	c.startTLS(now, initialConnID, transportParameters{
-		initialSrcConnID:  c.connIDState.srcConnID(),
-		ackDelayExponent:  ackDelayExponent,
-		maxUDPPayloadSize: maxUDPPayloadSize,
-		maxAckDelay:       maxAckDelay,
+		initialSrcConnID:               c.connIDState.srcConnID(),
+		ackDelayExponent:               ackDelayExponent,
+		maxUDPPayloadSize:              maxUDPPayloadSize,
+		maxAckDelay:                    maxAckDelay,
+		disableActiveMigration:         true,
+		initialMaxStreamDataBidiLocal:  config.streamReadBufferSize(),
+		initialMaxStreamDataBidiRemote: config.streamReadBufferSize(),
+		initialMaxStreamDataUni:        config.streamReadBufferSize(),
+		activeConnIDLimit:              activeConnIDLimit,
 	})
 
 	go c.loop(now)
diff --git a/internal/quic/conn_test.go b/internal/quic/conn_test.go
index 2aa38fc..8ebe49e 100644
--- a/internal/quic/conn_test.go
+++ b/internal/quic/conn_test.go
@@ -142,6 +142,9 @@
 	sentFrames    []debugFrame
 	lastPacket    *testPacket
 
+	// Transport parameters sent by the conn.
+	sentTransportParameters *transportParameters
+
 	// Frame types to ignore in tests.
 	ignoreFrames map[byte]bool
 
@@ -719,6 +722,13 @@
 			setKey(&tc.rkeys, e)
 		case tls.QUICWriteData:
 			tc.cryptoDataIn[e.Level] = append(tc.cryptoDataIn[e.Level], e.Data...)
+		case tls.QUICTransportParameters:
+			p, err := unmarshalTransportParams(e.Data)
+			if err != nil {
+				tc.t.Logf("sent unparseable transport parameters %x %v", e.Data, err)
+			} else {
+				tc.sentTransportParameters = &p
+			}
 		}
 	}
 }
