I haven't test it yet, but I think it's okay and I hope it would help some other people.
It was my first time with OpenBSD and pf so maybe there are some errors…
Define the interface aliases
wan_if="em0" # External WAN-facing interface
lan_if="em1" # Internal LAN-facing interface
Enable ALTQ on the external interface, assign the root queue and
ultimate bandwidth limit
Using CBQ scheduler et creating the queue
altq on $wan_if cbq bandwidth 100Mb queue { A_out, B_out, C_out, D_out }
Define interface queue with the bandwidht, scheduler and borrow option
queue A_out bandwidth 65Mb cbq (default borrow red)
queue B_out bandwidth 15Mb cbq (borrow red)
queue B_out bandwidth 15Mb cbq (borrow red)
queue D_out bandwidth 5Mb cbq (borrow red)
Same on LAN
altq on $lan_if cbq bandwidth 100Mb queue { A_in, B_in, C_in, D_in }
queue A_in bandwidth 65Mb cbq (default borrow red)
queue B_in bandwidth 15Mb cbq (borrow red)
queue C_in bandwidth 15Mb cbq (borrow red)
queue D_in bandwidth 5Mb cbq (borrow red)
IP adresses
A_IP = "192.168.1.1"
B_IP = "192.168.1.2"
C_IP = "192.168.1.3"
D_IP = "192.168.1.4"
and the queue on interface
pass in on $wan_if all
pass out on $wan_if to $A_IP queue A_out
pass out on $wan_if to $B_IP queue B_out
pass out on $wan_if to $C_IP queue C_out
pass out on $wan_if to $D_IP queue D_out
pass in on $lan_if all
pass out on $lan_if to $A_IP queue A_in
pass out on $lan_if to $B_IP queue B_in
pass out on $lan_if to $C_IP queue C_in
pass out on $lan_if to $D_IP queue D_in