Я использую соединение NioSctpServerChannel с Netty между двумя разными машинами. Соединение установлено успешно и получает данные после того, как канал клиентаActive-Handler отправляет некоторые данные на сервер.Netty Sctp Heartbeat на неправильном интерфейсе
Интерфейс приема, по-видимому, отличается от интерфейса привязки (192.168.122.1 вместо 192.168.243.31) - это проблема с системой или сетью?
Затем сердцебиение отправляется через совершенно другой интерфейс (в данном случае virbr 192.168.122.1), и на него отвечает прерывание, которое разрушает соединение. Когда клиент пытается отправить биение, это логически также ответит с отменой, поскольку соединение уже отключено.
PC1 192.168.243.31 (Server) PC2 192.168.243.12 (Клиент)
Сервер Init Код:
public void run() throws Exception {
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioSctpServerChannel.class)
.option(ChannelOption.SO_BACKLOG, 100)
.handler(new LoggingHandler(LogLevel.INFO))
.option(ChannelOption.SO_KEEPALIVE, true)
.childHandler(new ChannelInitializer<SctpChannel>() {
@Override
public void initChannel(SctpChannel ch) throws Exception {
ch.pipeline().addLast(new Handler1());
ch.pipeline().addLast(new Handler2());
ch.pipeline().addLast(new Handler3());
}
});
System.out.println("Connector binding...");
ChannelFuture f = b.bind("192.168.243.31", port).sync();
f.channel().closeFuture().sync();
} finally {
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
System.out.println("Connector ended.");
}
LOG Выход:
Running Staging Server ...
Connector binding...
Jul 03, 2014 8:05:27 AM io.netty.handler.logging.LoggingHandler channelRegistered
INFO: [id: 0xef4ebad6] REGISTERED
Jul 03, 2014 8:05:27 AM io.netty.handler.logging.LoggingHandler bind
INFO: [id: 0xef4ebad6] BIND: /192.168.243.31:8090
Jul 03, 2014 8:05:27 AM io.netty.handler.logging.LoggingHandler channelActive
INFO: [id: 0xef4ebad6, /192.168.243.31:8090] ACTIVE
Jul 03, 2014 8:05:33 AM io.netty.handler.logging.LoggingHandler channelRead
INFO: [id: 0xef4ebad6, /192.168.243.31:8090] RECEIVED: [id: 0x2a9c7ea3, /192.168.122.1:49423 => /192.168.243.31:8090]
HandlerActive
Data rx:
--------------------------------------------------------------------------------
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
0000 a8 2b 0a 31 03 32 03 16 0d 28 36 .+.1.2...(6
--------------------------------------------------------------------------------
java.net.SocketException: Connection reset by peer
at sun.nio.ch.sctp.SctpChannelImpl.receive0(Native Method)
at sun.nio.ch.sctp.SctpChannelImpl.receiveIntoNativeBuffer(SctpChannelImpl.java:860)
at sun.nio.ch.sctp.SctpChannelImpl.receive(SctpChannelImpl.java:836)
at sun.nio.ch.sctp.SctpChannelImpl.receive(SctpChannelImpl.java:779)
at sun.nio.ch.sctp.SctpChannelImpl.receive(SctpChannelImpl.java:741)
at io.netty.channel.sctp.nio.NioSctpChannel.doReadMessages(NioSctpChannel.java:278)
at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:73)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:485)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:452)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:346)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:794)
at java.lang.Thread.run(Thread.java:745)
channelInactive
конфигурации сети:
br1 Link encap:Ethernet HWaddr 00:e0:7d:ae:bc:6f
inet addr:10.10.0.1 Bcast:10.10.255.255 Mask:255.255.0.0
inet6 addr: fe80::2e0:7dff:feae:bc6f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:506 (506.0 B) TX bytes:7288 (7.2 KB)
br2 Link encap:Ethernet HWaddr 64:31:50:3f:4e:01
inet addr:192.168.243.31 Bcast:192.168.243.255 Mask:255.255.255.0
inet6 addr: fe80::6631:50ff:fe3f:4e01/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:96536 errors:0 dropped:0 overruns:0 frame:0
TX packets:54325 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:102780133 (102.7 MB) TX bytes:19776526 (19.7 MB)
eth0 Link encap:Ethernet HWaddr 00:e0:7d:ae:bc:6f
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:274 errors:0 dropped:0 overruns:0 frame:0
TX packets:849 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16440 (16.4 KB) TX bytes:61267 (61.2 KB)
eth1 Link encap:Ethernet HWaddr 64:31:50:3f:4e:01
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:121985 errors:0 dropped:68 overruns:0 frame:0
TX packets:60157 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:106326525 (106.3 MB) TX bytes:20402116 (20.4 MB)
Interrupt:19 Memory:f0100000-f0120000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:444 errors:0 dropped:0 overruns:0 frame:0
TX packets:444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:53204 (53.2 KB) TX bytes:53204 (53.2 KB)
virbr0 Link encap:Ethernet HWaddr 82:34:aa:4d:49:4e
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
сетевого трафика:
1444 27.462912000 192.168.243.12 192.168.243.31 SCTP 116 INIT
1445 27.463024000 192.168.243.31 192.168.243.12 SCTP 340 INIT_ACK
1446 27.463030000 192.168.243.31 192.168.243.12 SCTP 340 INIT_ACK
1447 27.463702000 192.168.243.12 192.168.243.31 SCTP 312 COOKIE_ECHO
1448 27.463702000 192.168.243.12 192.168.243.31 SCTP 312 COOKIE_ECHO
1449 27.463786000 192.168.243.31 192.168.243.12 SCTP 52 COOKIE_ACK
1450 27.463798000 192.168.243.31 192.168.243.12 SCTP 52 COOKIE_ACK
1451 27.469117000 192.168.243.12 192.168.243.31 SCTP 76 DATA
1452 27.469117000 192.168.243.12 192.168.243.31 SCTP 76 DATA
1453 27.469160000 192.168.243.31 192.168.243.12 SCTP 64 SACK
1454 27.469164000 192.168.243.31 192.168.243.12 SCTP 64 SACK
1520 30.097581000 192.168.243.31 192.168.122.1 SCTP 100 HEARTBEAT
1521 30.097638000 192.168.122.1 192.168.243.31 SCTP 52 ABORT
2184 59.710594000 192.168.243.12 192.168.243.31 SCTP 96 HEARTBEAT
2185 59.710594000 192.168.243.12 192.168.243.31 SCTP 96 HEARTBEAT
2186 59.710638000 192.168.243.31 192.168.243.12 SCTP 52 ABORT
2187 59.710641000 192.168.243.31 192.168.243.12 SCTP 52 ABORT 1
Я не уверен, если это проблема Нетти. Вы пытаетесь написать ли упрощенное приложение SCTP с использованием простой Netty-свободной Java, чтобы увидеть проблему все еще существует? – trustin