NAME
ip-tcp_metrics - management for TCP Metrics
SYNOPSIS
ip [ OPTIONS ] tcp_metrics { COMMAND | help }
ip tcp_metrics { show | flush } SELECTOR
ip tcp_metrics delete [ address ] ADDRESS
SELECTOR := [ [ address ] PREFIX ]
EXAMPLES
1234567891011121314151617181920
ip tcp_metrics show address 192.168.0.0/24
Shows the entries for destinations from subnet
ip tcp_metrics show 192.168.0.0/24
The same but address keyword is optional
ip tcp_metrics
Show all is the default action
ip tcp_metrics delete 192.168.0.1
Removes the entry for 192.168.0.1 from cache.
ip tcp_metrics flush 192.168.0.0/24
Removes entries for destinations from subnet
ip tcp_metrics flush all
Removes all entries from cache
ip -6 tcp_metrics flush all
Removes all IPv6 entries from cache keeping the IPv4 entries.
struct rtable
{
union
{
struct dst_entry dst;
} u;
...
// 以下为记录二元组的信息
__be32 rt_dst; /* Path destination */
__be32 rt_src; /* Path source */
int rt_iif;
/* Info on neighbour */
__be32 rt_gateway;
/* Miscellaneous cached information */
__be32 rt_spec_dst; /* RFC1122 specific destination */
// peer很重要!
struct inet_peer *peer; /* long-living peer info */
};
注意这个peer字段,很重要!peer结构体记如下:
123456789101112131415
struct inet_peer
{
/* group together avl_left,avl_right,v4daddr to speedup lookups */
struct inet_peer *avl_left, *avl_right;
__be32 v4daddr; /* peer's address */
__u16 avl_height;
__u16 ip_id_count; /* IP ID for the next packet */
struct list_head unused;
__u32 dtime; /* the time of last use of not
* referenced entries */
atomic_t refcnt;
atomic_t rid; /* Frag reception counter */
__u32 tcp_ts;
unsigned long tcp_ts_stamp;
};
struct inet_peer {
/* group together avl_left,avl_right,v4daddr to speedup lookups */
struct inet_peer __rcu *avl_left, *avl_right;
struct inetpeer_addr daddr;
__u32 avl_height;
// 此为关键!
u32 metrics[RTAX_MAX];
u32 rate_tokens; /* rate limiting for ICMP */
unsigned long rate_last;
union {
struct list_head gc_list;
struct rcu_head gc_rcu;
};
/*
* Once inet_peer is queued for deletion (refcnt == -1), following fields
* are not available: rid, ip_id_count
* We can share memory with rcu_head to help keep inet_peer small.
*/
union {
struct {
atomic_t rid; /* Frag reception counter */
atomic_t ip_id_count; /* IP ID for the next packet */
};
struct rcu_head rcu;
struct inet_peer *gc_next;
};
/* following fields might be frequently dirtied */
__u32 dtime; /* the time of last use of not referenced entries */
atomic_t refcnt;
};
ip tun add lxT mode ipip remote 192.168.9.6 local 192.168.9.5
ip link set lxT up
ip add add 192.168.200.1 brd 255.255.255.255 peer 192.168.200.2 dev lxT
ip ro add 192.168.200.0/24 via 192.168.200.1
B:
1234
ip tun add lxT mode ipip remote 192.168.9.5 local 192.168.9.6
ip link set lxT up
ip add add 192.168.200.2 brd 255.255.255.255 peer 192.168.200.1 dev lxT
ip ro add 192.168.200.0/24 via 192.168.200.2
在A机器添加路由信息,指定到192.168.10.6通过lxT
1
ip ro add 192.168.10.6/32 dev lxT
在B机器添加路由信息,指定到192.168.8.5通过lxT
1
ip ro add 192.168.8.5/32 dev lxT
这样 192.168.8.5 和 192.168.10.6 就可以相互ping通了
部分参数
ttl N 设置进入通道数据包的TTL为N。N是一个1—255之间的数字。0是一个特殊的值,表示这个数据包的TTL值是继承(inherit)的。ttl参数的缺省值是:inherit。
tos T或者dsfield T 设置进入通道数据包的TOS域,缺省是inherit。
mode MODE 设置通道模式。有效的模式包括:ipip、sit和gre。
nopmtudisc 在这个通道上禁止路径最大传输单元发现( Path MTU Discovery)。默认情况下,这个功能是打开的。注意:这个选项和固定的ttl是不兼容的,如果使用了固定的ttl参数,系统会打开路径最大传输单元发现( Path MTU Discovery)功能。
ifconfig eth0 192.168.1.191/24
modprobe ipip # ip tun add tunl0 mode ipip remote any local any
ip link set tunl0 mtu 1480 up
ifconfig tunl0:0 14.0.0.1/24
ip tun add tunl1 mode ipip remote 12.0.0.1 local 12.0.0.102 dev eth1 # better
#ip tun add tunl1 mode ipip remote 192.168.1.102 local 192.168.1.191 dev eth0 # upload err
ip link set tunl1 mtu 1480 up
ip rule add from 14.0.0.1 table 1
ip route add table 1 default dev tunl1
find /proc/ -name rp_filter -exec cat {} \;
find /proc/ -name rp_filter -exec sh -c "echo 0 > {}" \;
GW:
1234567891011121314
find /proc/ -name rp_filter -exec cat {} \;
find /proc/ -name rp_filter -exec sh -c "echo 0 > {}" \;
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ipip # ip tun add tunl0 mode ipip remote any local any
ip link set tunl0 mtu 1480 up
ip tun add tunl1 mode ipip remote 192.168.1.191 local 192.168.1.102 dev enp3s0 # better
#ip tun add tunl1 mode ipip remote 12.0.0.102 local 12.0.0.1 dev enx00e04b367c0c # upload err?
ip link set tunl1 mtu 1480 up
ip rule add from 11.0.0.20 table 1
ip route add table 1 default dev tunl1