Skip to content

Commit b05f5c9

Browse files
authored
[Core] Allow IPv6 in VLLM_HOST_IP with zmq (#8575)
Signed-off-by: Russell Bryant <[email protected]>
1 parent 9b0e3ec commit b05f5c9

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

vllm/distributed/device_communicators/shm_broadcast.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import torch
1010
import torch.distributed as dist
1111
from torch.distributed import ProcessGroup
12+
from zmq import IPV6 # type: ignore
1213
from zmq import SUB, SUBSCRIBE, XPUB, XPUB_VERBOSE, Context # type: ignore
1314

1415
import vllm.envs as envs
1516
from vllm.logger import init_logger
16-
from vllm.utils import get_ip, get_open_port
17+
from vllm.utils import get_ip, get_open_port, is_valid_ipv6_address
1718

1819
VLLM_RINGBUFFER_WARNING_INTERVAL = envs.VLLM_RINGBUFFER_WARNING_INTERVAL
1920

@@ -214,6 +215,8 @@ def __init__(
214215
self.remote_socket = context.socket(XPUB)
215216
self.remote_socket.setsockopt(XPUB_VERBOSE, True)
216217
remote_subscribe_port = get_open_port()
218+
if is_valid_ipv6_address(connect_ip):
219+
self.remote_socket.setsockopt(IPV6, 1)
217220
socket_addr = f"tcp://*:{remote_subscribe_port}"
218221
self.remote_socket.bind(socket_addr)
219222

@@ -274,6 +277,8 @@ def create_from_handle(handle: Handle, rank) -> "MessageQueue":
274277

275278
self.remote_socket = context.socket(SUB)
276279
self.remote_socket.setsockopt_string(SUBSCRIBE, "")
280+
if is_valid_ipv6_address(handle.connect_ip):
281+
self.remote_socket.setsockopt(IPV6, 1)
277282
socket_addr = f"tcp://{handle.connect_ip}:{handle.remote_subscribe_port}"
278283
logger.debug("Connecting to %s", socket_addr)
279284
self.remote_socket.connect(socket_addr)

vllm/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import enum
66
import gc
77
import inspect
8+
import ipaddress
89
import os
910
import random
1011
import socket
@@ -533,6 +534,14 @@ def get_ip() -> str:
533534
return "0.0.0.0"
534535

535536

537+
def is_valid_ipv6_address(address: str) -> bool:
538+
try:
539+
ipaddress.IPv6Address(address)
540+
return True
541+
except ValueError:
542+
return False
543+
544+
536545
def get_distributed_init_method(ip: str, port: int) -> str:
537546
# Brackets are not permitted in ipv4 addresses,
538547
# see https://github.com/python/cpython/issues/103848

0 commit comments

Comments
 (0)