TINH CHỈNH CHO X86/CHR TRÊN PROXMOX - DẠNG LINUX BIRDGE ( PASSTHROUGH MÌNH KO BIẾT MÒ CHỈNH)
1. CHỈNH RING SIZE BUFFER:
Trên Proxmox Shell:
ethtool -g enp1s0f0 // thay cái enp1s0f0 thành cái interface trong Proxmox -> System -> Network của mấy fen.
Mã:
Ring parameters for enp1s0f0:
Pre-set maximums:
RX: 8192
RX Mini: n/a
RX Jumbo: n/a
TX: 8192
Current hardware settings:
RX: 512
RX Mini: n/a
RX Jumbo: n/a
TX: 512
RX Buf Len: n/a
CQE Size: n/a
TX Push: off
TCP data split: n/a
Nó sẽ ra kết quả như hình trên.
Preset card : Là giá trị đối đa card hỗ trợ. Current setting : là giá trị đang có.
Mục đích, chỉnh giá trị từ Current -> sang giá trị preset. // Chú Ý: Điền theo giá trị preset
Để chỉnh và lưu khi reboot thì , Trong Shell :
nano /etc/network/interfaces
Mã:
auto enp1s0f0
iface enp1s0f0 inet manual
post-up /sbin/ethtool -K enp1s0f0 tso off gso off gro off tx off rx off
post-up /sbin/ethtool -G enp1s0f0 rx 8192 tx 8192
Điền cái dòng rx 8192 và tx 8192 như kia thành giá trị preset mà Nic của mấy fen hỗ trợ.
226 thì là 4096, thay thành rx 4096 tx 4096
Còn dòng trên, là tắt TSO, tắt GSO, tắt GRO và tắt hardware offload. ( theo khuyến cáo trong docs của opensen và pfsense // mặc dù dùng cho Mikrotik)
Chú ý, thay cái
enp1s0f0 thành cái
interface của mấy fency, thay sau cái -K và -G ấy, chú ý chỗ này.
Và điền cả cho cái vmbr0 luôn,
Mã:
auto vmbr0
iface vmbr1 inet manual
bridge-ports enp1s0f0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
post-up /sbin/ethtool -K vmbr0 tso off gso off gro off tx off rx off
Chú ý, cái
vmbr0 thay thành cái của mấy bạn. sau -K ấy.
Xong thì Ctrl + O để save, Ctrl + X để thoát nano.
Gán cho từng NIC và từng vmbr nha mấy fen, có 4 Nics, thì gán cứng 4 lần như vậy cho Nic, và n lần cho vmbr, format thì cứ đè gán dưới mỗi interface enp / vmbr ấy, cho dễ theo dõi
Reboot lại proxmox.
Còn ko muốn reboot thì trong Shell Proxmox :
ifreload -a
2. Chỉnh multi queue trong Proxmox bridge.
Proxmox -> VM ->Hardware.
Chọn Network Drive: Bỏ chọn Firewall, Multique = số CPU gán cho VM ( ví dụ cho VM 4 core cpu, thì multique=4)
Model = VirtIO // nếu có issue thì đổi Model sang E1000 , mặc dù cũ nhưng bén.
3. Chỉnh multi queue cho hard drive.
Proxmox -> VM -. Hardware .
Chọn SCSI Controller -> Chuyển Sang SCSI // mặc định nó là SCSI-Single // chuyển sang cái thường ( ko có single) single là 1 cpu gánh, cái thường là multi cpu gánh.
4. CPU có thể thử chọn host hoặc quemu64 hoặc x86-64-v4. ( numa bỏ chọn)
Xem tệp đính kèm 3116633
5. CHỈNH HIGH WORK LOAD.
Trong proxmox, shell:
nano /etc/sysctl.conf
Xong, paste đống ở dưới vào cuối cùng.
Ctrl + O để save, Ctrl + X để thoat.
Xong hết reboot proxmox
Mã:
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.core.rmem_default=262144
net.core.wmem_default=262144
net.ipv4.tcp_rmem=4096 87380 4194304
net.ipv4.tcp_wmem=4096 65536 4194304
net.core.netdev_max_backlog=5000
net.ipv4.tcp_congestion_control=bbr
6. DEBUG VÀ TÌM LỖI PACKAGE DROP
Trong proxmox shell :
ip -s link show enp1s0f0
Mã:
enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr1 state UP mode DEFAULT group default qlen 1000
link/ether a8:a8:00:00:00:09 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
523152257205 536548286 0 19254 0 1572708
TX: bytes packets errors dropped carrier collsns
130503140113 308863094 0 0 0 0
Mấy fen thấy cái dropped kia ko, 19254 package drop. Là package từ ngoài vào, tới NIC này, bị NIC nó drop.
Và lí dó drop có rất nhiều đủ loại, sai mtu, có ipv6 package trong khi server config for v4, sai package length, mấy cái protocol như LLDP v..v....
Mặc dù drop vậy, nhưng network của mình bình thường, chủ yếu ở ngoài vào NIC nó drop
Shell :
tcpdump -i enp1s0f0 not \( udp or tcp or arp or pppoes or pppoed\)
mục đích là tìm ra những package nào, inbound, mà ko phải udp, tcp, arp, pppoe // vì cái interfdace enp1s0f0 mình đang làm WAN quay pppoe.
tcpdump ko thể nào tìm ra package nào bị drop ở WAN, vì nó drop ở NIC level, trước khi vô kernel.
Cho nên chỉ có mò mò coi thằng nào re-transmit lại thì nghi ở nó.
Mã:
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp1s0f0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
19:32:10.748371 IP 9.9.9.23 > pim-routers.mcast.net: PIMv2, Hello, length 30
19:32:10.748376 IP 9.9.9.23 > pim-routers.mcast.net: PIMv2, Hello, length 30
19:32:11.848216 IP 9.9.9.23 > pim-routers.mcast.net: PIMv2, Hello, length 30
19:32:11.848225 IP 9.9.9.23 > pim-routers.mcast.net: PIMv2, Hello, length 30
19:32:12.948049 IP 9.9.9.23 > pim-routers.mcast.net: PIMv2, Hello, length 30
Sau khi chạy tcpdump thì nó ra đống trên, cái multicast cho IPTV trên vlan của iptv.
Và sau khi confirm trong Mikrotik -> Torche trên interface của WAN ( nơi gán vlan internet và vlan iptv)
thì cái này của vlan iptv.
Nên thôi kệ luôn.
nó sent client hello thôi.
Mạng vẫn snappy, trừ khi súc vật 4 chân nó bóp thôi
Còn nếu muốn block thì:
iptables -I OUTPUT -s 9.9.9.23 -d 224.0.0.13 -p pim -j DROP
Block xong có vấn đề với iptv ko thì ko biết,